Home

batondeck

v0.1.0
Base URL
https://mcp.batondeck.com/mcp
Connect

Add to your MCP client configuration:

{ "mcpServers": { "batondeck": { "url": "https://mcp.batondeck.com/mcp" } } }
Protocol MCP 2025-03-26Transport httpCapabilities tools, resources, prompts

Tools

create_project

TOOLcreate_project

Create a project (workspace). The caller becomes its admin.

Parameters

namestringrequiredargument
idempotencyKeystringargument

Returns

projectIdstringrequired
create_project
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "create_project",
    "arguments": {
        "name": "string",
        "idempotencyKey": "string"
      }
  }
}
const result = await client.callTool("create_project", {
  "name": "string",
  "idempotencyKey": "string"
});
result = await session.call_tool("create_project", arguments={
  "name": "string",
  "idempotencyKey": "string"
})
Response
{
  "projectId": "string"
}

list_projects

TOOLlist_projects

List the projects the caller is a member of (the discovery entry point).

Parameters

allbooleanargument

Returns

projectsArray<object>required
Show child attributes
projectIdstringrequired
namestringrequired
rolestringviewermemberadminagentrequired
list_projects
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "list_projects",
    "arguments": {
        "all": true
      }
  }
}
const result = await client.callTool("list_projects", {
  "all": true
});
result = await session.call_tool("list_projects", arguments={
  "all": true
})
Response
{
  "projects": [
    {
      "projectId": "string",
      "name": "string",
      "role": "viewer"
    }
  ]
}

get_project

TOOLget_project

Get a project including members and settings.

Parameters

projectIdstringrequiredargument

Returns

projectobjectrequired
Show child attributes
idstringrequired
namestringrequired
createdBystringrequired
createdAtstringrequired
membersobjectrequired
settingsobjectrequired
Show child attributes
quotaEnabledbooleanrequired
txnCapnumber | nullrequired
reviewEnabledbooleanrequired
transitionTableobject
get_project
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "get_project",
    "arguments": {
        "projectId": "string"
      }
  }
}
const result = await client.callTool("get_project", {
  "projectId": "string"
});
result = await session.call_tool("get_project", arguments={
  "projectId": "string"
})
Response
{
  "project": {
    "id": "string",
    "name": "string",
    "createdBy": "string",
    "createdAt": "string",
    "members": {},
    "settings": {
      "quotaEnabled": true,
      "txnCap": 0,
      "reviewEnabled": true,
      "transitionTable": {}
    }
  }
}

delete_project

TOOLdelete_project

Delete a project and ALL nested data (boards, tasks, events, memory). Irreversible. Requires workspace admin or project admin.

Parameters

projectIdstringrequiredargument

Returns

okbooleanrequired
delete_project
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "delete_project",
    "arguments": {
        "projectId": "string"
      }
  }
}
const result = await client.callTool("delete_project", {
  "projectId": "string"
});
result = await session.call_tool("delete_project", arguments={
  "projectId": "string"
})
Response
{
  "ok": true
}

add_member

TOOLadd_member

Add or update a member of a project (admin only). How agents join a project.

Parameters

projectIdstringrequiredargument
identityIdstringrequiredargument
rolestringviewermemberadminagentrequiredargument

Returns

membersobjectrequired
add_member
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "add_member",
    "arguments": {
        "projectId": "string",
        "identityId": "string",
        "role": "viewer"
      }
  }
}
const result = await client.callTool("add_member", {
  "projectId": "string",
  "identityId": "string",
  "role": "viewer"
});
result = await session.call_tool("add_member", arguments={
  "projectId": "string",
  "identityId": "string",
  "role": "viewer"
})
Response
{
  "members": {}
}

remove_member

TOOLremove_member

Remove a member from a project (admin only; cannot remove the last admin).

Parameters

projectIdstringrequiredargument
identityIdstringrequiredargument

Returns

okbooleanrequired
remove_member
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "remove_member",
    "arguments": {
        "projectId": "string",
        "identityId": "string"
      }
  }
}
const result = await client.callTool("remove_member", {
  "projectId": "string",
  "identityId": "string"
});
result = await session.call_tool("remove_member", arguments={
  "projectId": "string",
  "identityId": "string"
})
Response
{
  "ok": true
}

update_settings

TOOLupdate_settings

Update project settings (admin only): review toggle, quota cap, and the status transition table.

Body

application/json
projectIdstringrequired
reviewEnabledboolean
quotaEnabledboolean
txnCapinteger | null
transitionTableobject

Returns

settingsobjectrequired
Show child attributes
quotaEnabledbooleanrequired
txnCapnumber | nullrequired
reviewEnabledbooleanrequired
transitionTableobject
update_settings
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "update_settings",
    "arguments": {
        "projectId": "string",
        "reviewEnabled": true,
        "quotaEnabled": true,
        "txnCap": 0,
        "transitionTable": {}
      }
  }
}
const result = await client.callTool("update_settings", {
  "projectId": "string",
  "reviewEnabled": true,
  "quotaEnabled": true,
  "txnCap": 0,
  "transitionTable": {}
});
result = await session.call_tool("update_settings", arguments={
  "projectId": "string",
  "reviewEnabled": true,
  "quotaEnabled": true,
  "txnCap": 0,
  "transitionTable": {}
})
Request Body
{
  "projectId": "string",
  "reviewEnabled": true,
  "quotaEnabled": true,
  "txnCap": 0,
  "transitionTable": {}
}
Response
{
  "settings": {
    "quotaEnabled": true,
    "txnCap": 0,
    "reviewEnabled": true,
    "transitionTable": {}
  }
}

create_board

TOOLcreate_board

Create a board in a project. Default columns if omitted.

Body

application/json
projectIdstringrequired
namestringrequired
columnsArray<object>
Show child attributes
namestringrequired
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLEDrequired
wipLimitinteger | null
idempotencyKeystring

Returns

boardobjectrequired
Show child attributes
idstringrequired
projectIdstringrequired
namestringrequired
columnsArray<object>required
Show child attributes
idstringrequired
namestringrequired
ordernumberrequired
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLEDrequired
wipLimitnumber | nullrequired
create_board
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "create_board",
    "arguments": {
        "projectId": "string",
        "name": "string",
        "columns": [
          {
            "name": "string",
            "status": "BACKLOG",
            "wipLimit": 0
          }
        ],
        "idempotencyKey": "string"
      }
  }
}
const result = await client.callTool("create_board", {
  "projectId": "string",
  "name": "string",
  "columns": [
    {
      "name": "string",
      "status": "BACKLOG",
      "wipLimit": 0
    }
  ],
  "idempotencyKey": "string"
});
result = await session.call_tool("create_board", arguments={
  "projectId": "string",
  "name": "string",
  "columns": [
    {
      "name": "string",
      "status": "BACKLOG",
      "wipLimit": 0
    }
  ],
  "idempotencyKey": "string"
})
Request Body
{
  "projectId": "string",
  "name": "string",
  "columns": [
    {
      "name": "string",
      "status": "BACKLOG",
      "wipLimit": 0
    }
  ],
  "idempotencyKey": "string"
}
Response
{
  "board": {
    "id": "string",
    "projectId": "string",
    "name": "string",
    "columns": [
      {
        "id": "string",
        "name": "string",
        "order": 0,
        "status": "BACKLOG",
        "wipLimit": 0
      }
    ]
  }
}

add_column

TOOLadd_column

Add a column (mapped to a status) to a board.

Body

application/json
projectIdstringrequired
boardIdstringrequired
namestringrequired
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLEDrequired
wipLimitinteger | null
ordernumber
idempotencyKeystring

Returns

columnobjectrequired
Show child attributes
idstringrequired
namestringrequired
ordernumberrequired
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLEDrequired
wipLimitnumber | nullrequired
add_column
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "add_column",
    "arguments": {
        "projectId": "string",
        "boardId": "string",
        "name": "string",
        "status": "BACKLOG",
        "wipLimit": 0,
        "order": 0,
        "idempotencyKey": "string"
      }
  }
}
const result = await client.callTool("add_column", {
  "projectId": "string",
  "boardId": "string",
  "name": "string",
  "status": "BACKLOG",
  "wipLimit": 0,
  "order": 0,
  "idempotencyKey": "string"
});
result = await session.call_tool("add_column", arguments={
  "projectId": "string",
  "boardId": "string",
  "name": "string",
  "status": "BACKLOG",
  "wipLimit": 0,
  "order": 0,
  "idempotencyKey": "string"
})
Request Body
{
  "projectId": "string",
  "boardId": "string",
  "name": "string",
  "status": "BACKLOG",
  "wipLimit": 0,
  "order": 0,
  "idempotencyKey": "string"
}
Response
{
  "column": {
    "id": "string",
    "name": "string",
    "order": 0,
    "status": "BACKLOG",
    "wipLimit": 0
  }
}

list_boards

TOOLlist_boards

List boards in a project.

Parameters

projectIdstringrequiredargument

Returns

