Skip to main content

MCP technical reference

Use this page when you need transport details, static credentials, capability boundaries, or protocol troubleshooting. For the shortest personal setup, start with Connect Kanera to your AI agent.

Connection methods

ConnectionAuthenticationEffective access
Interactive OAuthBrowser sign-in and consentActs as the connected user with Read and Write tool capability. The client controls action availability and approval; Kanera enforces the user's board role. It never receives workspace administration access.
Device authorizationA short user code approved in a browser on any deviceActs as the approving user, exactly like interactive OAuth. It never receives workspace administration access.
Unattended agentOAuth client_credentialsUses a workspace service identity capped at the Read, Write, or Admin maximum chosen by an administrator. Admin currently adds no tools to the default MCP server; use a separate workspace or board API key for direct REST administration.
Personal API keyStatic bearer tokenActs as its owner across accessible boards. The default MCP remains work-focused; direct REST requests separately inherit the owner's supported permissions.
Workspace or board API keyStatic bearer tokenStays pinned to its standard workspace or standalone board and its Read, Write, or Admin scope. Admin does not add configuration tools to the default MCP.

See Connect an AI agent for interactive OAuth, consent, revocation, unattended agents, and the authorization flow.

Hosted endpoints

Kanera's hosted MCP endpoint is:

https://mcp.kanera.app/mcp

The service health check is:

https://mcp.kanera.app/health

OAuth-capable clients can add the MCP endpoint directly and complete authentication in the browser. A client using an API key sends it as a bearer token:

Authorization: Bearer kanera_live_...

If your team runs Kanera at its own address, the same /mcp and /health paths apply there. Copy the exact MCP address shown under Profile settings -> API keys in that Kanera.

OAuth token safety

OAuth-capable clients handle the security details automatically. The token issued for a Kanera connection works only with the MCP address shown by Kanera; it cannot be reused as a general public API credential.

If you are building a custom OAuth client, send that exact MCP address as the resource during authorization and every token exchange. The device-authorization examples below show where it belongs. Use a personal, workspace, or board API key for an integration that calls the REST API directly.

Device authorization for CLI and headless clients

A client that cannot receive a browser redirect, such as a terminal tool, an SSH session, or a machine with no usable browser, can connect with the OAuth device authorization grant (RFC 8628). The client shows a short code, a person approves it in a browser on any device, and the client polls until it receives tokens.

The result is the same identity as interactive OAuth. The connection acts as the approving user with Read and Write tool capability, while Kanera continues to enforce that user's role on every board. It never receives workspace administration access. Approving a device request needs a plan that allows agent connections, the same requirement as any other agent connection.

Kanera advertises the flow in /.well-known/oauth-authorization-server:

Metadata fieldValue
device_authorization_endpointhttps://api.kanera.app/oauth/device/code
grant_types_supportedIncludes urn:ietf:params:oauth:grant-type:device_code

Register a device client

Register the client at /oauth/register with the device grant type. A device-only client does not need a redirect URI; redirect_uris is required only when the client also uses authorization_code.

curl -X POST https://api.kanera.app/oauth/register \
-H 'content-type: application/json' \
-d '{
"client_name": "Acme CLI",
"grant_types": ["urn:ietf:params:oauth:grant-type:device_code", "refresh_token"]
}'

Kanera rejects the device flow for any client that was not registered with the device grant type.

Request a device code

curl -X POST https://api.kanera.app/oauth/device/code \
-d client_id=kanera_client_... \
-d resource=https://mcp.kanera.app/mcp \
-d 'scope=kanera:read kanera:write offline_access'

resource is required and must match the MCP address. Kanera normalizes every user-authorized device request to kanera:read kanera:write, including clients that omit scope or request only Read. Add offline_access when the client needs a refresh token. Only kanera:read, kanera:write, and offline_access are accepted.

