MCP-SCH-007
Tool, prompt, and resource names are header-safe ASCII
“Tool and prompt names are only SHOULD-constrained to header-safe characters, so a name outside the safe set is carried as a Base64 sentinel.” — spec anchor
How to fix this
Keep tool, prompt and resource names within header-safe ASCII. A name outside that set still works, but has to travel as a Base64 sentinel in `Mcp-Name`, which every client then has to decode.
Example: failing and passing
{ "name": "get_météo", "inputSchema": { "type": "object" } }{ "name": "get_meteo", "inputSchema": { "type": "object" } }How the validator checks this
Probe P2.1, against a streamable-http server on the modern protocol. What it reports:
- pass
- All tool and prompt names are header-safe ASCII
- warn
- Tool or prompt name(s) outside the header-safe set, so they must travel as a Base64 sentinel in Mcp-Name
Quoted from the probe that runs this check, so it cannot drift from what the validator actually reports.
This rule is checked deterministically: a fail here is a certain violation, not an inference.
Checked in the same request as MCP-HDR-008, MCP-HDR-009, MCP-RES-003, MCP-RES-006, MCP-RES-007, MCP-ERR-003, MCP-ERR-004, MCP-ERR-005, MCP-ERR-008, MCP-CAC-001, MCP-CAC-002, MCP-CAC-003, MCP-CAC-004, MCP-CAC-005, MCP-SCH-001, MCP-SCH-002, MCP-SCH-003, MCP-SCH-004, MCP-SCH-005, MCP-SCH-006, MCP-SEC-004, MCP-SEC-005, MCP-SEC-006, MCP-DEP-005.
Check your own server against MCP-SCH-007
Probe P2.1 checks MCP-SCH-007 in the same request as 24 other rules, so one run shows your server's result for this rule next to the rest. Validate a server or read how the validator works.
Background on this topic: the Mcp-Method header and x-mcp-header explained.
Other Tool/prompt schema and x-mcp-header rules
- MCP-SCH-001x-mcp-header is non-empty and matches RFC 9110 token syntax
- MCP-SCH-002x-mcp-header contains no control characters, CR, or LF
- MCP-SCH-003x-mcp-header values are case-insensitively unique per inputSchema
- MCP-SCH-004x-mcp-header only on string/integer/boolean — never number
- MCP-SCH-005x-mcp-header property is statically reachable via properties only
- MCP-SCH-006inputSchema/outputSchema validate against the declared or default 2020-12 dialect