boardsArray<object>required
Show child attributes
idstringrequired
projectIdstringrequired
namestringrequired
columnsArray<object>required
Show child attributes
idstringrequired
namestringrequired
ordernumberrequired
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLEDrequired
wipLimitnumber | nullrequired
list_boards
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "list_boards",
    "arguments": {
        "projectId": "string"
      }
  }
}
const result = await client.callTool("list_boards", {
  "projectId": "string"
});
result = await session.call_tool("list_boards", arguments={
  "projectId": "string"
})
Response
{
  "boards": [
    {
      "id": "string",
      "projectId": "string",
      "name": "string",
      "columns": [
        {
          "id": "string",
          "name": "string",
          "order": 0,
          "status": "BACKLOG",
          "wipLimit": 0
        }
      ]
    }
  ]
}

get_board

TOOLget_board

Get a board with per-column task counts.

Parameters

projectIdstringrequiredargument
boardIdstringrequiredargument

Returns

boardobjectrequired
Show child attributes
idstringrequired
projectIdstringrequired
namestringrequired
columnsArray<object>required
Show child attributes
idstringrequired
namestringrequired
ordernumberrequired
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLEDrequired
wipLimitnumber | nullrequired
taskCountsobjectrequired
get_board
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "get_board",
    "arguments": {
        "projectId": "string",
        "boardId": "string"
      }
  }
}
const result = await client.callTool("get_board", {
  "projectId": "string",
  "boardId": "string"
});
result = await session.call_tool("get_board", arguments={
  "projectId": "string",
  "boardId": "string"
})
Response
{
  "board": {
    "id": "string",
    "projectId": "string",
    "name": "string",
    "columns": [
      {
        "id": "string",
        "name": "string",
        "order": 0,
        "status": "BACKLOG",
        "wipLimit": 0
      }
    ]
  },
  "taskCounts": {}
}

update_column

TOOLupdate_column

Update a board column: rename, change its mapped status, WIP limit, or order.

Body

application/json
projectIdstringrequired
boardIdstringrequired
columnIdstringrequired
namestring
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLED
wipLimitinteger | null
ordernumber

Returns

boardobjectrequired
Show child attributes
idstringrequired
projectIdstringrequired
namestringrequired
columnsArray<object>required
Show child attributes
idstringrequired
namestringrequired
ordernumberrequired
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLEDrequired
wipLimitnumber | nullrequired
update_column
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "update_column",
    "arguments": {
        "projectId": "string",
        "boardId": "string",
        "columnId": "string",
        "name": "string",
        "status": "BACKLOG",
        "wipLimit": 0,
        "order": 0
      }
  }
}
const result = await client.callTool("update_column", {
  "projectId": "string",
  "boardId": "string",
  "columnId": "string",
  "name": "string",
  "status": "BACKLOG",
  "wipLimit": 0,
  "order": 0
});
result = await session.call_tool("update_column", arguments={
  "projectId": "string",
  "boardId": "string",
  "columnId": "string",
  "name": "string",
  "status": "BACKLOG",
  "wipLimit": 0,
  "order": 0
})
Request Body
{
  "projectId": "string",
  "boardId": "string",
  "columnId": "string",
  "name": "string",
  "status": "BACKLOG",
  "wipLimit": 0,
  "order": 0
}
Response
{
  "board": {
    "id": "string",
    "projectId": "string",
    "name": "string",
    "columns": [
      {
        "id": "string",
        "name": "string",
        "order": 0,
        "status": "BACKLOG",
        "wipLimit": 0
      }
    ]
  }
}

remove_column

TOOLremove_column

Remove a board column (must be empty; cannot remove the last column).

Parameters

projectIdstringrequiredargument
boardIdstringrequiredargument
columnIdstringrequiredargument

Returns

boardobjectrequired
Show child attributes
idstringrequired
projectIdstringrequired
namestringrequired
columnsArray<object>required
Show child attributes
idstringrequired
namestringrequired
ordernumberrequired
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLEDrequired
wipLimitnumber | nullrequired
remove_column
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "remove_column",
    "arguments": {
        "projectId": "string",
        "boardId": "string",
        "columnId": "string"
      }
  }
}
const result = await client.callTool("remove_column", {
  "projectId": "string",
  "boardId": "string",
  "columnId": "string"
});
result = await session.call_tool("remove_column", arguments={
  "projectId": "string",
  "boardId": "string",
  "columnId": "string"
})
Response
{
  "board": {
    "id": "string",
    "projectId": "string",
    "name": "string",
    "columns": [
      {
        "id": "string",
        "name": "string",
        "order": 0,
        "status": "BACKLOG",
        "wipLimit": 0
      }
    ]
  }
}

create_task

TOOLcreate_task

Create a task on a board (defaults to the first column / its status).

Body

application/json
projectIdstringrequired
boardIdstringrequired
titlestringrequired
descriptionstring
prioritystringlownormalhighurgent
labelsArray<string>
requiredCapabilitiesArray<string>
parentTaskIdstring | null
columnIdstring
customFieldsobject
idempotencyKeystring

Returns

taskobjectrequired
Show child attributes
idstringrequired
projectIdstringrequired
boardIdstringrequired
columnIdstringrequired
titlestringrequired
descriptionstringrequired
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLEDrequired
prioritystringlownormalhighurgentrequired
assigneestring | nullrequired
labelsArray<string>required
requiredCapabilitiesArray<string>required
estimatenumber | nullrequired
dueAtstring | nullrequired
parentTaskIdstring | nullrequired
orderstringrequired
customFieldsobjectrequired
blockedByArray<string>required
blocksArray<string>required
contextSummarystringrequired
versionnumberrequired
claimobject | nullrequired
createdBystringrequired
createdAtstringrequired
updatedBystringrequired
updatedAtstringrequired
create_task
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "create_task",
    "arguments": {
        "projectId": "string",
        "boardId": "string",
        "title": "string",
        "description": "string",
        "priority": "low",
        "labels": [
          "string"
        ],
        "requiredCapabilities": [
          "string"
        ],
        "parentTaskId": "string",
        "columnId": "string",
        "customFields": {},
        "idempotencyKey": "string"
      }
  }
}
const result = await client.callTool("create_task", {
  "projectId": "string",
  "boardId": "string",
  "title": "string",
  "description": "string",
  "priority": "low",
  "labels": [
    "string"
  ],
  "requiredCapabilities": [
    "string"
  ],
  "parentTaskId": "string",
  "columnId": "string",
  "customFields": {},
  "idempotencyKey": "string"
});
result = await session.call_tool("create_task", arguments={
  "projectId": "string",
  "boardId": "string",
  "title": "string",
  "description": "string",
  "priority": "low",
  "labels": [
    "string"
  ],
  "requiredCapabilities": [
    "string"
  ],
  "parentTaskId": "string",
  "columnId": "string",
  "customFields": {},
  "idempotencyKey": "string"
})
Request Body
{
  "projectId": "string",
  "boardId": "string",
  "title": "string",
  "description": "string",
  "priority": "low",
  "labels": [
    "string"
  ],
  "requiredCapabilities": [
    "string"
  ],
  "parentTaskId": "string",
  "columnId": "string",
  "customFields": {},
  "idempotencyKey": "string"
}
Response
{
  "task": {
    "id": "string",
    "projectId": "string",
    "boardId": "string",
    "columnId": "string",
    "title": "string",
    "description": "string",
    "status": "BACKLOG",
    "priority": "low",
    "assignee": "string",
    "labels": [
      "string"
    ],
    "requiredCapabilities": [
      "string"
    ],
    "estimate": 0,
    "dueAt": "string",
    "parentTaskId": "string",
    "order": "string",
    "customFields": {},
    "blockedBy": [
      "string"
    ],
    "blocks": [
      "string"
    ],
    "contextSummary": "string",
    "version": 0,
    "claim": {
      "owner": "string",
      "leaseId": "string",
      "expiresAt": "string"
    },
    "createdBy": "string",
    "createdAt": "string",
    "updatedBy": "string",
    "updatedAt": "string"
  }
}

get_task

TOOLget_task

Get a task by id.

Parameters

projectIdstringrequiredargument
taskIdstringrequiredargument

Returns

taskobjectrequired
Show child attributes
idstringrequired
projectIdstringrequired
boardIdstringrequired
columnIdstringrequired
titlestringrequired
descriptionstringrequired
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLEDrequired
prioritystringlownormalhighurgentrequired
assigneestring | nullrequired
labelsArray<string>required
requiredCapabilitiesArray<string>required
estimatenumber | nullrequired
dueAtstring | nullrequired
parentTaskIdstring | nullrequired
orderstringrequired
customFieldsobjectrequired
blockedByArray<string>required
blocksArray<string>required
contextSummarystringrequired
versionnumberrequired
claimobject | nullrequired
createdBystringrequired
createdAtstringrequired
updatedBystringrequired
updatedAtstringrequired
get_task
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "get_task",
    "arguments": {
        "projectId": "string",
        "taskId": "string"
      }
  }
}
const result = await client.callTool("get_task", {
  "projectId": "string",
  "taskId": "string"
});
result = await session.call_tool("get_task", arguments={
  "projectId": "string",
  "taskId": "string"
})
Response
{
  "task": {
    "id": "string",
    "projectId": "string",
    "boardId": "string",
    "columnId": "string",
    "title": "string",
    "description": "string",
    "status": "BACKLOG",
    "priority": "low",
    "assignee": "string",
    "labels": [
      "string"
    ],
    "requiredCapabilities": [
      "string"
    ],
    "estimate": 0,
    "dueAt": "string",
    "parentTaskId": "string",
    "order": "string",
    "customFields": {},
    "blockedBy": [
      "string"
    ],
    "blocks": [
      "string"
    ],
    "contextSummary": "string",
    "version": 0,
    "claim": {
      "owner": "string",
      "leaseId": "string",
      "expiresAt": "string"
    },
    "createdBy": "string",
    "createdAt": "string",
    "updatedBy": "string",
    "updatedAt": "string"
  }
}

