Project 02 · runs in your browser

Tool Credit Score

Agents skip tools for the same reasons a new engineer would: the name is vague, the description does not say what comes back, half the parameters have no type. This scores a tool spec on those five things and fixes the mechanical ones. No model is involved, so the same spec always gets the same score.

MCP TypeScript Astro

source ↗ original Next.js app ↗

⌘↵ to score

How to use it

Paste a spec
A single tool object, an array of them, a { "tools": [...] } wrapper, or an OpenAI { "functions": [...] } block. Anything with a name field counts as a tool.
Read the score
Each tool gets 0 to 100 and a letter grade, broken down by the five weighted categories. Every deduction is listed with the fix that would earn it back.
Auto-fix
Applies the mechanical fixes: snake_case names, verb prefixes, generated parameter descriptions and examples. It re-scores so you can see what the fix bought, and what it could not.
Copy the result
Copies a canonical { "tools": [...] } object you can paste back into your server.

The rubric

Category Weight What earns the points
Description 25% Present, 10+ words, starts with an action verb, says what comes back and what can fail.
Parameters 25% An object schema, every parameter typed and described, an explicit required array.
Best practices 20% Standard MCP annotation hints, additionalProperties set, return and error behaviour documented.
Naming 15% snake_case, starts with a verb, under 64 characters.
Examples 15% At least one worked example object.

Description and parameters carry half the score between them because those are the two fields an agent actually reads when it decides whether a tool applies. The weights are a judgement call, not a standard, and they are visible in the source so you can disagree with them.

Limitations

  • It scores the spec, not the tool. A perfectly documented tool that returns garbage still scores 100.
  • The rubric is a heuristic. The verb list behind the naming check is finite, so an unusual but perfectly good verb gets marked down. Read the issues, not just the number.
  • Auto-fix is mechanical. It can rename, add types, and generate placeholder descriptions and examples. A generated description is a scaffold to edit, not a finished one, and the score will rise more than the spec actually improved.
  • It does not call an MCP server or validate against a live one. Runtime discovery was on the original's roadmap and is not here.
  • No model is in the loop. The original had an optional GPT polish step behind your own key; that is deliberately not ported, because this page cannot ask visitors for a key.

Where it came from

It came out of the four-axis agent eval work: across runs, the failure that kept repeating was not the model choosing badly, it was the model declining to call a tool whose spec did not tell it enough to be confident. That is a fixable, deterministic problem, so it got a linter. The scorer here is the original's code, ported with its tests onto this site, minus the LLM polish step, and with one bug fixed on the way: issue ids were generated from a counter that reset per tool, so scoring a batch produced the same id several times over.

esc