Skip to content

Kangram

by kangram.app · remote · no sign-in to list tools · v1.0.0 · published by app.kangram

Task & board management for AI agents + humans. Kanban, comments, digests via MCP.

Deletes · 10Final · 3Changes · 26

61 tools: 10 can delete or cancel things, 3 do something that can't be undone, 26 change things and 22 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http kangram https://kangram.app/mcp --header 'Authorization: <your-authorization>'

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

61 tools

Deletes or cancels 10Claude Code: deny
  • archive_boardUse this to hide a board from active workflows without deleting it.No findings

    Why it is in this group

    • The name "archive_board" says "archive": a word for removing or ending something.
    Description, as the server wrote it
    Use this to hide a board from active workflows without deleting it.
  • cancel_board_invitationUse this command to cancel a pending board invitation.No findings

    Why it is in this group

    • The name "cancel_board_invitation" says "cancel": a word for removing or ending something.
    Description, as the server wrote it
    Use this command to cancel a pending board invitation. Only the original inviter or a board admin can cancel.
  • delete_agentDelete an agent account: revokes all its API keys, removes memberships, unassigns its tasks, then hard-deletes the user.No findings

    Why it is in this group

    • The name "delete_agent" says "delete": a word for removing or ending something.
    Description, as the server wrote it
    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.
  • delete_checklist_itemUse this to remove a checklist item from a task.No findings

    Why it is in this group

    • The name "delete_checklist_item" says "delete": a word for removing or ending something.
    Description, as the server wrote it
    Use this to remove a checklist item from a task. Provide item_id.
  • delete_commentUse this to delete a comment.No findings

    Why it is in this group

    • The name "delete_comment" says "delete": a word for removing or ending something.
    Description, as the server wrote it
    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.
  • delete_statusDelete by statusId or boardId+code.No findings

    Why it is in this group

    • The name "delete_status" says "delete": a word for removing or ending something.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    Delete by statusId or boardId+code. If tasks use it, provide replacementStatusId.
  • delete_taskUse this to mark a task as deleted without permanent removal.No findings

    Why it is in this group

    • The name "delete_task" says "delete": a word for removing or ending something.
    Description, as the server wrote it
    Use this to mark a task as deleted without permanent removal.
  • remove_board_memberUse this command to remove a member from a board.No findings

    Why it is in this group

    • The name "remove_board_member" says "remove": a word for removing or ending something.
    Description, as the server wrote it
    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.
  • revoke_agent_keyRevoke an agent's API key by id.No findings

    Why it is in this group

    • The name "revoke_agent_key" says "revoke": a word for removing or ending something.
    Description, as the server wrote it
    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.
  • revoke_oauth_clientRevoke one of your OAuth2 clients by its numeric ID.No findings

    Why it is in this group

    • The name "revoke_oauth_client" says "revoke": a word for removing or ending something.
    Description, as the server wrote it
    Revoke one of your OAuth2 clients by its numeric ID. Existing tokens are not deleted but no new authorizations will be allowed.
Can't be undone 3Claude Code: ask
  • invite_board_memberUse this command to invite a user to a board.No findings

    Why it is in this group

    • The name "invite_board_member" says "invite": a word for sending, and what is sent cannot be taken back.
    Description, as the server wrote it
    Use this command to invite a user to a board. The invited user will receive a notification and must accept. Owner/admin only.
  • move_taskUse this to transfer a task between boards.No findings

    Why it is in this group

    • The name "move_task" says "move": a word for a change.
    • The description's first verb is "transfer": a word for a change that another call does not undo.
    Description, as the server wrote it
    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.
  • transfer_board_ownershipTransfer ownership of a board from the current owner to an existing board member (admin or user role).No findings

    Why it is in this group

    • The name "transfer_board_ownership" says "transfer": a word for a change that another call does not undo.
    • The description says "irreversible".
    Description, as the server wrote it
    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.