list_tasks

TOOLlist_tasks

List tasks on a board with optional filters and pagination.

Body

application/json
projectIdstringrequired
boardIdstringrequired
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLED
assigneestring | null
labelstring
unblockedOnlyboolean
limitinteger<= 200
cursorstring

Returns

tasksArray<object>required
Show child attributes
idstringrequired
projectIdstringrequired
boardIdstringrequired
columnIdstringrequired
titlestringrequired
descriptionstringrequired
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLEDrequired
prioritystringlownormalhighurgentrequired
assigneestring | nullrequired
labelsArray<string>required
requiredCapabilitiesArray<string>required
estimatenumber | nullrequired
dueAtstring | nullrequired
parentTaskIdstring | nullrequired
orderstringrequired
customFieldsobjectrequired
blockedByArray<string>required
blocksArray<string>required
contextSummarystringrequired
versionnumberrequired
claimobject | nullrequired
createdBystringrequired
createdAtstringrequired
updatedBystringrequired
updatedAtstringrequired
nextCursorstring
list_tasks
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "list_tasks",
    "arguments": {
        "projectId": "string",
        "boardId": "string",
        "status": "BACKLOG",
        "assignee": "string",
        "label": "string",
        "unblockedOnly": true,
        "limit": 0,
        "cursor": "string"
      }
  }
}
const result = await client.callTool("list_tasks", {
  "projectId": "string",
  "boardId": "string",
  "status": "BACKLOG",
  "assignee": "string",
  "label": "string",
  "unblockedOnly": true,
  "limit": 0,
  "cursor": "string"
});
result = await session.call_tool("list_tasks", arguments={
  "projectId": "string",
  "boardId": "string",
  "status": "BACKLOG",
  "assignee": "string",
  "label": "string",
  "unblockedOnly": true,
  "limit": 0,
  "cursor": "string"
})
Request Body
{
  "projectId": "string",
  "boardId": "string",
  "status": "BACKLOG",
  "assignee": "string",
  "label": "string",
  "unblockedOnly": true,
  "limit": 0,
  "cursor": "string"
}
Response
{
  "tasks": [
    {
      "id": "string",
      "projectId": "string",
      "boardId": "string",
      "columnId": "string",
      "title": "string",
      "description": "string",
      "status": "BACKLOG",
      "priority": "low",
      "assignee": "string",
      "labels": [
        "string"
      ],
      "requiredCapabilities": [
        "string"
      ],
      "estimate": 0,
      "dueAt": "string",
      "parentTaskId": "string",
      "order": "string",
      "customFields": {},
      "blockedBy": [
        "string"
      ],
      "blocks": [
        "string"
      ],
      "contextSummary": "string",
      "version": 0,
      "claim": {
        "owner": "string",
        "leaseId": "string",
        "expiresAt": "string"
      },
      "createdBy": "string",
      "createdAt": "string",
      "updatedBy": "string",
      "updatedAt": "string"
    }
  ],
  "nextCursor": "string"
}

update_task

TOOLupdate_task

Update task fields (optimistic concurrency via version).

Body

application/json
projectIdstringrequired
taskIdstringrequired
versioninteger[0, 9007199254740991]required
patchobjectrequired
Show child attributes
titlestring
descriptionstring
prioritystringlownormalhighurgent
labelsArray<string>
assigneestring | null
estimatenumber | null
dueAtstring | null
requiredCapabilitiesArray<string>
customFieldsobject

Returns

taskobjectrequired
Show child attributes
idstringrequired
projectIdstringrequired
boardIdstringrequired
columnIdstringrequired
titlestringrequired
descriptionstringrequired
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLEDrequired
prioritystringlownormalhighurgentrequired
assigneestring | nullrequired
labelsArray<string>required
requiredCapabilitiesArray<string>required
estimatenumber | nullrequired
dueAtstring | nullrequired
parentTaskIdstring | nullrequired
orderstringrequired
customFieldsobjectrequired
blockedByArray<string>required
blocksArray<string>required
contextSummarystringrequired
versionnumberrequired
claimobject | nullrequired
createdBystringrequired
createdAtstringrequired
updatedBystringrequired
updatedAtstringrequired
update_task
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "update_task",
    "arguments": {
        "projectId": "string",
        "taskId": "string",
        "version": 0,
        "patch": {
          "title": "string",
          "description": "string",
          "priority": "low",
          "labels": [
            "string"
          ],
          "assignee": "string",
          "estimate": 0,
          "dueAt": "string",
          "requiredCapabilities": [
            "string"
          ],
          "customFields": {}
        }
      }
  }
}
const result = await client.callTool("update_task", {
  "projectId": "string",
  "taskId": "string",
  "version": 0,
  "patch": {
    "title": "string",
    "description": "string",
    "priority": "low",
    "labels": [
      "string"
    ],
    "assignee": "string",
    "estimate": 0,
    "dueAt": "string",
    "requiredCapabilities": [
      "string"
    ],
    "customFields": {}
  }
});
result = await session.call_tool("update_task", arguments={
  "projectId": "string",
  "taskId": "string",
  "version": 0,
  "patch": {
    "title": "string",
    "description": "string",
    "priority": "low",
    "labels": [
      "string"
    ],
    "assignee": "string",
    "estimate": 0,
    "dueAt": "string",
    "requiredCapabilities": [
      "string"
    ],
    "customFields": {}
  }
})
Request Body
{
  "projectId": "string",
  "taskId": "string",
  "version": 0,
  "patch": {
    "title": "string",
    "description": "string",
    "priority": "low",
    "labels": [
      "string"
    ],
    "assignee": "string",
    "estimate": 0,
    "dueAt": "string",
    "requiredCapabilities": [
      "string"
    ],
    "customFields": {}
  }
}
Response
{
  "task": {
    "id": "string",
    "projectId": "string",
    "boardId": "string",
    "columnId": "string",
    "title": "string",
    "description": "string",
    "status": "BACKLOG",
    "priority": "low",
    "assignee": "string",
    "labels": [
      "string"
    ],
    "requiredCapabilities": [
      "string"
    ],
    "estimate": 0,
    "dueAt": "string",
    "parentTaskId": "string",
    "order": "string",
    "customFields": {},
    "blockedBy": [
      "string"
    ],
    "blocks": [
      "string"
    ],
    "contextSummary": "string",
    "version": 0,
    "claim": {
      "owner": "string",
      "leaseId": "string",
      "expiresAt": "string"
    },
    "createdBy": "string",
    "createdAt": "string",
    "updatedBy": "string",
    "updatedAt": "string"
  }
}

move_task

TOOLmove_task

Move a task to a column/status and/or reorder it (version-checked).

Parameters

projectIdstringrequiredargument
taskIdstringrequiredargument
versioninteger[0, 9007199254740991]requiredargument
toColumnIdstringargument
toStatusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLEDargument
orderstringargument

Returns

taskobjectrequired
Show child attributes
idstringrequired
projectIdstringrequired
boardIdstringrequired
columnIdstringrequired
titlestringrequired
descriptionstringrequired
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLEDrequired
prioritystringlownormalhighurgentrequired
assigneestring | nullrequired
labelsArray<string>required
requiredCapabilitiesArray<string>required
estimatenumber | nullrequired
dueAtstring | nullrequired
parentTaskIdstring | nullrequired
orderstringrequired
customFieldsobjectrequired
blockedByArray<string>required
blocksArray<string>required
contextSummarystringrequired
versionnumberrequired
claimobject | nullrequired
createdBystringrequired
createdAtstringrequired
updatedBystringrequired
updatedAtstringrequired
move_task
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "move_task",
    "arguments": {
        "projectId": "string",
        "taskId": "string",
        "version": 0,
        "toColumnId": "string",
        "toStatus": "BACKLOG",
        "order": "string"
      }
  }
}
const result = await client.callTool("move_task", {
  "projectId": "string",
  "taskId": "string",
  "version": 0,
  "toColumnId": "string",
  "toStatus": "BACKLOG",
  "order": "string"
});
result = await session.call_tool("move_task", arguments={
  "projectId": "string",
  "taskId": "string",
  "version": 0,
  "toColumnId": "string",
  "toStatus": "BACKLOG",
  "order": "string"
})
Response
{
  "task": {
    "id": "string",
    "projectId": "string",
    "boardId": "string",
    "columnId": "string",
    "title": "string",
    "description": "string",
    "status": "BACKLOG",
    "priority": "low",
    "assignee": "string",
    "labels": [
      "string"
    ],
    "requiredCapabilities": [
      "string"
    ],
    "estimate": 0,
    "dueAt": "string",
    "parentTaskId": "string",
    "order": "string",
    "customFields": {},
    "blockedBy": [
      "string"
    ],
    "blocks": [
      "string"
    ],
    "contextSummary": "string",
    "version": 0,
    "claim": {
      "owner": "string",
      "leaseId": "string",
      "expiresAt": "string"
    },
    "createdBy": "string",
    "createdAt": "string",
    "updatedBy": "string",
    "updatedAt": "string"
  }
}

