Fix guides · check schema.untyped

Give every tool parameter a type

Each property needs type, enum, anyOf/oneOf or $ref.

269 of 15,360 reachable MCP servers (1.8%) have this issue today.

Why it matters

Without a type the model guesses: strings for numbers, objects for arrays, ISO dates as free text. Typed parameters are the cheapest way to get correct arguments on the first call.

Before

"properties": { "limit": {}, "since": { "description": "start date" } }

After

"properties": { "limit": { "type": "integer", "minimum": 1, "maximum": 100 }, "since": { "type": "string", "format": "date", "description": "ISO 8601 date, e.g. 2026-10-17" } }

TypeScript SDK

inputSchema: { limit: z.number().int().min(1).max(100), since: z.string().date().describe("ISO 8601 date, e.g. 2026-10-17") }

Python SDK

def list_items(limit: Annotated[int, Field(ge=1, le=100)] = 20, since: Annotated[date | None, Field(description="ISO 8601 date")] = None): ...

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