{"slug": "notion-as-mission-control-for-my-t3-code-fleet", "title": "Notion as Mission Control for My T3 Code Fleet", "summary": "A Notion employee built a Notion Custom Agent called BloggerBot that connects to the open-source T3 Fleet Gateway via a custom MCP server, letting Notion act as the interface for a fleet of T3 Code coding agents. The setup requires a public HTTPS tunnel because Notion's agents run in the cloud while the gateway listens only on localhost, a bearer token with Operate access and a 90-day TTL, and setting the project's runtimeMode to auto or full-access so scheduled runs don't wait for approval. Chat messages in Notion become T3 agent threads that commit on a job branch and open a pull request for review rather than publishing directly.", "body_md": "I work at Notion, so of course I want it to be the interface for my agent fleet, the way Grok Bot was in [my last post](https://www.bounds.dev/posts/t3-fleet-gateway/). Blogging is a great place to start. Between MCP and Notion’s other connectors, Notion is the center of all my project work, so an agent there already knows what I’ve been building and what’s worth writing about.\n\nI made a Notion Custom Agent called BloggerBot that uses the same [T3 Fleet Gateway](https://github.com/boundsj/t3-fleet-gateway): Notion is the interface, and T3 manages the agent threads.\n\n(Yes, BloggerBot had a hand in this one too.)\n\n## What Notion brings\n\n- **Context.** My project pages and connectors.\n- **Tools.** One Custom MCP server connection, each tool toggled on or off.\n- **Triggers.** A recurring schedule, so it checks on jobs unasked.\n- **Memory.** A page as its checkpoint between runs.\n\n## How I did it\n\n### 1. Set up the gateway and a token\n\nGive a coding agent on the always-on T3 Code machine this prompt. If the gateway is already set up from the last post, it skips to the token.\n\n```\nClone https://github.com/boundsj/t3-fleet-gateway and set it up on this\nmachine by following its README (skip anything already done). Enroll\nthis machine's T3 Code server as a host and add these projects:\n<your projects>. Run the gateway as a service, expose it over HTTPS\nwith <your tunnel>, and make sure `doctor` passes.\n\nThen mint a bearer token for a Notion Custom Agent named BloggerBot,\nwith Operate access and a 90-day TTL (docs/operations.md, \"Agents\nthat only take a bearer token\"). Give me the public /mcp URL, and\nshow me the token once without saving it anywhere else.\n```\n\nThings to get right:\n\n- **A public HTTPS URL.** Notion’s agents run in the cloud and the gateway listens only on localhost, so a tunnel is required,[as before](https://www.bounds.dev/posts/t3-fleet-gateway/) .\n- **Unattended runs.** Set the project’s`runtimeMode` to`auto` or`full-access` ; otherwise every edit waits for your approval in T3 ([details](https://github.com/boundsj/t3-fleet-gateway/blob/main/docs/configuration.md#approvals-and-unattended-projects) ).\n- **PRs.** Sign`gh` in on that machine; the worker opens the PR.\n- **Token scope.** Operate (the`clients token` default) starts and steers jobs;`--access read` is for a watch-only agent. Renewal and revocation:[the operations guide](https://github.com/boundsj/t3-fleet-gateway/blob/main/docs/operations.md#agents-that-only-take-a-bearer-token) .\n\n### 2. Connect it in Notion\n\n1. An admin turns on **Settings → Connections → Enable custom MCP servers** ([Notion’s guide](https://www.notion.com/help/mcp-connections-for-custom-agents) ), and adds the gateway to the approved list if the workspace keeps one.\n2. Make the agent: **Agents** in the sidebar**→ +** .\n3. In the agent: **Settings → Tools & Access → Add connection → Custom MCP server**\n  - URL: `https://<your public URL>/mcp`\n  - Authentication: header-based, with the token from step 1\n  - Turn on the read tools, and the write tools if it should start or steer work (panel 1 above). Write tools default to **Always ask** ; for scheduled runs, set the ones it needs to**Run automatically** .\n4. URL: \n5. Save, then ask it to run `fleet_status` ; it should list your hosts and project aliases.\n\n### 3. Tell it how to work\n\nThe agent’s instructions are plain text. Something like:\n\n```\nBlog work goes to the T3 project \"blog\" (alias from fleet_status).\n- New post or edit: work_start with the request, then reply with the\n  job link. If fleet_status lists a standing job for the project,\n  use work_continue on it instead.\n- Every request ends with: \"Commit on your job branch and open a PR.\n  Don't merge.\"\n- Follow-ups on an existing draft: work_continue on that job.\n- If a job asks a question, relay it to me; answer with work_respond.\n- Never publish. Drafts land in a PR for me to review.\n```\n\nFrom then on, a chat message (panel 2) becomes a T3 thread (panel 3) and then a PR (panel 4).\n\n### 4. Optional: check in on a schedule\n\nTwo more Notion pieces turn BloggerBot from a chat into a watcher:\n\n- **Settings → Triggers → Recurring** : pick a frequency and time ([Notion’s guide](https://www.notion.com/help/custom-agents) ).\n- A **BloggerBot checkpoint** page it can edit, holding the project alias, the last`work_feed` cursor and the keys of notifications already sent. One page per agent and project.\n\nAdd this to the instructions:\n\n```\nOn a scheduled run, read the checkpoint page (cursor, sent keys) and\ncall work_feed from the cursor. Keep only my project's events and\nattention items; use work_status or work_messages for detail. Message\nme only for a failed job, work ready for review, or a question, with\nthe job link. Events can repeat after a retry, so skip any key\nalready on the page. Only once that has succeeded, save nextCursor\nand the new keys to the page (even if nothing was mine) and repeat\nwhile hasMore. Otherwise stay silent. Never run because of your own\nedits to the checkpoint page.\n```\n\n## Put the spare laptop to work\n\nThat’s the whole setup. Now I just ask in Notion and my agents get cooking on whatever machines I have around: the always-on Mac mini, my big laptop, maybe even that old one in the drawer. If you’re already paying for agent subs, you might as well put them (and your spare hardware) to work. 🍳", "url": "https://wpnews.pro/news/notion-as-mission-control-for-my-t3-code-fleet", "canonical_source": "https://www.bounds.dev/posts/t3-fleet-gateway-notion-agents/", "published_at": "2026-10-08 12:50:00+00:00", "updated_at": "2026-10-22 16:40:41.624809+00:00", "lang": "en", "topics": ["ai-agents", "agent-protocols", "ai-tools", "developer-tools"], "entities": ["Notion", "T3 Fleet Gateway", "T3 Code", "BloggerBot", "Grok Bot", "MCP"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/notion-as-mission-control-for-my-t3-code-fleet", "markdown": "https://wpnews.pro/news/notion-as-mission-control-for-my-t3-code-fleet.md", "text": "https://wpnews.pro/news/notion-as-mission-control-for-my-t3-code-fleet.txt", "jsonld": "https://wpnews.pro/news/notion-as-mission-control-for-my-t3-code-fleet.jsonld"}}