Response fieldMeaning
device_codeThe secret the client sends back when polling.
user_codeThe short code the person types, formatted like ABCD-2345.
verification_uriThe /oauth/device page on your Kanera web address.
verification_uri_completeThe same page with the code pre-filled in the query string.
expires_in600. The request expires ten minutes after it is issued.
interval5. The minimum number of seconds between polls.

Approve the request

  1. The client displays the user_code and the verification_uri, or opens verification_uri_complete directly.
  2. The person opens that address and signs in to Kanera if they are not already.
  3. The page names the client, shows the code so it can be checked against the terminal, and lists what the client will be able to do.
  4. Choosing Allow access approves the connection. Choosing Deny rejects it.

Poll for tokens

curl -X POST https://api.kanera.app/oauth/token \
-d grant_type=urn:ietf:params:oauth:grant-type:device_code \
-d device_code=kanera_device_... \
-d client_id=kanera_client_... \
-d resource=https://mcp.kanera.app/mcp

Poll no faster than interval. Until the request completes, the token endpoint returns 400 with a standard OAuth error:

ErrorMeaningWhat the client should do
authorization_pendingNobody has approved or denied the request yet.Keep polling at the current interval.
slow_downThe client polled faster than the interval.Kanera adds five seconds to the interval. Use the longer interval from now on.
access_deniedThe person denied the request.Stop polling and start a new request.
expired_tokenThe code expired, or its tokens were already issued.Start a new request.
invalid_grantThe device code is unknown or belongs to another client.Start a new request.

After approval the endpoint returns the same payload as every other grant: an audience-bound kanera_mcp_... access token valid for fifteen minutes, plus a refresh token when offline_access was granted. A device code is single-use, so a repeated exchange returns expired_token. Refresh requests must include the same resource.

Manage or revoke a device connection where every other agent connection is managed, under Profile settings -> API keys.

Create an API key

Use API keys for local stdio, clients that only accept static bearer tokens, or custom server-side integrations.

Personal API key

  1. Open Profile settings.
  2. Go to API keys.
  3. Create a personal API key.
  4. Choose Read-only or Read and write. Read-only is the right default for an unattended agent: Kanera refuses every mutation at the API, so the client's tool permissions are not the only thing standing between an agent and your work.
  5. Add an optional private label that identifies the client.
  6. Copy the secret when it is shown.

A personal key has a prefix such as kanera_u_live_.... It is shown once and acts as its owner, capped by the scope you chose. Store it only in the AI client's credential store or your server's secret manager.

Workspace or board API key

  1. Open the standard workspace or standalone board.
  2. Go to Settings -> API.
  3. Create an API key.
  4. Choose the smallest scope that fits the workflow.
  5. Copy the secret when it is shown.

Workspace API settings where scoped keys and unattended agents are managed.

ScopeGrants
ReadInspect, search, summarize, and report without changing Kanera.
WriteCreate and update board content, including cards, checklists, comments, assignments, labels, custom field values, and notes.
AdminPerform supported direct public API administration. The default MCP server remains work-focused and exposes no workspace, board, list, label, field, option, retention, or ordering administration tools.

Connect a local stdio client

The simplest local stdio server is the Kanera CLI. Install it, log in once, and point the client at kanera mcp; it serves the same tool layer over stdio using the stored credential, so there is no second key to configure in a second place.

npm install --global @kanera/cli
kanera auth login
{
"mcpServers": {
"kanera": {
"command": "kanera",
"args": ["mcp"]
}
}
}

Use npx @kanera/cli mcp instead of a global install when you would rather not install anything, and add "args": ["mcp", "--profile", "agent"] to pick a named profile.

To supply the credential through the environment rather than a stored profile — the usual choice in CI or a sandboxed agent — both the CLI and the standalone MCP package read:

