Article

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.

Ready to try it yourself?
Open the Function Calling / Tool Schema Converter →