The rules
Names
- MCP: 1 to 128 characters of letters, digits,
_,-and., unique within the server. - Claude (Anthropic API) does not allow dots:
^[a-zA-Z0-9_-]{1,128}$. The Claude connector directory asks for names of at most 64 characters. - Prefer verb-first, namespaced names such as
orders_searchoversearch.
Descriptions
- Every tool needs one. Anthropic recommends several sentences: what it does, when to use it and when not, and what each parameter means.
- Every parameter should have a description too.
Input schema
- The root must be
{"type": "object"}. A tool without parameters should still send an object schema. - Every name in
requiredmust exist inproperties. - For OpenAI strict mode:
additionalProperties: falseon every object and every property listed inrequired; avoidallOf,notandif/then/else. - Gemini accepts a subset of OpenAPI 3.0 schema; keywords such as
$ref,allOf,oneOfandadditionalPropertiesmay be rejected or ignored.
Annotations
- Without annotations, MCP clients must assume a tool is destructive and open-world.
- The Claude directory asks for a
titleand the applicablereadOnlyHintordestructiveHint. ChatGPT app submissions ask for explicitreadOnlyHint,destructiveHintandopenWorldHinton every tool.
Tool count
- Selection gets worse with many tools. OpenAI suggests staying under 20, Google 10 to 20, and Anthropic sees accuracy degrade past 30 to 50.
Hosting the server? Run the live URL through the MCP server checker.