Fix guides · check schema.root

Give every MCP tool an object inputSchema

Tools need an inputSchema whose root is {"type":"object"}, even when they take no arguments.

1 of 15,415 reachable MCP servers (0%) have this issue today.

Why it matters

The MCP spec requires tool input schemas to be JSON Schema objects. Several clients validate this before showing the tool to the model; a missing schema or a root of type string/array gets the tool dropped, or makes the model send arguments the server cannot parse.

Before

{ "name": "get_status" }
{ "name": "search", "inputSchema": { "type": "string" } }

After

{ "name": "get_status", "inputSchema": { "type": "object", "properties": {} } }
{ "name": "search", "inputSchema": { "type": "object", "properties": { "query": { "type": "string" } }, "required": ["query"] } }

TypeScript SDK

server.registerTool("get_status", { description: "Service status: uptime, version, queue depth.", inputSchema: {} }, handler);

Python SDK

@mcp.tool()
def get_status() -> dict:
    """Service status: uptime, version, queue depth."""

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

Related

Feedback
Help us improve