add_context_item

TOOLadd_context_item

Append a context item (note/decision/field) to a task.

Parameters

projectIdstringrequiredargument
taskIdstringrequiredargument
kindstringnotedecisionfieldrequiredargument
bodystringrequiredargument
idempotencyKeystringargument

Returns

itemobjectrequired
Show child attributes
idstringrequired
taskIdstringrequired
kindstringnotedecisionfieldrequired
bodystringrequired
authorstringrequired
tsstringrequired
add_context_item
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "add_context_item",
    "arguments": {
        "projectId": "string",
        "taskId": "string",
        "kind": "note",
        "body": "string",
        "idempotencyKey": "string"
      }
  }
}
const result = await client.callTool("add_context_item", {
  "projectId": "string",
  "taskId": "string",
  "kind": "note",
  "body": "string",
  "idempotencyKey": "string"
});
result = await session.call_tool("add_context_item", arguments={
  "projectId": "string",
  "taskId": "string",
  "kind": "note",
  "body": "string",
  "idempotencyKey": "string"
})
Response
{
  "item": {
    "id": "string",
    "taskId": "string",
    "kind": "note",
    "body": "string",
    "author": "string",
    "ts": "string"
  }
}

set_summary

TOOLset_summary

Set a task's rolling context summary (version-checked).

Parameters

projectIdstringrequiredargument
taskIdstringrequiredargument
versioninteger[0, 9007199254740991]requiredargument
summarystringrequiredargument

Returns

taskobjectrequired
Show child attributes
idstringrequired
projectIdstringrequired
boardIdstringrequired
columnIdstringrequired
titlestringrequired
descriptionstringrequired
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLEDrequired
prioritystringlownormalhighurgentrequired
assigneestring | nullrequired
labelsArray<string>required
requiredCapabilitiesArray<string>required
estimatenumber | nullrequired
dueAtstring | nullrequired
parentTaskIdstring | nullrequired
orderstringrequired
customFieldsobjectrequired
blockedByArray<string>required
blocksArray<string>required
contextSummarystringrequired
versionnumberrequired
claimobject | nullrequired
createdBystringrequired
createdAtstringrequired
updatedBystringrequired
updatedAtstringrequired
set_summary
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "set_summary",
    "arguments": {
        "projectId": "string",
        "taskId": "string",
        "version": 0,
        "summary": "string"
      }
  }
}
const result = await client.callTool("set_summary", {
  "projectId": "string",
  "taskId": "string",
  "version": 0,
  "summary": "string"
});
result = await session.call_tool("set_summary", arguments={
  "projectId": "string",
  "taskId": "string",
  "version": 0,
  "summary": "string"
})
Response
{
  "task": {
    "id": "string",
    "projectId": "string",
    "boardId": "string",
    "columnId": "string",
    "title": "string",
    "description": "string",
    "status": "BACKLOG",
    "priority": "low",
    "assignee": "string",
    "labels": [
      "string"
    ],
    "requiredCapabilities": [
      "string"
    ],
    "estimate": 0,
    "dueAt": "string",
    "parentTaskId": "string",
    "order": "string",
    "customFields": {},
    "blockedBy": [
      "string"
    ],
    "blocks": [
      "string"
    ],
    "contextSummary": "string",
    "version": 0,
    "claim": {
      "owner": "string",
      "leaseId": "string",
      "expiresAt": "string"
    },
    "createdBy": "string",
    "createdAt": "string",
    "updatedBy": "string",
    "updatedAt": "string"
  }
}

claim_task

TOOLclaim_task

Claim a READY task (exclusive lease); moves it to IN_PROGRESS.

Parameters

projectIdstringrequiredargument
taskIdstringrequiredargument
leaseSecondsinteger<= 86400argument

Returns

leaseIdstringrequired
taskobjectrequired
Show child attributes
idstringrequired
projectIdstringrequired
boardIdstringrequired
columnIdstringrequired
titlestringrequired
descriptionstringrequired
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLEDrequired
prioritystringlownormalhighurgentrequired
assigneestring | nullrequired
labelsArray<string>required
requiredCapabilitiesArray<string>required
estimatenumber | nullrequired
dueAtstring | nullrequired
parentTaskIdstring | nullrequired
orderstringrequired
customFieldsobjectrequired
blockedByArray<string>required
blocksArray<string>required
contextSummarystringrequired
versionnumberrequired
claimobject | nullrequired
createdBystringrequired
createdAtstringrequired
updatedBystringrequired
updatedAtstringrequired
claim_task
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "claim_task",
    "arguments": {
        "projectId": "string",
        "taskId": "string",
        "leaseSeconds": 0
      }
  }
}
const result = await client.callTool("claim_task", {
  "projectId": "string",
  "taskId": "string",
  "leaseSeconds": 0
});
result = await session.call_tool("claim_task", arguments={
  "projectId": "string",
  "taskId": "string",
  "leaseSeconds": 0
})
Response
{
  "leaseId": "string",
  "task": {
    "id": "string",
    "projectId": "string",
    "boardId": "string",
    "columnId": "string",
    "title": "string",
    "description": "string",
    "status": "BACKLOG",
    "priority": "low",
    "assignee": "string",
    "labels": [
      "string"
    ],
    "requiredCapabilities": [
      "string"
    ],
    "estimate": 0,
    "dueAt": "string",
    "parentTaskId": "string",
    "order": "string",
    "customFields": {},
    "blockedBy": [
      "string"
    ],
    "blocks": [
      "string"
    ],
    "contextSummary": "string",
    "version": 0,
    "claim": {
      "owner": "string",
      "leaseId": "string",
      "expiresAt": "string"
    },
    "createdBy": "string",
    "createdAt": "string",
    "updatedBy": "string",
    "updatedAt": "string"
  }
}

heartbeat_task

TOOLheartbeat_task

Extend an active lease without bumping the task version.

Parameters

projectIdstringrequiredargument
taskIdstringrequiredargument
leaseIdstringrequiredargument
leaseSecondsinteger<= 86400argument

Returns

expiresAtstringrequired
heartbeat_task
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "heartbeat_task",
    "arguments": {
        "projectId": "string",
        "taskId": "string",
        "leaseId": "string",
        "leaseSeconds": 0
      }
  }
}
const result = await client.callTool("heartbeat_task", {
  "projectId": "string",
  "taskId": "string",
  "leaseId": "string",
  "leaseSeconds": 0
});
result = await session.call_tool("heartbeat_task", arguments={
  "projectId": "string",
  "taskId": "string",
  "leaseId": "string",
  "leaseSeconds": 0
})
Response
{
  "expiresAt": "string"
}

release_task

TOOLrelease_task

Release a lease; IN_PROGRESS → READY.

Parameters

projectIdstringrequiredargument
taskIdstringrequiredargument
leaseIdstringrequiredargument

Returns

taskobjectrequired
Show child attributes
idstringrequired
projectIdstringrequired
boardIdstringrequired
columnIdstringrequired
titlestringrequired
descriptionstringrequired
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLEDrequired
prioritystringlownormalhighurgentrequired
assigneestring | nullrequired
labelsArray<string>required
requiredCapabilitiesArray<string>required
estimatenumber | nullrequired
dueAtstring | nullrequired
parentTaskIdstring | nullrequired
orderstringrequired
customFieldsobjectrequired
blockedByArray<string>required
blocksArray<string>required
contextSummarystringrequired
versionnumberrequired
claimobject | nullrequired
createdBystringrequired
createdAtstringrequired
updatedBystringrequired
updatedAtstringrequired
release_task
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "release_task",
    "arguments": {
        "projectId": "string",
        "taskId": "string",
        "leaseId": "string"
      }
  }
}
const result = await client.callTool("release_task", {
  "projectId": "string",
  "taskId": "string",
  "leaseId": "string"
});
result = await session.call_tool("release_task", arguments={
  "projectId": "string",
  "taskId": "string",
  "leaseId": "string"
})
Response
{
  "task": {
    "id": "string",
    "projectId": "string",
    "boardId": "string",
    "columnId": "string",
    "title": "string",
    "description": "string",
    "status": "BACKLOG",
    "priority": "low",
    "assignee": "string",
    "labels": [
      "string"
    ],
    "requiredCapabilities": [
      "string"
    ],
    "estimate": 0,
    "dueAt": "string",
    "parentTaskId": "string",
    "order": "string",
    "customFields": {},
    "blockedBy": [
      "string"
    ],
    "blocks": [
      "string"
    ],
    "contextSummary": "string",
    "version": 0,
    "claim": {
      "owner": "string",
      "leaseId": "string",
      "expiresAt": "string"
    },
    "createdBy": "string",
    "createdAt": "string",
    "updatedBy": "string",
    "updatedAt": "string"
  }
}

complete_task

TOOLcomplete_task

Complete work: → REVIEW (or DONE when the board skips review). Clears the lease.

Parameters

projectIdstringrequiredargument
taskIdstringrequiredargument
leaseIdstringrequiredargument

Returns

