Skip to content

ADR 0003 — Agents are the primary interface; the SDK is tool-shaped

Status: Accepted

Context

Governance questions are conversational by nature — "which high-risk models changed this week and haven't been validated?" The cheapest way to answer them is to let an agent traverse the inventory directly. Most libraries treat an agent/MCP layer as an afterthought wrapped around a human-shaped API, which produces awkward, chatty tools.

Decision

Design the API for the agent first. The SDK is tool-shaped: each capability is one consolidated verb — discover, record, investigate, query, trace, changelog, tag — and the same verbs are exposed identically over MCP and REST. Tools follow Anthropic's tool-writing guidance: few, broad, orthogonal, with agent-readable descriptions and error messages that name the next action.

Consequences

Positive

  • One mental model across MCP, REST, SDK, and CLI; they can't drift because they share the tool functions.
  • The consolidated surface is easier for a human to learn too — designing for the agent made the SDK cleaner as a side effect.
  • Errors are actionable (they suggest the next call) rather than raising into the agent.

Negative (accepted)

  • Broad verbs do more per call, which fits fine-grained REST conventions less neatly (no resource-per-endpoint sprawl).
  • A small, opinionated verb set means some niche operations live only in the SDK.

Alternatives considered

  • Human-first SDK with a thin MCP wrapper (rejected): yields chatty, leaky tools and two surfaces that drift.
  • Granular REST endpoints mirrored to many tools (rejected): overflows an agent's working memory and multiplies the maintenance surface.

See Agents (MCP).