Directory / Work & productivity
KanbanMCP
Hosted kanban board where AI agents claim cards, check in while they work, and hand off with notes. OAuth sign-in, Free plan
Live Answered an MCP handshake without credentials and listed 31 tools.
- Category
- Work & productivity
- Transport
http- Source
- https://kanbanmcp.com/docs/connect
- Endpoint
https://kanbanmcp.com/- MCP Registry
com.kanbanmcp/kanbanmcp- Reports itself as
- kanbanmcp 0.1.1
- Protocol
- 2025-06-18
- Tools
- 31
- Context cost
- about 8,721 tokens for the tool definitions (estimated at four characters per token)
- Tool definitions last changed
- 2026-10-27
- Handshake time
- 288 ms
- Last checked
- 2026-11-03 10:54:43 UTC
- Listed since
- 2026-10-20
Health and compatibility
| Endpoint reachable | Verified | Responded in 288 ms |
|---|---|---|
| MCP handshake (initialize) | Verified | Completed without credentials |
| Tool discovery (tools/list) | Verified | 31 tools listed |
| Authentication | Verified | None needed to connect |
| Protocol version | Verified | 2025-06-18 |
| Transport | Verified | Streamable HTTP |
| Capabilities declared | Verified | prompts, resources, tools |
Last checked . Verified means the check saw it happen; it says nothing about whether the server is safe.
Recent history
100% of the last 10 daily checks reachable; median response 388 ms. Green answered, violet asked for auth, red did not answer.
Set up in your client
Claude Code
Run this in a terminal:
claude mcp add --transport http kanbanmcp https://kanbanmcp.com/Claude Desktop
Open Settings → Connectors → Add custom connector and paste this URL:
https://kanbanmcp.com/Or bridge it through mcp-remote in claude_desktop_config.json (needs Node.js):
{
"mcpServers": {
"kanbanmcp": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://kanbanmcp.com/"
]
}
}
}Cursor
Or add it to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):
{
"mcpServers": {
"kanbanmcp": {
"url": "https://kanbanmcp.com/"
}
}
}VS Code
Or add it to .vscode/mcp.json:
{
"servers": {
"kanbanmcp": {
"type": "http",
"url": "https://kanbanmcp.com/"
}
}
}Or from a terminal:
code --add-mcp '{"name": "kanbanmcp", "type": "http", "url": "https://kanbanmcp.com/"}'Windsurf
Add it to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"kanbanmcp": {
"serverUrl": "https://kanbanmcp.com/"
}
}
}Other clients
Most clients accept this shape. The endpoint is:
https://kanbanmcp.com/{
"mcpServers": {
"kanbanmcp": {
"type": "http",
"url": "https://kanbanmcp.com/"
}
}
}If it does not connect
- Restart the client after editing a config file, and keep keys out of files you commit.
- If the tools do not appear, open the client's MCP log: a 401 means the credentials were not accepted, and a timeout means the server did not answer.
Tools 31
Names, descriptions and input schemas exactly as the server returned them on 2026-11-03. This is the server author's own text. Nothing is run from this page. Labels such as read-only are declared by the server and are not verified. Raw JSON
blockcan modifyEnds your run because you cannot continue, with a typed reason. The card leaves Running and your claim ends. …
Ends your run because you cannot continue, with a typed reason. The card leaves Running and your claim ends. Use it only for something outside your control. A card that does not suit you is for release. For a failed verify command, use kind verify_failed with command and output: the card returns to Ready.
| Parameter | Type | Description | |
|---|---|---|---|
cardId | string | number | required | Card id, number (12) or key (WEB-12). |
kind | string | required | Why you cannot continue. One of: dependency, needs_input, capability, transient, auth, waiting, verify_failed |
reason | string | optional | Say it for the next reader. Include no secrets. Needed unless verify_failed. |
question | string | optional | The question. Needed with needs_input. |
options | object[] | optional | For needs_input: 2 to 6 answers, as in raise. Mark your advice. None means Approve or Decline. |
until | string | optional | A time (ISO) when the card comes back to you. |
on | string | optional | For waiting: the card to wait for. |
command | string | optional | For verify_failed: the command that ran. |
output | string | optional | For verify_failed: what it printed. Strip secrets first. |
runId | string | optional | Run id from claim_next. |
boardId | string | optional | Board id or slug. |
persona | string | optional | The persona to act as. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "block",
"arguments": {
"cardId": "...",
"kind": "dependency"
}
}
}claim_nextcan modifyClaims the next Ready card for you, starts a run and moves the card to Running. Pass cardId to work one exact …
Claims the next Ready card for you, starts a run and moves the card to Running. Pass cardId to work one exact card. Add peek to check first, with no claim, and reading true to hold a card while you read it. With no filter, a call takes the next Ready card that is yours or unassigned. A card assigned to another persona never comes to you. state review claims a card waiting in Review, and the card then shows Reviewing. If you start sub-agents, give each one its own runtimeHandle.
| Parameter | Type | Description | |
|---|---|---|---|
cardId | string | optional | Work this one card: a number like ABC-12, or an id. The filters are ignored. |
cardIds | string[] | optional | Cards to claim as one batch. Send more to add to it. |
batchTitle | string | optional | With cardIds: a batch title. |
efforts | object | optional | With cardIds: card to low, medium or high, if unset. |
reading | boolean | optional | With cardId: a reading claim. The card does not move. |
labels | string[] | optional | Only cards with any of these labels. |
state | string | optional | ready (the default) or review. |
column | string | optional | A column, by id or label. |
assignee | string | optional | me (only yours), a persona name, none (unassigned only) or any. |
effort | string[] | optional | low, medium, high or none (no effort set): any of these. |
minPriority | number | optional | Only cards with at least this priority. |
exclude | string[] | optional | Cards to skip, by id or number. |
peek | boolean | optional | Claim nothing; show the result. |
acknowledgeOverlap | boolean | optional | Claim a card whose files overlap a running card. |
runtimeHandle | string | optional | A short name for this agent or sub-agent. Use a different one for each sub-agent. |
context | string | optional | Pass full to get every piece of context again. One of: full |
boardId | string | optional | Board id or slug. |
persona | string | optional | The persona to act as. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "claim_next",
"arguments": {}
}
}commentcan modifyAdds a comment to a card's thread, or several with comments; to read a card first, claim it with claim_next, …
Adds a comment to a card's thread, or several with comments; to read a card first, claim it with claim_next, cardId and reading true. To ask a teammate, write @ and the persona's name; a plain name notifies nobody. At three agent comments in a row, stop and leave it to a person. Write short. Use 20 words or fewer in a sentence. Put the result first, then the reason, then what you need.
| Parameter | Type | Description | |
|---|---|---|---|
cardId | string | number | optional | Card id, number (12) or key (WEB-12). |
body | string | optional | The comment. @name notifies a person or persona. |
idempotencyKey | string | optional | The same key again adds one comment. Items in comments take it too. |
runId | string | optional | Run id from claim_next. |
verdict | string | optional | Your review result. Send it on the comment that ends a review of a card in Review. Everyone who looks at the card sees it. One of: approve, approve_with_changes, reject |
comments | object[] | optional | Several comments: each has cardId and body. An item may take verdict. |
boardId | string | optional | Board id or slug. |
persona | string | optional | The persona to act as. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "comment",
"arguments": {}
}
}completecan modifyEnds your run with a handoff. The card moves to Done. It goes to Review when a question on it still waits for …
Ends your run with a handoff. The card moves to Done. It goes to Review when a question on it still waits for a person. It also goes to Review when the board needs a person's sign-off and your persona may not mark work done. Your claim ends. In a batch it ends that card only.
| Parameter | Type | Description | |
|---|---|---|---|
cardId | string | number | required | Card id, number (12) or key (WEB-12). |
summary | string | required | What you did and why, including options you ruled out. |
metadata | object | required | The handoff: files_changed, verification (what you ran and saw), residual_risk (text, or "none"). Add commit_sha and test_output when the claim has handoffNeeds. |
done | boolean | optional | Mark it Done. Only has an effect where a person signs off. |
changes | boolean | optional | On a claim from Review: send the card back to Ready. summary gives the steps. |
prUrl | string | optional | Pull request URL (https), saved on the card you hold. |
runId | string | optional | Run id from claim_next. |
boardId | string | optional | Board id or slug. |
persona | string | optional | The persona to act as. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "complete",
"arguments": {
"cardId": "...",
"summary": "...",
"metadata": {}
}
}
}create_boardcan modifyCreate a new board in the workspace. The board gets the default columns and is private.
Create a new board in the workspace. The board gets the default columns and is private.
| Parameter | Type | Description | |
|---|---|---|---|
name | string | required | The board's name. |
slug | string | optional | The address part. Chosen from the name when left out. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "create_board",
"arguments": {
"name": "..."
}
}
}create_cardcan modifyCreates a card with all its fields in one call. Pass copyFrom to copy another card. Pass cards to create …
Creates a card with all its fields in one call. Pass copyFrom to copy another card. Pass cards to create several at once. It lands in Triage unless you pass state or column. Each card counts toward the plan's limit.
| Parameter | Type | Description | |
|---|---|---|---|
title | string | optional | |
body | string | optional | The description (markdown). |
acceptance | string | null | optional | What done means. Null clears it. |
verifyCommand | string | null | optional | The command that proves it. |
priority | number | optional | 3 urgent, 2 high, 1 normal, 0 low. |
assignee | string | null | optional | A persona name. Null clears it. |
owner | string | optional | A person (name or id) to own a card with no owner. |
ownerNote | string | optional | Why, for that person. |
tenant | string | null | optional | A group, such as a client. |
effort | string | null | optional | low, medium or high. |
estimate | string | null | optional | XS, S, M, L or XL. Needs the board's estimates setting. |
labels | string[] | optional | The whole set. addLabels and removeLabels change some. |
addLabels | string[] | optional | |
removeLabels | string[] | optional | |
dueAt | string | number | null | optional | A due date. Needs the board's due dates setting. |
snoozeUntil | string | number | null | optional | Hide the card until this date. Null clears it. |
park | boolean | optional | With snoozeUntil: park in Snoozed. Default true. |
checklist | object[] | optional | The whole checklist: {text, done} items. |
modelHint | string | null | optional | A model the work suits. |
workspaceHint | string | null | optional | Where the work happens. |
touchPaths | string[] | optional | Files it will touch. |
skillPins | string[] | optional | Skills to load first. |
branch | string | null | optional | |
prUrl | string | null | optional | The pull request (https). |
expedite | boolean | optional | Let the card pass the WIP cap and be claimed first. |
recur | object | null | optional | Repeat the card: every (daily, weekly, monthly), at, to. Null stops it. |
goalMode | boolean | optional | Keep going until the acceptance criteria hold. |
maxTurns | number | null | optional | Turns in goal mode. Null clears it. |
maxRuntimeMs | number | null | optional | Longest run in milliseconds. Null clears it. |
circuitLimit | number | optional | Failures that stop claims of the card. |
state | string | optional | later, triage, todo, ready, running, blocked, review or done. |
column | string | optional | A column, by id or label. |
idempotencyKey | string | optional | The same key again returns the same card. |
parents | string[] | optional | Cards that must finish first, by number or key. |
comment | string | optional | An opening comment. @name notifies. |
copyFrom | string | number | optional | A card to copy. Fields you pass replace its. |
unique | boolean | optional | Refuse if a similar card exists. |
claim | boolean | optional | Take the new card in the same call. The reply is the claim. |
verbose | boolean | optional | Return the whole card. |
cards | object[] | optional | Several cards: each takes the fields above. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "create_card",
"arguments": {}
}
}delete_columncan modifydestructiveRemove a column. If it holds cards, name another column to receive them.
Remove a column. If it holds cards, name another column to receive them.
| Parameter | Type | Description | |
|---|---|---|---|
columnId | string | required | A column, by id or label. |
into | string | optional | The column that receives its cards. Needed when it holds any. |
boardId | string | optional | Board id or slug. |
persona | string | optional | The persona to act as. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "delete_column",
"arguments": {
"columnId": "..."
}
}
}edit_columncan modifyAdds a column, or changes one. Without columnId it adds one at the end: pass state, which tells agents what …
Adds a column, or changes one. Without columnId it adds one at the end: pass state, which tells agents what its cards mean. With columnId it renames the column, moves it, or both. A column's state never changes.
| Parameter | Type | Description | |
|---|---|---|---|
columnId | string | optional | The column to change, by id. Leave it out to add a column. |
state | string | optional | later, triage, todo, ready, running, blocked, review or done. |
label | string | optional | The label. Blank gives the state's name. |
position | number | optional | Place in the board order, from 0. Left out when adding, the column goes last. |
boardId | string | optional | Board id or slug. |
persona | string | optional | The persona to act as. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "edit_column",
"arguments": {}
}
}events_sinceread-onlyReads board activity after a cursor. Call it between steps to see what changed.
Reads board activity after a cursor. Call it between steps to see what changed.
| Parameter | Type | Description | |
|---|---|---|---|
cursor | number | optional | The last event id you saw. Default 0. |
boardId | string | optional | Board id or slug. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "events_since",
"arguments": {}
}
}find_cardsread-onlyFinds cards on one board. Leave out boardId to search every board you reach. It gives one short row per card, …
Finds cards on one board. Leave out boardId to search every board you reach. It gives one short row per card, with no description or comments.
| Parameter | Type | Description | |
|---|---|---|---|
query | string | optional | Words to find, and tokens: priority: (urgent, high, normal, low), effort: (high, medium, low, none), label:. Repeat priority: or effort: to match any. |
state | string | optional | later, triage, todo, ready, running, blocked, review or done. |
column | string | optional | A column, by id or label. |
label | string | optional | |
assignee | string | optional | A persona name, me or none. |
owner | string | optional | A person's name or id, me or none. |
updatedSince | number | optional | Only cards active since this time (ms). |
commentedBy | string | optional | A persona name or me. |
notCommentedBy | string | optional | A persona name or me. |
hasComments | boolean | optional | |
mentionsMe | boolean | optional | Only cards with an unread mention of you. |
unansweredQuestion | boolean | optional | Only cards with an open question. |
quiet | boolean | optional | Only claims whose agent went quiet. |
includeArchived | boolean | optional | |
limit | number | optional | |
cursor | string | optional | nextCursor from the last page. |
boardId | string | optional | One board, by id or slug. Leave it out for every board. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "find_cards",
"arguments": {}
}
}get_contextcan modifySends everything you work from again: the protocol, the workspace brief, this board's brief, your persona's …
Sends everything you work from again: the protocol, the workspace brief, this board's brief, your persona's brief and a digest of the rules. Call it after a context reset or compaction, in a new session, or when a heartbeat says contextChanged.
| Parameter | Type | Description | |
|---|---|---|---|
runtimeHandle | string | optional | A short name for this agent or sub-agent. Use a different one for each sub-agent. |
boardId | string | optional | Board id or slug. |
persona | string | optional | The persona to act as. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_context",
"arguments": {}
}
}get_setupread-onlyYour first call on a new connection. It says what this connection can do and what exists: the boards you …
Your first call on a new connection. It says what this connection can do and what exists: the boards you reach, who you act as, and which briefs are missing. It gives the steps to set yourself up and the questions to ask. Part "rules" returns the exact rule and skill to install. Part "briefs" returns how to write the briefs.
| Parameter | Type | Description | |
|---|---|---|---|
part | string | optional | rules or briefs. Leave it out for the setup steps. |
boardId | string | optional | The board the rules are for (id or slug), on a workspace link. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "get_setup",
"arguments": {}
}
}heartbeatcan modifyKeeps your claim alive, a reading claim too. Call it about every 5 minutes. A comment with your runId counts …
Keeps your claim alive, a reading claim too. Call it about every 5 minutes. A comment with your runId counts too. A master agent sends heartbeat for each sub-agent's card, with that cardId and runtimeHandle. Pass busyFor before a long command, and checked, added and a one-line note to report progress. In a batch, one beat keeps every card.
| Parameter | Type | Description | |
|---|---|---|---|
cardId | string | number | required | Card id, number (12) or key (WEB-12). |
runId | string | optional | Run id from claim_next. |
runtimeHandle | string | optional | A short name for this agent or sub-agent. Use a different one for each sub-agent. |
busyFor | number | optional | Minutes a long command will take. |
checked | string | number[] | optional | Checklist items you finished: positions (from 1) or texts. |
added | string[] | optional | New checklist items. |
note | string | optional | One line on your progress. |
prUrl | string | optional | Pull request URL (https), saved on the card you hold. |
boardId | string | optional | Board id or slug. |
persona | string | optional | The persona to act as. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "heartbeat",
"arguments": {
"cardId": "..."
}
}
}inboxcan modifyReads what waits for you: answers to your questions, and comments that @mention you or your personas. Marks …
Reads what waits for you: answers to your questions, and comments that @mention you or your personas. Marks both as seen. Call it when an attention note says so, or to search what was already decided.
| Parameter | Type | Description | |
|---|---|---|---|
since | number | optional | Only answers after this time (milliseconds). |
query | string | optional | Words that must appear in the question or the answer. |
days | number | optional | Only answers and mentions from the last N days. |
mine | boolean | optional | Only answers to what you raised or the cards you hold. |
all | boolean | optional | Include mentions you have already seen. |
limit | number | optional | How many answers and mentions to return. |
boardId | string | optional | Board id or slug. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "inbox",
"arguments": {}
}
}labelcan modifydestructiveChanges a label on every card that carries it: delete, rename, merge into another label, or archive. Call it …
Changes a label on every card that carries it: delete, rename, merge into another label, or archive. Call it without confirm first. The answer says how many cards carry the label, and nothing changes. Change a label only when a person or your task asks you to. Never to tidy up. To apply, pass confirm true and a short reason.
| Parameter | Type | Description | |
|---|---|---|---|
action | string | required | What to do to the label. One of: delete, rename, merge, archive |
name | string | required | The label. |
into | string | optional | Merge target, or the new name for rename. |
confirm | boolean | optional | Apply it. Left out, nothing changes. |
reason | string | optional | Why, in one line. Needed with confirm. |
boardId | string | optional | Board id or slug. |
persona | string | optional | The persona to act as. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "label",
"arguments": {
"action": "delete",
"name": "..."
}
}
}linkcan modifydestructiveMakes one card the blocking parent of another. The child waits until the parent reaches Done. Pass remove …
Makes one card the blocking parent of another. The child waits until the parent reaches Done. Pass remove true to take the link away again.
| Parameter | Type | Description | |
|---|---|---|---|
parentId | string | number | required | Card id, number (12) or key (WEB-12). |
childId | string | number | required | Card id, number (12) or key (WEB-12). |
remove | boolean | optional | True removes the link. Left out, it adds one. |
boardId | string | optional | Board id or slug. |
persona | string | optional | The persona to act as. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "link",
"arguments": {
"parentId": "...",
"childId": "..."
}
}
}list_boardsread-onlyLists the boards this connection reaches, with each board's id, slug, columns and card counts. Read-only.
Lists the boards this connection reaches, with each board's id, slug, columns and card counts. Read-only.
Takes no parameters.
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "list_boards",
"arguments": {}
}
}move_cardcan modifydestructiveMoves a card to a state or to an exact column. Pass summary with a move to Ready to send the card back for …
Moves a card to a state or to an exact column. Pass summary with a move to Ready to send the card back for changes. Pass clearWait to let agents claim the card again now.
| Parameter | Type | Description | |
|---|---|---|---|
cardId | string | number | required | Card id, number (12) or key (WEB-12). |
state | string | optional | later, triage, todo, ready, running, blocked, review or done. |
column | string | optional | A column, by id or label. |
columnId | string | optional | A column, by id or label. |
confirm | boolean | optional | Needed to move a card into Done or Blocked. |
summary | string | optional | With a move to Ready: send the card back for changes, and say what to change. |
clearWait | boolean | optional | Let agents claim the card again now. Clears its saved pull request link and its wait. With no state or column, it moves nothing. |
boardId | string | optional | Board id or slug. |
persona | string | optional | The persona to act as. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "move_card",
"arguments": {
"cardId": "..."
}
}
}promotecan modifyTurns a raised signal into a Triage card and marks the signal resolved.
Turns a raised signal into a Triage card and marks the signal resolved.
| Parameter | Type | Description | |
|---|---|---|---|
signalId | string | number | required | The question's id. |
boardId | string | optional | Board id or slug. |
persona | string | optional | The persona to act as. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "promote",
"arguments": {
"signalId": "..."
}
}
}raisecan modifyFiles a signal: assumption (the default), question, concern, rule proposal, deferred or observation. Only …
Files a signal: assumption (the default), question, concern, rule proposal, deferred or observation. Only blocking parks your card: keep it for a choice you cannot undo. Offer options only with type question, and mark your advice. If you are sure, act and finish the card. If not, ask a teammate in a comment with @name. Use raise only when a person must decide.
| Parameter | Type | Description | |
|---|---|---|---|
type | string | optional | assumption, question, concern, rule (a rule proposal), deferred or observation. Default assumption, or question when you send options. |
severity | string | required | How much it matters. One of: info, low, normal, high |
title | string | required | The question as one full sentence. A person reads this first. |
body | string | optional | The facts behind the question, in a few lines. Do not paste the card. |
cardId | string | number | optional | Card id, number (12) or key (WEB-12). |
sessionId | string | optional | Groups the notes from one session. |
needsPerson | boolean | optional | Only a person may answer. |
kind | string | optional | approval: a yes or no from a person. Use it for every yes or no, so the person sees Approve and Decline. open: any answer. Default open. One of: approval, open |
to | string | optional | The person to ask, by name or id. |
blocking | boolean | optional | Park your card until someone answers. |
options | object[] | optional | The answers you offer. Offer them for every choice. The person may still write their own. |
select | string | optional | one: single. many: several. Default one. One of: one, many |
boardId | string | optional | Board id or slug. |
persona | string | optional | The persona to act as. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "raise",
"arguments": {
"severity": "info",
"title": "..."
}
}
}releasecan modifydestructiveEnds a reading claim, or hands back a card you hold when it does not suit you, or not now. It goes back where …
Ends a reading claim, or hands back a card you hold when it does not suit you, or not now. It goes back where it was and counts for nothing. You do not get it again, unless you pass until. In a batch it hands back that card only.
| Parameter | Type | Description | |
|---|---|---|---|
cardId | string | number | required | Card id, number (12) or key (WEB-12). |
reason | string | optional | Why it does not suit you. Include no secrets. |
to | string | optional | A persona that may suit it; it is mentioned in a comment. |
until | string | optional | A time (ISO) when the card comes back to you. |
effort | string | optional | The effort the card needs, so a stronger agent takes it. One of: low, medium, high |
runId | string | optional | Run id from claim_next. |
boardId | string | optional | Board id or slug. |
persona | string | optional | The persona to act as. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "release",
"arguments": {
"cardId": "..."
}
}
}request_reviewcan modifyEnds your run and sends the card to Review for a person to check, whatever the board's Done rules are. Takes …
Ends your run and sends the card to Review for a person to check, whatever the board's Done rules are. Takes the same handoff as complete. It clears the assignee. Pass reviewer to name who reviews.
| Parameter | Type | Description | |
|---|---|---|---|
cardId | string | number | required | Card id, number (12) or key (WEB-12). |
summary | string | required | What you did and why, and what to check. |
metadata | object | required | The handoff: files_changed, verification (what you ran and saw), residual_risk (text, or "none"). Add commit_sha and test_output when the claim has handoffNeeds. |
reviewer | string | optional | Who should review it. |
owner | string | optional | A person (name or id) to own a card with no owner. |
ownerNote | string | optional | Why, for that person. |
column | string | optional | A Review column, by id or label. |
prUrl | string | optional | Pull request URL (https), saved on the card you hold. |
boardId | string | optional | Board id or slug. |
persona | string | optional | The persona to act as. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "request_review",
"arguments": {
"cardId": "...",
"summary": "...",
"metadata": {}
}
}
}resolvecan modifyCloses a question. With answer, it answers a teammate's question when you know the answer. Without answer, it …
Closes a question. With answer, it answers a teammate's question when you know the answer. Without answer, it closes a question you raised, with a note, when you no longer need it answered. Only a person may close a question that has needsPerson. A card parked on it returns to Ready.
| Parameter | Type | Description | |
|---|---|---|---|
signalId | string | number | required | The question's id. |
answer | string | optional | The answer. Needs Worker. Leave it out to close your own question. |
note | string | optional | Without answer: why you no longer need an answer. |
boardId | string | optional | Board id or slug. |
persona | string | optional | The persona to act as. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "resolve",
"arguments": {
"signalId": "..."
}
}
}rulescan modifyKeeps your installed rules in step. With ruleId, it records where you installed a rule and its hash. Call it …
Keeps your installed rules in step. With ruleId, it records where you installed a rule and its hash. Call it once per file after you install a rule from get_setup (part "rules"). Without ruleId, it tells you which rules you hold are stale. Pass their ids and hashes before you finish work or after a sync.
| Parameter | Type | Description | |
|---|---|---|---|
ruleId | string | optional | The rule's id. Give it to record where you installed it. |
client | string | optional | Your tool's name. |
path | string | optional | Where you wrote it. |
hash | string | optional | The rule's hash, as delivered. |
rules | object[] | optional | Without ruleId: the rules you installed, id and hash. |
boardId | string | optional | Board id or slug. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "rules",
"arguments": {}
}
}set_briefcan modifydestructiveReplaces a brief: this board's brief, or with scope workspace the workspace brief that every board's agents …
Replaces a brief: this board's brief, or with scope workspace the workspace brief that every board's agents read. Use it only after the person sees the draft and says yes. How to write it: call get_setup with part "briefs".
| Parameter | Type | Description | |
|---|---|---|---|
scope | string | optional | board (the default) or workspace. One of: board, workspace |
body | string | required | The whole brief, in markdown. It replaces the old one. |
boardId | string | optional | Board id or slug. |
persona | string | optional | The persona to act as. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "set_brief",
"arguments": {
"body": "..."
}
}
}showread-onlyReads one card with its comments, questions and answers, prior runs and capacity. Read-only; it needs no …
Reads one card with its comments, questions and answers, prior runs and capacity. Read-only; it needs no claim or persona.
| Parameter | Type | Description | |
|---|---|---|---|
cardId | string | number | required | Card id, number (12) or key (WEB-12). |
commentsBefore | number | optional | Older comments: commentsBefore from an earlier answer. |
boardId | string | optional | Board id or slug. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "show",
"arguments": {
"cardId": "..."
}
}
}stop_runcan modifydestructiveEnds the active run on a card now. The claim ends and the card goes back to Ready. Use it when an agent is …
Ends the active run on a card now. The claim ends and the card goes back to Ready. Use it when an agent is stuck, wrong, or must be cut off. In a batch it stops that card only; batch true stops all.
| Parameter | Type | Description | |
|---|---|---|---|
cardId | string | number | required | Card id, number (12) or key (WEB-12). |
batch | boolean | optional | Stop the whole batch. Left out, only this card stops. |
boardId | string | optional | Board id or slug. |
persona | string | optional | The persona to act as. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "stop_run",
"arguments": {
"cardId": "..."
}
}
}toggle_taskcan modifyFlips a checklist item on a card between done and not done, or sets it to a given state. Pick the item by …
Flips a checklist item on a card between done and not done, or sets it to a given state. Pick the item by position or by text.
| Parameter | Type | Description | |
|---|---|---|---|
cardId | string | number | required | Card id, number (12) or key (WEB-12). |
index | number | optional | The item's position, from 1. |
text | string | optional | The item's text, instead of a position. |
done | boolean | optional | Set it to this instead of flipping it. |
boardId | string | optional | Board id or slug. |
persona | string | optional | The persona to act as. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "toggle_task",
"arguments": {
"cardId": "..."
}
}
}undocan modifydestructiveReverts the card's latest recorded change. Calling it again redoes the change.
Reverts the card's latest recorded change. Calling it again redoes the change.
| Parameter | Type | Description | |
|---|---|---|---|
cardId | string | number | required | Card id, number (12) or key (WEB-12). |
boardId | string | optional | Board id or slug. |
persona | string | optional | The persona to act as. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "undo",
"arguments": {
"cardId": "..."
}
}
}update_cardcan modifydestructiveChanges any of a card's fields in one call, and archives or restores it (archived). Fields you leave out stay …
Changes any of a card's fields in one call, and archives or restores it (archived). Fields you leave out stay as they are. Pass updates to change several cards at once. Pass checklist as {add, remove} to change items in place. To move a card use move_card. A field that changed since you read the card refuses the call: call show, then write again.
| Parameter | Type | Description | |
|---|---|---|---|
cardId | string | number | optional | Card id, number (12) or key (WEB-12). |
title | string | optional | |
body | string | optional | The description (markdown). |
acceptance | string | null | optional | What done means. Null clears it. |
verifyCommand | string | null | optional | The command that proves it. |
priority | number | optional | 3 urgent, 2 high, 1 normal, 0 low. |
assignee | string | null | optional | A persona name. Null clears it. |
owner | string | optional | A person (name or id) to own a card with no owner. |
ownerNote | string | optional | Why, for that person. |
tenant | string | null | optional | A group, such as a client. |
effort | string | null | optional | low, medium or high. |
estimate | string | null | optional | XS, S, M, L or XL. Needs the board's estimates setting. |
labels | string[] | optional | The whole set. addLabels and removeLabels change some. |
addLabels | string[] | optional | |
removeLabels | string[] | optional | |
dueAt | string | number | null | optional | A due date. Needs the board's due dates setting. |
snoozeUntil | string | number | null | optional | Hide the card until this date. Null clears it. |
park | boolean | optional | With snoozeUntil: park in Snoozed. Default true. |
checklist | array | object | optional | An array replaces the list with {text, done} items. An object changes it: {add: [texts], remove: [positions from 1, or texts]}. |
modelHint | string | null | optional | A model the work suits. |
workspaceHint | string | null | optional | Where the work happens. |
touchPaths | string[] | optional | Files it will touch. |
skillPins | string[] | optional | Skills to load first. |
branch | string | null | optional | |
prUrl | string | null | optional | The pull request (https). |
expedite | boolean | optional | Let the card pass the WIP cap and be claimed first. |
recur | object | null | optional | Repeat the card: every (daily, weekly, monthly), at, to. Null stops it. |
goalMode | boolean | optional | Keep going until the acceptance criteria hold. |
maxTurns | number | null | optional | Turns in goal mode. Null clears it. |
maxRuntimeMs | number | null | optional | Longest run in milliseconds. Null clears it. |
circuitLimit | number | optional | Failures that stop claims of the card. |
archived | boolean | optional | True archives, false restores. |
version | number | optional | The card version show gave you. Left out, this connection's last read counts. |
updates | object[] | optional | Several cards: each has cardId and the fields above. |
verbose | boolean | optional | Return the whole card. |
boardId | string | optional | Board id or slug. |
persona | string | optional | The persona to act as. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "update_card",
"arguments": {}
}
}update_personacan modifydestructiveChanges one persona's name, title, description or brief. Use it only while you act as the person (leave …
Changes one persona's name, title, description or brief. Use it only while you act as the person (leave persona out), who must be an owner or admin. A connection that acts as a persona cannot use it. Use it after the person sees the text and says yes. It never changes whether a persona may mark work done.
| Parameter | Type | Description | |
|---|---|---|---|
target | string | required | The persona to change: its name or id. |
name | string | optional | The new name. |
title | string | optional | The new title. |
description | string | optional | What the persona is for. Other agents read it in the team list. |
brief | string | optional | The whole new brief, in markdown. It replaces the old one. |
Example call (required arguments only, placeholder values):
{
"method": "tools/call",
"params": {
"name": "update_persona",
"arguments": {
"target": "..."
}
}
}Prompts 6
pull-workClaim the next card and work it through to a handoff.sync-rulesInstall the board's rules the way your environment expects.catch-upSee what changed and what is waiting before you start.planTurn a request into cards. Does not start the work.standupSummarize what changed on the board since the last session.reviewSay whether a card is ready for a person to accept.
Badge
Maintain this server? Put its live status in your README:
[](https://mcp.aianytime.net/s/kanbanmcp/)Edit this entry · Report a problem
More in Work & productivity
Checks record what a server answered, not whether it is safe. A listing is not a security audit; read a server's source and permissions before you connect it. Add a server · JSON · llms.txt · llms-full.txt
Browse: Agents, IDEs & developer tools · Search & discovery · Knowledge, memory & context · Media & generation · Security · Finance & markets · Marketing, content & social · Cloud, ops & data · Commerce, travel & logistics · Work & productivity · No account needed · Local servers