taskobjectrequired
Show child attributes
idstringrequired
projectIdstringrequired
boardIdstringrequired
columnIdstringrequired
titlestringrequired
descriptionstringrequired
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLEDrequired
prioritystringlownormalhighurgentrequired
assigneestring | nullrequired
labelsArray<string>required
requiredCapabilitiesArray<string>required
estimatenumber | nullrequired
dueAtstring | nullrequired
parentTaskIdstring | nullrequired
orderstringrequired
customFieldsobjectrequired
blockedByArray<string>required
blocksArray<string>required
contextSummarystringrequired
versionnumberrequired
claimobject | nullrequired
createdBystringrequired
createdAtstringrequired
updatedBystringrequired
updatedAtstringrequired
complete_task
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "complete_task",
    "arguments": {
        "projectId": "string",
        "taskId": "string",
        "leaseId": "string"
      }
  }
}
const result = await client.callTool("complete_task", {
  "projectId": "string",
  "taskId": "string",
  "leaseId": "string"
});
result = await session.call_tool("complete_task", arguments={
  "projectId": "string",
  "taskId": "string",
  "leaseId": "string"
})
Response
{
  "task": {
    "id": "string",
    "projectId": "string",
    "boardId": "string",
    "columnId": "string",
    "title": "string",
    "description": "string",
    "status": "BACKLOG",
    "priority": "low",
    "assignee": "string",
    "labels": [
      "string"
    ],
    "requiredCapabilities": [
      "string"
    ],
    "estimate": 0,
    "dueAt": "string",
    "parentTaskId": "string",
    "order": "string",
    "customFields": {},
    "blockedBy": [
      "string"
    ],
    "blocks": [
      "string"
    ],
    "contextSummary": "string",
    "version": 0,
    "claim": {
      "owner": "string",
      "leaseId": "string",
      "expiresAt": "string"
    },
    "createdBy": "string",
    "createdAt": "string",
    "updatedBy": "string",
    "updatedAt": "string"
  }
}

block_task

TOOLblock_task

Mark a task BLOCKED (records blockers); releases the lease.

Parameters

projectIdstringrequiredargument
taskIdstringrequiredargument
leaseIdstringrequiredargument
reasonstringrequiredargument
blockedByArray<string>argument

Returns

taskobjectrequired
Show child attributes
idstringrequired
projectIdstringrequired
boardIdstringrequired
columnIdstringrequired
titlestringrequired
descriptionstringrequired
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLEDrequired
prioritystringlownormalhighurgentrequired
assigneestring | nullrequired
labelsArray<string>required
requiredCapabilitiesArray<string>required
estimatenumber | nullrequired
dueAtstring | nullrequired
parentTaskIdstring | nullrequired
orderstringrequired
customFieldsobjectrequired
blockedByArray<string>required
blocksArray<string>required
contextSummarystringrequired
versionnumberrequired
claimobject | nullrequired
createdBystringrequired
createdAtstringrequired
updatedBystringrequired
updatedAtstringrequired
block_task
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "block_task",
    "arguments": {
        "projectId": "string",
        "taskId": "string",
        "leaseId": "string",
        "reason": "string",
        "blockedBy": [
          "string"
        ]
      }
  }
}
const result = await client.callTool("block_task", {
  "projectId": "string",
  "taskId": "string",
  "leaseId": "string",
  "reason": "string",
  "blockedBy": [
    "string"
  ]
});
result = await session.call_tool("block_task", arguments={
  "projectId": "string",
  "taskId": "string",
  "leaseId": "string",
  "reason": "string",
  "blockedBy": [
    "string"
  ]
})
Response
{
  "task": {
    "id": "string",
    "projectId": "string",
    "boardId": "string",
    "columnId": "string",
    "title": "string",
    "description": "string",
    "status": "BACKLOG",
    "priority": "low",
    "assignee": "string",
    "labels": [
      "string"
    ],
    "requiredCapabilities": [
      "string"
    ],
    "estimate": 0,
    "dueAt": "string",
    "parentTaskId": "string",
    "order": "string",
    "customFields": {},
    "blockedBy": [
      "string"
    ],
    "blocks": [
      "string"
    ],
    "contextSummary": "string",
    "version": 0,
    "claim": {
      "owner": "string",
      "leaseId": "string",
      "expiresAt": "string"
    },
    "createdBy": "string",
    "createdAt": "string",
    "updatedBy": "string",
    "updatedAt": "string"
  }
}

handoff_task

TOOLhandoff_task

Hand a task to another agent: release lease, reassign, leave a note.

Parameters

projectIdstringrequiredargument
taskIdstringrequiredargument
leaseIdstringrequiredargument
toAgentstringrequiredargument
memoryNotestringrequiredargument

Returns

taskobjectrequired
Show child attributes
idstringrequired
projectIdstringrequired
boardIdstringrequired
columnIdstringrequired
titlestringrequired
descriptionstringrequired
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLEDrequired
prioritystringlownormalhighurgentrequired
assigneestring | nullrequired
labelsArray<string>required
requiredCapabilitiesArray<string>required
estimatenumber | nullrequired
dueAtstring | nullrequired
parentTaskIdstring | nullrequired
orderstringrequired
customFieldsobjectrequired
blockedByArray<string>required
blocksArray<string>required
contextSummarystringrequired
versionnumberrequired
claimobject | nullrequired
createdBystringrequired
createdAtstringrequired
updatedBystringrequired
updatedAtstringrequired
handoff_task
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "handoff_task",
    "arguments": {
        "projectId": "string",
        "taskId": "string",
        "leaseId": "string",
        "toAgent": "string",
        "memoryNote": "string"
      }
  }
}
const result = await client.callTool("handoff_task", {
  "projectId": "string",
  "taskId": "string",
  "leaseId": "string",
  "toAgent": "string",
  "memoryNote": "string"
});
result = await session.call_tool("handoff_task", arguments={
  "projectId": "string",
  "taskId": "string",
  "leaseId": "string",
  "toAgent": "string",
  "memoryNote": "string"
})
Response
{
  "task": {
    "id": "string",
    "projectId": "string",
    "boardId": "string",
    "columnId": "string",
    "title": "string",
    "description": "string",
    "status": "BACKLOG",
    "priority": "low",
    "assignee": "string",
    "labels": [
      "string"
    ],
    "requiredCapabilities": [
      "string"
    ],
    "estimate": 0,
    "dueAt": "string",
    "parentTaskId": "string",
    "order": "string",
    "customFields": {},
    "blockedBy": [
      "string"
    ],
    "blocks": [
      "string"
    ],
    "contextSummary": "string",
    "version": 0,
    "claim": {
      "owner": "string",
      "leaseId": "string",
      "expiresAt": "string"
    },
    "createdBy": "string",
    "createdAt": "string",
    "updatedBy": "string",
    "updatedAt": "string"
  }
}

next_task

TOOLnext_task

Highest-priority unblocked, unclaimed, eligible task on a board (or null).

Parameters

projectIdstringrequiredargument
boardIdstringrequiredargument
capabilitiesArray<string>argument

Returns

taskobject | nullrequired
next_task
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "next_task",
    "arguments": {
        "projectId": "string",
        "boardId": "string",
        "capabilities": [
          "string"
        ]
      }
  }
}
const result = await client.callTool("next_task", {
  "projectId": "string",
  "boardId": "string",
  "capabilities": [
    "string"
  ]
});
result = await session.call_tool("next_task", arguments={
  "projectId": "string",
  "boardId": "string",
  "capabilities": [
    "string"
  ]
})
Response
{
  "task": {
    "id": "string",
    "projectId": "string",
    "boardId": "string",
    "columnId": "string",
    "title": "string",
    "description": "string",
    "status": "BACKLOG",
    "priority": "low",
    "assignee": "string",
    "labels": [
      "string"
    ],
    "requiredCapabilities": [
      "string"
    ],
    "estimate": 0,
    "dueAt": "string",
    "parentTaskId": "string",
    "order": "string",
    "customFields": {},
    "blockedBy": [
      "string"
    ],
    "blocks": [
      "string"
    ],
    "contextSummary": "string",
    "version": 0,
    "claim": {
      "owner": "string",
      "leaseId": "string",
      "expiresAt": "string"
    },
    "createdBy": "string",
    "createdAt": "string",
    "updatedBy": "string",
    "updatedAt": "string"
  }
}

wait_for_task

TOOLwait_for_task

Long-poll next_task: blocks until a claimable READY task appears on the board, or timeoutSec (default 25, max 50) elapses — then returns {task: null}. Re-call in a loop instead of polling next_task.

Parameters

projectIdstringrequiredargument
boardIdstringrequiredargument
timeoutSecinteger<= 50argument

Returns

taskobject | nullrequired
wait_for_task
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "wait_for_task",
    "arguments": {
        "projectId": "string",
        "boardId": "string",
        "timeoutSec": 0
      }
  }
}
const result = await client.callTool("wait_for_task", {
  "projectId": "string",
  "boardId": "string",
  "timeoutSec": 0
});
result = await session.call_tool("wait_for_task", arguments={
  "projectId": "string",
  "boardId": "string",
  "timeoutSec": 0
})
Response
{
  "task": {
    "id": "string",
    "projectId": "string",
    "boardId": "string",
    "columnId": "string",
    "title": "string",
    "description": "string",
    "status": "BACKLOG",
    "priority": "low",
    "assignee": "string",
    "labels": [
      "string"
    ],
    "requiredCapabilities": [
      "string"
    ],
    "estimate": 0,
    "dueAt": "string",
    "parentTaskId": "string",
    "order": "string",
    "customFields": {},
    "blockedBy": [
      "string"
    ],
    "blocks": [
      "string"
    ],
    "contextSummary": "string",
    "version": 0,
    "claim": {
      "owner": "string",
      "leaseId": "string",
      "expiresAt": "string"
    },
    "createdBy": "string",
    "createdAt": "string",
    "updatedBy": "string",
    "updatedAt": "string"
  }
}