Environment variablePurpose
KANERA_API_KEYA personal, workspace, or board API key.
KANERA_PUBLIC_API_URLThe Kanera public API origin, such as https://api.kanera.app.
{
"mcpServers": {
"kanera": {
"command": "npx",
"args": ["-y", "@kanera/cli", "mcp"],
"env": {
"KANERA_API_KEY": "kanera_u_live_...",
"KANERA_PUBLIC_API_URL": "https://api.kanera.app"
}
}
}
}

Use the hosted HTTP endpoint when you do not need to run the MCP process locally at all.

Resources

Kanera provides four structured JSON resource templates:

ResourceURIContains
Standard workspacekanera://workspace/{workspaceId}Bounded workspace configuration and shared lists, labels, fields, templates, automations, and membership visible to the credential
Boardkanera://board/{boardId}Bounded metadata and visible configuration for a standard-workspace or standalone board, without cards
Cardkanera://card/{cardId}Card detail, including labels, assignees, checklists, attachments, and linked notes
Notekanera://note/{noteId}A visible personal or team note

Personal notes are private to the connected user. Do not imply that another workspace member or a workspace service credential can read them.

Card references

MCP card fields named cardId or cardIds accept any of these references:

  • A human card key such as PROJ-123, including an exact key that uses a previous workspace prefix.
  • A canonical Kanera card URL.
  • The card UUID returned by the public API.

Use the human key in prompts and user-facing replies. Kanera resolves it to the UUID before calling the existing public API operation, so authorization, activity, and audit behavior stay the same. If the connected user can see the same key in more than one organisation, use the canonical card URL to identify the intended organisation unambiguously.

Card results include the current human-readable key. The kanera://card/{cardId} resource URI continues to use the UUID; human keys and links apply to MCP tool inputs.

Capability groups

The live tool schemas are the authority for names, inputs, safety annotations, and limits. The server currently covers:

AreaAvailable operations
DiscoveryInspect the acting session, page standard workspaces and accessible boards, read bounded workspace or board configuration, and page boards and members
Configuration boundaryRead lists, labels, fields, options, members, and permissions needed to target work. Create, edit, reorder, retention, and other list/workspace administration operations remain in the Kanera interface and are not MCP tools
SearchSearch live cards, notes, comments, and attachment filenames, or search the official Kanera documentation
CardsRead summaries or full content, fetch bounded checklist/comment content for up to 200 selected cards, create, update, move, reorder, copy, move between compatible boards, archive, unarchive, complete, reopen, and manage attachments and covers
Board separatorsCreate titled, optionally colored separators; update their appearance; move them relative to cards, separators, or list edges; place cards relative to separators; and delete separators without changing cards
Bulk card workComplete, date, label, assign, move, archive, copy, or set custom fields on selected cards, with board-level batch limits exposed in each schema
Assignments and fieldsReplace assignees or labels and set or clear supported custom-field values
CommentsPage, add with optional attachments, edit, delete an eligible comment, and idempotently add or remove reactions
ChecklistsCreate, rename, reorder, delete, and manage checklist items, including supported bulk updates
Up next prioritiesDiscover readable personal and teammate queues, read exact rank order, and add, move, or remove assigned active cards when the credential and workspace authority allow it
Agent runsAnnounce in-flight work on a card with runs.start, report progress and heartbeat with runs.update, close the run with a terminal status, and check what is already running with runs.list
Work and reportingQuery bounded personal or visible team cards with overdue, unassigned, inactivity, and last-moved filters; read portfolio rollups; and generate personal standup evidence across accessible boards
Activity and completed workPage board activity and card history, and read completion history and work-done records
NotesPage note metadata, read full content, create, update, link, attach small files, copy, and reorder personal or team notes

See the generated MCP tool inventory for every registered tool name.

Built-in prompts

PromptUse
summarize_board_statusInspect one board and summarize progress, blockers, stale work, and next actions.
prepare_standup_updateCombine personal current work and paginated work history across accessible boards to draft a standup.
draft_card_from_notesRead a note and draft a card title and Markdown description without creating the card.

