MCP-01
Remote MCP on the current spec
CorePartly measured
A remote Streamable HTTP endpoint on the current protocol version, where initialize works.
- Why
- Hosted agents connect over Streamable HTTP. A local-only or old server leaves them out.
- To fix
- Run a remote MCP endpoint on Streamable HTTP and the current protocol version.
MCP-02
The core is reachable over MCP
CorePartly measured
Each core capability has a tool.
- Why
- An agent on MCP can only do what there is a tool for.
- To fix
- Add a tool for each core capability.
MCP-03
Tool names that sort themselves
RecommendedMeasured in every drive
Names valid (1 to 128 characters of A-Z, a-z, 0-9, _, - and .), unique, in one consistent pattern (verb_noun or service_resource_verb).
- Why
- Clear names in one pattern help a model find the right tool in a long list.
- To fix
- Use valid, unique names in one pattern, such as verb_noun.
- How we grade it
- Each name is 1 to 128 of A-Z, a-z, 0-9, _, - and ., used once, and all names follow one pattern such as snake_case.
MCP-04
Descriptions that say when to use the tool
RecommendedMeasured in every drive
Each description states its purpose, when to use it and when not, key parameters and limits, at a sensible length.
- Why
- The model picks a tool from its description alone.
- To fix
- Say in each description what the tool does, when to use it and when not, its key parameters and its limits.
- How we grade it
- Each description is scored on four things: 40 to 1,500 characters, says what the tool does, says when to use it, names a parameter or limit. A tool meets it with three of the four.
MCP-05
Agents pick the right tool
RecommendedNot measured yet
Different models choose the right tool for plain-language tasks.
- Why
- A tool picked wrongly is a task done wrongly.
- To fix
- Test plain-language tasks on several models and rewrite the descriptions they get wrong.
MCP-06
Typed, tight input schemas
RecommendedMeasured in every drive
Every parameter typed and described, required ones listed, enums where values are fixed, and no-argument tools reject extra fields.
- Why
- Tight schemas stop bad calls before they run.
- To fix
- Type and describe every parameter, list the required ones, use enums and reject extra fields.
- How we grade it
- Every parameter has a type and a description, required ones are listed, fixed values are an enum, and a tool without arguments refuses extra fields.
MCP-07
Truthful annotations
RecommendedPartly measured
readOnlyHint, destructiveHint and idempotentHint set. A tool marked read-only changes nothing.
- Why
- Clients use these hints to decide what runs without asking.
- To fix
- Set readOnlyHint, destructiveHint and idempotentHint on every tool, and keep them true.
- How we grade it
- Every tool sets readOnlyHint, and a tool that changes data also sets destructiveHint and idempotentHint. Whether the hints are true isn't checked yet.
MCP-08
Structured results
RecommendedPartly measured
Data tools declare outputSchema and return structuredContent that matches it, with the same as text.
- Why
- Structured results let an agent use the data without parsing text.
- To fix
- Declare outputSchema on data tools and return matching structuredContent, with the same in text.
- How we grade it
- Each result the drive got back is structured (structuredContent that fits the tool's outputSchema), JSON text or plain prose. Every tool structured passes, more than half prose fails, anything between is partly. Whether the text repeats the same data isn't checked yet.
MCP-09
Results sized for a context window
RecommendedPartly measured
List and search tools take limit and cursor, and truncate with a hint on what to narrow. Tool results stay small.
- Why
- One huge result can fill an agent's whole context.
- To fix
- Give list and search tools a limit and a cursor, and truncate with a hint on how to narrow.
- How we grade it
- Each tool's biggest result in tokens (characters divided by 4): under 5,000 passes, 5,000 to 25,000 is partly, over 25,000 fails. We note whether a big result pages or says it was cut, but don't grade it yet.
MCP-10
Tool errors come back as results
CorePartly measured
Bad input and business errors return isError with what to fix. An unknown tool is a protocol error. One tool needing auth does not break the connection.
- Why
- An agent reads an error result and tries again. A broken connection ends its session.
- To fix
- Return bad input and business errors as isError results that say what to fix.
MCP-11
A tool list that fits
AdvancedMeasured in every drive
Tool definitions cost few tokens. Large servers load toolsets on demand.
- Why
- Every tool definition takes context before any work starts.
- To fix
- Keep tool definitions short, and load large toolsets on demand.
- How we grade it
- The whole tool list in tokens (characters divided by 4): under 10,000 passes, 10,000 to 30,000 is partly, over 30,000 fails.