Feature Matrix

57 capabilities
across every official SDK

What each official SDK actually exposes -- not what the marketing pages claim. Every cell is checked against the pinned source of that provider's own SDK, and clicking one shows you the exact lines it was verified against.

281
cited sources
213
inline snippets
5
API ≠ SDK gaps
0
unverified cells

How this was built

  • Nothing is asserted from memory. Every “supported” claim cites a file and line in that provider's own SDK, at a pinned version. A build check fails if a citation stops resolving.
  • Accepted is not honoured. Where a parameter is only meaningful if it changes behaviour, we tested it rather than trusting a 200. top_k is accepted by three providers and actually applied by one.
  • Two different questions. A capability can exist on a provider's API while its official SDK doesn't expose it — xAI ships a voice API its Python SDK has no module for. Those cells are marked API.
  • Gaps are shown, not hidden. Rows where we're weaker than an official SDK are in here too — filter by Our gaps.
Showing 57 of 57 features · click any cell for the evidence
SupportedPartialBeta / gatedNot supportedNot applicableAPIprovider has it, SDK doesn't expose it
FeatureORXA llm-sdkAnthropicOpenAIGooglexAI
Core completion
The shape of a single request/response: what you send, how the turn is framed, and what comes back.
Single-prompt completion
core.prompt · example
System prompt
core.system · example
Multi-turn conversation
core.multi-turn · example
Output length cap
core.max-tokens
Sampling parameters
The knobs that shape token selection. The interesting part is not who has them, but who SILENTLY IGNORES them.
Temperature / top-p
sampling.temperature
Top-k
sampling.top-k
Presence / frequency penalties
sampling.penalties
Stop sequences
sampling.stop
Deterministic seed
sampling.seed
Streaming
Incremental delivery of a turn. Every provider streams text; they diverge sharply on what ELSE is streamable and how events are shaped.
Streaming text
streaming.text · example
Rich stream events
streaming.events
Tools / function calling
Letting the model call your code. Universally supported, and universally spelled differently.
Function tool definition
tools.define · example
Tool choice control
tools.choice · example
Parallel tool calls
tools.parallel · example
Automatic tool-execution loop
tools.loop · example
Structured output
Getting a typed object instead of prose. The gap here is less about support and more about what happens when the model gets it wrong.
JSON-Schema constrained output
structured.schema · example
Typed parse + failure handling
structured.parse · example
Vision & documents
Non-text INPUT. Everyone takes images; they diverge on PDFs, on whether a URL can be passed directly, and on how big an input may be.
Image input
vision.image · example
PDF / document input
vision.document · example
Audio
Speech in and speech out. The widest capability spread of any category — one provider has none of it.
Speech-to-text
audio.stt · example
Text-to-speech
audio.tts · example
Image generation
Producing images rather than reading them. Note how differently the three providers model it: a dedicated endpoint, a normal completion, or both.
Generate an image
imagegen.generate · example
Edit an existing image
imagegen.edit
Files API
Uploading content once and referencing it by id. Same idea everywhere, but the lifetime and the beta status differ sharply.
Upload & reference by id
files.upload · example
Batch / async jobs
Submit many requests for offline processing at a discount. Universally ~50% cheaper, and universally shaped differently.
Batch submission & polling
batch.submit · example
Prompt caching
Reusing computation across requests. The single most divergent category in the matrix: explicit markers, an opaque key, or a first-class resource.
Prompt / context caching
caching.prompt · example
Server-side conversation state
Letting the provider hold the transcript so each turn sends only what is new.
Server-held conversation state
state.previous-response · example
Hosted (provider-run) tools
Tools the PROVIDER executes server-side — you never run any code. The least converged area in the matrix: OpenAI, Google and xAI all offer hosted retrieval over your own corpus (vector stores / File Search Stores / Collections); Anthropic offers none. Tool NAMES and shapes differ everywhere.
Web search
hosted-tools.web-search · example
Code execution
hosted-tools.code-execution · example
Hosted retrieval / file search
hosted-tools.file-search
MCP (Model Context Protocol)
Connecting external tool servers. Two postures: the provider connects (hosted), or your client connects (local). Anthropic and Google both integrate the external `mcp` package for the local case; OpenAI ships hosted MCP only.
MCP client (you connect)
mcp.client · example
Hosted MCP (the provider connects)
mcp.hosted
Realtime / live
Bidirectional low-latency sessions over a socket, usually voice. Only two providers have it, and they share almost no vocabulary.
Realtime session
realtime.session · example
Embeddings
Vector representations. Notable mainly for who does NOT have them.
Text embeddings
embeddings.embed · example
Agent loop & orchestration
Multi-step autonomous runs. IMPORTANT: for OpenAI and Google these live in a SEPARATE package (@openai/agents, google-adk) — not the SDK you install to call the model. Cells cite whichever package actually provides it.
Multi-step agent loop
agent.loop · example
Guardrails
agent.guardrails
Human-in-the-loop approval
agent.approval
Context management
Keeping a long conversation inside the window: measuring it, and compacting it when it grows.
Automatic context compaction
context.compaction
Usage, tokens & cost
Knowing what a call consumed and what it cost. Every provider reports tokens; TWO turn them into money by opposite routes - xAI’s API returns the ACTUAL billed cost, while we price a bundled catalog locally (and can therefore also estimate BEFORE sending).
Token usage reporting
usage.tokens
Cost calculation
usage.cost · example
Observability
Seeing what happened: traces, spans, metrics and events.
Tracing / spans
observability.tracing
Networking & reliability
What happens between your process and the API: retries, timeouts, and whether anything protects you from your own concurrency.
Retries & timeouts
networking.retry
Client-side rate limiting & queueing
networking.queue
Errors & typing
How failures are surfaced, and whether they mean the same thing across providers.
Typed error hierarchy
errors.typed
Auth & configuration
Keys, endpoints and per-request overrides.
API key & endpoint configuration
auth.keys
Video generation
Long-running video jobs. All three that offer it are async (submit → poll → download), and all three shape it differently.
Generate video
videogen.generate
Moderation & safety
Screening content. One provider has a dedicated classifier, one has request-level safety controls, one has neither.
Content moderation
moderation.screen
Model catalog & discovery
Finding out which models exist, what they cost, and what they can do. Every SDK lists ids; none of them tells you anything else.
List available models
catalog.list · example
Pricing & capability metadata
catalog.capabilities
Routing & fallback
Sending a call somewhere else when the first choice fails or costs too much.
Fallback to another model
routing.fallback · example
Runtime & environment
Where the library can actually run, and what it drags in.
Browser support
runtime.browser
Runtime dependencies
runtime.dependencies
Reasoning / thinking
Controls over a model's internal reasoning: whether it runs, how hard, how much comes back, and whether it persists across turns.
Enable reasoning
reasoning.enable · example
Reasoning effort
reasoning.effort · example
Reasoning visibility
reasoning.visibility · example
Cross-turn reasoning persistence
reasoning.context
Reasoning execution mode
reasoning.mode