MCP server
Boot speaks the Model Context Protocol. Point an MCP client at the endpoint below and your agent gets 66 tools — the same abilities the in-app Sentinel has, minus the ones that only make sense inside a browser.
https://boot.techdyn.co.uk/mcp
| Transport | Streamable HTTP — JSON-RPC 2.0 over POST |
| Protocol version | 2025-06-18 |
| Authentication | A Boot API key, or OAuth 2.1 for clients that cannot send one |
| Tools | 66 |
Quick start
Pick your client. Everything except ChatGPT authenticates with an API key from Account → API Keys; ChatGPT signs in instead.
- In ChatGPT, add a connector and enter
https://boot.techdyn.co.uk/mcpas the MCP server URL. - ChatGPT reads Boot’s discovery documents and offers to sign in — there is no key to paste.
- Sign in to Boot, pass two-factor verification if you use it, and approve the permissions on Boot’s own consent screen.
- The connection stays live until you disconnect it under Account → Connected applications.
claude mcp add --transport http boot \
https://boot.techdyn.co.uk/mcp \
--header "Authorization: Bearer boot_YOUR_KEY"
{
"mcpServers": {
"boot": {
"type": "http",
"url": "https://boot.techdyn.co.uk/mcp",
"headers": {
"Authorization": "Bearer boot_YOUR_KEY"
}
}
}
}
{
"servers": {
"boot": {
"type": "http",
"url": "https://boot.techdyn.co.uk/mcp",
"headers": {
"Authorization": "Bearer boot_YOUR_KEY"
}
}
}
}
[mcp_servers.boot]
url = "https://boot.techdyn.co.uk/mcp"
http_headers = { Authorization = "Bearer boot_YOUR_KEY" }
# List the tools your key can use
curl -s -X POST https://boot.techdyn.co.uk/mcp \
-H "Authorization: Bearer boot_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
# Or drive it interactively
npx @modelcontextprotocol/inspector
boot_YOUR_KEY with a real key.
Create one under Account → API Keys, granting only the scopes the client needs —
a read-only key genuinely cannot write, even if the tool is called by name.
Scopes
A credential sees only the tools its scopes cover, and calling a tool it lacks the scope for is refused outright — hiding a tool from the listing is presentation, refusing the call is the actual control.
| Scope | Tools | Grants |
|---|---|---|
read |
26 | Read your projects, tasks, blocks, forecast and history |
write |
26 | Create, change and delete projects, tasks, milestones and tags |
bos |
14 | Drive your day: start and end focus blocks, run timers, shut down and reboot the BOS |
Connecting ChatGPT
ChatGPT only ever presents an OAuth bearer token — it cannot send an API key — so Boot acts as an OAuth 2.1 authorization server for it. There is nothing to configure beyond the endpoint URL.
Authorization code with PKCE S256 (required; plain is refused), client
identification by Client ID Metadata Document so there is no registration step, access tokens valid one
hour, refresh tokens valid thirty days and rotated on every use.
| Document | URL |
|---|---|
| Protected resource RFC 9728 | https://boot.techdyn.co.uk/.well-known/oauth-protected-resource |
| Authorization server RFC 8414 | https://boot.techdyn.co.uk/.well-known/oauth-authorization-server |
| Authorization endpoint | https://boot.techdyn.co.uk/app/oauth/authorize |
| Token endpoint | https://boot.techdyn.co.uk/oauth/token |
An unauthenticated call to the endpoint answers 401 with a WWW-Authenticate
header naming the first of these, which is how a client that has never seen Boot finds its way in.
Disconnecting
Account → Connected applications → Disconnect all applications cuts off every OAuth application at once, including access tokens already issued — they stop working immediately rather than running out their hour. API keys are separate; revoke those under API Keys.
Tools
Generated from the server's own catalogue, so this is exactly what your agent will see.
read
26 tools
list_projectsget_projectlist_tasksget_tasklist_milestoneslist_deliverablesget_project_dependenciesget_milestone_dependenciesget_deliverable_dependenciesget_bos_statelist_blocksget_block_planget_forecastget_score_biasresume_dayplan_my_dayget_nsil_statusget_srw_statusget_timerlist_journallist_tagsget_task_tagsget_account_infoget_eventsget_historyget_stats
write
26 tools
create_projectupdate_projectdelete_projectbatch_create_projectscreate_taskupdate_taskdelete_taskbatch_create_taskscreate_milestoneupdate_milestonedelete_milestonebatch_create_milestonescreate_deliverableupdate_deliverabledelete_deliverablebatch_create_deliverablesset_project_dependencyset_task_dependencyset_milestone_dependencymark_milestones_sequentialset_deliverable_dependencycreate_journalcreate_tagupdate_tagdelete_tagset_task_tags
bos
14 tools
execute_bos_commandshutdownrebootstart_blockcomplete_blocklog_switch_urgereroll_forecastset_score_biasclear_score_biasupdate_energystart_timerpause_timerresume_timerstop_timer What an agent cannot do
- Anything that needs the browser. 23 Sentinel tools drive the
in-app chat panel — page navigation, the interactive day and block proposal cards, the tab modal,
text-to-speech, and the client-side transcript. There is no browser on the other end of an MCP call.
show_projectandshow_taskrender cards; their data is available asget_projectandget_task. - Read or write Boot's memory. 5 memory tools exist in the app and are
deliberately not exposed here. You already have a memory of your own, and two stores with no rule about
which one owns a fact end with your guesses read back as Boot's context. The
/api/agent/memoriesREST routes are unchanged if you genuinely need them. - Touch another account. Every tool runs as the credential's owner.
- Escape a plan limit. Project and task limits apply exactly as in the app.
- Administer Boot. No site settings, users, plans or billing.
Limits
| Limit | Value |
|---|---|
| Calls per credential per minute | 60 |
| Calls per credential per day | 5000 |
| JSON-RPC calls per batch | 50 |
| Failed sign-ins per IP per minute | 20 |
| Bytes per tool result | 100 KB |
A batch counts once per tools/call it contains, so batching buys no extra allowance.
Responses carry X-RateLimit-Limit and X-RateLimit-Remaining; a 429
carries Retry-After.
Troubleshooting
| Symptom | Cause |
|---|---|
401 with WWW-Authenticate | No key, or the key is revoked, expired or unknown. All four answer identically on purpose. |
403 plan does not include agent access | The plan's Agent & MCP access capability is off. |
503 endpoint is disabled | An administrator has turned the MCP server off. |
429 | Rate limited. Wait for Retry-After. |
| A tool "does not exist" but is listed above | Your credential lacks that tool's scope. Missing and forbidden read identically. |
Driving the REST API directly instead? See the API reference.