Fix guides · check compat.output_schema
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.
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.
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 }; });class Weather(BaseModel):
temp_c: float
conditions: str
@mcp.tool()
def get_weather(city: str) -> Weather: ... # FastMCP derives the outputSchema from the return type
Paste your endpoint at /check, or run it in CI:
pipx run glimind check https://your-server.example.com/mcp --min-grade B