Skip to main content

Resources and prompts

Besides tools, the server offers three things the client uses on its own: resources (documents the user attaches to the conversation), prompts (ready-made scripts the user picks) and completions (autocomplete for the arguments of both). In the 2026-07-28 era, it also asks for confirmation before running a destructive tool.

None of this opens a new path to your data: everything goes through the same tools, under the same permissions and the same token scope. With a read-only token, resources and completions stay available, but a prompt that writes — like review_portal_access, which resends invitations — does not show up.

Resources​

A resource is a document identified by a URI. The user picks, say, a portal user, and the MCP client reads the document and puts it in context, without the model having to call a tool.

URIWhat comes back
kobana://dashboards/organizationThe token's organization (JSON)
kobana://dashboards/schemasThe API resource catalogue (JSON)
kobana://dashboards/schemas/{resource}A resource's fields: type, enum, meaning, which ones sort (JSON)
kobana://dashboards/portal_users/{id}One portal user, with its status and the tenant ID it sees records for (JSON)

resources/list returns the fixed URIs and resources/templates/list the templates with {id}.

  • Permissions. Each resource is read by the matching tool (kobana://dashboards/portal_users/{id} is dashboards_portal_users_get). It is only listed, and only read, if you can run that tool.
  • Not found. An unknown URI, or a record that does not exist in this organization, is -32002 in the 2025 era and -32602 in 2026-07-28 — see Errors.
  • No change subscriptions. The server is stateless: there is no resources/subscribe and no list-changed notice.

Prompts​

A prompt is a ready-made instruction you pick in the client that becomes the first message of the conversation. It only shows up if you can run every tool it relies on.

PromptArgumentsWhat it does
tenant_overviewtenant_idWho signs in to the portal for one tenant ID: the portal users that share it, and their status.
review_portal_accesstenant_id (optional)Finds portal users still waiting on an invitation and offers to resend it, one confirmation at a time.
team_access_review—Who is on the dashboard team, with which role and permissions.

A missing required argument is -32602.

Completions​

completion/complete suggests values while you type an argument:

  • Ids (the {id} of portal users): searches the matching listing, under its permission. If you cannot list, there is no suggestion.
  • {resource} of kobana://dashboards/schemas/{resource}: the catalogue names, by prefix.

With no source of suggestions, the answer is an empty list, and you keep typing.

Confirming destructive tools​

Destructive tools — the ones that delete, close, suspend or deactivate a record, or send an email or invitation — are marked with destructiveHint. The server does not rely on the client alone: in the 2026-07-28 era it asks for the confirmation itself:

  1. The first tools/call runs nothing. It comes back with resultType: "input_required" and a one-question form: run this action, with these arguments?
  2. The client shows the question and re-sends the same call with your answer.
  3. Only an explicit yes runs it. Declining or cancelling returns an isError result with USER_DECLINED, and nothing changes.

The confirmation holds only for that call: the same tool, the same arguments, the same person and organization, for 5 minutes. An answer cannot be reused for another record or another action; if anything does not match, the server simply asks again. And it is single-use: re-sending a call that was already confirmed returns isError with confirmation_replayed, and nothing runs — to repeat the action, call the tool again and confirm again.

A client that cannot confirm — on the 2025 era, or on 2026-07-28 without declaring elicitation forms — does not run destructive tools: the call returns isError with confirmation_required and nothing is executed. Every other tool keeps working. If the server cannot record the confirmation at that moment, the tool is refused too, with confirmation_unavailable; try again later.