MCP Integration

Tools Reference

The complete MCP tool surface: cards, tasks, ideas, changelog, and the report_progress stage map that drives a card through the pipeline.


The complete tool surface exposed by the AI StackWorks MCP server. All content is exchanged as Markdown strings. Tools that operate on a card take a required card_id; an unknown or cross-project card_id returns card not found. See Authentication for how card_id is scoped to your project.

ToolGroupWhat it does
get_cardCardsRead a card's content
update_cardCardsSave body / properties / status
create_cardCardsOpen a new card in the Backlog
approve_cardCardsMove to Plan Approved
dispatch_cardCardsSend to the agent fleet (Ready for Dev)
get_tasksTasksRead a card's task checklist
update_tasklistTasksReplace the whole checklist
create_taskTasksAppend one task
create_ideaIdeasCapture a new idea
list_ideasIdeasList the project's open ideas
create_changelogChangelogRecord a user-facing change
report_progressPipelineNarrate a stage and advance the card

Cards

get_card

Read a card's current content — title, status, properties, and body. Call it before update_card so you start from the live body.

ArgumentDescription
card_idThe card you are working on.

Returns the card as Markdown: frontmatter (title, status, type, priority) above the body.

update_card

Save changes to a card — its body, properties, and/or status. Pass only what you are changing.

ArgumentDescription
card_idThe card you are working on.
body (optional)The complete new card body in Markdown. Replaces the whole body, so send the full text, not a fragment.
properties (optional)A dict of card properties to merge in (e.g. type, priority).
status (optional)A new board status for the card.
base_body_hash (optional)A safety check for concurrent edits: the sha256 of the body you started from. If the card's body changed since then the write is refused with card body is stale and nothing is saved. Omit for last-write-wins.

Saving also syncs the card to its Notion mirror.

create_card

Open a new card in your project's Backlog.

ArgumentDescription
titleA short title for the card.
body (optional)Markdown describing the work.
type (optional)e.g. Feature, Bug, Improvement.
priority (optional)e.g. High, Medium, Low.

Returns a confirmation with the new card's id, then the card as Markdown, so you have its id to approve and dispatch it next.

approve_card

Approve a card's plan — move it to Plan Approved. This is the approval gate that would otherwise wait on a human; the move is recorded on the Timeline as an agent approval. Approving an already-approved card is a harmless no-op.

ArgumentDescription
card_idThe card you are approving.

dispatch_card

Dispatch a card to the agent fleet — move it to Ready for Dev. This kicks off the build → test → review → docs → ship pipeline. Dispatch is asynchronous: the card is placed on Ready for Dev and its execution graph is seeded shortly after (within a minute). If the project has no agent host connected, the card still moves but nothing runs until one is enrolled — the reply says so.

ArgumentDescription
card_idThe card you are dispatching.

Card lifecycle: create_cardapprove_carddispatch_card.


Tasks

Each card has exactly one task checklist.

get_tasks

Read a card's task checklist as Markdown — one - [ ] (open) / - [x] (done) line per task, each carrying a <!-- id: N --> anchor.

ArgumentDescription
card_idThe card you are working on.

update_tasklist

Edit the whole checklist in one call — add, edit, reorder, check off, or remove tasks. Read the list with get_tasks, change the Markdown, then send the full list back.

ArgumentDescription
markdownThe complete checklist Markdown.
card_idThe card you are working on.

How lines map to tasks: a line that keeps its <!-- id: N --> anchor updates that task; a line with no id creates a new task; an existing task you leave out is removed. - [x] marks a task done, - [ ] open.

create_task

Append a single task without resending the whole list.

ArgumentDescription
titleThe task text.
card_idThe card you are working on.
body (optional)Markdown detail for the task.

Ideas

create_idea

Capture a new idea for the project — a feature thought, suggestion, or improvement to revisit later. Call list_ideas first to avoid duplicates.

ArgumentDescription
titleA short summary of the idea.
body (optional)Markdown detail.
source (optional)Who it came from: manual, customer, or bot (default manual).

Returns a confirmation carrying the new idea's slug.

list_ideas

List the project's open ideas as a Markdown checklist (one - [status] title <!-- slug: ... --> line each). Read-only, no arguments. Dismissed and closed ideas are excluded.


Changelog

create_changelog

Record a changelog entry — a user-facing note that something shipped or changed.

ArgumentDescription
titleA short headline for the change.
body (optional)Markdown detail.
card_id (optional)Link the entry to the card it came from; omit for a project-level entry.

Returns a confirmation carrying the new entry's slug.


Progress reporting

report_progress

How a worker narrates a pipeline stage and lets the card advance itself. Call it twice per stage you work — once on pickup (status="started") and once on completion. Do not move stage cards with update_card(status=...).

ArgumentDescription
card_idThe card you are working on.
skillYour stage: one of build, test, demo, review, docs, ship. Any other string is recorded but never moves the card.
statusThe stage state, e.g. started, done, passed, failed, blocked.
headlineA one-line summary of what just happened. For a blocked event this becomes the operator-facing blocked reason.
iter (optional)Which attempt this is for the stage (default 1); bump it on a re-drive so a retry's events don't collide with the first run's.
fields (optional)A dict of labelled facts to show on the event (e.g. {"BRANCH": "feat/x", "PR": "#42"}).
sections (optional)A list of richer narrative blocks ({"title", "body"} each) — e.g. a reviewer's full rationale on a review/failed event, carried into the re-driven build.
artifact (optional)A dict linking one artifact (e.g. {"kind": "pr", "label": "PR #42", "href": "https://..."}).
session_id (optional)Your kanban task id. Omit it and the card's canonical execution session id is used.

The (skill, status) pair drives the card's board column:

Stage eventCard moves to
build / startedIn Dev
build / doneReady for QA
test / startedIn QA
test / done(no move; demo next)
demo / started · demo / done(no move)
review / passedReady for Docs
review / failedReady for Dev (re-drives the build with your feedback)
docs / startedIn Docs
docs / doneReady for Release
ship / doneDone

Any pair not listed records the event for the Timeline but does not move the card. status="blocked" (any skill) raises the card's Blocked flag and seeds the reason from your headline; the card keeps its column until an operator unblocks it. The card only ever moves forward — a stale or backward pair is recorded but does not move it.