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.
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.