What is Structured Tool Output?
Structured tool output is the typed result an MCP tool returns as a JSON object in the structuredContent field of a tools/call response, optionally validated against a JSON Schema the tool declares in its outputSchema field.
WHY IT MATTERS
An MCP tool result can carry unstructured content — a content array of text, image, audio, resource links, or embedded resources — and structured content, a JSON object in structuredContent. For backwards compatibility, the spec says a tool returning structured content SHOULD also include the serialised JSON in a text content block, so older clients still see something usable.
The companion field is outputSchema on the tool definition. If a tool declares one, servers MUST return structured results that conform to it, and clients SHOULD validate results against it. That contract is what makes structured output more than a formatting nicety:
- Chaining — downstream tools, scripts, and agents can consume named, typed fields instead of parsing prose, which makes multi-step tool call pipelines reliable.
- Validation — clients can reject malformed or unexpected results before they reach the model, catching server bugs and some classes of tampering.
- Integration — typed results map cleanly onto programming-language types and documentation.
Typed results also give intermediaries a defined surface to inspect: when a result has a schema, response filtering can target specific fields (strip a credentials property, truncate a rows array) rather than regex-matching free text.
HOW POLICYLAYER USES THIS
PolicyLayer's gateway sees every tools/call result on its way back to the client. Where tools declare output schemas, results have predictable shape, which makes logging, auditing, and response-level policy more precise. The tool catalogue at policylayer.com/tools records declared schemas alongside each tool's risk classification.