Fix guides · check compat.output_schema

Declare an outputSchema for structured tool results

Since the 2025-06-18 spec, tools can declare an outputSchema and return structuredContent that clients validate.

10,457 of 15,360 reachable MCP servers (68.1%) have this issue today.

Why it matters

With an output schema the agent knows the shape of the result before calling, can chain tools without parsing prose, and clients can validate results. Only about a third of servers declare one today.

TypeScript SDK

server.registerTool("get_weather", { description: "…", inputSchema: { city: z.string() }, outputSchema: { tempC: z.number(), conditions: z.string() } },
  async ({ city }) => { const r = await lookup(city); return { content: [{ type: "text", text: JSON.stringify(r) }], structuredContent: r }; });

Python SDK

class Weather(BaseModel):
    temp_c: float
    conditions: str

@mcp.tool()
def get_weather(city: str) -> Weather: ...   # FastMCP derives the outputSchema from the return type

Check your server

Paste your endpoint at /check, or run it in CI:

pipx run glimind check https://your-server.example.com/mcp --min-grade B