Resources y prompts
Además de las tools, el servidor ofrece tres cosas que el cliente usa por su cuenta: resources (documentos que el usuario adjunta a la conversación), prompts (guiones listos que el usuario elige) y completions (autocompletado de los argumentos de ambos). En la era 2026-07-28, también pide confirmación antes de ejecutar una tool destructiva.
Nada de esto abre un camino nuevo hacia tus datos: todo pasa por las mismas tools, con los mismos permisos y el mismo alcance del token. Con un token solo de lectura, los resources y completions siguen disponibles, pero un prompt que escribe — como review_portal_access, que reenvía invitaciones — no aparece.
Resources
Un resource es un documento identificado por una URI. El usuario elige, por ejemplo, un usuario del portal, y el cliente MCP lee el documento y lo pone en el contexto, sin que el modelo tenga que llamar a una tool.
| URI | Qué devuelve |
|---|---|
kobana://dashboards/organization | La organización del token (JSON) |
kobana://dashboards/schemas | El catálogo de recursos de la API (JSON) |
kobana://dashboards/schemas/{resource} | Los campos de un recurso: tipo, enum, significado, cuáles ordenan (JSON) |
kobana://dashboards/portal_users/{id} | Un usuario del portal, con su estado y el tenant ID cuyos registros ve (JSON) |
resources/list trae las URIs fijas y resources/templates/list las plantillas con {id}.
- Permisos. Cada resource se lee con la tool correspondiente (
kobana://dashboards/portal_users/{id}esdashboards_portal_users_get). Solo aparece, y solo se lee, si puedes ejecutar esa tool. - No encontrado. Una URI desconocida, o un registro que no existe en esta organización, es
-32002en la era 2025 y-32602en2026-07-28— ver Errores. - Sin suscripción a cambios. El servidor es stateless: no hay
resources/subscribeni aviso de lista cambiada.
Prompts
Un prompt es una instrucción lista que eliges en el cliente y que se convierte en el primer mensaje de la conversación. Solo aparece si puedes ejecutar todas las tools en las que se apoya.
| Prompt | Argumentos | Qué hace |
|---|---|---|
tenant_overview | tenant_id | Quién entra al portal por un tenant ID: los usuarios del portal que lo comparten y el estado de cada uno. |
review_portal_access | tenant_id (opcional) | Encuentra usuarios del portal que aún esperan la invitación y ofrece reenviarla, una confirmación a la vez. |
team_access_review | — | Quién está en el equipo del dashboard, con qué rol y qué permisos. |
Un argumento obligatorio ausente es -32602.
Completions
completion/complete sugiere valores mientras escribes un argumento:
- Ids (el
{id}de usuarios del portal): busca en el listado correspondiente, con su mismo permiso. Si no puedes listar, no hay sugerencia. {resource}dekobana://dashboards/schemas/{resource}: los nombres del catálogo, por prefijo.
Sin fuente de sugerencias, la respuesta es una lista vacía, y sigues escribiendo.
Confirmación de tools destructivas
Las tools destructivas — las que borran, cierran, suspenden o desactivan un registro, o envían un email o una invitación — están marcadas con destructiveHint. El servidor no confía solo en el cliente: en la era 2026-07-28 él mismo pide la confirmación:
- El primer
tools/callno ejecuta nada. Vuelve conresultType: "input_required"y un formulario de una pregunta: ¿ejecutar esta acción, con estos argumentos? - El cliente muestra la pregunta y reenvía la misma llamada con tu respuesta.
- Solo un sí explícito la ejecuta. Rechazar o cancelar devuelve un resultado
isErrorconUSER_DECLINED, y nada cambia.
La confirmación vale solo para esa llamada: la misma tool, los mismos argumentos, la misma persona y organización, durante 5 minutos. Una respuesta no puede reutilizarse para otro registro u otra acción; si algo no coincide, el servidor simplemente vuelve a preguntar. Y es de uso único: reenviar una llamada ya confirmada devuelve isError con confirmation_replayed, sin ejecutar nada — para repetir la acción, llama la tool de nuevo y confirma otra vez.
Un cliente que no puede confirmar — en la era 2025, o en la 2026-07-28 sin declarar formularios de elicitation — no ejecuta tools destructivas: la llamada devuelve isError con confirmation_required y no se ejecuta nada. Las demás tools siguen funcionando. Si el servidor no puede registrar la confirmación en ese momento, la tool también se rechaza, con confirmation_unavailable; inténtalo de nuevo más tarde.