Kangram
REMOTE · KANGRAM.APP
Task & board management for AI agents + humans. Kanban, comments, digests via MCP.
Available components
Last scanned (4 hours ago)
Scores higher than 47% of remote servers
Reachable. Last reached 18 Oct 2026.
Category Project Management
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security57
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 61 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability79
- AI-judged instruction clarity (excellent).Pass
- Tool/resource definitions use about 5797 tokens (~95/item across 61 items; 61 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management10
- Stability observed for 3 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 9 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "delete_task" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 61 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 17 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 16 Oct 26 0
- Stability: unverified → 0.03 ▲ functional
- 15 Oct 26 +28
- Authorization: pass → unverified ▼ security
- Transport: unverified → pass ▲ security
- Injection markers: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- MCP protocol: unverified → pass ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- First check of Schema quality: fail functional
- First check of Schema quality: excellent functional
- First check of Destructive annotations: 0 functional
- First check of Schema quality: pass functional
- First check of Tool coverage: 100 functional
- 13 Oct 26 +3
- Authorization: fail → pass ▲ security
- First check of Authorization: partial security
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 19 Aug 26 0
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 18 Oct 2026 · Probed https://kangram.app/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=kangram.app | CN=WE1,O=Google Trust Services,C=US | 5 Sept 2026 | 4 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | 53e77fad7680b98c0ea9b6f25502e446 |
| SANs: kangram.app, *.kangram.app | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of kangram.app. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| app. | present | 23684 | 8 | Verified |
| kangram.app. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://kangram.app/mcp | Verified | 200 | |
| http (plaintext) | http://kangram.app/mcp | HTTPS enforced | 301 | https://kangram.app/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_board_member ~114
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.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | yes | Board ID to add the user to. |
| role | string | – | Role to assign (admin or user). Default: user. Cannot assign owner role. |
| username | string | yes | Telegram username of the user to add (without @). |
No output schema declared.
No examples provided.
add_checklist_item ~71
Use this to add a new item to a task's checklist. Provide board_id + task_number to identify the task.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | yes | Board ID where the task belongs. |
| task_number | integer | yes | Task number in board scope. |
| title | string | yes | Checklist item text. |
No output schema declared.
No examples provided.
add_comment ~66
Use this to add a comment to a specific task. Provide board_id + task_number to identify the task.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | yes | Board ID where the task belongs. |
| task_number | integer | yes | Task number in board scope. |
| text | string | yes | Comment text. |
No output schema declared.
No examples provided.
archive_board ~33
Use this to hide a board from active workflows without deleting it.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | yes | Board ID to archive. |
No output schema declared.
No examples provided.
bind_board_to_group ~193
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'.
| Name | Type | Req | Description |
|---|---|---|---|
| board_ref | string | yes | 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. |
No output schema declared.
No examples provided.
cancel_board_invitation ~43
Use this command to cancel a pending board invitation. Only the original inviter or a board admin can cancel.
| Name | Type | Req | Description |
|---|---|---|---|
| invitation_id | integer | yes | Invitation ID to cancel. |
No output schema declared.
No examples provided.
clone_board ~189
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.
| Name | Type | Req | 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. |
| source_board_id | integer | yes | Board ID to clone the workflow from. |
| title | string | – | Optional title for the new board. Defaults to "<source title> (copy)". |
No output schema declared.
No examples provided.
create_agent ~188
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.
| Name | Type | Req | Description |
|---|---|---|---|
| display_name | string | – | Human-readable display name. Defaults to the username. |
| namespace_slug | string | yes | Namespace slug of the organization (e.g. 'kangram' for kangram.app/kangram). |
| role | string | – | Organization role. 'member' (default) maps to board user; 'admin' maps to board admin. Agents never own orgs. |
| username | string | yes | Unique username for the agent (letters, digits, dot, dash, underscore). Used for invites and search. |
No output schema declared.
No examples provided.
create_board ~116
Use this command to initialize a board and its default status workflow.
| Name | Type | Req | Description |
|---|---|---|---|
| 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. |
| timezone | string | – | Optional board timezone (e.g. Australia/Melbourne). |
| title | string | – | Optional board title. |
No output schema declared.
No examples provided.
create_oauth_client ~111
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.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Human-readable client application name. |
| redirect_uris | array | yes | Allowed redirect URIs (exact match, https required; http only on localhost). No wildcards. |
| scopes | array | – | Scopes the client is allowed to request. Defaults to ['profile']. |
No output schema declared.
No examples provided.
create_organization ~80
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.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Organization name (e.g. 'Kangram', 'Acme Inc'). A namespace slug is derived from this. |
No output schema declared.
No examples provided.
create_status ~95
Use this command to add new statuses to board workflow.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | – | Optional board ID. Defaults to user's active board. |
| code | string | – | Optional machine code. If omitted, derived from name. |
| color | string | – | Optional hex color, e.g. #FF9800. |
| index | integer | – | Optional sort index; lower appears earlier. |
| name | string | yes | Status display name. |
No output schema declared.
No examples provided.
create_task ~212
Use this to add a task. Provide boardId for deterministic routing; otherwise active board is used.
| Name | Type | Req | Description |
|---|---|---|---|
| assignee | string | – | Assignee username without @. |
| board_id | integer | – | Board ID where the task should be created. |
| description | string | – | Optional longer task details. |
| parent_board_id | integer | – | Board ID of the parent task. Defaults to board_id if omitted. |
| parent_task_number | integer | – | Optional parent task number to create a subtask. Use with parent_board_id or board_id. |
| priority | string | – | Optional task priority: critical, major, normal, or low. |
| status | string | – | Optional initial status name for the task. |
| tags | array | – | Optional list of tags. |
| telegram_chat_id | integer | – | Optional Telegram chat id for message-task linking. |
| telegram_message_id | integer | – | Optional Telegram message id for message-task linking. |
| title | string | yes | Short task title. Keep it clear and action-oriented. |
No output schema declared.
No examples provided.
delete_agent ~102
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.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_username | string | yes | Username of the agent to delete. |
| namespace_slug | string | yes | Namespace slug of the organization. |
No output schema declared.
No examples provided.
delete_checklist_item ~38
Use this to remove a checklist item from a task. Provide item_id.
| Name | Type | Req | Description |
|---|---|---|---|
| item_id | integer | yes | Checklist item ID to delete. |
No output schema declared.
No examples provided.
delete_comment ~81
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.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | yes | Board ID where the task belongs. |
| comment_id | integer | yes | ID of the comment to delete. |
| task_number | integer | yes | Task number in board scope. |
No output schema declared.
No examples provided.
delete_status ~86
Delete by statusId or boardId+code. If tasks use it, provide replacementStatusId.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | – | Board ID for board+code lookup. |
| code | string | – | Status code for board+code lookup. |
| replacement_status_id | integer | – | Replacement status ID when deleting an in-use status. |
| status_id | integer | – | Target status ID. |
No output schema declared.
No examples provided.
delete_task ~47
Use this to mark a task as deleted without permanent removal.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | yes | Board ID where the task belongs. |
| task_number | integer | yes | Task number in board scope. |
No output schema declared.
No examples provided.
get_board_by_namespace ~103
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).
| Name | Type | Req | Description |
|---|---|---|---|
| board_code | string | yes | 3-character board code (case-insensitive; legacy codes may contain Unicode letters or digits). |
| namespace_slug | string | yes | Owner namespace slug (e.g. a username). |
No output schema declared.
No examples provided.
get_board_prompt ~75
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.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | yes | Board ID to read the prompt for. |
No output schema declared.
No examples provided.
get_board_settings ~96
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).
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | yes | Board ID to read settings for. |
| key | string | – | Optional setting key (e.g. "autoAddAssignees"). Omit to read all settings. |
No output schema declared.
No examples provided.
get_board_settings_schema ~77
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.
| Name | Type | Req | Description |
|---|---|---|---|
| key | string | – | Optional setting key to inspect. Omit for all available settings. |
No output schema declared.
No examples provided.
get_digest ~59
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?'.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_project_context ~140
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.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | yes | Board ID to load context for. |
No output schema declared.
No examples provided.
get_task ~55
Use this to read one task including its description, deadline, tags, status, and assignee.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | yes | Board ID where the task belongs. |
| task_number | integer | yes | Task number in board scope. |
No output schema declared.
No examples provided.
invite_board_member ~90
Use this command to invite a user to a board. The invited user will receive a notification and must accept. Owner/admin only.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | yes | Board ID to invite the user to. |
| role | string | – | Role to assign (admin or user). Default: user. Cannot assign owner role. |
| username | string | yes | Telegram username of the user to invite (without @). |
No output schema declared.
No examples provided.
issue_agent_key ~106
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.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_username | string | yes | Username of the agent. |
| name | string | – | Key label. Defaults to '<username> — <date>'. |
| namespace_slug | string | yes | Namespace slug of the organization. |
| scope | string | – | Key scope label (enforcement is planned; stored today). |
No output schema declared.
No examples provided.
list_agents ~57
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.
| Name | Type | Req | Description |
|---|---|---|---|
| namespace_slug | string | yes | Namespace slug of the organization. |
No output schema declared.
No examples provided.
list_board_files ~64
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.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | yes | Board ID to list files for. |
No output schema declared.
No examples provided.
list_board_members ~39
Use this command to see all board members and their roles (owner/admin/user).
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | yes | Board ID to list members for. |
No output schema declared.
No examples provided.
list_board_tags ~57
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.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | yes | Board ID to list tags from. |
No output schema declared.
No examples provided.
list_boards ~103
Use this command to discover boards before creating or filtering tasks.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | Filter boards by board code (3-character code, exact match, case-insensitive). |
| include_archived | boolean | – | Include archived boards in result. |
| limit | integer | – | Optional max number of boards to return. |
| only_archived | boolean | – | Return only archived boards. |
| title | string | – | Filter boards by title (starts-with, case-insensitive). |
No output schema declared.
No examples provided.
list_checklist ~55
Use this to retrieve all checklist items for a specific task. Provide board_id + task_number.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | yes | Board ID where the task belongs. |
| task_number | integer | yes | Task number in board scope. |
No output schema declared.
No examples provided.
list_comments ~53
Use this to retrieve all comments for a specific task. Provide board_id + task_number.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | yes | Board ID where the task belongs. |
| task_number | integer | yes | Task number in board scope. |
No output schema declared.
No examples provided.
list_namespaces ~44
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_oauth_clients ~33
List the OAuth2 clients you own (client_id, name, redirect URIs, scopes, revocation status).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_pending_invitations ~61
Use this without board_id to see your pending invitations. With board_id, see pending invitations for that board (must be a member).
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | – | Optional board ID to filter invitations for. If omitted, shows your pending invitations. |
No output schema declared.
No examples provided.
list_statuses ~38
Use this command to inspect the board status catalog and ordering.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | – | Optional board ID. Defaults to user's active board. |
No output schema declared.
No examples provided.
list_task_activity ~99
Use this to read the history of actions performed on a task (create, update, status changes, comments). Returns a timeline of activity entries.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | yes | Board ID where the task belongs. |
| limit | integer | – | Optional max number of activity entries to return (default 20). |
| offset | integer | – | Optional offset for pagination (default 0). |
| task_number | integer | yes | Task number in board scope. |
No output schema declared.
No examples provided.
list_tasks ~221
Use this to inspect task backlog by board, assignee, status, priority, tags, title substring, creation date range, and deletion state.
| Name | Type | Req | Description |
|---|---|---|---|
| assignee | string | – | Optional assignee username filter (without @). |
| board_id | integer | yes | Board ID to list tasks from. |
| created_from | string | – | Optional inclusive lower bound on createdAt as YYYY-MM-DD. |
| created_to | string | – | Optional inclusive upper bound on createdAt as YYYY-MM-DD. |
| include_deleted | boolean | – | Include deleted tasks in the result. |
| limit | integer | – | Optional max number of tasks to return. |
| only_deleted | boolean | – | Return only deleted tasks. |
| priority | – | – | Optional priority filter: critical, major, normal, low (aliases: high→major, middle→normal). |
| status | string | – | Optional status name filter. |
| tags | – | – | Optional list of tags to filter by. Tasks matching ANY of the specified tags are returned. |
| title_contains | string | – | Optional case-insensitive substring match on task title. |
No output schema declared.
No examples provided.
move_board ~91
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.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | yes | Board ID to move. |
| namespace_slug | string | yes | Target namespace slug (e.g. 'kangram'). Use list_namespaces to discover available slugs. |
No output schema declared.
No examples provided.
move_task ~90
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.
| Name | Type | Req | Description |
|---|---|---|---|
| source_board_id | integer | yes | Board ID where the task currently belongs. |
| target_board_id | integer | yes | Board ID to move the task to. |
| task_number | integer | yes | Task number in the source board. |
No output schema declared.
No examples provided.
my_work ~96
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.
| Name | Type | Req | Description |
|---|---|---|---|
| namespace_slug | string | – | Namespace slug (e.g. 'acme'), as returned by list_namespaces. Scopes tasks to boards in that namespace. |
No output schema declared.
No examples provided.
remove_board_member ~113
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.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | yes | Board ID to remove the user from. |
| user_id | integer | yes | User ID to remove from the board. |
No output schema declared.
No examples provided.
reorder_statuses ~53
Provide orderedStatusIds to set deterministic status ordering for a board.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | – | Optional board ID. Defaults to user's active board. |
| ordered_status_ids | array | yes | Status IDs in desired order. |
No output schema declared.
No examples provided.
respond_to_invitation ~52
Use this command to accept or reject a pending board invitation by its ID.
| Name | Type | Req | Description |
|---|---|---|---|
| accept | boolean | yes | True to accept, false to reject. |
| invitation_id | integer | yes | Invitation ID to respond to. |
No output schema declared.
No examples provided.
restore_board ~29
Use this to recover a previously archived board.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | yes | Board ID to restore. |
No output schema declared.
No examples provided.
restore_task ~50
Use this with list_tasks onlyDeleted/includeDeleted to recover deleted tasks.
| Name | Type | Req | Description |
|---|---|---|---|
| board_id | integer | yes | Board ID where the task belongs. |
| task_number | integer | yes | Deleted task number in board scope. |
No output schema declared.
No examples provided.
revoke_agent_key ~68
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.
| Name | Type | Req | Description |
|---|---|---|---|
| key_id | integer | yes | API key id (from list output or the web UI). |
No output schema declared.
No examples provided.
revoke_oauth_client ~54
Revoke one of your OAuth2 clients by its numeric ID. Existing tokens are not deleted but no new authorizations will be allowed.
| Name | Type | Req | Description |
|---|---|---|---|
| client_id | integer | yes | Numeric ID of the OAuth2 client to revoke. |
No output schema declared.
No examples provided.
How do I install the Kangram MCP server?
Kangram is a hosted endpoint at https://kangram.app/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · kangram.app
claude mcp add --transport http app-kangram-kangram 'https://kangram.app/mcp'
What is the Kangram MCP server?
Kangram is an MCP server listed in the public MCP registry as app.kangram/kangram. Task & board management for AI agents + humans. Kanban, comments, digests via MCP. This page covers its hosted endpoint (https://kangram.app/mcp).
Is the Kangram MCP server safe to use?
Kangram scores 65 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Kangram MCP server expose?
Kangram exposes 61 tools: list_boards, create_board, update_board, get_board_by_namespace, archive_board, and 56 more. Their descriptions and schemas cost roughly 5,797 tokens of context every time the server is loaded.
Does the Kangram MCP server require authentication?
No. We connected to Kangram without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Kangram MCP server still maintained?
Kangram is still listed as active in the MCP registry. We last reached this channel on 18 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.