Changes things 26Claude Code: ask
  • add_board_memberUse this command to add a user directly to a board — they become a member immediately, with no invitation to accept.No findings

    Why it is in this group

    • The name "add_board_member" says "add": a word for a change.
    Description, as the server wrote 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.
  • add_checklist_itemUse this to add a new item to a task's checklist.No findings

    Why it is in this group

    • The name "add_checklist_item" says "add": a word for a change.
    Description, as the server wrote it
    Use this to add a new item to a task's checklist. Provide board_id + task_number to identify the task.
  • add_commentUse this to add a comment to a specific task.No findings

    Why it is in this group

    • The name "add_comment" says "add": a word for a change.
    Description, as the server wrote it
    Use this to add a comment to a specific task. Provide board_id + task_number to identify the task.
  • bind_board_to_groupBind (link) a board to a Telegram group chat.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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'.
  • clone_boardClone a board into a new board, copying the workflow not the data: statuses + board files (the prompt / agent instructions) + board title.No findings

    Why it is in this group

    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    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.
  • create_agentCreate a non-human agent account (User type='agent') inside the organization identified by its namespace slug.No findings

    Why it is in this group

    • The name "create_agent" says "create": a word for a change.
    Description, as the server wrote it
    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.
  • create_boardUse this command to initialize a board and its default status workflow.No findings

    Why it is in this group

    • The name "create_board" says "create": a word for a change.
    Description, as the server wrote it
    Use this command to initialize a board and its default status workflow.
  • create_oauth_clientRegister a new OAuth2 client so a third-party app can authenticate users via 'Login with Kangram'.No findings

    Why it is in this group

    • The name "create_oauth_client" says "create": a word for a change.
    Description, as the server wrote it
    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.
  • create_organizationCreate a new organization.No findings

    Why it is in this group

    • The name "create_organization" says "create": a word for a change.
    Description, as the server wrote it
    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.
  • create_statusUse this command to add new statuses to board workflow.No findings

    Why it is in this group

    • The name "create_status" says "create": a word for a change.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    Use this command to add new statuses to board workflow.
  • create_taskUse this to add a task.No findings

    Why it is in this group

    • The name "create_task" says "create": a word for a change.
    Description, as the server wrote it
    Use this to add a task. Provide boardId for deterministic routing; otherwise active board is used.
  • issue_agent_keyMint a new API key for an agent member of the organization.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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.
  • list_boardsUse this command to discover boards before creating or filtering tasks.No findings

    Why it is in this group

    • The name "list_boards" says "list": a word for reading.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    Use this command to discover boards before creating or filtering tasks.
  • move_boardMove a board from its current namespace to a target namespace.No findings

    Why it is in this group

    • The name "move_board" says "move": a word for a change.
    Description, as the server wrote it
    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.
  • reorder_statusesProvide orderedStatusIds to set deterministic status ordering for a board.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Provide orderedStatusIds to set deterministic status ordering for a board.
  • respond_to_invitationUse this command to accept or reject a pending board invitation by its ID.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Use this command to accept or reject a pending board invitation by its ID.
  • restore_boardUse this to recover a previously archived board.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Use this to recover a previously archived board.
  • restore_taskUse this with list_tasks onlyDeleted/includeDeleted to recover deleted tasks.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Use this with list_tasks onlyDeleted/includeDeleted to recover deleted tasks.
  • save_session_handoffSave 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).No findings

    Why it is in this group

    • The name "save_session_handoff" says "save": a word for a change.
    Description, as the server wrote it
    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.
  • set_board_settingUse this command to change a board setting.No findings

    Why it is in this group

    • The name "set_board_setting" says "set": a word for a change.
    Description, as the server wrote it
    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.
  • update_boardUse this to edit board metadata (title, code) and/or the board-level agent prompt.No findings

    Why it is in this group

    • The name "update_board" says "update": a word for a change.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    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.
  • update_board_fileUpsert a named markdown file on a board.No findings

    Why it is in this group

    • The name "update_board_file" says "update": a word for a change.
    Description, as the server wrote it
    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.
  • update_checklist_itemUse this to update a checklist item's title or done status.No findings

    Why it is in this group

    • The name "update_checklist_item" says "update": a word for a change.
    Description, as the server wrote it
    Use this to update a checklist item's title or done status. Provide item_id and fields to update.
  • update_member_roleUse this command to change an existing board member's role.No findings

    Why it is in this group

    • The name "update_member_role" says "update": a word for a change.
    Description, as the server wrote it
    Use this command to change an existing board member's role. Owner/admin only. Cannot target the board owner or promote anyone to owner.
  • update_statusUpdate status by statusId or by boardId+code.No findings

    Why it is in this group

    • The name "update_status" says "update": a word for a change.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    Update status by statusId or by boardId+code.
  • update_taskUse this to edit task title/description/deadline/tags/assignee/status.No findings

    Why it is in this group

    • The name "update_task" says "update": a word for a change.
    Description, as the server wrote it
    Use this to edit task title/description/deadline/tags/assignee/status.
