Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/grinv/mal-mcp/tool-description-checknpx skills add Grinv/mal-mcp --skill tool-description-checkgit clone --depth 1 https://github.com/Grinv/mal-mcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/grinv/mal-mcp/tool-description-check)<a href="https://agentmods.dev/skills/grinv/mal-mcp/tool-description-check"><img src="https://agentmods.dev/badge/skills/grinv/mal-mcp/tool-description-check.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00074 | $0.03889 |
| Opus 5 | $0.00037 | $0.01945 |
| Sonnet 5 | $0.00015 | $0.00778 |
| Haiku 4.5 | $0.00007 | $0.00389 |
Grade A, and why
tool-description-check scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 270 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Tool descriptions: what to check before committing
Published research on this exact failure mode: Glama's TDQS methodology found 97% of 856 tools across 103 real MCP servers have a description defect — 56% don't clearly state what the tool does, 89% don't say when to use it. Separately, "From Docs to Descriptions" measured that strong descriptions get 260% more selection in competitive scenarios and lift task success ~6 points. Bad descriptions aren't a hypothetical risk; they're the median case. This server is scored on the same rubric at glama.ai/mcp/servers/Grinv/mal-mcp/score (re-analyzed on Glama's own schedule, not on push — treat this as a manual pre-commit check, not something to verify live after every edit).
| TDQS dimension | Weight | Question |
|---|---|---|
| Purpose Clarity | 25% | Does the description state what the tool does? |
| Usage Guidelines | 20% | Does it say when to use this tool vs. alternatives? |
| Behavioral Transparency | 20% | Does it disclose behavior beyond what annotations already provide? |
| Parameter Semantics | 15% | Does it add meaning beyond what the input schema provides? |
| Conciseness & Structure | 10% | Is it appropriately sized and front-loaded? |
| Contextual Completeness | 10% | Given the tool's complexity, is the description complete enough? |
Usage Guidelines and Behavioral Transparency carry the most weight after Purpose — double-check those two first on any new or edited tool.
Two rules that override everything below
- No unverified claims. Every behavioral statement in a description —
not just "the schema allows this input," which is self-evidently true,
but "here's what happens when you send it" — must be backed by one of:
- an existing
docs/api-references.md"verified live" entry, cited by reference instead of re-asserted from memory (e.g. the "no-match search doesn't return empty" note for the official-API fallback, or thenum_episodes_watched/num_watched_episodesread/write field-name mismatch — both already verified there); - a fresh live call against Tenrai/the official API made during this review, with the actual response observed;
- direct reading of the exact function implementing the behavior, when
it's deterministic code logic rather than an upstream API's quirk
(e.g.
#updateStatusinclients/mal.tssends only the fields passed in, confirmingupdate_my_anime_status's "fields you omit are left unchanged" claim).
- an existing
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 270 lines · 74 tokens per session scan A eca9a63dc365
tool-description-check is a skill published in the GitHub repository Grinv/mal-mcp (2 stars, last pushed 11d ago), licensed MIT. It adds 74 tokens to every session and 3,889 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
live-audit
Audit anilist-mcp-server — build/test/lint gate, live MCP tool edge-case sweep (input validation, not-found paths, mutations with capture/revert), source-level code review, and docs/metadata consistency. Use when asked to test/audit the published or just-fixed anilist-mcp-server package, hunt for bugs/edge cases, or…
prompt-check
Live-test every MCP Prompt in src/prompts.ts through the real MCP protocol (not a static read) across every argument combination. Use when a prompt is added or its argument-handling logic changes, or as part of a live-audit pass.
tool-description-check
Self-check a new or edited MCP tool description/field .describe() text before committing — verify every behavioral claim against live testing, check for contradictions with sibling tools, and score against Glama's Tool Definition Quality Score (TDQS) rubric. Use whenever a tool description or schema field description…
release
Cut a release of anilist-mcp-server — draft CHANGELOG entries, check docs/metadata consistency, then bump/tag/push. Use when asked to release, cut a version, or publish a new version of this package.
fixture-accuracy-check
Make sure a mocked-fetch test fixture mirrors AniList's real GraphQL response shape, not just whatever fields make the current code pass. Use before writing or changing a fixture in src/tests/.test.ts.
docs-consistency-check
Check README/manifest.json/server.json/CHANGELOG.md/AGENTS.md and docs/.md for drift against the actual registered tools and source. Use after adding, renaming, or removing a tool, or as part of a live-audit pass.