Task & board management for AI agents + humans. Kanban, comments, digests via MCP.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Kangram API key. Send as: Authorization: Bearer <your-key>. Create one at kangram.app (Settings -> API Keys) or via the /mcp command in the @kangrambot Telegram bot.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use this command to add a user directly to a board — they become a member immediately, with no invitation to accept. This is the one-step grant (the bot /addmember command). Owner/admin only; cannot create or assign the owner role.
Board ID to add the user to.
Telegram username of the user to add (without @).
Role to assign (admin or user). Default: user. Cannot assign owner role.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Use this command to add a user directly to a board — they become a member immediately, with no invitation to accept. This is the one-step grant (the bot /addmember command). Owner/admin only; cannot create or assign the owner role.
| Argument | Type | Description |
|---|---|---|
| role | string | Role to assign (admin or user). Default: user. Cannot assign owner role. |
| board_id* | integer | Board ID to add the user to. |
| username* | string | Telegram username of the user to add (without @). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"board_id",
"username"
],
"properties": {
"role": {
"enum": [
"admin",
"user"
],
"type": "string",
"description": "Role to assign (admin or user). Default: user. Cannot assign owner role."
},
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID to add the user to.",
"exclusiveMinimum": 0
},
"username": {
"type": "string",
"minLength": 1,
"description": "Telegram username of the user to add (without @)."
}
}
}Use this to add a new item to a task's checklist. Provide board_id + task_number to identify the task.
| Argument | Type | Description |
|---|---|---|
| title* | string | Checklist item text. |
| board_id* | integer | Board ID where the task belongs. |
| task_number* | integer | Task number in board scope. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"task_number",
"board_id",
"title"
],
"properties": {
"title": {
"type": "string",
"minLength": 1,
"description": "Checklist item text."
},
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID where the task belongs.",
"exclusiveMinimum": 0
},
"task_number": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Task number in board scope.",
"exclusiveMinimum": 0
}
}
}Use this to add a comment to a specific task. Provide board_id + task_number to identify the task.
| Argument | Type | Description |
|---|---|---|
| text* | string | Comment text. |
| board_id* | integer | Board ID where the task belongs. |
| task_number* | integer | Task number in board scope. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"task_number",
"board_id",
"text"
],
"properties": {
"text": {
"type": "string",
"minLength": 1,
"description": "Comment text."
},
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID where the task belongs.",
"exclusiveMinimum": 0
},
"task_number": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Task number in board scope.",
"exclusiveMinimum": 0
}
}
}Use this to hide a board from active workflows without deleting it.
| Argument | Type | Description |
|---|---|---|
| board_id* | integer | Board ID to archive. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"board_id"
],
"properties": {
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID to archive.",
"exclusiveMinimum": 0
}
}
}Bind (link) a board to a Telegram group chat. The board becomes the group's primary board — bot commands in the group will act on this board. Unbinds any previous binding first. The actor must be an owner/admin of the target board. Use this when a user asks to set, link, bind, or assign a board to a chat/group. boardRef accepts: 'ns/code' (e.g. 'kangram/DEV'), a code alone (uses the active namespace), or a full URL like 'https://kangram.app/#/kangram/DEV'.
| Argument | Type | Description |
|---|---|---|
| board_ref* | string | Board reference: 'ns/code' (e.g. 'kangram/DEV'), 'code' alone, or a kangram.app URL. |
| group_chat_id | integer | Telegram group chat ID. Omit in a Telegram group context — the current group is auto-detected. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"board_ref"
],
"properties": {
"board_ref": {
"type": "string",
"minLength": 1,
"description": "Board reference: 'ns/code' (e.g. 'kangram/DEV'), 'code' alone, or a kangram.app URL."
},
"group_chat_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Telegram group chat ID. Omit in a Telegram group context — the current group is auto-detected.",
"exclusiveMinimum": 0
}
}
}Use this command to cancel a pending board invitation. Only the original inviter or a board admin can cancel.
| Argument | Type | Description |
|---|---|---|
| invitation_id* | integer | Invitation ID to cancel. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"invitation_id"
],
"properties": {
"invitation_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Invitation ID to cancel.",
"exclusiveMinimum": 0
}
}
}Clone a board into a new board, copying the workflow not the data: statuses + board files (the prompt / agent instructions) + board title. Excludes tasks, comments, and members. The caller becomes the owner of the fresh board. The new board is created in the caller's personal namespace with a fresh unique code. Authorize: caller needs read access to the source board — a board member OR any viewer when the board is public (public boards are forkable by anyone). Authorization is enforced imperatively in execute.
| Argument | Type | Description |
|---|---|---|
| code | string | Optional 3-character code (A-Z/0-9) for the new board; must be unique in your namespace. Auto-generated if omitted. |
| title | string | Optional title for the new board. Defaults to "<source title> (copy)". |
| source_board_id* | integer | Board ID to clone the workflow from. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"source_board_id"
],
"properties": {
"code": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Optional 3-character code (A-Z/0-9) for the new board; must be unique in your namespace. Auto-generated if omitted."
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Optional title for the new board. Defaults to \"<source title> (copy)\"."
},
"source_board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID to clone the workflow from.",
"exclusiveMinimum": 0
}
}
}Create a non-human agent account (User type='agent') inside the organization identified by its namespace slug. The agent becomes an org member immediately (board access via role inheritance), gets no personal namespace and cannot log in. A first API key is auto-issued and returned in plainKey — show/store it now, it is never shown again. Requires organization owner/admin.
| Argument | Type | Description |
|---|---|---|
| role | string | Organization role. 'member' (default) maps to board user; 'admin' maps to board admin. Agents never own orgs. |
| username* | string | Unique username for the agent (letters, digits, dot, dash, underscore). Used for invites and search. |
| display_name | string | Human-readable display name. Defaults to the username. |
| namespace_slug* | string | Namespace slug of the organization (e.g. 'kangram' for kangram.app/kangram). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"namespace_slug",
"username"
],
"properties": {
"role": {
"enum": [
"admin",
"member"
],
"type": "string",
"description": "Organization role. 'member' (default) maps to board user; 'admin' maps to board admin. Agents never own orgs."
},
"username": {
"type": "string",
"maxLength": 64,
"minLength": 2,
"description": "Unique username for the agent (letters, digits, dot, dash, underscore). Used for invites and search."
},
"display_name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Human-readable display name. Defaults to the username."
},
"namespace_slug": {
"type": "string",
"minLength": 1,
"description": "Namespace slug of the organization (e.g. 'kangram' for kangram.app/kangram)."
}
}
}Use this command to initialize a board and its default status workflow.
| Argument | Type | Description |
|---|---|---|
| title | string | Optional board title. |
| timezone | string | Optional board timezone (e.g. Australia/Melbourne). |
| group_chat_id | integer | Optional target group chat id. Defaults to active context group chat. |
| namespace_slug | string | Optional target namespace slug (e.g. 'kangram', 'exemplarov'). Creates the board in that namespace instead of the personal one. Use list_namespaces to discover available slugs. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"title": {
"type": "string",
"description": "Optional board title."
},
"timezone": {
"type": "string",
"description": "Optional board timezone (e.g. Australia/Melbourne)."
},
"group_chat_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Optional target group chat id. Defaults to active context group chat.",
"exclusiveMinimum": 0
},
"namespace_slug": {
"type": "string",
"description": "Optional target namespace slug (e.g. 'kangram', 'exemplarov'). Creates the board in that namespace instead of the personal one. Use list_namespaces to discover available slugs."
}
}
}Register a new OAuth2 client so a third-party app can authenticate users via 'Login with Kangram'. Returns the client_id and a client_secret shown ONCE — store it securely. Owner-only.
| Argument | Type | Description |
|---|---|---|
| name* | string | Human-readable client application name. |
| scopes | array | Scopes the client is allowed to request. Defaults to ['profile']. |
| redirect_uris* | array | Allowed redirect URIs (exact match, https required; http only on localhost). No wildcards. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name",
"redirect_uris"
],
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Human-readable client application name."
},
"scopes": {
"type": "array",
"items": {
"enum": [
"profile",
"boards:read",
"boards:write",
"tasks:read",
"tasks:write"
],
"type": "string"
},
"description": "Scopes the client is allowed to request. Defaults to ['profile']."
},
"redirect_uris": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
},
"minItems": 1,
"description": "Allowed redirect URIs (exact match, https required; http only on localhost). No wildcards."
}
}
}Create a new organization. The organization gets its own namespace (slug derived from the name). The creator becomes the organization owner. Use this when a user asks to create a namespace, organization, or workspace.
| Argument | Type | Description |
|---|---|---|
| name* | string | Organization name (e.g. 'Kangram', 'Acme Inc'). A namespace slug is derived from this. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Organization name (e.g. 'Kangram', 'Acme Inc'). A namespace slug is derived from this."
}
}
}Use this command to add new statuses to board workflow.
| Argument | Type | Description |
|---|---|---|
| code | string | Optional machine code. If omitted, derived from name. |
| name* | string | Status display name. |
| color | string | Optional hex color, e.g. #FF9800. |
| index | integer | Optional sort index; lower appears earlier. |
| board_id | integer | Optional board ID. Defaults to user's active board. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name"
],
"properties": {
"code": {
"type": "string",
"description": "Optional machine code. If omitted, derived from name."
},
"name": {
"type": "string",
"minLength": 1,
"description": "Status display name."
},
"color": {
"type": "string",
"description": "Optional hex color, e.g. #FF9800."
},
"index": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Optional sort index; lower appears earlier.",
"exclusiveMinimum": 0
},
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Optional board ID. Defaults to user's active board.",
"exclusiveMinimum": 0
}
}
}Use this to add a task. Provide boardId for deterministic routing; otherwise active board is used.
| Argument | Type | Description |
|---|---|---|
| tags | array | Optional list of tags. |
| title* | string | Short task title. Keep it clear and action-oriented. |
| status | string | Optional initial status name for the task. |
| assignee | string | Assignee username without @. |
| board_id | integer | Board ID where the task should be created. |
| priority | string | Optional task priority: critical, major, normal, or low. |
| description | string | Optional longer task details. |
| parent_board_id | integer | Board ID of the parent task. Defaults to board_id if omitted. |
| telegram_chat_id | integer | Optional Telegram chat id for message-task linking. |
| parent_task_number | integer |
Delete an agent account: revokes all its API keys, removes memberships, unassigns its tasks, then hard-deletes the user. When history rows (messages/activity) block the hard delete, the agent is deactivated instead (zero access, row kept) and status='deactivated' is returned. Requires organization owner/admin.
| Argument | Type | Description |
|---|---|---|
| agent_username* | string | Username of the agent to delete. |
| namespace_slug* | string | Namespace slug of the organization. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"namespace_slug",
"agent_username"
],
"properties": {
"agent_username": {
"type": "string",
"minLength": 1,
"description": "Username of the agent to delete."
},
"namespace_slug": {
"type": "string",
"minLength": 1,
"description": "Namespace slug of the organization."
}
}
}Use this to remove a checklist item from a task. Provide item_id.
| Argument | Type | Description |
|---|---|---|
| item_id* | integer | Checklist item ID to delete. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"item_id"
],
"properties": {
"item_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Checklist item ID to delete.",
"exclusiveMinimum": 0
}
}
}Use this to delete a comment. Allowed for the comment author or a board admin (owner/admin). Provide board_id + task_number for context and comment_id.
| Argument | Type | Description |
|---|---|---|
| board_id* | integer | Board ID where the task belongs. |
| comment_id* | integer | ID of the comment to delete. |
| task_number* | integer | Task number in board scope. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"comment_id",
"board_id",
"task_number"
],
"properties": {
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID where the task belongs.",
"exclusiveMinimum": 0
},
"comment_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "ID of the comment to delete.",
"exclusiveMinimum": 0
},
"task_number": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Task number in board scope.",
"exclusiveMinimum": 0
}
}
}Delete by statusId or boardId+code. If tasks use it, provide replacementStatusId.
| Argument | Type | Description |
|---|---|---|
| code | string | Status code for board+code lookup. |
| board_id | integer | Board ID for board+code lookup. |
| status_id | integer | Target status ID. |
| replacement_status_id | integer | Replacement status ID when deleting an in-use status. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"code": {
"type": "string",
"description": "Status code for board+code lookup."
},
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID for board+code lookup.",
"exclusiveMinimum": 0
},
"status_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Target status ID.",
"exclusiveMinimum": 0
},
"replacement_status_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Replacement status ID when deleting an in-use status.",
"exclusiveMinimum": 0
}
}
}Use this to mark a task as deleted without permanent removal.
| Argument | Type | Description |
|---|---|---|
| board_id* | integer | Board ID where the task belongs. |
| task_number* | integer | Task number in board scope. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"task_number",
"board_id"
],
"properties": {
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID where the task belongs.",
"exclusiveMinimum": 0
},
"task_number": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Task number in board scope.",
"exclusiveMinimum": 0
}
}
}Canonical lookup for a board. Resolves the namespace by slug, then the board by its 3-character code within that namespace. Membership-gated: returns an error for unknown namespace, unknown board, or non-member (indistinguishable).
| Argument | Type | Description |
|---|---|---|
| board_code* | string | 3-character board code (case-insensitive; legacy codes may contain Unicode letters or digits). |
| namespace_slug* | string | Owner namespace slug (e.g. a username). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"namespace_slug",
"board_code"
],
"properties": {
"board_code": {
"type": "string",
"maxLength": 3,
"minLength": 3,
"description": "3-character board code (case-insensitive; legacy codes may contain Unicode letters or digits)."
},
"namespace_slug": {
"type": "string",
"minLength": 1,
"description": "Owner namespace slug (e.g. a username)."
}
}
}Fetch the board-level agent prompt — the markdown instructions an agent should follow when operating on this board. Read this into your context before working a board. Returns the content of the board's root file ("AGENTS.md"); null when no prompt is set.
| Argument | Type | Description |
|---|---|---|
| board_id* | integer | Board ID to read the prompt for. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"board_id"
],
"properties": {
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID to read the prompt for.",
"exclusiveMinimum": 0
}
}
}Use this command to read a board's effective settings — the stored value, or the default when unset (lazy). Pass a key to read one setting; omit it to read all. Returns { key: value } object(s).
| Argument | Type | Description |
|---|---|---|
| key | string | Optional setting key (e.g. "autoAddAssignees"). Omit to read all settings. |
| board_id* | integer | Board ID to read settings for. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"board_id"
],
"properties": {
"key": {
"type": "string",
"minLength": 1,
"description": "Optional setting key (e.g. \"autoAddAssignees\"). Omit to read all settings."
},
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID to read settings for.",
"exclusiveMinimum": 0
}
}
}Use this command to discover which board settings exist and their types/defaults (json-schema-like). Pass a key to inspect one setting; omit for all. Board-independent metadata — call this before set_board_setting to learn valid keys and types.
| Argument | Type | Description |
|---|---|---|
| key | string | Optional setting key to inspect. Omit for all available settings. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"description": "Optional setting key to inspect. Omit for all available settings."
}
}
}Compute an on-demand digest of the calling user's tasks across all accessible boards: overdue, stale (needs attention), new assignments, open count, and recently completed. Use this to answer 'what needs my attention?' or 'what's my work summary?'.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Get the full project context for a board — everything needed to CONTINUE work without re-explaining: the latest session handoff (where we left off), an attention snapshot (blocked / overdue / due soon / unassigned / stale counts), the top open tasks, and recent board activity. Call this at the START of a session when the user says 'continue where we left off', 'what's the state of the project', 'resume our work', or 'remind me what we were doing' — especially in a NEW chat after a previous session saved a handoff.
| Argument | Type | Description |
|---|---|---|
| board_id* | integer | Board ID to load context for. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"board_id"
],
"properties": {
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID to load context for.",
"exclusiveMinimum": 0
}
}
}Use this to read one task including its description, deadline, tags, status, and assignee.
| Argument | Type | Description |
|---|---|---|
| board_id* | integer | Board ID where the task belongs. |
| task_number* | integer | Task number in board scope. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"task_number",
"board_id"
],
"properties": {
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID where the task belongs.",
"exclusiveMinimum": 0
},
"task_number": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Task number in board scope.",
"exclusiveMinimum": 0
}
}
}Use this command to invite a user to a board. The invited user will receive a notification and must accept. Owner/admin only.
| Argument | Type | Description |
|---|---|---|
| role | string | Role to assign (admin or user). Default: user. Cannot assign owner role. |
| board_id* | integer | Board ID to invite the user to. |
| username* | string | Telegram username of the user to invite (without @). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"board_id",
"username"
],
"properties": {
"role": {
"enum": [
"admin",
"user"
],
"type": "string",
"description": "Role to assign (admin or user). Default: user. Cannot assign owner role."
},
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID to invite the user to.",
"exclusiveMinimum": 0
},
"username": {
"type": "string",
"minLength": 1,
"description": "Telegram username of the user to invite (without @)."
}
}
}Mint a new API key for an agent member of the organization. Use for rotation or additional keys. The plaintext key is returned once — store it immediately. Requires organization owner/admin.
| Argument | Type | Description |
|---|---|---|
| name | string | Key label. Defaults to '<username> — <date>'. |
| scope | string | Key scope label (enforcement is planned; stored today). |
| agent_username* | string | Username of the agent. |
| namespace_slug* | string | Namespace slug of the organization. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"namespace_slug",
"agent_username"
],
"properties": {
"name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Key label. Defaults to '<username> — <date>'."
},
"scope": {
"enum": [
"readonly",
"taskwriter",
"full"
],
"type": "string",
"description": "Key scope label (enforcement is planned; stored today)."
},
"agent_username": {
"type": "string",
"minLength": 1,
"description": "Username of the agent."
},
"namespace_slug": {
"type": "string",
"minLength": 1,
"description": "Namespace slug of the organization."
}
}
}List the members of the organization identified by its namespace slug, including agent accounts (type='agent') with their active API-key counts and last key use. Requires organization owner/admin.
| Argument | Type | Description |
|---|---|---|
| namespace_slug* | string | Namespace slug of the organization. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"namespace_slug"
],
"properties": {
"namespace_slug": {
"type": "string",
"minLength": 1,
"description": "Namespace slug of the organization."
}
}
}List the board's named files (the multi-file-ready prompt store). v1 returns at least the root "AGENTS.md" once a prompt has been set; empty list means no prompt/files yet.
| Argument | Type | Description |
|---|---|---|
| board_id* | integer | Board ID to list files for. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"board_id"
],
"properties": {
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID to list files for.",
"exclusiveMinimum": 0
}
}
}Use this command to see all board members and their roles (owner/admin/user).
| Argument | Type | Description |
|---|---|---|
| board_id* | integer | Board ID to list members for. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"board_id"
],
"properties": {
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID to list members for.",
"exclusiveMinimum": 0
}
}
}Use this to discover which tags already exist on a board before filtering with list_tasks. Returns unique tag strings (first-seen casing), sorted case-insensitively.
| Argument | Type | Description |
|---|---|---|
| board_id* | integer | Board ID to list tags from. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"board_id"
],
"properties": {
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID to list tags from.",
"exclusiveMinimum": 0
}
}
}Use this command to discover boards before creating or filtering tasks.
| Argument | Type | Description |
|---|---|---|
| code | string | Filter boards by board code (3-character code, exact match, case-insensitive). |
| limit | integer | Optional max number of boards to return. |
| title | string | Filter boards by title (starts-with, case-insensitive). |
| only_archived | boolean | Return only archived boards. |
| include_archived | boolean | Include archived boards in result. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"code": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Filter boards by board code (3-character code, exact match, case-insensitive)."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Optional max number of boards to return.",
"exclusiveMinimum": 0
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Filter boards by title (starts-with, case-insensitive)."
},
"only_archived": {
"type": "boolean",
"description": "Return only archived boards."
},
"include_archived": {
"type": "boolean",
"description": "Include archived boards in result."
}
}
}Use this to retrieve all checklist items for a specific task. Provide board_id + task_number.
| Argument | Type | Description |
|---|---|---|
| board_id* | integer | Board ID where the task belongs. |
| task_number* | integer | Task number in board scope. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"task_number",
"board_id"
],
"properties": {
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID where the task belongs.",
"exclusiveMinimum": 0
},
"task_number": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Task number in board scope.",
"exclusiveMinimum": 0
}
}
}Use this to retrieve all comments for a specific task. Provide board_id + task_number.
| Argument | Type | Description |
|---|---|---|
| board_id* | integer | Board ID where the task belongs. |
| task_number* | integer | Task number in board scope. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"task_number",
"board_id"
],
"properties": {
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID where the task belongs.",
"exclusiveMinimum": 0
},
"task_number": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Task number in board scope.",
"exclusiveMinimum": 0
}
}
}List all namespaces the user can see: their personal namespace plus any organization namespaces they own or are a member of. Use this to discover where boards can be created or moved.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}List the OAuth2 clients you own (client_id, name, redirect URIs, scopes, revocation status).
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Use this without board_id to see your pending invitations. With board_id, see pending invitations for that board (must be a member).
| Argument | Type | Description |
|---|---|---|
| board_id | integer | Optional board ID to filter invitations for. If omitted, shows your pending invitations. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Optional board ID to filter invitations for. If omitted, shows your pending invitations.",
"exclusiveMinimum": 0
}
}
}Use this command to inspect the board status catalog and ordering.
| Argument | Type | Description |
|---|---|---|
| board_id | integer | Optional board ID. Defaults to user's active board. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Optional board ID. Defaults to user's active board.",
"exclusiveMinimum": 0
}
}
}Use this to read the history of actions performed on a task (create, update, status changes, comments). Returns a timeline of activity entries.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Optional max number of activity entries to return (default 20). |
| offset | integer | Optional offset for pagination (default 0). |
| board_id* | integer | Board ID where the task belongs. |
| task_number* | integer | Task number in board scope. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"task_number",
"board_id"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Optional max number of activity entries to return (default 20).",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Optional offset for pagination (default 0)."
},
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID where the task belongs.",
"exclusiveMinimum": 0
},
"task_number": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Task number in board scope.",
"exclusiveMinimum": 0
}
}
}Use this to inspect task backlog by board, assignee, status, priority, tags, title substring, creation date range, and deletion state.
| Argument | Type | Description |
|---|---|---|
| tags | any | Optional list of tags to filter by. Tasks matching ANY of the specified tags are returned. |
| limit | integer | Optional max number of tasks to return. |
| status | string | Optional status name filter. |
| assignee | string | Optional assignee username filter (without @). |
| board_id* | integer | Board ID to list tasks from. |
| priority | any | Optional priority filter: critical, major, normal, low (aliases: high→major, middle→normal). |
| created_to | string | Optional inclusive upper bound on createdAt as YYYY-MM-DD. |
| created_from | string | Optional inclusive lower bound on createdAt as YYYY-MM-DD. |
| only_deleted | boolean | Return only deleted tasks. |
| title_contains |
Move a board from its current namespace to a target namespace. The board's 3-character code must be unique in the target namespace. The board URL will change. Use this to consolidate boards into an organization namespace.
| Argument | Type | Description |
|---|---|---|
| board_id* | integer | Board ID to move. |
| namespace_slug* | string | Target namespace slug (e.g. 'kangram'). Use list_namespaces to discover available slugs. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"board_id",
"namespace_slug"
],
"properties": {
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID to move.",
"exclusiveMinimum": 0
},
"namespace_slug": {
"type": "string",
"minLength": 1,
"description": "Target namespace slug (e.g. 'kangram'). Use list_namespaces to discover available slugs."
}
}
}Use this to transfer a task between boards. The task gets a new number in the target board. Status is reset to target board's default if the current status doesn't exist there.
| Argument | Type | Description |
|---|---|---|
| task_number* | integer | Task number in the source board. |
| source_board_id* | integer | Board ID where the task currently belongs. |
| target_board_id* | integer | Board ID to move the task to. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"task_number",
"source_board_id",
"target_board_id"
],
"properties": {
"task_number": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Task number in the source board.",
"exclusiveMinimum": 0
},
"source_board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID where the task currently belongs.",
"exclusiveMinimum": 0
},
"target_board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID to move the task to.",
"exclusiveMinimum": 0
}
}
}Returns up to 100 tasks assigned to or created by the caller across all boards they can access, ordered by most recent update. Use this to answer 'what's on my plate?' or to surface overdue/stale work. Pass namespaceSlug to scope to a single namespace.
| Argument | Type | Description |
|---|---|---|
| namespace_slug | string | Namespace slug (e.g. 'acme'), as returned by list_namespaces. Scopes tasks to boards in that namespace. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"namespace_slug": {
"type": "string",
"description": "Namespace slug (e.g. 'acme'), as returned by list_namespaces. Scopes tasks to boards in that namespace."
}
}
}Use this command to remove a member from a board. On group-chat-linked boards, removing a member with an explicit board_member row reverts them to a regular Telegram member (they stay on the board via the linked group). Members without a board_member row (Telegram-only) cannot be removed. Owner can remove admin/user, admin can remove user. Cannot remove owner.
| Argument | Type | Description |
|---|---|---|
| user_id* | integer | User ID to remove from the board. |
| board_id* | integer | Board ID to remove the user from. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"board_id",
"user_id"
],
"properties": {
"user_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "User ID to remove from the board.",
"exclusiveMinimum": 0
},
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID to remove the user from.",
"exclusiveMinimum": 0
}
}
}Provide orderedStatusIds to set deterministic status ordering for a board.
| Argument | Type | Description |
|---|---|---|
| board_id | integer | Optional board ID. Defaults to user's active board. |
| ordered_status_ids* | array | Status IDs in desired order. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"ordered_status_ids"
],
"properties": {
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Optional board ID. Defaults to user's active board.",
"exclusiveMinimum": 0
},
"ordered_status_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"description": "Status IDs in desired order."
}
}
}Use this command to accept or reject a pending board invitation by its ID.
| Argument | Type | Description |
|---|---|---|
| accept* | boolean | True to accept, false to reject. |
| invitation_id* | integer | Invitation ID to respond to. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"invitation_id",
"accept"
],
"properties": {
"accept": {
"type": "boolean",
"description": "True to accept, false to reject."
},
"invitation_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Invitation ID to respond to.",
"exclusiveMinimum": 0
}
}
}Use this to recover a previously archived board.
| Argument | Type | Description |
|---|---|---|
| board_id* | integer | Board ID to restore. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"board_id"
],
"properties": {
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID to restore.",
"exclusiveMinimum": 0
}
}
}Use this with list_tasks onlyDeleted/includeDeleted to recover deleted tasks.
| Argument | Type | Description |
|---|---|---|
| board_id* | integer | Board ID where the task belongs. |
| task_number* | integer | Deleted task number in board scope. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"task_number",
"board_id"
],
"properties": {
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID where the task belongs.",
"exclusiveMinimum": 0
},
"task_number": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Deleted task number in board scope.",
"exclusiveMinimum": 0
}
}
}Revoke an agent's API key by id. Only keys owned by agent accounts are revocable this way (humans revoke their own). Requires organization owner/admin of an org the agent belongs to.
| Argument | Type | Description |
|---|---|---|
| key_id* | integer | API key id (from list output or the web UI). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"key_id"
],
"properties": {
"key_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "API key id (from list output or the web UI).",
"exclusiveMinimum": 0
}
}
}Revoke one of your OAuth2 clients by its numeric ID. Existing tokens are not deleted but no new authorizations will be allowed.
| Argument | Type | Description |
|---|---|---|
| client_id* | integer | Numeric ID of the OAuth2 client to revoke. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"client_id"
],
"properties": {
"client_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Numeric ID of the OAuth2 client to revoke.",
"exclusiveMinimum": 0
}
}
}Save a session handoff — a durable note on the board recording where the work stands: what was done, what is next, what is blocked, and key links (PRs, issues, branches). Call this at the END of a working session so the next session (possibly a brand-new chat) can pick up exactly where you left off. Use this when the user says 'remember where we left off', 'save our progress', 'save the session state', or 'don't lose this context'. `summary` must be YOUR OWN concise authored recap — never a transcript or list of raw messages.
| Argument | Type | Description |
|---|---|---|
| links | any | Optional references — PR/issue URLs, branch names, doc links (e.g. ['https://github.com/o/r/pull/12', 'feat/auth-refactor']). Max 25 single-line items. |
| summary* | string | Your authored recap: done / next / blocked. One concise string (max 20000 chars) — not a transcript. |
| board_id* | integer | Board ID the handoff belongs to. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"board_id",
"summary"
],
"properties": {
"links": {
"anyOf": [
{
"type": "string",
"maxLength": 2000,
"minLength": 1
},
{
"type": "array",
"items": {
"type": "string",
"maxLength": 2000,
"minLength": 1
},
"maxItems": 25
}
],
"description": "Optional references — PR/issue URLs, branch names, doc links (e.g. ['https://github.com/o/r/pull/12', 'feat/auth-refactor']). Max 25 single-line items."
},
"summary": {
"type": "string",
"minLength": 1,
"description": "Your authored recap: done / next / blocked. One concise string (max 20000 chars) — not a transcript."
},
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID the handoff belongs to.",
"exclusiveMinimum": 0
}
}
}Use this to find tasks by text, assignee, status, priority, or attention category across all your accessible boards. All filters are optional — combine them to narrow results. Returns up to 50 tasks ordered by last updated.
| Argument | Type | Description |
|---|---|---|
| query | string | Search query text (matches task title and description). |
| status | string | Filter by completion status: 'open' (not done) or 'done'. |
| board_id | integer | Scope to a specific board ID. |
| priority | string | Filter by priority: critical, major, normal, or low. |
| attention | string | Filter by attention category: overdue, due_soon, blocked, stale, unassigned. |
| assignee_id | integer | Filter by assignee user ID. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"query": {
"type": "string",
"description": "Search query text (matches task title and description)."
},
"status": {
"enum": [
"open",
"done"
],
"type": "string",
"description": "Filter by completion status: 'open' (not done) or 'done'."
},
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Scope to a specific board ID.",
"exclusiveMinimum": 0
},
"priority": {
"type": "string",
"description": "Filter by priority: critical, major, normal, or low."
},
"attention": {
"type": "string",
"description": "Filter by attention category: overdue, due_soon, blocked, stale, unassigned."
},
"assignee_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Filter by assignee user ID.",
"exclusiveMinimum": 0
}
}
}Use this command to change a board setting. The value is a string coerced to the setting's type server-side (booleans accept on/off, true/false, 1/0, yes/no). Use get_board_settings_schema to discover available keys and types. Example: set autoAddAssignees to "off" to require explicit /addmember on task assignment.
| Argument | Type | Description |
|---|---|---|
| key* | string | Setting key (e.g. "autoAddAssignees"). |
| value* | string | New value as a string (coerced to the setting's type). Booleans: on/off, true/false, 1/0. |
| board_id* | integer | Board ID to configure. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"board_id",
"key",
"value"
],
"properties": {
"key": {
"type": "string",
"minLength": 1,
"description": "Setting key (e.g. \"autoAddAssignees\")."
},
"value": {
"type": "string",
"minLength": 1,
"description": "New value as a string (coerced to the setting's type). Booleans: on/off, true/false, 1/0."
},
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID to configure.",
"exclusiveMinimum": 0
}
}
}Transfer ownership of a board from the current owner to an existing board member (admin or user role). The current owner is demoted to the specified role (admin by default). Only the current board owner can initiate a transfer. The target must already be a board member — invite them first if needed. This is an irreversible high-impact operation.
| Argument | Type | Description |
|---|---|---|
| board_id* | integer | Board ID to transfer ownership of. |
| to_user_id* | integer | User ID of the new owner. Must already be a board member (admin or user role). |
| demote_current_owner_to | string | Role to assign to the current owner after the transfer. Defaults to 'admin'. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"board_id",
"to_user_id"
],
"properties": {
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID to transfer ownership of.",
"exclusiveMinimum": 0
},
"to_user_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "User ID of the new owner. Must already be a board member (admin or user role).",
"exclusiveMinimum": 0
},
"demote_current_owner_to": {
"enum": [
"admin",
"user"
],
"type": "string",
"description": "Role to assign to the current owner after the transfer. Defaults to 'admin'."
}
}
}Use this for explicit status moves while keeping other fields unchanged.
| Argument | Type | Description |
|---|---|---|
| status* | string | Target status name. |
| board_id* | integer | Board ID where the task belongs. |
| task_number* | integer | Task number in board scope. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"task_number",
"board_id",
"status"
],
"properties": {
"status": {
"type": "string",
"minLength": 1,
"description": "Target status name."
},
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID where the task belongs.",
"exclusiveMinimum": 0
},
"task_number": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Task number in board scope.",
"exclusiveMinimum": 0
}
}
}Use this to edit board metadata (title, code) and/or the board-level agent prompt. The prompt is the markdown instructions an agent reads when operating on this board (stored as the root file "AGENTS.md"). Pass only the fields you want to change; omitted fields are left untouched. Pass an empty string as prompt to clear the prompt.
| Argument | Type | Description |
|---|---|---|
| code | string | New board code (3 letters or digits A-Z/0-9, unique within the namespace). Omit to leave unchanged. |
| title | string | New board title. Omit to leave unchanged. |
| prompt | string | Markdown agent prompt for this board (stored as the root "AGENTS.md" file). Omit to leave unchanged; pass an empty string to clear. May include YAML frontmatter. |
| board_id* | integer | Board ID to update. |
| visibility | string | Set board visibility. 'private' (default) = members-only; 'public' = anyone with the link can view the board read-only (no account required). Owner/admin only. Omit to leave unchanged. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"board_id"
],
"properties": {
"code": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "New board code (3 letters or digits A-Z/0-9, unique within the namespace). Omit to leave unchanged."
},
"title": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "New board title. Omit to leave unchanged."
},
"prompt": {
"type": "string",
"description": "Markdown agent prompt for this board (stored as the root \"AGENTS.md\" file). Omit to leave unchanged; pass an empty string to clear. May include YAML frontmatter."
},
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID to update.",
"exclusiveMinimum": 0
},
"visibility": {
"enum": [
"private",
"public"
],
"type": "string",
"description": "Set board visibility. 'private' (default) = members-only; 'public' = anyone with the link can view the board read-only (no account required). Owner/admin only. Omit to leave unchanged."
}
}
}Upsert a named markdown file on a board. In v1 the conventional name is "AGENTS.md" (the root prompt). Omit content (or pass empty) to clear a file's body. Future versions will support multiple named files; this command is the low-level writer beneath update_board's prompt option.
| Argument | Type | Description |
|---|---|---|
| name* | string | File name (path-like identifier). Use "AGENTS.md" for the root prompt. |
| format | string | File format. Defaults to "markdown". |
| content | string | Markdown content. Omit or pass empty to clear the file body. |
| board_id* | integer | Board ID to write the file on. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"board_id",
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "File name (path-like identifier). Use \"AGENTS.md\" for the root prompt."
},
"format": {
"type": "string",
"maxLength": 32,
"minLength": 1,
"description": "File format. Defaults to \"markdown\"."
},
"content": {
"type": "string",
"description": "Markdown content. Omit or pass empty to clear the file body."
},
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID to write the file on.",
"exclusiveMinimum": 0
}
}
}Use this to update a checklist item's title or done status. Provide item_id and fields to update.
| Argument | Type | Description |
|---|---|---|
| done | boolean | Set done status (true/false). |
| title | string | New title for the item. |
| item_id* | integer | Checklist item ID. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"item_id"
],
"properties": {
"done": {
"type": "boolean",
"description": "Set done status (true/false)."
},
"title": {
"type": "string",
"description": "New title for the item."
},
"item_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Checklist item ID.",
"exclusiveMinimum": 0
}
}
}Use this command to change an existing board member's role. Owner/admin only. Cannot target the board owner or promote anyone to owner.
| Argument | Type | Description |
|---|---|---|
| role* | string | New role to assign (admin or user). Cannot assign owner. |
| user_id* | integer | User ID of the member whose role to change. |
| board_id* | integer | Board ID where the member belongs. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"board_id",
"user_id",
"role"
],
"properties": {
"role": {
"enum": [
"admin",
"user"
],
"type": "string",
"description": "New role to assign (admin or user). Cannot assign owner."
},
"user_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "User ID of the member whose role to change.",
"exclusiveMinimum": 0
},
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID where the member belongs.",
"exclusiveMinimum": 0
}
}
}Update status by statusId or by boardId+code.
| Argument | Type | Description |
|---|---|---|
| code | string | Existing status code for board+code lookup. |
| name | string | New display name. |
| color | string | New hex color. |
| index | integer | New sort index. |
| board_id | integer | Board ID for board+code lookup. |
| new_code | string | New machine code value. |
| status_id | integer | Target status ID. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"code": {
"type": "string",
"description": "Existing status code for board+code lookup."
},
"name": {
"type": "string",
"description": "New display name."
},
"color": {
"type": "string",
"description": "New hex color."
},
"index": {
"type": "integer",
"maximum": 9007199254740991,
"description": "New sort index.",
"exclusiveMinimum": 0
},
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID for board+code lookup.",
"exclusiveMinimum": 0
},
"new_code": {
"type": "string",
"description": "New machine code value."
},
"status_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Target status ID.",
"exclusiveMinimum": 0
}
}
}Use this to edit task title/description/deadline/tags/assignee/status.
| Argument | Type | Description |
|---|---|---|
| tags | array | Replace task tags list. |
| title | string | New title. |
| status | string | Set status by name. |
| assignee | string | Assign by username (without @). |
| board_id* | integer | Board ID where the task belongs. |
| deadline | string | New deadline string. |
| priority | string | Set priority: critical, major, normal, or low. |
| description | string | New description. |
| task_number* | integer | Task number in board scope. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"task_number",
"board_id"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Replace task tags list."
},
"title": {
"type": "string",
"description": "New title."
},
"status": {
"type": "string",
"description": "Set status by name."
},
"assignee": {
"type": "string",
"description": "Assign by username (without @)."
},
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID where the task belongs.",
"exclusiveMinimum": 0
},
"deadline": {
"type": "string",
"description": "New deadline string."
},
"priority": {
"enum": [
"critical",
"major",
"normal",
"low"
],
"type": "string",
"description": "Set priority: critical, major, normal, or low."
},
"description": {
"type": "string",
"description": "New description."
},
"task_number": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Task number in board scope.",
"exclusiveMinimum": 0
}
}
}| Optional parent task number to create a subtask. Use with parent_board_id or board_id. |
| telegram_message_id | integer | Optional Telegram message id for message-task linking. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional list of tags."
},
"title": {
"type": "string",
"minLength": 1,
"description": "Short task title. Keep it clear and action-oriented."
},
"status": {
"type": "string",
"description": "Optional initial status name for the task."
},
"assignee": {
"type": "string",
"description": "Assignee username without @."
},
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID where the task should be created.",
"exclusiveMinimum": 0
},
"priority": {
"enum": [
"critical",
"major",
"normal",
"low"
],
"type": "string",
"description": "Optional task priority: critical, major, normal, or low."
},
"description": {
"type": "string",
"description": "Optional longer task details."
},
"parent_board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID of the parent task. Defaults to board_id if omitted.",
"exclusiveMinimum": 0
},
"telegram_chat_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Optional Telegram chat id for message-task linking.",
"exclusiveMinimum": 0
},
"parent_task_number": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Optional parent task number to create a subtask. Use with parent_board_id or board_id.",
"exclusiveMinimum": 0
},
"telegram_message_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Optional Telegram message id for message-task linking.",
"exclusiveMinimum": 0
}
}
}| string |
| Optional case-insensitive substring match on task title. |
| include_deleted | boolean | Include deleted tasks in the result. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"board_id"
],
"properties": {
"tags": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "Optional list of tags to filter by. Tasks matching ANY of the specified tags are returned."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Optional max number of tasks to return.",
"exclusiveMinimum": 0
},
"status": {
"type": "string",
"description": "Optional status name filter."
},
"assignee": {
"type": "string",
"description": "Optional assignee username filter (without @)."
},
"board_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Board ID to list tasks from.",
"exclusiveMinimum": 0
},
"priority": {
"anyOf": [
{
"enum": [
"critical",
"major",
"normal",
"low"
],
"type": "string"
},
{
"type": "string",
"const": "high"
},
{
"type": "string",
"const": "middle"
}
],
"description": "Optional priority filter: critical, major, normal, low (aliases: high→major, middle→normal)."
},
"created_to": {
"type": "string",
"description": "Optional inclusive upper bound on createdAt as YYYY-MM-DD."
},
"created_from": {
"type": "string",
"description": "Optional inclusive lower bound on createdAt as YYYY-MM-DD."
},
"only_deleted": {
"type": "boolean",
"description": "Return only deleted tasks."
},
"title_contains": {
"type": "string",
"description": "Optional case-insensitive substring match on task title."
},
"include_deleted": {
"type": "boolean",
"description": "Include deleted tasks in the result."
}
}
}