MCP tool schemas now support the JSON Schema 2020-12 dialect, while input schemas still have to use an object.
2
Conditional keywords and references let tool authors describe constraints directly instead of putting them in prose.
3
Support varies across models, providers, hosts, and API endpoints, so authors need to test the actual path their schemas take.
Summary
Ola Hungerford explains why MCP moved from a small JSON Schema subset to JSON Schema 2020-12 for tool schemas. The earlier limits caused SDKs and servers to rewrite schemas, wrap output values in objects, and add validation outside the protocol. The updated specification keeps the object requirement for input schemas but allows the rest of the dialect, including conditional keywords and references. Hungerford shows how this can express rules that tools such as GitHub's project read and actions run trigger previously described in prose. Schema validation can catch invalid inputs before an LLM call, and input schemas can be turned into callable signatures for code-based MCP use. Her tests found generally good support, but results differed across models, providers, hosts, and API endpoints. She is careful about treating the test data as a snapshot rather than a ranking. The talk also covers migration work for clients and servers and the updated MCP Inspector.
The old schema subset forced SDKs and servers to rewrite tool definitions
Hungerford describes recurring problems with fast MCP and other schema-producing tools. Pydantic and similar systems generated schemas containing features MCP did not support, so wrappers were added to translate them for different clients. Output schemas also had to be wrapped in an object and use a limited subset. This made ordinary results, such as an array returned by a weather tool, awkward to represent. The problem affected both server authors trying to publish tools and clients trying to consume them.
MCP now adopts the JSON Schema 2020-12 dialect for most schema features
SEP 2106 changed the specification so input schemas still use an object, but can otherwise use the JSON Schema 2020-12 dialect. Hungerford mentions conditional keywords, references, and other features that were previously unavailable. Output schemas no longer have the same restrictions. She presents this as alignment with an existing standard rather than the creation of another MCP-specific schema language. The proposal began as a June 2025 pull request from Adam McBride and was later converted into the SEP process before acceptance.
Schemas can express rules that tool descriptions previously left to prose
Hungerford uses GitHub MCP tools to show the difference. A project read description may say in capital letters that a value must always be provided or that fields are mutually exclusive, but those statements are not schema constraints. An actions run trigger tool has conditions that depend on which method is selected and which parameters are required. With keywords such as allOf, those alternatives and requirements can be written into the schema itself, allowing the model and validation software to see the structure directly.
Validation can reject bad tool inputs before an LLM round trip
The benefit is not limited to helping a model populate parameters. Hungerford argues that a client or server can validate whether a schema or tool input is correct before asking an LLM to interpret it. That avoids spending tokens on a round trip to discover that the arguments do not satisfy the tool's requirements. She also says an input schema can become a callable signature and be converted into executable code, which makes the updated schemas more compatible with code mode and other programmatic ways to use MCP.
JSON Schema support depends on the complete model-serving path
Hungerford tested several models, providers, and hosts because the original MCP subset reflected uncertainty about what LLM APIs could accept. Her results showed generally good support in the sample, although some keywords produced failures. A first-party endpoint for GLM 5.2 was among the cases that refused the schema or produced invalid arguments. She also found differences between API endpoints: keywords refused by a legacy completions endpoint worked through a responses endpoint, independently of the model.
A schema can change shape before it reaches the model
The schema sent to a model may be re-rendered by the chat template and tokenization process. Hungerford says the result can look very different from the original JSON Schema. This helps explain why the same model can behave differently depending on the host or provider serving it. Her experiments are therefore an illustrative snapshot, not a ranking of the best models or providers. Open-weight models add more possible ways to call the same model, and those integrations continue to change.
MCP authors need to inspect their SDK and protocol integration
Hungerford recommends more than mechanically translating old tool definitions into the new format. Server and client authors should inspect the SDK they use and trace where a particular tool stops behaving as expected. She says further interactive material will examine what SDKs do with structured content and how inputs are used in real examples. She also points attendees to the official documentation and contributor Discord for community resources.
The updated MCP Inspector supports both legacy and modern protocol versions
Near the end, Hungerford announces a new MCP Inspector that supports legacy and modern protocol eras. She says it has full support for the latest protocol and its different features, work that had been harder before. She credits Bob and Cliff with building most of the Inspector. In the question period, she says observability standardization is still at the proposal stage, with interest in instrumentation for tool calls, server and agent outputs, and classifier outcomes.
"You don't need to make that round trip, you don't need to spend tokens in prayers trying to understand, 'Okay, is this actually is this tool going to populate things the way I want?'"07:18
Who should watch
You maintain an MCP server or SDK and need to update tool schemas for the JSON Schema 2020-12 change.
Your tools rely on conditional parameters, mutually exclusive fields, or structured outputs that the old MCP subset handled poorly.
You are debugging inconsistent tool calls across models, providers, hosts, or API endpoints.