{"rules_version":"2026-10-18.1","product":"toolcard","about":"Four per-tool checks follow practitioner notes. Two per-tool checks follow the MCP schema reference. Three cross-tool checks run on a tools/list result: duplicate names follow the MCP tools page, and the overlap and tool-count checks are Toolcard comparisons. The character cutoff, the property cutoff, the tool-count cutoff, and the overlap cutoff are Toolcard numbers. An empty findings list means these checks did not fire. It does not mean the tool is good. A finding with an answer page includes resource, a toolcard://answers URI to pass to resources/read. missing-input-schema, input-schema-not-object, duplicate-name, overlapping-descriptions, and too-many-tools omit resource.","verbs":["get","list","create","update","delete","set"],"cutoffs":{"thin_description_chars":40,"wide_input_properties":8,"too_many_tools":20,"max_tools_accepted":64,"overlap_min_tokens":4,"overlap_share":"4/5"},"checks":[{"id":"endpoint-shaped-name","kind":"heuristic","source":{"url":"https://x.com/arpit_bhayani/status/2092973180306833697","author":"@arpit_bhayani","date":"2026-08-27","note":"Map an MCP tool to a capability, not to one REST endpoint"},"resource":"toolcard://answers/mcp-tools-mapped-1-to-1-onto-a-rest-api"},{"id":"thin-description","kind":"heuristic","source":{"url":"https://x.com/waldekm/status/2109907029963780339","author":"@waldekm","date":"2026-10-13","note":"Write the tool name and description in the words developers use"},"resource":"toolcard://answers/mcp-server-loads-but-the-agent-never-calls-it"},{"id":"description-echoes-name","kind":"heuristic","source":{"url":"https://x.com/waldekm/status/2109907029963780339","author":"@waldekm","date":"2026-10-13","note":"Write the tool name and description in the words developers use"},"resource":"toolcard://answers/mcp-server-loads-but-the-agent-never-calls-it"},{"id":"missing-input-schema","kind":"spec","source":{"url":"https://modelcontextprotocol.io/specification/2025-06-18/schema","author":"Model Context Protocol","date":"2025-06-18","note":"Tool.inputSchema is listed as a required object schema"}},{"id":"input-schema-not-object","kind":"spec","source":{"url":"https://modelcontextprotocol.io/specification/2025-06-18/schema","author":"Model Context Protocol","date":"2025-06-18","note":"Tool.inputSchema is listed as a required object schema"}},{"id":"wide-input","kind":"heuristic","source":{"url":"https://x.com/AvinashDalvi_/status/2110042506901786873","author":"@AvinashDalvi_","date":"2026-10-13","note":"Translating an API for an agent means choosing which parameters to expose"},"resource":"toolcard://answers/picking-the-right-subset-of-parameters"},{"id":"duplicate-name","kind":"spec","source":{"url":"https://modelcontextprotocol.io/specification/2025-06-18/server/tools","author":"Model Context Protocol","date":"2025-06-18","note":"Each tool is uniquely identified by a name"}},{"id":"overlapping-descriptions","kind":"heuristic","source":{"url":"https://agentghostedme.com/v1/rules","author":"Toolcard","date":"2026-10-18","note":"Two descriptions that share most of their words are hard for an agent to tell apart"}},{"id":"too-many-tools","kind":"heuristic","source":{"url":"https://x.com/arpit_bhayani/status/2092973180306833697","author":"@arpit_bhayani","date":"2026-08-27","note":"Map an MCP tool to a capability, not to one REST endpoint"}}],"storage":"POST /v1/check and POST /v1/check-server store nothing. POST /v1/outcomes stores the tool name, the SHA-256 of the description if sent, the result, an optional client label, an optional report id, and the time. Raw descriptions and schemas are not stored. The public summary does not list tool names."}