write_memory

TOOLwrite_memory

Write a memory entry (scope task/agent/shared, optional TTL).

Body

application/json
projectIdstringrequired
taskIdstringrequired
scopestringtaskagentsharedrequired
keystringrequired
valueany
largeArtifactobject
Show child attributes
fileNamestringrequired
mimeTypestringrequired
ttlstring
idempotencyKeystring

Returns

entryIdstringrequired
uploadUrlstring
write_memory
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "write_memory",
    "arguments": {
        "projectId": "string",
        "taskId": "string",
        "scope": "task",
        "key": "string",
        "largeArtifact": {
          "fileName": "string",
          "mimeType": "string"
        },
        "ttl": "string",
        "idempotencyKey": "string"
      }
  }
}
const result = await client.callTool("write_memory", {
  "projectId": "string",
  "taskId": "string",
  "scope": "task",
  "key": "string",
  "largeArtifact": {
    "fileName": "string",
    "mimeType": "string"
  },
  "ttl": "string",
  "idempotencyKey": "string"
});
result = await session.call_tool("write_memory", arguments={
  "projectId": "string",
  "taskId": "string",
  "scope": "task",
  "key": "string",
  "largeArtifact": {
    "fileName": "string",
    "mimeType": "string"
  },
  "ttl": "string",
  "idempotencyKey": "string"
})
Request Body
{
  "projectId": "string",
  "taskId": "string",
  "scope": "task",
  "key": "string",
  "largeArtifact": {
    "fileName": "string",
    "mimeType": "string"
  },
  "ttl": "string",
  "idempotencyKey": "string"
}
Response
{
  "entryId": "string",
  "uploadUrl": "string"
}

read_memory

TOOLread_memory

Read memory entries for a task (agent scope is private to the caller).

Parameters

projectIdstringrequiredargument
taskIdstringrequiredargument
scopestringtaskagentsharedargument
keystringargument

Returns

entriesArray<object>required
Show child attributes
idstringrequired
taskIdstringrequired
scopestringtaskagentsharedrequired
keystringrequired
valueany | nullrequired
gcsUristring | nullrequired
authorstringrequired
tsstringrequired
ttlstring | nullrequired
read_memory
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "read_memory",
    "arguments": {
        "projectId": "string",
        "taskId": "string",
        "scope": "task",
        "key": "string"
      }
  }
}
const result = await client.callTool("read_memory", {
  "projectId": "string",
  "taskId": "string",
  "scope": "task",
  "key": "string"
});
result = await session.call_tool("read_memory", arguments={
  "projectId": "string",
  "taskId": "string",
  "scope": "task",
  "key": "string"
})
Response
{
  "entries": [
    {
      "id": "string",
      "taskId": "string",
      "scope": "task",
      "key": "string",
      "gcsUri": "string",
      "author": "string",
      "ts": "string",
      "ttl": "string"
    }
  ]
}

get_task_context

TOOLget_task_context

Composed, token-budgeted briefing for a task (summary, fields, items, deps, attachments, memory).

Parameters

projectIdstringrequiredargument
taskIdstringrequiredargument
includeArray<string>summaryfieldsitemsdepsattachmentsmemoryargument
limitinteger<= 100argument
cursorstringargument

Returns

summarystringrequired
fieldsobjectrequired
itemsArray<object>required
Show child attributes
idstringrequired
taskIdstringrequired
kindstringnotedecisionfieldrequired
bodystringrequired
authorstringrequired
tsstringrequired
depsobjectrequired
Show child attributes
blockedByArray<string>required
blocksArray<string>required
edgesArray<object>required
Show child attributes
idstringrequired
projectIdstringrequired
fromTaskIdstringrequired
toTaskIdstringrequired
typestringblocksrelatesrequired
createdBystringrequired
tsstringrequired
attachmentsArray<object>required
Show child attributes
idstringrequired
taskIdstringrequired
gcsUristringrequired
mimeTypestringrequired
bytesnumberrequired
sha256string | nullrequired
thumbUristring | nullrequired
extractedTextstring | nullrequired
kindstringfileimageaudiovideorequired
statusstringpendingreadyfailedrequired
createdBystringrequired
tsstringrequired
memoryArray<object>required
Show child attributes
idstringrequired
taskIdstringrequired
scopestringtaskagentsharedrequired
keystringrequired
valueany | nullrequired
gcsUristring | nullrequired
authorstringrequired
tsstringrequired
ttlstring | nullrequired
nextCursorstring
get_task_context
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "get_task_context",
    "arguments": {
        "projectId": "string",
        "taskId": "string",
        "include": [
          "summary"
        ],
        "limit": 0,
        "cursor": "string"
      }
  }
}
const result = await client.callTool("get_task_context", {
  "projectId": "string",
  "taskId": "string",
  "include": [
    "summary"
  ],
  "limit": 0,
  "cursor": "string"
});
result = await session.call_tool("get_task_context", arguments={
  "projectId": "string",
  "taskId": "string",
  "include": [
    "summary"
  ],
  "limit": 0,
  "cursor": "string"
})
Response
{
  "summary": "string",
  "fields": {},
  "items": [
    {
      "id": "string",
      "taskId": "string",
      "kind": "note",
      "body": "string",
      "author": "string",
      "ts": "string"
    }
  ],
  "deps": {
    "blockedBy": [
      "string"
    ],
    "blocks": [
      "string"
    ],
    "edges": [
      {
        "id": "string",
        "projectId": "string",
        "fromTaskId": "string",
        "toTaskId": "string",
        "type": "blocks",
        "createdBy": "string",
        "ts": "string"
      }
    ]
  },
  "attachments": [
    {
      "id": "string",
      "taskId": "string",
      "gcsUri": "string",
      "mimeType": "string",
      "bytes": 0,
      "sha256": "string",
      "thumbUri": "string",
      "extractedText": "string",
      "kind": "file",
      "status": "pending",
      "createdBy": "string",
      "ts": "string"
    }
  ],
  "memory": [
    {
      "id": "string",
      "taskId": "string",
      "scope": "task",
      "key": "string",
      "gcsUri": "string",
      "author": "string",
      "ts": "string",
      "ttl": "string"
    }
  ],
  "nextCursor": "string"
}

add_dependency

TOOLadd_dependency

Add a dependency edge (blocks/relates). Rejects cycles in the blocks graph.

Parameters

projectIdstringrequiredargument
fromTaskIdstringrequiredargument
toTaskIdstringrequiredargument
typestringblocksrelatesargument
idempotencyKeystringargument

Returns

edgeobjectrequired
Show child attributes
idstringrequired
projectIdstringrequired
fromTaskIdstringrequired
toTaskIdstringrequired
typestringblocksrelatesrequired
createdBystringrequired
tsstringrequired
add_dependency
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "add_dependency",
    "arguments": {
        "projectId": "string",
        "fromTaskId": "string",
        "toTaskId": "string",
        "type": "blocks",
        "idempotencyKey": "string"
      }
  }
}
const result = await client.callTool("add_dependency", {
  "projectId": "string",
  "fromTaskId": "string",
  "toTaskId": "string",
  "type": "blocks",
  "idempotencyKey": "string"
});
result = await session.call_tool("add_dependency", arguments={
  "projectId": "string",
  "fromTaskId": "string",
  "toTaskId": "string",
  "type": "blocks",
  "idempotencyKey": "string"
})
Response
{
  "edge": {
    "id": "string",
    "projectId": "string",
    "fromTaskId": "string",
    "toTaskId": "string",
    "type": "blocks",
    "createdBy": "string",
    "ts": "string"
  }
}

remove_dependency

TOOLremove_dependency

Remove a dependency edge.

Parameters

projectIdstringrequiredargument
edgeIdstringrequiredargument

Returns

okbooleanrequired
remove_dependency
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "remove_dependency",
    "arguments": {
        "projectId": "string",
        "edgeId": "string"
      }
  }
}
const result = await client.callTool("remove_dependency", {
  "projectId": "string",
  "edgeId": "string"
});
result = await session.call_tool("remove_dependency", arguments={
  "projectId": "string",
  "edgeId": "string"
})
Response
{
  "ok": true
}

add_subtask

TOOLadd_subtask

Create a child task under a parent (same board).

Parameters

projectIdstringrequiredargument
parentTaskIdstringrequiredargument
titlestringrequiredargument
descriptionstringargument
prioritystringlownormalhighurgentargument
idempotencyKeystringargument

Returns

