Model Context Protocol
Standpulse for AI coding agents
Standpulse runs an MCP server, so an agent working in your codebase can keep the board honest while it works: pick up the next task, claim it, comment progress, raise a blocker when it is stuck, and close the task with a summary when it is done.
Endpoint (Streamable HTTP)
https://standpulse.com/mcp/pm
- Tasks and blockers. List, create, start, complete, assign and comment; raise and resolve blockers.
- Docs. Read project docs for context, and write new ones.
- Planner and standup. Plan work into a day, and summarise what moved.
- Ask the project. Grounded answers from docs, tasks and blockers, with sources.
Get a key
- A team lead opens Settings → Agent access in Standpulse.
- Choose a name, the member the key acts as, its abilities and, optionally, specific projects and an expiry date.
- Copy the key. It looks like
sp_mcp_….…and is shown once; only a hash is stored. If you lose it, create a new one.
Revoke a key from the same screen at any time; it stops working immediately.
Connect a client
Claude Code
claude mcp add --transport http standpulse https://standpulse.com/mcp/pm \ --header "Authorization: Bearer sp_mcp_xxxx.yyyy"
Check the connection with /mcp, then ask the agent to call whoami.
Other MCP clients
Any client that supports remote HTTP servers with custom headers. Most accept a JSON block like this:
{
"mcpServers": {
"standpulse": {
"type": "http",
"url": "https://standpulse.com/mcp/pm",
"headers": {
"Authorization": "Bearer sp_mcp_xxxx.yyyy"
}
}
}
}
Keep the key out of version control. Prefer your client's environment-variable substitution where it has one.
Permissions
Two layers decide what an agent can do, and the key can only ever narrow the member:
- The member the key acts as. Their role decides what is visible, exactly as in the app. A key acting as an intern sees only what that intern sees.
- The key carries abilities and an optional project allow-list.
Everything the agent writes is attributed to that member and marked as coming from MCP in the activity log. For an agent that should see a whole project, act as a team lead or project manager; for a clean audit trail, create a dedicated member for the agent.
| Ability | Allows |
|---|---|
| tasks:read | list, read tasks, board, projects, members |
| tasks:write | create, update, start, complete, assign, comment, archive |
| blockers:read | list blockers |
| blockers:write | raise and resolve blockers |
| docs:read | list and read docs |
| docs:write | create and edit docs |
| planner:read | read the planner |
| planner:write | plan tasks into a day |
| reports:read | standup summaries |
| chat:ask | ask_project |
Tools
Every tool returns structured content plus a one-line text summary. Ids are integers.
Orientation
| Tool | Arguments | What it does |
|---|---|---|
| whoami | — | The acting member, workspace, plan, the key's abilities and reachable projects. Call it first. |
| list_projects | include_archived | Projects with open-task and active-blocker counts. Resolves a name to a project_id. |
| get_board | project_id | Counts by state and priority, up next, in progress and active blockers. |
Tasks
| Tool | Arguments | What it does |
|---|---|---|
| list_tasks | project_id, mine, assignee_id, state, type, priority, label, due_before, q, limit, cursor | Filter and page through tasks. state: open (default), not_started, in_progress, overdue, completed, all. |
| get_task | task_id | Full detail: description, labels, co-assignees, comments, recent activity and blockers. |
| create_task | project_id, title, priority, description, type, assignee_id | assign_to_me, due_at, … | Create a task. Description is Markdown. |
| update_task | task_id + any field | Only the fields you pass are written. description replaces the whole body. |
| start_task | task_id, claim | Mark as started and, by default, assign it to you. Idempotent. |
| complete_task | task_id, summary, reopen | Complete a task; summary is posted as a comment. reopen: true reverses it. |
| assign_task | task_id, assignee_id, co_assignee_ids | Set the accountable owner and/or replace the co-assignee list. |
| comment_task | task_id, body | Post a Markdown comment. |
| archive_task | task_id, reason, restore | Archive cancelled or duplicate work. restore: true brings it back. |
Blockers
| Tool | Arguments | What it does |
|---|---|---|
| list_blockers | project_id, task_id, mine, include_resolved, limit, cursor | Active blockers, optionally with resolved ones. |
| create_blocker | description, task_id | project_id, resolver_name | Raise a blocker and name who can clear it. |
| resolve_blocker | blocker_id, resolution | Resolve it; the resolution is posted on the linked task. |
Docs
| Tool | Arguments | What it does |
|---|---|---|
| list_docs | project_id, q, limit, cursor | Doc metadata. |
| get_doc | doc_id | slug | The full Markdown body. |
| write_doc | body_md, doc_id | title, project_id, visibility | Create a doc, or replace an existing body. |
Planner
| Tool | Arguments | What it does |
|---|---|---|
| get_planner | — | The member's yesterday-open, today and tomorrow, in their timezone. |
| plan_task | task_id, day | Schedule a task for today, tomorrow or an ISO date. Links it into that day's planner. |
Team and reporting
| Tool | Arguments | What it does |
|---|---|---|
| list_members | project_id | Names, roles and open workload. Resolve a name to a user id before assigning. |
| standup | project_id, everyone, since_hours | Completed, in progress, planned today and blocked. |
| ask_project | project_id, question | A grounded answer from the project's docs, tasks and blockers, with sources. Needs the knowledge add-on. |
Limits
- Paging. List tools return at most 100 records per call and a
next_cursor; pass it back ascursorfor the next page. - Rate limit. 120 requests per minute per key.
- ask_project needs the knowledge add-on on your plan.
whoamireports which projects have it.
Troubleshooting
| Symptom | Cause |
|---|---|
| 401 Unauthorized | Missing, mistyped, revoked or expired key. Check the header is Authorization: Bearer <key>. |
| 401 after moving workspaces | The member the key acts as moved to another workspace. Create a new key. |
| "lacks the … ability" | The key was created with fewer abilities. A team lead can issue a broader one. |
| "not scoped to project N" | The key is limited to specific projects. |
| A task or doc is missing | The acting member cannot see it in the app either. |
| ask_project is refused | The plan does not include the knowledge add-on. |