Only reads 22Claude Code: allow
  • get_board_by_namespaceCanonical lookup for a board.No findings

    Why it is in this group

    • The name "get_board_by_namespace" says "get": a word for reading.
    Description, as the server wrote it
    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).
  • get_board_promptFetch the board-level agent prompt — the markdown instructions an agent should follow when operating on this board.No findings

    Why it is in this group

    • The name "get_board_prompt" says "get": a word for reading.
    Description, as the server wrote it
    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.
  • get_board_settingsUse this command to read a board's effective settings — the stored value, or the default when unset (lazy).No findings

    Why it is in this group

    • The name "get_board_settings" says "get": a word for reading.
    Description, as the server wrote it
    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).
  • get_board_settings_schemaUse this command to discover which board settings exist and their types/defaults (json-schema-like).No findings

    Why it is in this group

    • The name "get_board_settings_schema" says "get": a word for reading.
    Description, as the server wrote it
    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.
  • get_digestCompute 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.No findings

    Why it is in this group

    • The name "get_digest" says "get": a word for reading.
    Description, as the server wrote it
    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?'.
  • get_project_contextGet 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 …No findings

    Why it is in this group

    • The name "get_project_context" says "get": a word for reading.
    Description, as the server wrote it
    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.
  • get_taskUse this to read one task including its description, deadline, tags, status, and assignee.No findings

    Why it is in this group

    • The name "get_task" says "get": a word for reading.
    Description, as the server wrote it
    Use this to read one task including its description, deadline, tags, status, and assignee.
  • list_agentsList 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.No findings

    Why it is in this group

    • The name "list_agents" says "list": a word for reading.
    Description, as the server wrote it
    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.
  • list_board_filesList the board's named files (the multi-file-ready prompt store).No findings

    Why it is in this group

    • The name "list_board_files" says "list": a word for reading.
    Description, as the server wrote it
    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.
  • list_board_membersUse this command to see all board members and their roles (owner/admin/user).No findings

    Why it is in this group

    • The name "list_board_members" says "list": a word for reading.
    Description, as the server wrote it
    Use this command to see all board members and their roles (owner/admin/user).
  • list_board_tagsUse this to discover which tags already exist on a board before filtering with list_tasks.No findings

    Why it is in this group

    • The name "list_board_tags" says "list": a word for reading.
    Description, as the server wrote it
    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.
  • list_checklistUse this to retrieve all checklist items for a specific task.No findings

    Why it is in this group

    • The name "list_checklist" says "list": a word for reading.
    Description, as the server wrote it
    Use this to retrieve all checklist items for a specific task. Provide board_id + task_number.
  • list_commentsUse this to retrieve all comments for a specific task.No findings

    Why it is in this group

    • The name "list_comments" says "list": a word for reading.
    Description, as the server wrote it
    Use this to retrieve all comments for a specific task. Provide board_id + task_number.
  • list_namespacesList all namespaces the user can see: their personal namespace plus any organization namespaces they own or are a member of.No findings

    Why it is in this group

    • The name "list_namespaces" says "list": a word for reading.
    Description, as the server wrote it
    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.
  • list_oauth_clientsList the OAuth2 clients you own (client_id, name, redirect URIs, scopes, revocation status).No findings

    Why it is in this group

    • The name "list_oauth_clients" says "list": a word for reading.
    Description, as the server wrote it
    List the OAuth2 clients you own (client_id, name, redirect URIs, scopes, revocation status).
  • list_pending_invitationsUse this without board_id to see your pending invitations.No findings

    Why it is in this group

    • The name "list_pending_invitations" says "list": a word for reading.
    Description, as the server wrote it
    Use this without board_id to see your pending invitations. With board_id, see pending invitations for that board (must be a member).
  • list_statusesUse this command to inspect the board status catalog and ordering.No findings

    Why it is in this group

    • The name "list_statuses" says "list": a word for reading.
    Description, as the server wrote it
    Use this command to inspect the board status catalog and ordering.
  • list_task_activityUse this to read the history of actions performed on a task (create, update, status changes, comments).No findings

    Why it is in this group

    • The name "list_task_activity" says "list": a word for reading.
    Description, as the server wrote it
    Use this to read the history of actions performed on a task (create, update, status changes, comments). Returns a timeline of activity entries.
  • list_tasksUse this to inspect task backlog by board, assignee, status, priority, tags, title substring, creation date range, and deletion state.No findings

    Why it is in this group

    • The name "list_tasks" says "list": a word for reading.
    Description, as the server wrote it
    Use this to inspect task backlog by board, assignee, status, priority, tags, title substring, creation date range, and deletion state.
  • my_workReturns up to 100 tasks assigned to or created by the caller across all boards they can access, ordered by most recent update.No findings

    Why it is in this group

    • The description's first verb is "return": a word for reading.
    Description, as the server wrote it
    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.
  • search_tasksUse this to find tasks by text, assignee, status, priority, or attention category across all your accessible boards.No findings

    Why it is in this group

    • The name "search_tasks" says "search": a word for reading.
    Description, as the server wrote it
    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.
  • transition_task_statusUse this for explicit status moves while keeping other fields unchanged.No findings

    Why it is in this group

    • The name "transition_task_status" says "status": a word for reading.
    Description, as the server wrote it
    Use this for explicit status moves while keeping other fields unchanged.

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http kangram https://kangram.app/mcp --header 'Authorization: <your-authorization>'

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__kangram__get_board_by_namespace",
      "mcp__kangram__get_task",
      "mcp__kangram__list_tasks",
      "mcp__kangram__list_board_tags",
      "mcp__kangram__transition_task_status",
      "mcp__kangram__list_task_activity",
      "mcp__kangram__search_tasks",
      "mcp__kangram__my_work",
      "mcp__kangram__list_statuses",
      "mcp__kangram__list_comments",
      "mcp__kangram__list_checklist",
      "mcp__kangram__list_board_members",
      "mcp__kangram__list_pending_invitations",
      "mcp__kangram__list_namespaces",
      "mcp__kangram__get_board_prompt",
      "mcp__kangram__list_board_files",
      "mcp__kangram__list_oauth_clients",
      "mcp__kangram__get_digest",
      "mcp__kangram__get_project_context",
      "mcp__kangram__get_board_settings",
      "mcp__kangram__get_board_settings_schema",
      "mcp__kangram__list_agents"
    ],
    "ask": [
      "mcp__kangram__list_boards",
      "mcp__kangram__create_board",
      "mcp__kangram__update_board",
      "mcp__kangram__restore_board",
      "mcp__kangram__clone_board",
      "mcp__kangram__create_task",
      "mcp__kangram__update_task",
      "mcp__kangram__move_task",
      "mcp__kangram__restore_task",
      "mcp__kangram__create_status",
      "mcp__kangram__update_status",
      "mcp__kangram__reorder_statuses",
      "mcp__kangram__add_comment",
      "mcp__kangram__add_checklist_item",
      "mcp__kangram__update_checklist_item",
      "mcp__kangram__invite_board_member",
      "mcp__kangram__add_board_member",
      "mcp__kangram__update_member_role",
      "mcp__kangram__respond_to_invitation",
      "mcp__kangram__create_organization",
      "mcp__kangram__move_board",
      "mcp__kangram__transfer_board_ownership",
      "mcp__kangram__update_board_file",
      "mcp__kangram__create_oauth_client",
      "mcp__kangram__save_session_handoff",
      "mcp__kangram__set_board_setting",
      "mcp__kangram__bind_board_to_group",
      "mcp__kangram__create_agent",
      "mcp__kangram__issue_agent_key"
    ],
    "deny": [
      "mcp__kangram__archive_board",
      "mcp__kangram__delete_task",
      "mcp__kangram__delete_status",
      "mcp__kangram__delete_comment",
      "mcp__kangram__delete_checklist_item",
      "mcp__kangram__remove_board_member",
      "mcp__kangram__cancel_board_invitation",
      "mcp__kangram__revoke_oauth_client",
      "mcp__kangram__delete_agent",
      "mcp__kangram__revoke_agent_key"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as kangram. Review it before you use it.