taskobjectrequired
Show child attributes
idstringrequired
projectIdstringrequired
boardIdstringrequired
columnIdstringrequired
titlestringrequired
descriptionstringrequired
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLEDrequired
prioritystringlownormalhighurgentrequired
assigneestring | nullrequired
labelsArray<string>required
requiredCapabilitiesArray<string>required
estimatenumber | nullrequired
dueAtstring | nullrequired
parentTaskIdstring | nullrequired
orderstringrequired
customFieldsobjectrequired
blockedByArray<string>required
blocksArray<string>required
contextSummarystringrequired
versionnumberrequired
claimobject | nullrequired
createdBystringrequired
createdAtstringrequired
updatedBystringrequired
updatedAtstringrequired
add_subtask
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "add_subtask",
    "arguments": {
        "projectId": "string",
        "parentTaskId": "string",
        "title": "string",
        "description": "string",
        "priority": "low",
        "idempotencyKey": "string"
      }
  }
}
const result = await client.callTool("add_subtask", {
  "projectId": "string",
  "parentTaskId": "string",
  "title": "string",
  "description": "string",
  "priority": "low",
  "idempotencyKey": "string"
});
result = await session.call_tool("add_subtask", arguments={
  "projectId": "string",
  "parentTaskId": "string",
  "title": "string",
  "description": "string",
  "priority": "low",
  "idempotencyKey": "string"
})
Response
{
  "task": {
    "id": "string",
    "projectId": "string",
    "boardId": "string",
    "columnId": "string",
    "title": "string",
    "description": "string",
    "status": "BACKLOG",
    "priority": "low",
    "assignee": "string",
    "labels": [
      "string"
    ],
    "requiredCapabilities": [
      "string"
    ],
    "estimate": 0,
    "dueAt": "string",
    "parentTaskId": "string",
    "order": "string",
    "customFields": {},
    "blockedBy": [
      "string"
    ],
    "blocks": [
      "string"
    ],
    "contextSummary": "string",
    "version": 0,
    "claim": {
      "owner": "string",
      "leaseId": "string",
      "expiresAt": "string"
    },
    "createdBy": "string",
    "createdAt": "string",
    "updatedBy": "string",
    "updatedAt": "string"
  }
}

list_subtasks

TOOLlist_subtasks

List child tasks of a parent.

Parameters

projectIdstringrequiredargument
parentTaskIdstringrequiredargument

Returns

tasksArray<object>required
Show child attributes
idstringrequired
projectIdstringrequired
boardIdstringrequired
columnIdstringrequired
titlestringrequired
descriptionstringrequired
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLEDrequired
prioritystringlownormalhighurgentrequired
assigneestring | nullrequired
labelsArray<string>required
requiredCapabilitiesArray<string>required
estimatenumber | nullrequired
dueAtstring | nullrequired
parentTaskIdstring | nullrequired
orderstringrequired
customFieldsobjectrequired
blockedByArray<string>required
blocksArray<string>required
contextSummarystringrequired
versionnumberrequired
claimobject | nullrequired
createdBystringrequired
createdAtstringrequired
updatedBystringrequired
updatedAtstringrequired
list_subtasks
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "list_subtasks",
    "arguments": {
        "projectId": "string",
        "parentTaskId": "string"
      }
  }
}
const result = await client.callTool("list_subtasks", {
  "projectId": "string",
  "parentTaskId": "string"
});
result = await session.call_tool("list_subtasks", arguments={
  "projectId": "string",
  "parentTaskId": "string"
})
Response
{
  "tasks": [
    {
      "id": "string",
      "projectId": "string",
      "boardId": "string",
      "columnId": "string",
      "title": "string",
      "description": "string",
      "status": "BACKLOG",
      "priority": "low",
      "assignee": "string",
      "labels": [
        "string"
      ],
      "requiredCapabilities": [
        "string"
      ],
      "estimate": 0,
      "dueAt": "string",
      "parentTaskId": "string",
      "order": "string",
      "customFields": {},
      "blockedBy": [
        "string"
      ],
      "blocks": [
        "string"
      ],
      "contextSummary": "string",
      "version": 0,
      "claim": {
        "owner": "string",
        "leaseId": "string",
        "expiresAt": "string"
      },
      "createdBy": "string",
      "createdAt": "string",
      "updatedBy": "string",
      "updatedAt": "string"
    }
  ]
}

attach_file

TOOLattach_file

Create a pending attachment and return a V4 signed PUT URL for upload.

Parameters

projectIdstringrequiredargument
taskIdstringrequiredargument
fileNamestringrequiredargument
mimeTypestringrequiredargument
kindstringfileimageaudiovideorequiredargument
bytesinteger[0, 9007199254740991]requiredargument
idempotencyKeystringargument

Returns

attachmentIdstringrequired
uploadUrlstringrequired
expiresAtstringrequired
attach_file
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "attach_file",
    "arguments": {
        "projectId": "string",
        "taskId": "string",
        "fileName": "string",
        "mimeType": "string",
        "kind": "file",
        "bytes": 0,
        "idempotencyKey": "string"
      }
  }
}
const result = await client.callTool("attach_file", {
  "projectId": "string",
  "taskId": "string",
  "fileName": "string",
  "mimeType": "string",
  "kind": "file",
  "bytes": 0,
  "idempotencyKey": "string"
});
result = await session.call_tool("attach_file", arguments={
  "projectId": "string",
  "taskId": "string",
  "fileName": "string",
  "mimeType": "string",
  "kind": "file",
  "bytes": 0,
  "idempotencyKey": "string"
})
Response
{
  "attachmentId": "string",
  "uploadUrl": "string",
  "expiresAt": "string"
}

list_attachments

TOOLlist_attachments

List a task’s attachments with signed download URLs (manifest; never raw bytes).

Parameters

projectIdstringrequiredargument
taskIdstringrequiredargument

Returns

attachmentsArray<object>required
Show child attributes
idstringrequired
taskIdstringrequired
gcsUristringrequired
mimeTypestringrequired
bytesnumberrequired
sha256string | nullrequired
thumbUristring | nullrequired
extractedTextstring | nullrequired
kindstringfileimageaudiovideorequired
statusstringpendingreadyfailedrequired
createdBystringrequired
tsstringrequired
downloadUrlstringrequired
list_attachments
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "list_attachments",
    "arguments": {
        "projectId": "string",
        "taskId": "string"
      }
  }
}
const result = await client.callTool("list_attachments", {
  "projectId": "string",
  "taskId": "string"
});
result = await session.call_tool("list_attachments", arguments={
  "projectId": "string",
  "taskId": "string"
})
Response
{
  "attachments": [
    {
      "id": "string",
      "taskId": "string",
      "gcsUri": "string",
      "mimeType": "string",
      "bytes": 0,
      "sha256": "string",
      "thumbUri": "string",
      "extractedText": "string",
      "kind": "file",
      "status": "pending",
      "createdBy": "string",
      "ts": "string",
      "downloadUrl": "string"
    }
  ]
}

search_tasks

TOOLsearch_tasks

Search tasks by text (title/description/labels/fields; attachment text on the in-memory backend).

Parameters

projectIdstringrequiredargument
querystringrequiredargument
boardIdstringargument
kinteger<= 50argument

Returns

resultsArray<object>required
Show child attributes
taskobjectrequired
Show child attributes
idstringrequired
projectIdstringrequired
boardIdstringrequired
columnIdstringrequired
titlestringrequired
descriptionstringrequired
statusstringBACKLOGREADYIN_PROGRESSBLOCKEDREVIEWDONECANCELLEDrequired
prioritystringlownormalhighurgentrequired
assigneestring | nullrequired
labelsArray<string>required
requiredCapabilitiesArray<string>required
estimatenumber | nullrequired
dueAtstring | nullrequired
parentTaskIdstring | nullrequired
orderstringrequired
customFieldsobjectrequired
blockedByArray<string>required
blocksArray<string>required
contextSummarystringrequired
versionnumberrequired
claimobject | nullrequired
createdBystringrequired
createdAtstringrequired
updatedBystringrequired
updatedAtstringrequired
scorenumberrequired
search_tasks
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "search_tasks",
    "arguments": {
        "projectId": "string",
        "query": "string",
        "boardId": "string",
        "k": 0
      }
  }
}
const result = await client.callTool("search_tasks", {
  "projectId": "string",
  "query": "string",
  "boardId": "string",
  "k": 0
});
result = await session.call_tool("search_tasks", arguments={
  "projectId": "string",
  "query": "string",
  "boardId": "string",
  "k": 0
})
Response
{
  "results": [
    {
      "task": {
        "id": "string",
        "projectId": "string",
        "boardId": "string",
        "columnId": "string",
        "title": "string",
        "description": "string",
        "status": "BACKLOG",
        "priority": "low",
        "assignee": "string",
        "labels": [
          "string"
        ],
        "requiredCapabilities": [
          "string"
        ],
        "estimate": 0,
        "dueAt": "string",
        "parentTaskId": "string",
        "order": "string",
        "customFields": {},
        "blockedBy": [
          "string"
        ],
        "blocks": [
          "string"
        ],
        "contextSummary": "string",
        "version": 0,
        "claim": {
          "owner": "string",
          "leaseId": "string",
          "expiresAt": "string"
        },
        "createdBy": "string",
        "createdAt": "string",
        "updatedBy": "string",
        "updatedAt": "string"
      },
      "score": 0
    }
  ]
}

list_agent_sessions

TOOLlist_agent_sessions

List the CALLER'S OWN recent MCP agent sessions (connection telemetry): which of your agents/clients connected, when, with what client, and how active. Scoped to the caller — never returns other users' sessions.

Parameters