Normal conversation prompts work even when an AI client does not expose MCP prompt templates.

Security and destructive operations

  • Interactive and device-code OAuth always grant kanera:read and kanera:write; offline_access remains optional. The MCP client controls tool availability and approvals, and Kanera enforces board roles. OAuth never grants workspace administration.
  • Every OAuth flow binds its authorization, code, refresh family, and access token to the canonical MCP resource.
  • Raw kanera_mcp_... access tokens are accepted only by the MCP endpoint and are rejected by /api/v1; the MCP service uses a separate minute-lived internal delegation credential for public API calls.
  • Device authorization uses the same scopes and the same limits. A device code expires after ten minutes, can be exchanged once, and is only approved by a signed-in user who confirms the code shown by the client.
  • Unattended agents and workspace keys are capped at their configured scope.
  • Personal keys inherit their owner's current permissions and should be protected like the user's account.
  • Read-scoped API keys and unattended service credentials cannot call protected mutations.
  • API-key and MCP activity is recorded with its acting user or integration identity. An interactive OAuth agent is recorded as the agent acting for its user: comments and activity rows carry the agent's name and render as via <agent>, and the user is notified about what their agent did rather than having it suppressed as their own action. A personal API key used by a script still acts as its owner.
  • Disconnecting OAuth or deleting an unattended agent revokes its active credentials.
  • Use a separate credential per client so one connection can be revoked without affecting another.

Kanera MCP cannot delete:

  • Boards
  • Lists
  • Labels or custom fields
  • Notes
  • Note attachments

Delete those manually in Kanera. MCP can archive or unarchive cards and can archive the active cards in a list.

The default MCP server also cannot create, edit, reorder, or otherwise administer workspaces, boards, lists, labels, fields, options, or retention settings. Those operations remain in the Kanera interface; supported REST endpoints remain available for deliberately built integrations.

MCP can permanently delete:

  • A comment authored by the acting user
  • A checklist and its items
  • A checklist item

Those tool schemas are marked destructive. Use them only after an explicit request and verify the target before calling them.

Troubleshooting

ProblemWhat to check
The client cannot connectUse the exact /mcp URL for the Kanera you are connecting to, as shown under Profile settings -> API keys.
The client asks for a token instead of opening KaneraIt does not support remote MCP OAuth. Use an API key or a supported client.
The client has no browser to redirect toUse device authorization if the client supports it, or an API key if it does not.
Polling keeps returning slow_downPoll no faster than the interval returned with the device code, and adopt the longer interval after each slow_down.
The device page reports an invalid or expired codeCodes last ten minutes and work once. Check the code, sign in first, then request a new code from the client.
The token endpoint returns invalid_targetSend the exact MCP address from Profile settings -> API keys as resource during authorization and every token exchange.
The API key is reported missingSet KANERA_API_KEY for stdio or send Authorization: Bearer ... over HTTP.
A request returns 401The credential is missing, malformed, expired, revoked, or copied incorrectly. Restart OAuth or replace the API key.
A request returns 403For personal OAuth, confirm the acting user is an Editor rather than an Observer on the target board. For an API key or unattended agent, also confirm the credential is Write-capable.
The agent can read but not editAllow the write action in the MCP client and confirm the acting identity has board Editor access. For service connections and API keys, also use a Write-capable credential. Existing personal OAuth connections do not need to reconnect.
The agent cannot find a boardUse complete board discovery. A board may be standalone or available only through explicit guest membership.
The agent cannot administer a workspaceAdministration is intentionally absent from the default MCP server regardless of credential type. Use the Kanera interface, or build a deliberate integration against a supported public REST endpoint.
A coding agent has tools but uses them poorlyInstall the official Kanera Agent Skill.
New or changed tools do not appearRefresh or rescan the MCP server in the client so it retrieves the current schemas. Restart the client if it has no refresh action; OAuth reauthorization is not normally required.