OpenAI and Anthropic Tool Schemas Share a Foundation — They Just Wrap It Differently
Published 2026-09-16
More similar than they look at first glance
Developers integrating with both OpenAI's function calling and Anthropic's tool use often assume the two are unrelated formats requiring completely separate schema-writing work. In reality, the parameter definitions inside both — types, property descriptions, which fields are required — follow the same JSON Schema conventions. What differs is the envelope around that shared core.
OpenAI's envelope
OpenAI wraps the schema as {"type": "function", "function": {"name": ..., "description": ..., "parameters": {...}}}, with the JSON Schema object living under the parameters key.
Anthropic's envelope
Anthropic's tool-use format is flatter: {"name": ..., "description": ..., "input_schema": {...}} — no nested "function" wrapper, and the JSON Schema object lives under input_schema instead of parameters. It's a small naming difference, but a schema written for one API and dropped unmodified into the other's request will fail, since the model-calling code on each side looks for its own specific key names.
Why this matters for multi-provider code
Anyone building an application that can call either OpenAI or Anthropic models with the same underlying tools ends up needing to maintain both envelope shapes anyway — there's no way around the differing field names at the API level. What you can avoid is manually retyping the parameter list twice and risking the two definitions drifting out of sync with each other.
Define once, get both
Our Function Calling / Tool Schema Converter lets you describe a function's name, description and parameters exactly once, then generates both providers' exact JSON shapes side by side — so the underlying parameter definitions can never drift apart between the two.