Echolot
MCP Servers

Tools and quality

See what a server's tools cost a model on every turn, what a model would stumble over, and which tool it would pick.

A model never sees an MCP server. It sees the server's tool list, sent with every turn of a conversation and turned into each provider's own format. The How a model sees this server card on the MCP Servers page shows that list as a model gets it: what it costs, which tools cost the most, and the names, descriptions and schemas a model would get wrong. Use it while you build a server, or before you hand someone else's server to an agent.

The card appears under Tools once a check has listed at least one tool.

The How a model sees this server card for Alpenglow MCP: token counts for Anthropic, OpenAI and Google Gemini, the largest tools, and the line Nothing a model would stumble over

What the tools cost

The top of the card gives the tokens the tool list takes with Anthropic, OpenAI and Google Gemini, on every turn, counted in each provider's format. Below it, a line says how many tools that is and what share of a 200k context the largest of the three takes.

The counts are estimates, within about 15% of what the providers count. They're good for comparing servers, and for seeing what a change to a description or schema does.

Largest tools lists the five tools that cost the most, with their tokens. A server with one tool skips this list.

What a model would stumble over

Next comes the list of findings, worst first. The heading counts them (for example 1 problem, 2 warnings), or reads Nothing a model would stumble over. Each finding names the tool, says what is wrong and suggests a fix.

KindMeaning
ProblemA provider refuses the tool, or a model can only guess how to use it. Fix these first.
WarningIt works, but a model is likely to pick the wrong tool or fill in the arguments badly.
NoteWorth knowing, such as a constraint one provider drops.

What Echolot checks in each tool:

FindingKindWhat to do
The name is not one a provider acceptsProblemUse letters, digits, _ and -, up to 64 characters. Anthropic and OpenAI refuse the rest.
No descriptionProblemSay what the tool does, what it needs and what it returns.
The description says little more than the nameWarningSay what the tool needs and returns, and when to use it rather than a similar tool.
A long description (over 1,500 characters)NoteIt's read again on every turn.
The input schema is not an objectProblemEvery provider wants {"type": "object", "properties": …}. A tool without parameters says "properties": {}.
The schema has no propertiesNoteSay "properties": {} for no parameters, or describe the ones there are.
Takes any objectWarningDescribe the properties the tool reads, so the model doesn't invent arguments.
Requires a parameter the properties don't defineProblemDefine the property, or take it out of required.
Parameters without a typeProblemGive each a type (or an enum). A model guesses otherwise, and OpenAI's strict mode refuses it.
Free-form objects (no properties)WarningDescribe the keys, or say in the description what goes in.
Parameters without a descriptionWarningOne line each: what it is and an example value.
Uses $refWarningGemini drops it, so the parameter accepts anything there; OpenAI's strict mode needs it inlined.
Keywords Gemini drops, such as oneOf, pattern or additionalPropertiesNoteThe constraint is lost with Gemini.
A big schema (over about 1,000 tokens)WarningSplit the tool, or move rarely used options out of the schema.
More than 25 parametersWarningSplit the tool, or group the options.
Nested more than 5 levels deepWarningFlatten the arguments; models fill deep structures badly.
An enum with more than 40 valuesNoteEvery value is read on every turn.

And in the list as a whole:

FindingKindWhat to do
Names a model would confuse (the same once case, _ and - are ignored)ProblemName the tools after what sets them apart.
Two tools with the same descriptionProblemSay what sets them apart; a model picks between tools by their descriptions.
Two descriptions that say much the same thing (60% of their words or more in common)WarningSay in each when to use it rather than the other.
More than 128 toolsProblemOpenAI refuses more than 128. Offer fewer, or split the server.
More than 40 toolsWarningA model picks worse among many. Offer fewer at a time, or split the server by topic.
The list costs more than 20,000 tokens a turnWarningShorten descriptions and schemas, or offer fewer tools.

After you change the server, click Check again: the card follows the new tool list.

The list as a provider receives it

Open The list as a provider receives it at the bottom of the card, and choose Anthropic, OpenAI or Google Gemini. You see the tool list as that provider's API gets it, as JSON. Copy copies it. This is where you see, for example, what Gemini's format leaves out of a schema.

Try with a model

The Try with a model card below asks a real model which tool it would call. Type what someone might ask an agent to do with this server, such as Is the two-person tent in stock?, and click Try.

The model sees the server's tools and answers with the calls it would make. Nothing is called. For each call you see the tool and its arguments; arguments that don't fit the tool's schema are marked, with what's wrong. That is how unclear names and descriptions show themselves. Below, Echolot shows the tokens used and, for models it knows the price of, about what the turn cost.

The card uses the model chosen in Settings › Assistant. Without one, it says to choose a model provider there. The first time you try, Echolot asks whether it may send the prompt and the server's tools to that provider; on-device models and servers on your Mac don't ask.

From the command line

echolot mcp check --quality prints the same report in a terminal, and --strict makes it fail with exit code 1 when there is a problem, so a server's CI can keep its tool list in shape. --as anthropic, --as openai or --as gemini prints only the list as that provider receives it. See echolot mcp.

echolot mcp check --url https://demo.echolot.dev/mcp --quality

On this page