limitinteger<= 200argument
allbooleanargument

Returns

sessionsArray<object>required
Show child attributes
sessionKeystringrequired
agentNamestringrequired
identityIdstringrequired
kindstringservice_accountoauth_userdevrequired
clientNamestring
clientVersionstring
firstSeenAtstringrequired
lastSeenAtstringrequired
sessionCountnumberrequired
requestCountnumberrequired
toolCountsobjectrequired
lastToolstring
lastProjectIdstring
list_agent_sessions
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "list_agent_sessions",
    "arguments": {
        "limit": 0,
        "all": true
      }
  }
}
const result = await client.callTool("list_agent_sessions", {
  "limit": 0,
  "all": true
});
result = await session.call_tool("list_agent_sessions", arguments={
  "limit": 0,
  "all": true
})
Response
{
  "sessions": [
    {
      "sessionKey": "string",
      "agentName": "string",
      "identityId": "string",
      "kind": "service_account",
      "clientName": "string",
      "clientVersion": "string",
      "firstSeenAt": "string",
      "lastSeenAt": "string",
      "sessionCount": 0,
      "requestCount": 0,
      "toolCounts": {},
      "lastTool": "string",
      "lastProjectId": "string"
    }
  ]
}

check_access

TOOLcheck_access

Check workspace access status for an identity (self-only; admins may check anyone).

Parameters

emailstringrequiredargument

Returns

statusstringadminapprovedpendingdeniednonerequired
check_access
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "check_access",
    "arguments": {
        "email": "string"
      }
  }
}
const result = await client.callTool("check_access", {
  "email": "string"
});
result = await session.call_tool("check_access", arguments={
  "email": "string"
})
Response
{
  "status": "admin"
}

request_access

TOOLrequest_access

Register/request workspace access (self-only, idempotent). In auto mode the account is approved immediately (and rostered so an admin can later disable it); in approval mode it creates a pending request an admin must approve.

Parameters

emailstringrequiredargument

Returns

statusstringadminapprovedpendingdeniednonerequired
request_access
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "request_access",
    "arguments": {
        "email": "string"
      }
  }
}
const result = await client.callTool("request_access", {
  "email": "string"
});
result = await session.call_tool("request_access", arguments={
  "email": "string"
})
Response
{
  "status": "admin"
}

list_access_requests

TOOLlist_access_requests

ADMIN: list workspace access requests (pending + decided), newest first.

Parameters

limitinteger<= 500argument

Returns

requestsArray<object>required
Show child attributes
emailstringrequired
statusstringpendingapproveddeniedrequired
requestedAtstringrequired
decidedAtstring
decidedBystring
list_access_requests
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "list_access_requests",
    "arguments": {
        "limit": 0
      }
  }
}
const result = await client.callTool("list_access_requests", {
  "limit": 0
});
result = await session.call_tool("list_access_requests", arguments={
  "limit": 0
})
Response
{
  "requests": [
    {
      "email": "string",
      "status": "pending",
      "requestedAt": "string",
      "decidedAt": "string",
      "decidedBy": "string"
    }
  ]
}

decide_access

TOOLdecide_access

ADMIN: approve or deny a workspace access request.

Parameters

emailstringrequiredargument
decisionstringapproveddeniedrequiredargument

Returns

requestobjectrequired
Show child attributes
emailstringrequired
statusstringpendingapproveddeniedrequired
requestedAtstringrequired
decidedAtstring
decidedBystring
decide_access
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "decide_access",
    "arguments": {
        "email": "string",
        "decision": "approved"
      }
  }
}
const result = await client.callTool("decide_access", {
  "email": "string",
  "decision": "approved"
});
result = await session.call_tool("decide_access", arguments={
  "email": "string",
  "decision": "approved"
})
Response
{
  "request": {
    "email": "string",
    "status": "pending",
    "requestedAt": "string",
    "decidedAt": "string",
    "decidedBy": "string"
  }
}

Resources

board

RESOURCEconductor://{projectId}/board/{boardId}

Column layout + per-column task counts

Parameters

projectIdstringrequiredpath
boardIdstringrequiredpath

Returns

Returns MCP content array (text, image, or embedded resource).

board
{
  "jsonrpc": "2.0",
  "method": "resources/read",
  "params": {
    "uri": "conductor://{projectId}/board/{boardId}"
  }
}
const result = await client.readResource("conductor://{projectId}/board/{boardId}");
result = await session.read_resource("conductor://{projectId}/board/{boardId}")
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

task

RESOURCEconductor://{projectId}/task/{taskId}

The task document

Parameters

projectIdstringrequiredpath
taskIdstringrequiredpath

Returns

Returns MCP content array (text, image, or embedded resource).

task
{
  "jsonrpc": "2.0",
  "method": "resources/read",
  "params": {
    "uri": "conductor://{projectId}/task/{taskId}"
  }
}
const result = await client.readResource("conductor://{projectId}/task/{taskId}");
result = await session.read_resource("conductor://{projectId}/task/{taskId}")
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

task-context

RESOURCEconductor://{projectId}/task/{taskId}/context

Composed briefing (summary, items, memory, deps)

Parameters

projectIdstringrequiredpath
taskIdstringrequiredpath

Returns

Returns MCP content array (text, image, or embedded resource).

task-context
{
  "jsonrpc": "2.0",
  "method": "resources/read",
  "params": {
    "uri": "conductor://{projectId}/task/{taskId}/context"
  }
}
const result = await client.readResource("conductor://{projectId}/task/{taskId}/context");
result = await session.read_resource("conductor://{projectId}/task/{taskId}/context")
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

board-feed

RESOURCEconductor://{projectId}/board/{boardId}/feed

Recent events for a board

Parameters

projectIdstringrequiredpath
boardIdstringrequiredpath

Returns

Returns MCP content array (text, image, or embedded resource).

board-feed
{
  "jsonrpc": "2.0",
  "method": "resources/read",
  "params": {
    "uri": "conductor://{projectId}/board/{boardId}/feed"
  }
}
const result = await client.readResource("conductor://{projectId}/board/{boardId}/feed");
result = await session.read_resource("conductor://{projectId}/board/{boardId}/feed")
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

Prompts

pick_up_next_task

PROMPTpick_up_next_task

Claim and start the next eligible task on a board.

Parameters

projectIdstringrequiredargument
boardIdstringrequiredargument

Returns

Returns MCP content array (text, image, or embedded resource).

pick_up_next_task
{
  "jsonrpc": "2.0",
  "method": "prompts/get",
  "params": {
    "name": "pick_up_next_task",
    "arguments": {
        "projectId": "<projectId>",
        "boardId": "<boardId>"
      }
  }
}
const result = await client.getPrompt("pick_up_next_task", {
  projectId: "<projectId>",
  boardId: "<boardId>",
});
result = await session.get_prompt("pick_up_next_task", arguments={
    "projectId": "<projectId>",
    "boardId": "<boardId>",
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

triage_inbox

PROMPTtriage_inbox

Triage BACKLOG tasks: set priority/labels and move ready ones to READY.

Parameters

projectIdstringrequiredargument
boardIdstringrequiredargument

Returns

Returns MCP content array (text, image, or embedded resource).

triage_inbox
{
  "jsonrpc": "2.0",
  "method": "prompts/get",
  "params": {
    "name": "triage_inbox",
    "arguments": {
        "projectId": "<projectId>",
        "boardId": "<boardId>"
      }
  }
}
const result = await client.getPrompt("triage_inbox", {
  projectId: "<projectId>",
  boardId: "<boardId>",
});
result = await session.get_prompt("triage_inbox", arguments={
    "projectId": "<projectId>",
    "boardId": "<boardId>",
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

summarize_for_handoff

PROMPTsummarize_for_handoff

Write a rolling summary capturing state before handing a task off.

Parameters

projectIdstringrequiredargument
taskIdstringrequiredargument

Returns

Returns MCP content array (text, image, or embedded resource).

summarize_for_handoff
{
  "jsonrpc": "2.0",
  "method": "prompts/get",
  "params": {
    "name": "summarize_for_handoff",
    "arguments": {
        "projectId": "<projectId>",
        "taskId": "<taskId>"
      }
  }
}
const result = await client.getPrompt("summarize_for_handoff", {
  projectId: "<projectId>",
  taskId: "<taskId>",
});
result = await session.get_prompt("summarize_for_handoff", arguments={
    "projectId": "<projectId>",
    "taskId": "<taskId>",
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}

decompose_into_subtasks

PROMPTdecompose_into_subtasks

Break a task into actionable subtasks.

Parameters

projectIdstringrequiredargument
taskIdstringrequiredargument

Returns

Returns MCP content array (text, image, or embedded resource).

decompose_into_subtasks
{
  "jsonrpc": "2.0",
  "method": "prompts/get",
  "params": {
    "name": "decompose_into_subtasks",
    "arguments": {
        "projectId": "<projectId>",
        "taskId": "<taskId>"
      }
  }
}
const result = await client.getPrompt("decompose_into_subtasks", {
  projectId: "<projectId>",
  taskId: "<taskId>",
});
result = await session.get_prompt("decompose_into_subtasks", arguments={
    "projectId": "<projectId>",
    "taskId": "<taskId>",
})
Response
{
  "content": [
    {
      "type": "text",
      "text": "..."
    }
  ]
}