{
"id": "page:process-gaps-GAP-L1-P1-mcp-elicitation-and-resource-links",
"_kind": "Page",
"_file": "wiki/process/gaps/GAP-L1-P1-mcp-elicitation-and-resource-links.md",
"_cluster": "wiki",
"attributes": {
"title": "GAP-L1-P1-mcp-elicitation-and-resource-links",
"displayName": "GAP-L1-P1-mcp-elicitation-and-resource-links",
"slug": "process/gaps/GAP-L1-P1-mcp-elicitation-and-resource-links",
"articlePath": "wiki/process/gaps/GAP-L1-P1-mcp-elicitation-and-resource-links.md",
"article": "# GAP-L1-P1-mcp-elicitation-and-resource-links\n\n| Field | Value |\n|---|---|\n| id | gap:mcp-elicitation-and-resource-links |\n| title | MCP elicitation, structured tool output, and resource links not modeled in tool/server schema |\n| level | 1 |\n| priority | P1 |\n| discoveredAt | 2026-04-28T00:00:00Z |\n| source | https://modelcontextprotocol.io/specification/2025-06-18/changelog |\n| status | closed |\n| owner | tbd |\n\n## Current state\n`ToolDescriptor` and `ToolServer` NodeKinds describe a tool's name, schema, and protocol but do not represent:\n- **Elicitation** — server-initiated requests for additional information from the user (analogous to a breakpoint, but inside MCP).\n- **Structured tool output** — tool results carrying typed structured content alongside text.\n- **Resource links** — tool results containing pointers to MCP resources rather than inlined data.\n\nCoverage-checklist OpenQuestion \"Industry standard for thinking-streaming envelopes\" and \"cross-protocol tool-call streaming\" both touch this area.\n\n## Desired state\n- Add `ToolDescriptor.supportsElicitation: bool`, `ToolDescriptor.outputShape: enum<text,structured,resource-link,mixed>`.\n- Add `Capability` instances `cap:mcp-elicitation`, `cap:mcp-structured-output`, `cap:mcp-resource-links`.\n- Add `Channel` linkage so an elicitation request can be modeled as a `Channel` of kind `mcp-elicitation-channel` or as a sub-event of `Hook` `kind=DecisionPoint` (synonym).\n- Resolve coverage-checklist OpenQuestion: elicitation IS the \"agent-instance asking for help\" pattern, equivalent to the `Decision-Point` term — record `synonym_of` between `term:elicitation` (new) and `term:decision-point`.\n\n## Evidence\n- https://modelcontextprotocol.io/specification/2025-06-18/changelog (PRs #382, #371, #603)\n\n## Propagation status\n- Level 1: open\n- Level 2: not-started\n\n## Propagation chain\n- Level 1: 3 capabilities, attribute extension on ToolDescriptor.\n- Level 2: terminology.md gets new synonym; coverage-checklist OpenQuestion `industry standard for cross-protocol tool-call streaming` partially resolved.\n\n## Notes\nElicitation is conceptually the same pattern as a babysitter Decision-Point/Breakpoint — surfacing this in the schema unlocks cross-protocol unification.\n\n## Resolution (2026-04-28)\nClosed. Realized as three Capability entries (`capability:mcp-elicitation`, `capability:mcp-structured-tool-output`, `capability:mcp-resource-links`) with `appliesToNodeKinds: [AgentRuntimeImpl, ToolServer]`, plus per-product CapabilitySupport bindings for Claude Code (full), Cursor (partial — TODO verify), and OpenCode (none — TODO verify). Capture deferred to per-product evidence rather than reshaping `ToolDescriptor` schema, because the support level is per-runtime not per-tool.\n",
"documents": []
},
"outgoingEdges": [],
"incomingEdges": []
}