Why MCP is the native surface
Why native, not adapted
ADR-0003 frames the choice as three options: (1) MCP-native - tools and resources are the canonical surface, REST/GraphQL/llms.txt are generated; (2) REST/GraphQL-native with an MCP adapter bolted on; (3) a proprietary agent RPC. Cogitave is an agent company, and agents are the primary consumers of company knowledge, so option 2 would make them second-class - "the opposite of the company thesis," in the ADR's own words - and option 3 forfeits ecosystem and standardization for no real gain. The stated decision drivers were: an agent-first AI maturity target (Level 4 - agent-first with human oversight), one model and one query so humans and agents cannot drift onto different data, standardized tool/resource semantics with subscriptions and change notifications, and a spec Cogitave can author against with a clear upgrade path. The chosen outcome is option 1.
The protocol baseline
mcp-interface.md ยง1 pins the concrete contract the server commits to:
- Spec revision 2025-11-25 - the
2026-07-28release candidate is tracked for a future upgrade, not adopted yet. - Two transports: stdio for local agents (namzu kernel, CI) and Streamable HTTP for edge/remote callers - no legacy HTTP+SSE. An invalid
Origingets HTTP 403; GET-stream polling and resumption use event IDs. - JSON-RPC 2.0 over a stateful session, with capability negotiation happening once, at
initialize. - JSON Schema 2020-12 for every tool's input and output - the same dialect the property graph schema itself uses, so a tool's structured content and the model validate identically.
- Capabilities advertised:
tools(withlistChanged),resources(subscribe+listChanged),logging,completions, plus tool/resource icons exposed as metadata. - Errors as data, not protocol failures: a tool input-validation failure comes back as a tool execution error (
isError: true) rather than a JSON-RPC protocol error - SEP-1303 - so the calling model can read the failure and self-correct instead of the call simply breaking.
What this buys, and what it costs
Per the ADR's own consequences: subscriptions give live invalidation instead of polling, agents and humans literally cannot drift onto different data, and the design aligns with the ai-agent-engineering standard's requirement that every capability go over MCP with a repo-committed .mcp.json. The ADR is equally honest about the risks: MCP itself is fast-moving - hence pinning a revision instead of floating on it - and a tool surface is an attack surface, which is why the graph-query tool covered in the next unit is deliberately read-only and bounded rather than a general query escape hatch.
TIP
When you evaluate any MCP surface, ask ADR-0003's own question back: is this tool/resource set the canonical thing itself, or an adapter in front of something else? Cogitave's answer for Core is the former.