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

  1. A team lead opens Settings → Agent access in Standpulse.
  2. Choose a name, the member the key acts as, its abilities and, optionally, specific projects and an expiry date.
  3. 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.

AbilityAllows
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 as cursor for the next page.
  • Rate limit. 120 requests per minute per key.
  • ask_project needs the knowledge add-on on your plan. whoami reports which projects have it.

Troubleshooting

SymptomCause
401 UnauthorizedMissing, mistyped, revoked or expired key. Check the header is Authorization: Bearer <key>.
401 after moving workspacesThe 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 missingThe acting member cannot see it in the app either.
ask_project is refusedThe plan does not include the knowledge add-on.