The Motir MCP server
Motir's project plan is reachable by any Model Context Protocol client over one endpoint. Point your agent at it with a personal access token and it can read the ready set, claim the next item, create work, move statuses and comment — through the same services, permissions and data the web app uses.
Should you use this, or the REST API?
Motir publishes two programmatic surfaces over the same domain. They are not alternatives with the same trade-off, and the difference is worth thirty seconds before you pick.
| The MCP server | The REST API | |
|---|---|---|
| Endpoint | POST /api/mcp | /api/v1/… |
| Built for | An agent you control — it reads tool descriptions at run time. | A client you ship — code written once against a fixed shape. |
| Stability | Expected to change. Rewording a description or renaming an argument is how an agent’s behaviour gets tuned. | Additive only. A breaking change mints /api/v2; v1 keeps its promise. |
| Shape | The same. MCP payloads are derived from the v1 response schemas, so the two describe provably identical objects. | The same, and it is the source the MCP derives from. |
| Auth | One personal access token, one scope set. | The same credential works on both. |
- Endpoint
- The MCP server
POST /api/mcp- The REST API
/api/v1/…
- Built for
- The MCP server
- An agent you control — it reads tool descriptions at run time.
- The REST API
- A client you ship — code written once against a fixed shape.
- Stability
- The MCP server
- Expected to change. Rewording a description or renaming an argument is how an agent’s behaviour gets tuned.
- The REST API
- Additive only. A breaking change mints
/api/v2; v1 keeps its promise.
- Shape
- The MCP server
- The same. MCP payloads are derived from the v1 response schemas, so the two describe provably identical objects.
- The REST API
- The same, and it is the source the MCP derives from.
- Auth
- The MCP server
- One personal access token, one scope set.
- The REST API
- The same credential works on both.
1Mint a token
In the app: Settings → Account → Tokens → Create. Give it a label and an expiry. The plaintext is shown once — copy it then; Motir keeps only a hash.
2Point your client at the endpoint
Every client needs the same four facts. They are Motir’s, they are the same for every agent, and everything below this table is one of them transcribed into a vendor’s file format.
| URL | https://app.motir.co/api/mcp |
| Transport | Streamable HTTP — not SSE, and not a stdio command |
| Header | Authorization: Bearer <token>, on every request |
| Token | motir_pat_<your-token> — the one you minted in step 1 |
- URL
https://app.motir.co/api/mcp
- Transport
- Streamable HTTP — not SSE, and not a stdio command
- Header
Authorization: Bearer <token>, on every request
- Token
motir_pat_<your-token>— the one you minted in step 1
Claude Code
{
"mcpServers": {
"motir": {
"type": "http",
"url": "https://app.motir.co/api/mcp",
"headers": { "Authorization": "Bearer motir_pat_<your-token>" }
}
}
}Or one command: claude mcp add --transport http motir https://app.motir.co/api/mcp --header "Authorization: Bearer motir_pat_<your-token>" · Claude Code documentation · format checked 2026-08-06
Cursor
{
"mcpServers": {
"motir": {
"url": "https://app.motir.co/api/mcp",
"headers": { "Authorization": "Bearer ${env:MOTIR_TOKEN}" }
}
}
}Cursor interpolates ${env:…}, so the token stays in your environment and out of the file. · Cursor documentation · format checked 2026-08-06
VS Code
{
"inputs": [
{
"type": "promptString",
"id": "motir-token",
"description": "Motir personal access token",
"password": true
}
],
"servers": {
"motir": {
"type": "http",
"url": "https://app.motir.co/api/mcp",
"headers": { "Authorization": "Bearer ${input:motir-token}" }
}
}
}VS Code prompts for the token the first time the server starts and stores it securely — nothing secret is written to the file. · VS Code documentation · format checked 2026-08-06
Codex CLI
[mcp_servers.motir] url = "https://app.motir.co/api/mcp" bearer_token_env_var = "MOTIR_TOKEN"
bearer_token_env_var takes the variable’s name, not the token. · Codex CLI documentation · format checked 2026-08-06
Any other streamable-HTTP client
Transport: streamable HTTP URL: https://app.motir.co/api/mcp Header: Authorization: Bearer motir_pat_<your-token>
Windsurf, Zed, Cline, Goose, or something you wrote yourself — the same four facts under different key names. · Any other streamable-HTTP client documentation · format checked 2026-08-06
3Check it
Call whoami. It takes no arguments and answers with the user the token belongs to, the workspace it is bound to, and the scopes it was granted — so one call confirms all three at once.
What your token can call
| Scope | What it gates | |
|---|---|---|
project:browse | Open the project and read its work items, boards, backlog and reports. | |
lesson:view | Read what the project's AI planner learned from its own planning work. | |
lesson:manage | Retire a lesson or add one — both change the standing instructions the planner is given. | |
lesson:reinforce | Note that a lesson's mistake happened again. It changes nothing the lesson says. | |
work_item:edit | Create, update, assign and move work items, and transition them on the board. | |
work_item:archive | Archive a work item and restore it later. Affects that item only — its children stay. | |
work_item:delete | Permanently delete a work item and everything beneath it. Cannot be undone. | off by default |
comment:add | Post comments on work items, and edit or delete your own. | |
sprint:manage | Start and complete Sprints, and rank the backlog. | |
ai:plan | Submit a planning job that spends the workspace’s AI credits and proposes plan changes. | |
ai:view_plan | Add proposals to a generated plan and close it for review. Reading a plan needs only project access. | |
ai:decide_plan | Turn a plan’s proposals into real work items, or end the plan without creating any. |
- Scope
project:browse- What it gates
- Open the project and read its work items, boards, backlog and reports.
- Scope
lesson:view- What it gates
- Read what the project's AI planner learned from its own planning work.
- Scope
lesson:manage- What it gates
- Retire a lesson or add one — both change the standing instructions the planner is given.
- Scope
lesson:reinforce- What it gates
- Note that a lesson's mistake happened again. It changes nothing the lesson says.
- Scope
work_item:edit- What it gates
- Create, update, assign and move work items, and transition them on the board.
- Scope
work_item:archive- What it gates
- Archive a work item and restore it later. Affects that item only — its children stay.
- Scope
work_item:delete- What it gates
- Permanently delete a work item and everything beneath it. Cannot be undone.
- off by default
- Scope
comment:add- What it gates
- Post comments on work items, and edit or delete your own.
- Scope
sprint:manage- What it gates
- Start and complete Sprints, and rank the backlog.
- Scope
ai:plan- What it gates
- Submit a planning job that spends the workspace’s AI credits and proposes plan changes.
- Scope
ai:view_plan- What it gates
- Add proposals to a generated plan and close it for review. Reading a plan needs only project access.
- Scope
ai:decide_plan- What it gates
- Turn a plan’s proposals into real work items, or end the plan without creating any.
What next
MCP tools — all 55 tools, what each does, and the scope that gates it. Read the full reference