Skip to content

ADR 0003 — JSON Schema as the single contract

Status: accepted · 2026-11-07

Decision

Method inputs are Rust types deriving JsonSchema (JSON Schema 2020-12) with deny_unknown_fields and documented fields. The registry exposes catalogue, schemas and a run(method, json) entry point. Python helpers, CLI, MCP tools and LLM tool definitions are all derived from it.

Consequences

  • Tool definitions never drift from the implementation.
  • Field docs written once appear in IDEs, CLI, MCP clients and LLM prompts. − Schema changes are API changes and follow semantic versioning.