Skip to main content
Glama

mcptoon

Add 1,000 MCP tools locally β€” your token context never feels it.

mcptoon is a 155KB CLI that keeps MCP tool schemas out of your agent's context. Tool discovery drops 71,929 β†’ 581 tokens at 255 tools (βˆ’99.2%, measured); call results shrink another ~34% with --toon. One command per server, zero config, and every agent on your machine shares the same toolkit.

GitHub Stars PyPI CI Tests MCP Spec License AllMCPs

πŸ‘‰ δΈ­ζ–‡ Β· Developer docs Β· Issues

Benchmark: 255 tools, 71,929 β†’ 581 tokens

pip install mcptoon

# 30-second proof, on your machine β€” none of your servers, no API key:
mcptoon demo --quick

# Add any MCP server β€” one command:
mcptoon add everything --stdio npx -y @modelcontextprotocol/server-everything

# What your agent actually reads (names only β€” 581 tokens, not 71,929):
mcptoon manifest

Your tools stay yours. mcptoon bundles nothing β€” it's a remote control, not a runtime. The MCP servers you want, you install yourself, one command each (npm/pip/a URL). The one thing it does ship is a demonstration of itself: mcptoon demo-server is 11 tools written in the standard library, and they enter your agent's context only if you add that server deliberately. Delete mcptoon someday? Your MCP servers keep running on their own β€” not one goes missing.

Mcptoon is the native decoupling layer for MCP tools. It fixes the twin pain of MCP tool listings eating tokens and every AI agent re-configuring tools on its own. Zero config, out of the box: it auto-scans and unifies the MCP tools of every agent on this machine β€” Claude Code, Cursor, Codex, scripts, CI β€” shares tool instances globally, and slashes token overhead.


This isn't just us talking

Those numbers are ours, but "loading every tool schema into context is expensive" is not a claim only we make:

  • Anthropic: tool schemas flooding the context window is a real pain β€” one example drops from 150,000 tokens to 2,000 (a 98.7% saving)

  • Firecrawl benchmark: the same task cost 1,365 tokens via CLI vs 44,026 via MCP β€” 32Γ— (full schema loaded upfront)

  • Scalekit benchmark: CLI is 10–32Γ— cheaper and 100% reliable; MCP scores 72%

  • MCP-Zero (arXiv:2506.01056): on-demand tool retrieval achieves near-constant cost regardless of tool count

  • SEP-1576: an open MCP proposal to cut schema redundancy β€” the problem is acknowledged upstream

We're not the only ones who measured this. mcptoon is the one you can use today, covering every agent at once.


Related MCP server: typer-mcp

Up and running in 30 seconds

pip install mcptoon                          # pure stdlib, 155KB, zero dependencies

# Add any MCP server β€” one command:
mcptoon add everything --stdio npx -y @modelcontextprotocol/server-everything

# See every tool available (names-only by default; 255 tools cost 581 tokens):
mcptoon manifest

# Call a tool (JSON output by default; add --toon to save more):
mcptoon call everything echo '{"message":"hi"}'

What mcptoon demo actually prints

No API key, no MCP server of yours, nothing to configure: it boots the official "everything" reference server, calls one tool, and shows the token math on your screen. This is that output, verbatim from v0.7.11 (Windows, Python 3.12) β€” only the ASCII banner and the closing star-ask are cut:

$ mcptoon demo --quick

  Starting demo server...
  βœ“ Demo server ready

  πŸ“Š  SAME data, 19% fewer tokens:
              21  β†’          17   (SLIM)

  Format         Tokens    Savings
  ────────── ────────── ──────────
  JSON               21          -
  TOON               17        19%
  SLIM               17        19%

  Official benchmark: 255 tools, 50 servers, tiktoken cl100k_base:

  Format           Tokens    Savings
  ──────────── ────────── ──────────
  JSON             71,929          -
  TOON             47,438        34%
  SLIM              8,282      88.5%
  Compact             581      99.2%

  Now you can:
  βœ“ connect every agent with ONE config   β†’  mcptoon sync
  βœ“ expose ALL servers as ONE stdio server β†’  mcptoon serve
  βœ“ never paste tool schemas again         β†’  mcptoon manifest --slim

  Schemas in context with mcptoon: 0 tokens (always)

Column padding follows your terminal width; the numbers do not. The first table is one live tool call measured on your machine; the second is the repo's committed 255-tool benchmark (docs/tiktoken-benchmarks.md), reproduced identically on every run.

No Node on the machine? mcptoon demo-server is the same proof with nothing to download: an MCP server of 11 standard-library tools, no network, no API key.

Claude Code user? Skip the terminal entirely:

/plugin marketplace add activeing123/mcptoon

The plugin auto-installs the CLI (SessionStart hook), wires the mcptoon serve bridge via .mcp.json, and ships a skill that teaches the agent when to compress. /mcptoon-setup is the manual fallback.

Or let mcptoon auto-discover servers already on your machine:

mcptoon quickstart     # discover + configure + list tools β€” one command

That's it. No hand-written JSON config. No MCP protocol debugging. No polluted context window. The wheel is 155KB with zero dependencies, and mcptoon itself needs no API key and phones nothing home β€” $0 in service fees, everything runs on your machine.


The problem

Every MCP agent (Claude Code, Cursor, Codex, …) stuffs every tool's full schema into your context window before doing any work:

50 tools  β†’ 14,113 tokens of schema β†’ a 128K context: 11% gone
255 tools β†’ 71,929 tokens of schema β†’ a 128K context: 56% gone

So you unload servers you aren't using and reload them when you are. Back and forth. Adding one new server still means hand-writing a JSON config β€” one missing comma and everything breaks.

mcptoon fixes this. Your MCP servers stay configured, but their schemas never enter the agent's context by default. The agent just runs mcptoon commands, and only the compact result you asked for enters context β€” the name index weighs 581 tokens (114 for 50 tools, βˆ’99.2%).

Without mcptoon: 255 tools β†’ 71,929 tokens, over half the window
With mcptoon:    255 tools β†’ 581 tokens. 99.2% saved.

Both rows are measured configurations, not one number scaled up and down (tiktoken cl100k_base, assets/benchmark_tiktoken.json). Your mix will differ β€” compute your own numbers in the browser, 30 seconds, nothing uploaded.


The industry validated the problem β€” then gated the fix

Token-heavy tool context is no longer a niche complaint β€” it is now an official engineering problem, and the same answer keeps appearing on every roadmap:

The fix

Where it runs

The catch

Tool Search Tool / PTC

Claude-platform betas

tool results still enter context token by token on every other agent

MuleSoft gateway

enterprise gateway

behind MuleSoft; MCP spec one generation behind

mcptoon

any agent that can run a shell command

none β€” 155KB, no key, no proxy, MCP 2026-07-28 GA

The direction is settled. mcptoon is the version of this answer you can run today, on every agent at once β€” the results-side discipline without the platform or gateway toll.


Installing MCP servers β€” one command each

# Install from npm (most MCP servers live here):
mcptoon install brave-search --npm @modelcontextprotocol/server-brave-search

# Install from pip:
mcptoon install my-tool --pip mcp-my-tool

# HTTP/SSE servers:
mcptoon install remote-api --url https://example.com/mcp

# List installed:
mcptoon install --list

# Uninstall:
mcptoon install --remove brave-search

mcptoon connects, discovers tools, generates the handler, registers it. No restart needed. Each install adds 0 KB to mcptoon itself β€” the CLI stays 155KB with zero dependencies, because servers are external processes your machine runs directly, not code bundled into mcptoon. Four steps, one command, no agent restart.

Any MCP server works:

mcptoon add my-server --stdio npx -y @any/mcp-package
mcptoon manifest    # usable immediately

Install as an agent skill (works with 80+ agents)

Teach your agent to use mcptoon through the open agent-skills ecosystem β€” the skill is picked up by Claude Code, Cursor, Codex, Cline, Windsurf and 75 more:

npx skills add https://github.com/activeing123/mcptoon --skill mcptoon

Prefer a GUI? ToonDeck

Don't want to hand-edit configs? ToonDeck is a local console for mcptoon: every MCP server and tool in one place with a real health check, one skill folder synced to all your agents, agent launching with live logs, and API keys stored in your OS keychain β€” never in a plaintext file.

pip install toondeck    # ships the web UI inside the wheel β€” no node, no build

Pre-alpha; free (Apache-2.0). ToonDeck drives the engine β€” mcptoon stays the single source of truth underneath.


Works with every AI agent

mcptoon is a CLI. If your agent can run a shell command, it can use mcptoon. No plugins, no SDK, no per-agent setup.

Agent

How

Claude Code

put mcptoon commands in SKILL.md

Codex (OpenAI)

add mcptoon to AGENTS.md

Cursor

add mcptoon to .cursorrules

OpenCode

use mcptoon in custom commands

Any agent

can run shell commands β†’ can call mcptoon

Configure once in ~/.mcptoon/config.json; every agent that can run shell commands shares the same servers and tools. GUI agents that can't? mcptoon sync writes native JSON into each one's own location.

export MCPTOON_AGENT_TYPE=claude   # call results auto-select --toon
# export MCPTOON_AGENT_TYPE=openai   # or keep the default JSON

Your AI can even add tools by itself β€” no human in the loop:

# Agent needs GitHub access mid-task? It just runs:
mcptoon add github --stdio npx -y @modelcontextprotocol/server-github
mcptoon call github search_repos '{"query":"mcp"}'
# Done. No JSON editing. No restart. No lost context.

The numbers

mcptoon's token savings are two separate bills β€” know which one you're reading before comparing numbers. The short version: at 255 tools, native discovery costs 71,929 tokens β€” over half of a 128K context β€” while the same toolset reads back at 581 tokens through the name index, a 99.2% cut. On the results side, --toon saves 34.0–34.2% versus JSON across the measured set. Both rows are measured configurations (tiktoken cl100k_base, assets/benchmark_tiktoken.json), not scaled estimates.

Bill 1 Β· Tool discovery (manifest): 99.2% saved by default

This bill comes due before your agent decides "which tool do I use". Native MCP shoves every tool's full schema into context (50 tools: 14,113 tokens; 255 tools: 71,929 tokens). mcptoon sends only the name index β€” that's where "114, not 14,113" comes from.

Tools

Native schema (JSON)

mcptoon name index (default)

Saved

5

1,519

11

βˆ’99.3%

50

14,113

114

βˆ’99.2%

255

71,929

581

βˆ’99.2%

Zero action, on by default: mcptoon manifest with no flags is this tier. Want to give the agent more? --full (names + parameter types) saves 88.5%; --json (full schema) is the baseline.

We measured both rows ourselves β€” not one number scaled up and down (tiktoken cl100k_base, assets/benchmark_tiktoken.json). Your mix will differ β€” compute your own numbers in the browser, 30 seconds, nothing uploaded.

Bill 2 Β· Call results (call): optional, --toon saves ~34%

This bill comes due after a tool returns its result to your agent. mcptoon call outputs JSON by default β€” yes, the default saves nothing. To shrink results too, add --toon (structured encoding, reversible):

Default:  mcptoon call fetch fetch '{"url":"https://example.com"}'   β†’ JSON (baseline)
Leaner:   mcptoon call fetch fetch '{"url":"https://example.com"}' --toon   β†’ ~34% saved

34% is the measured toon_save value in assets/benchmark_tiktoken.json (34.0–34.2%), not a marketing number.

One line to remember: 99.2% is what you save seeing which tools exist; 34% is what you can further save on results.

Side-by-side (Bill 1, made visible)

One tool's schema costs 37 tokens as native JSON but only 2 tokens as an mcptoon name-index entry β€” a 95% cut on a single tool. We measured it with tiktoken (cl100k_base).

Without mcptoon (what every MCP client stuffs into context β€” 37 tokens, measured with tiktoken):

[{"name":"search_web","description":"Search the web for information",
"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search query"}}}}]

With mcptoon (2 tokens):

search_web

With mcptoon --full (6 tokens, parameter info included):

search_web|query:s*

Security

Three layers, all built in:

Layer

What it does

Example

Destructive-action block

dangerous actions blocked unless you pass --destructive

db query '{"sql":"DROP TABLE users"}' β†’ blocked

Prompt-injection guard

scans results for injection patterns

"ignore previous instructions" β†’ blocked

Credential-leak detection

scans results for exposed keys/tokens

sk-abc...xyz β†’ blocked, never enters agent context

  • No telemetry. No analytics, no crash reports, no call-home.

  • No stored credentials. API keys pass straight from your config or environment.

  • No dependencies. Pure Python standard library. Nothing in the supply chain to audit.

  • No daemon. Pure CLI β€” no resident process, no listening port, no attack surface.


All commands

mcptoon quickstart              # one-shot start (discover + configure + list tools)
mcptoon list                    # show configured servers
mcptoon manifest                # all tool names (compact by default; 255 tools = 581 tokens)
mcptoon manifest --full         # tool schemas with params (88.5% smaller than native)
mcptoon inspect <server> <tool> # inspect one tool's schema
mcptoon search <query>          # search tools across servers
mcptoon call <server> <tool> '{"args":"here"}'   # call a tool
mcptoon call --auto <tool> '{"args":"here"}'     # auto-find the server
mcptoon call <server> <tool> --stdin             # read large args from stdin
mcptoon add <name> --stdio|--http <cmd|url>     # add any MCP server
mcptoon remove <name>           # remove a server
mcptoon install <name> --npm|--pip|--url <pkg>  # install + auto-generate handler
mcptoon install --list          # list installed
mcptoon install --remove <name> # uninstall
mcptoon sync                    # sync native config to every detected agent
mcptoon plugin install <dir>    # install an Agent Plugins 1.0.0 plugin
mcptoon serve                   # run as an MCP server (stdio/HTTP) β€” MCP 2026-07-28: stateless-first, server/discover, cacheable list results
mcptoon demo                    # one command, live demo on your machine
mcptoon doctor                  # self-check: Python, config, connectivity
mcptoon usage                   # local call statistics
mcptoon completion ps           # shell completion (bash/zsh/fish/powershell)

Format family: four tiers, compact by default

Discovery and call results each have a set of formats β€” all optional, and the default is already the leanest tier:

manifest (discovery): compact by default, upgrade only if you want more

Tier

Output

vs native schema

Origin

compact (default)

names only search_web

99.2% smaller

common design

slim

name + param types search_web|query:s*

88.5% smaller

mcptoon original

full

full schema with params

baseline

native MCP

Why compact by default, not full? Deciding "which tool do I use" only needs names (581 tokens for 255 tools); parameter details matter at call time, fetched on demand via inspect or manifest --full. Defaulting to full schemas hands the 99.2% right back.

The recommended loop (and why it's load-bearing). Compact names are a catalog, not a calling contract. Measured on 41 live tools (full-schema gold standard, one inference model per condition): an agent that guesses arguments from names alone lands 4/41 β‰ˆ 10% valid calls β€” the killers are non-guessable names like account and pageId β€” while an agent that runs inspect <server> <tool> once for the 2–3 tools a turn actually uses hits 41/41 β‰ˆ 100%, identical to injecting every schema. A turn touches a handful of tools, so a few on-demand inspect calls stay far below the cost of a full-schema dump: you keep ~99% of the token savings and full call accuracy. The rule for agents: use manifest to choose, inspect before you call.

call (results): JSON by default, --toon to save

Tier

Output

vs JSON

Origin

(default)

JSON

baseline

common

--toon

structured encoding (reversible)

~34% smaller

open TOON standard

--mcptoon

legacy pipe format

β€”

mcptoon original (legacy)

Where these formats come from

  • compact: a name list β€” any tool manager can do it; nothing proprietary.

  • slim (name|param:type* signatures): an mcptoon original, implemented in output.py (slim_toon, Apache 2.0); noted in NOTICE.

  • full: full JSON Schema β€” what MCP speaks natively.

  • toon (result encoding): integration of the open TOON standard (toon-format/toon v4.1, MIT), vendored from python-toon and credited in NOTICE β€” not our invention, and we don't claim it.


Do custom formats break MCP compatibility? β€” No, for three reasons

"Proprietary format = compatibility bomb" is a fair worry. It doesn't apply here:

1 Β· The protocol layer is always standard JSON-RPC; formats live only in the presentation layer. mcptoon speaks standard MCP to servers (initialize / tools/list / tools/call β€” and since the 2026-07-28 GA bridge, server/discover and stateless requests too; the initialize handshake remains for legacy clients). compact/slim/toon only affect the "mcptoon β†’ agent" output rendering β€” not a single byte toward the server. Servers always see standard JSON; they don't even know these formats exist.

2 Β· --toon isn't proprietary; it's an open standard. TOON (Token-Oriented Object Notation) is an external open standard (toon-format/toon v4.1, MIT, official TypeScript reference implementation). We integrate python-toon (MIT); tests/test_toon_cross_validate.py verifies decode(encode(x)) == x case by case.

3 Β· There's a fallback; worst case you fall back to JSON. If --toon decoding fails it falls back to JSON automatically (--fallback-json); and call results are JSON by default anyway β€” --toon is optional. Want the full schema back? One --full is native MCP. No lock-in.

In one line: zero protocol changes, formats live in the output layer, worst case falls back to JSON. The feared "server can't understand the custom format" can't happen β€” servers always hear standard JSON-RPC.


How it works

mcptoon is a CLI tool, not an MCP client library. Your agent doesn't connect to MCP servers β€” it runs mcptoon commands. Schemas live on disk in ~/.mcptoon/config.json, out of the context window by default.

Two-layer decoupling:

Layer 1: mcptoon CLI (155KB, zero deps)
         runs in the agent's shell. schemas stay out of context by default.
                    β”‚
Layer 2: the actual MCP servers (npm/pip packages)
         start only when a tool is called. Zero cost when idle.
  • 1,000 servers configured β†’ 0 running, until you call one

  • mcptoon bundles nothing β€” you add what you want, one command each (the sole thing it ships is mcptoon demo-server, a self-demo you opt into)

  • Delete mcptoon? Your MCP servers keep running independently


Why a CLI, not a proxy

MCP's premise: every capability is a server, and your agent must be configured to reach it. That premise is why one new tool means editing per-agent JSON in a different format for each, restarting everything β€” and why every agent re-pays the full schema cost before doing anything.

A command line is the one interface every agent already has. And the form factor is measurably cheaper, independent of anything mcptoon does:

  • Firecrawl's benchmark: the same task cost 1,365 tokens via CLI vs 44,026 via MCP β€” 32Γ—

  • Scalekit's benchmark: CLI 10–32Γ— cheaper, 100% reliable vs MCP's 72%

If you truly need the proxy form, mcptoon serve is that mode β€” all configured servers behind one MCP endpoint, with connection pooling and per-agent API keys.


Contributing

git clone https://github.com/activeing123/mcptoon.git
cd mcptoon
pip install -e . --no-build-isolation
pip install pytest pytest-cov
python -m pytest tests/ -v   # 915 passed, 1 skipped

Zero dependencies is a hard rule β€” our test suite gates every change (915 tests green before merge). See CONTRIBUTING.md and DEVELOPERS.md.

The codebase: 13,415 lines of Python across 23 modules, zero third-party dependencies.


Ecosystem

  • ToonDeck β€” GUI console for mcptoon (pre-alpha): every MCP server, tool, model and API key in one desktop deck, with mcptoon as its engine. Prefer pointing and clicking over typing commands? Same engine, graphical.


mcptoon is an independent third-party MCP client, not affiliated with Anthropic.

If mcptoon cut your context bill, star it β€” that's how other builders find small tools.

Available Tools

14 tools
demo_build_tool_manifestIndex a tool set by name onlyA
Read-onlyIdempotent

Reduces a set of MCP tool definitions, grouped by server or flat, to the names-only index mcptoon puts in front of an agent β€” one line per server listing its tool names, no schemas β€” with the estimated token drop against the text you supplied. ...

ParametersJSON Schema
NameRequiredDescriptionDefault
manifestYesEither {server_name: [tool_definition, ...]} or a flat [tool_definition, ...] array, as JSON text; string entries are accepted as bare tool names and put under their group's name.
include_slimNoWhen true, also returns each tool's slim definition under 'slim_tools'; omitted or false returns the name index only. Has no effect on the reported token drop, which always measures the name index.

Output Schema

ParametersJSON Schema
NameRequiredDescription
name_indexYesThe compact index: server, then its tool names.
slim_toolsNoCompacted definitions; present only when asked for.
tool_countYesNames indexed across every server.
full_tokensYesTokens the submitted manifest would have cost.
empty_serversYesServers that contributed no names at all.
reduction_pctYesPercentage saved, zero when nothing was indexed.
skipped_entriesYesPositions of entries carrying no usable name.
simplified_tokensYesTokens the name index costs instead.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds useful behavioral context beyond them: it emits a names-only index plus an estimated token drop measured against the supplied text, and notes include_slim does not affect that measurement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence that leads with the transformation and the resulting artifact, with no filler. It is slightly long and the trailing ellipsis suggests the text may be cut off, but the core content is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With full schema coverage, an output schema, and complete annotations, the description need not explain return values or safety. It covers inputs, output shape, and the token-drop metric adequately; the only gap is the absence of sibling-routing guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description reiterates the names-only index and token-drop behavior but adds no syntax or format detail about the 'manifest' string or 'slim_tools' beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (reduces/indexes) and resource (a set of MCP tool definitions, grouped by server or flat) and names the exact output artifact: the names-only index, one line per server, no schemas. This distinguishes it from siblings like demo_simplify_tool_schema (slim definitions) and demo_estimate_tokens.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the tool produces and the effect of include_slim, but never states when to choose it over the closest alternatives (e.g., mcptoon_manifest, demo_simplify_tool_schema, demo_estimate_tokens). Usage is implied by the output shape rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

demo_compare_formatsCompare JSON, TOON and Compact sizesA
Read-onlyIdempotent

Encodes one JSON document as JSON, TOON and Compact renderings and returns each form's character count, estimated token count and percentage saved against the JSON baseline β€” the way to measure mcptoon's output compression on a payload you actually have. ...

ParametersJSON Schema
NameRequiredDescriptionDefault
payloadYesA complete JSON document (object, array, string, number, boolean or null) serialised as text; must parse as JSON and is read as data, never executed.

Output Schema

ParametersJSON Schema
NameRequiredDescription
formatsYesOne entry per rendering: json, toon and compact.
slim_noteYesWhy the SLIM format is absent from this comparison.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety and idempotence profile is already clear. The description adds that the payload 'is read as data, never executed' in the schema, but the description itself does not repeat that; it does clarify the output structure (character count, estimated token count, percentage saved) which is behavioral context not in annotations. However, it does not mention rate limits, execution time, or potential errors, so a 4 is appropriate for adding useful output context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that efficiently conveys the purpose, output, and use case. The trailing ellipsis is odd but does not detract from conciseness. It earns its place without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one fully documented parameter, rich annotations, and an output schema present, the description needn't explain return values. It adequately completes the picture by stating what is returned and why, though it could explicitly differentiate from siblings like demo_encode_toon. Given the output schema exists, this is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameter 'payload' is fully documented in the schema as a JSON document serialized as text. The description adds no additional parameter syntax or constraints beyond what the schema provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (encodes), resource (one JSON document), and the exact scope: comparing JSON, TOON, and Compact renderings with character counts, token estimates, and percentage saved. This clearly distinguishes it from siblings like demo_encode_toon or demo_estimate_tokens, which do single-format work, by framing the tool as a comparison against a JSON baseline.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: 'the way to measure mcptoon's output compression on a payload you actually have.' It does not explicitly state when NOT to use it or name alternatives (e.g., use demo_encode_toon for just TOON output or demo_estimate_tokens for a single token count), so it falls short of a 5 but provides clear context for the payloaud-in-hand use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

demo_decode_toonDecode TOON back to JSONA
Read-onlyIdempotent

Parses TOON text into a JSON value and returns it, together with a canonical serialisation for comparing against the original β€” the way to prove an encode_toon round trip is lossless. Use it on text this server produced or on a stored TOON document; to produce such text use encode_toon, and to compare formats rather than parse use compare_formats. ...

ParametersJSON Schema
NameRequiredDescriptionDefault
toonYesTOON-encoded text, one document per call, with its original indentation; tabs are treated as indent levels.

Output Schema

ParametersJSON Schema
NameRequiredDescription
decodedYesThe parsed value: a JSON document of any type.
round_tripYesThat value re-serialised as JSON, keys sorted.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds real value beyond that by disclosing what is returned (JSON value plus a canonical serialisation) and the intended lossless round-trip purpose, though it omits error behaviour for malformed TOON.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and the returned artifacts, then the routing guidance in a single dense second sentence. Every clause is functional, though the trailing ellipsis and slightly stacked clauses keep it from being maximally tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, idempotent read tool with an output schema present, everything needed to select and call it correctly is covered: purpose, alternatives, and usage conditions. Return values are additionally explained even though the output schema would suffice.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage, so the schema already documents the 'toon' input including indentation/tab handling. The description adds no parameter-level detail beyond the schema, which is the expected baseline when coverage is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (parses) plus the resource (TOON text) and names the concrete return artifacts (JSON value and canonical serialisation). It explicitly distinguishes itself from encode_toon, so an agent can tell the tools apart without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use context ('text this server produced or a stored TOON document') and routes to both relevant siblings: encode_toon for producing text and compare_formats for format comparison rather than parsing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

demo_describe_runtimeDescribe this server's runtimeB
Read-onlyIdempotent

Describes the running demo server itself: mcptoon version, the MCP protocol versions it accepts, the interpreter and platform versions behind it, and whether it carries any third-party runtime dependency. ...

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
pythonYesPython interpreter version in this container.
platformYesPlatform triple of the machine answering the call.
tool_countYesTools this server answers tools/list with.
server_nameYesMCP serverInfo name this server reports.
mcptoon_versionYesVersion of the running package.
supported_protocol_versionsYesMCP protocol versions it will negotiate.
third_party_runtime_dependenciesYesList of install requires, or a sentence when running from source.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds that the enquiry is about the server's own runtime and that dependency status is reported, which is useful orientation, but it gives no behavioural detail about cost, caching, or freshness of the reported versions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that leads with the verb and resource before listing contents, with no filler. The trailing ellipsis suggests the text is truncated rather than naturally finished, which is mildly awkward but does not hurt selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters, full annotation coverage, and an output schema present, the description does not need to explain return structure, and it correctly stays high level. The one gap is the absence of any routing hint relative to the health/manifest siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4 and there is nothing further the description could usefully add here. No parameter syntax or format details are expected or missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Describes') and resource ('the running demo server itself') and enumerates the concrete contents: mcptoon version, accepted MCP protocol versions, interpreter/platform versions, and third-party dependency status. It does not explicitly distinguish itself from near-neighbours such as mcptoon_health or mcptoon_manifest, which is the only thing keeping it from a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance at all: no statement of when an agent should call this rather than mcptoon_health, mcptoon_manifest, or the demo_* diagnostic siblings. The reader must infer the context from the enumerated contents alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

demo_echo_messageEcho a message back unchangedA
Read-onlyIdempotent

Returns the submitted message text back unchanged, in one text content block, as a reachability probe for this server's stdio framing. Use it to confirm the MCP handshake and the transport work before testing anything else; it produces no analysis of its own, so for size comparisons call compare_formats and for a token figure call estimate_tokens. ...

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesText to send back verbatim; any characters are accepted, including newlines and non-ASCII. Empty or blank text is rejected.

Output Schema

ParametersJSON Schema
NameRequiredDescription
echoYesThe message text, returned byte-for-byte as submitted.
charsYesCharacter length of the echoed text.
transformedYesAlways false: this tool alters nothing.
estimated_tokensYesCharacters divided by four, floored at one.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds value beyond them by disclosing that it performs no analysis and emits exactly one text content block, which sets expectations for a probe tool. It stops short of stating failure behavior, but the added context is real.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core behavior and then routing alternatives, with no filler. It loses a point for the trailing ellipsis that hints at truncation and for a slightly long second clause that mixes purpose and routing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter probe with an output schema present, the description covers purpose, usage, alternatives, and return shape; return-value details are delegated to the output schema. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema itself already documents the verbatim contract, accepted characters, and rejection of empty/blank input. The description adds no syntax or format detail beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource (returns the submitted message back unchanged) plus the exact return shape (one text content block). It also names the sibling tools that do the adjacent work (compare_formats, estimate_tokens), so an agent can place it unambiguously among siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use ('reachability probe ... confirm the MCP handshake and the transport work before testing anything else') and explicit alternatives with their selecting conditions (compare_formats for size comparisons, estimate_tokens for a token figure). Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

demo_encode_toonEncode a document to TOONA
Read-onlyIdempotent

Converts a JSON document into TOON, the line-oriented format mcptoon can serve in place of JSON, and returns the encoded text. Use it when you need the encoded form by itself; to see it next to the other formats with savings percentages use compare_formats, and to read such text back use decode_toon. ...

ParametersJSON Schema
NameRequiredDescriptionDefault
payloadYesA complete JSON document serialised as text; keys with embedded newlines or unescaped quotes are escaped rather than rejected.

Output Schema

ParametersJSON Schema
NameRequiredDescription
toonYesThe TOON encoding, previewed past 500 characters.
charsYesLength of the full encoding, preview or not.
truncatedYesWhether the text above was cut for transport.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds useful behavioral context beyond them: the output is text, the format is line-oriented, and it is a drop-in substitute for JSON that mcptoon can serve. It does not discuss size/limits or failure behavior, but with strong annotations a 4 is fair.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Efficiently front-loaded: the core function leads, followed by usage conditions and sibling routing in a single flow. The trailing ellipsis indicates the description is truncated mid-sentence, which slightly undercuts an otherwise tight structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so explaining the return value is unnecessary, and annotations carry the safety profile. The description covers purpose, usage, and alternatives adequately; only the truncated tail and lack of any error/limit behavior keep it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single required parameter whose escaping/leniency behavior is documented in the schema itself. The description adds no syntax or format detail about the payload beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (converts/encodes) and resource (a JSON document into TOON), and explicitly distinguishes itself from two named siblings: compare_formats and decode_toon. An agent can identify this as the standalone encoder without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use it ('when you need the encoded form by itself') and routes to the two alternatives with their distinguishing conditions: compare_formats for side-by-side savings, decode_toon for the reverse direction. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

demo_estimate_tokensEstimate tokens by character countA
Read-onlyIdempotent

Counts the tokens in a text you supply using the estimator this package ships β€” character count divided by four, floored β€” so its numbers are directly comparable with the savings reported by build_tool_manifest and compare_formats. ...

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe exact text to measure; whitespace and characters outside ASCII count toward the total like everything else.

Output Schema

ParametersJSON Schema
NameRequiredDescription
biasYesWhere this estimate is wrong, and by how much.
charsYesCharacter length of the submitted text.
methodYesHow the number was produced, stated plainly.
estimated_tokensYesThe figure itself: characters divided by four.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds genuine behavioral value by disclosing the exact estimator (character count divided by four, floored) and its consistency guarantee, which the agent couldn't infer from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and method in a single efficient sentence. Minor deduction for the trailing ellipsis and for packing the comparability rationale into the same long clause rather than separating it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, read-only, idempotent estimator with a full output schema, the description supplies everything needed: what it counts, how it counts, and why the result is comparable to sibling tools. Return values are covered by the output schema, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the single parameter already documents that whitespace and non-ASCII characters count toward the total. The description adds no parameter-level meaning beyond restating "text you supply," so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Counts the tokens in a text you supply") and immediately qualifiers it with the estimator used. It distinguishes itself from siblings by naming build_tool_manifest and compare_formats, so an agent can tell why this tool exists alongside them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context for use: the numbers are meant to be comparable with savings reported by build_tool_manifest and compare_formats, implying it is the verification/consistency tool. However, it never states when-not to use it or names a direct alternative to prefer, so it stops short of fully explicit routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

demo_list_supported_agentsList agent config targets and pathsB
Read-onlyIdempotent

Reports the AI agent configuration targets mcptoon's sync command knows how to write, each with the path it resolves to in this process's environment. ...

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
agentsYesOne entry per agent mcptoon sync can write to.
platformYessys.platform of the machine answering the call.
installed_checkYes"not performed": paths are derived, never stat'd.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely useful context that paths are resolved specifically in this process's environment, which hints at environment dependence, but nothing about ordering or side effects on sync.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence conveying the resource and the returned path semantics with no filler. The trailing ellipsis suggests the text is truncated, so it is not fully polished.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not enumerate return fields, and it does describe the shape of the result (targets plus resolved paths). For a no-arg, read-only listing tool this is close to sufficient, the only shortfall being absent usage context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate. Schema coverage is 100% and no parameter meaning is left unstated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource (reports the AI agent configuration targets that mcptoon's sync command can write) and adds scope via the resolved path detail. It is clear what the tool returns, but it never names or distinguishes itself from siblings like mcptoon_manifest or demo_describe_runtime.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance, and no alternative tool is mentioned. An agent must infer from the name alone that this is the discovery step before running sync.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

demo_report_benchmark_rowsReport the archived token benchmarkA
Read-onlyIdempotent

Returns this project's committed token measurements for 5, 50 and 255 MCP tool definitions encoded with tiktoken cl100k_base: raw JSON, TOON, SLIM and Compact token counts with each format's percentage saved. ...

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsYesOne row per tool-set size, smallest first.
sourceYesWhere the measurements came from.
encodingYesTokenizer behind the figures: tiktoken cl100k_base.
measured_at_build_timeYesTrue: these are archived runs, not live calls.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds useful context about the committed/archived nature and the specific benchmark contents, but does not disclose additional behavioral traits such as data freshness guarantees or caching behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence that immediately states the return value and then details the dataset sizes, encoding, and formats. Every clause carries useful content, and there is no filler or redundant restatement of the title or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter, read-only tool with rich annotations and an output schema, the description supplies exactly the domain context an agent needs: what benchmark is reported, which tool-definition counts are covered, which encoding is used, and which formats are compared. The output schema handles return structure, so no further description of return values is required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is no parameter semantics to explain. With an empty schema and 100% schema description coverage, the baseline score of 4 applies; the description adds no parameter information because none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ('Returns'), resource ('this project's committed token measurements'), and precise scope: 5, 50, and 255 MCP tool definitions, encoded with tiktoken cl100k_base, across raw JSON, TOON, SLIM, and Compact formats. The word 'committed' and 'archived' distinguishes it from live-estimation siblings like demo_estimate_tokens and demo_compare_formats without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what data is returned but gives no when-to-use guidance, no conditions for choosing this tool over alternatives, and no exclusions. Sibling tools like demo_compare_formats and demo_estimate_tokens exist, yet the description does not route the agent between them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

demo_simplify_tool_schemaSlim one MCP tool definitionA
Read-onlyIdempotent

Rewrites a single MCP tool definition (name, description, inputSchema) into mcptoon's slim form, where each parameter keeps only its name, its type and its required marker, and returns the slim definition with the character and estimated-token delta against what you sent. ...

ParametersJSON Schema
NameRequiredDescriptionDefault
toolYesOne MCP tool definition as a JSON object serialised to text, with a non-empty 'name'; a bare name string is rejected and reported as such.

Output Schema

ParametersJSON Schema
NameRequiredDescription
slim_toolYesThe compacted tool definition, in tools/list shape.
full_tokensYesTokens of the definition as submitted.
reduction_pctYesPercentage saved by compaction.
rules_appliedYesWhich compaction rules fired on this definition.
simplified_tokensYesTokens of the compacted definition.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and non-destructive, so the safety profile is covered; the description adds genuinely new behavior by defining what the 'slim form' actually keeps (name, type, required marker) and that char/token deltas are computed against the input. It stops short of describing edge-case handling or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and resource, and every clause carries information. The single long sentence is dense but not padded, and no filler precedes the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the return contract need not be spelled out, yet the description helpfully flags that the delta metrics come back with the slim definition. For a single-parameter transformer with full schema coverage and rich annotations, nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and its description already specifies that the input is a serialised JSON object requiring a non-empty 'name', with bare strings rejected. The description adds nothing beyond that, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (rewrites/slims) plus the exact resource (a single MCP tool definition, name/description/inputSchema) and the form produced. An agent can tell this apart from siblings like demo_compare_formats or demo_encode_toon without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the transformation described, but the description never says when to reach for this tool versus the sibling format/diff tools (demo_compare_formats, demo_encode_toon, demo_build_tool_manifest). No prerequisites or exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

demo_validate_config_draftStructurally check a config draftA
Read-onlyIdempotent

Checks a proposed mcptoon server configuration before you save it and reports problems per entry: an entry with neither command nor url, one that sets both, args or env of the wrong JSON type, keys mcptoon ignores, and which transport mcptoon would choose. ...

ParametersJSON Schema
NameRequiredDescriptionDefault
configYesA mcptoon configuration draft as JSON text: server names mapping to entries with command/args or url. Comments are unsupported and become unknown keys.

Output Schema

ParametersJSON Schema
NameRequiredDescription
entriesYesOne verdict per server entry, in submitted order.
entry_countYesServer entries examined in the draft.
not_checkedYesWhat a clean report still does not prove.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. The description adds concrete validation behaviors (per-entry problem reporting, transport-choice preview) that go somewhat beyond annotations, but it does not disclose whether the tool errors on invalid input or how thoroughly it validates beyond structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense sentence that front-loads the pre-save validation purpose before listing problem categories. The ellipsis suggests the description may be truncated or incomplete, which slightly hurts structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is structurally simple (one string parameter, output schema present), annotations cover the safety profile, and the description explains what gets checked and how problems are reported. Nothing essential to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single config parameter is already fully documented. The description implies the input is a draft config being checked, which aligns with the schema but adds no syntax or format details beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (checks) and resource (a proposed mcptoon server configuration) with clear scope (before saving). Distinguishes from siblings like mcptoon_servers (which presumably lists existing servers) by making the draft-validation purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies when to use it: 'before you save it' gives clear timing context for validating a draft. It doesn't name a specific alternative or say what to do if problems are found, but the pre-save context is strong enough for an agent to select it correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcptoon_healthGateway self-checkA
Read-onlyIdempotent

Self-check of this gateway process: version, config path, servers configured, tools indexed and uptime. Read this first when a tool you expect is missing; it distinguishes an empty config from a server that failed to load.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
pythonNo
statusYesok, degraded, error or starting.
versionYes
configPathNo
outputFormatNo
toolsIndexedYes
failedServersNo
uptimeSecondsNo
serversConfiguredYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is fully covered. The description adds genuinely useful behavioral context the annotations do not: this is a diagnostic/introspection call that reveals configuration and load state, and that it is the correct first step in a missing-tool investigation. It does not discuss cost or failure modes, but the read-only nature makes those minor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste. The enumerated outputs come first, then the diagnostic guidance, so the agent gets the gist immediately. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, yet the description still names the salient fields. A parameterless, closed-world, read-only diagnostic tool is fully specified here; nothing an agent needs in order to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so there is nothing for the description to disambiguate β€” baseline 4 applies. The description correctly implies the call takes no arguments, matching the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Self-check of this gateway process') and enumerates exactly what it reports: version, config path, servers configured, tools indexed, uptime. This clearly distinguishes it from siblings like mcptoon_manifest and mcptoon_servers, which expose registry contents rather than process health.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('Read this first when a tool you expect is missing') and names the diagnostic distinction it resolves (empty config vs. server that failed to load). The condition for choosing this tool over any sibling is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcptoon_manifestTool manifestA
Read-onlyIdempotent

List the upstream tools this gateway currently exposes, grouped by server. Returns names by default; that compact view is what an agent should read instead of pulling every full schema. Pass include_descriptions for a one-line summary per tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
serverNoRestrict the listing to one server name. Omit to list every server the gateway has loaded.
include_descriptionsNoAttach each tool's first description sentence to the listing. Costs tokens; the default false keeps the manifest small.

Output Schema

ParametersJSON Schema
NameRequiredDescription
serversYesOne entry per server that contributed tools.
totalToolsYes
totalServersYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior, so safety is covered. The description adds real behavioral context beyond that: the default response contains names only, and enabling descriptions costs tokens, letting the agent reason about output size.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with what the tool returns, then the recommended usage, then the optional parameter. Every sentence carries information and nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and annotations cover the safety profile. The description covers scope, defaults, and cost; only minor details (e.g., how grouping keys are structured) are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are already documented there, so the baseline is 3. The description largely restates the include_descriptions effect ('one-line summary per tool' / default false) and adds nothing about the server filter's matching semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List the upstream tools this gateway currently exposes') plus the grouping scope ('grouped by server') and the default output shape (names only). It is clearly distinguishable from sibling tools like mcptoon_servers, which enumerates servers rather than exposed tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent to read this compact view 'instead of pulling every full schema,' which is real when-to-use guidance, and it explains when to pass include_descriptions (one-line summaries) versus keeping the small default. It stops short of naming a specific alternative sibling tool or stating exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcptoon_serversConfigured serversA
Read-onlyIdempotent

Report the MCP servers configured behind this gateway: transport, tool count and whether their tools loaded. Use it to see what is actually reachable before calling a tool, and to spot a server that configured but published nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
serverNoReport one server by name instead of all of them. Aliases resolve to the canonical server name.

Output Schema

ParametersJSON Schema
NameRequiredDescription
serversYes
configuredYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, openWorld=false, non-destructive). The description adds genuine behavioral context beyond that: it discloses what state is examined (load status) and surfaces a diagnostic condition ('configured but published nothing') that an agent would not know to look for from annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero filler; the purpose is front-loaded and the usage sentence adds distinct value rather than restating the first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and the description covers purpose, usage, and the optional narrowing parameter. Nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents the single optional 'server' parameter including alias resolution. The description only implies an all-by-default scope, adding nothing the schema does not already say, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('report the MCP servers configured behind this gateway') and enumerates the reported fields (transport, tool count, load status). An agent can distinguish this from siblings like mcptoon_manifest and mcptoon_health without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear usage context: 'see what is actually reachable before calling a tool' and spot servers that published nothing. No explicit when-not or named alternative sibling, but the diagnostic framing makes the use case unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 14 tool updatesv0.7.14
    • Addeddemo_build_tool_manifest
    • Addeddemo_compare_formats
    • Addeddemo_decode_toon
    • Addeddemo_describe_runtime
    • Addeddemo_echo_message
    • Addeddemo_encode_toon
    • Addeddemo_estimate_tokens
    • Addeddemo_list_supported_agents
    • Addeddemo_report_benchmark_rows
    • Addeddemo_simplify_tool_schema
    • Addeddemo_validate_config_draft
    • Addedmcptoon_health
    • Addedmcptoon_manifest
    • Addedmcptoon_servers

TDQS

A3.8/5.0

Scored across 14 tools

Disambiguation4/5

Most tools have distinct purposes, but there is some overlap: mcptoon_manifest, demo_build_tool_manifest, and demo_simplify_tool_schema all deal with tool definitions and could be confused. demo_estimate_tokens and demo_compare_formats also both report token counts. Descriptions clearly differentiate them, but an agent might still hesitate.

Naming Consistency3/5

Two naming conventions are mixed: mcptoon_* for gateway tools and demo_* for demo tools. Within each group, there is a consistent verb_noun pattern (snake_case), but the two prefixes create inconsistency across the set.

Tool Count4/5

14 tools is a reasonable count for a gateway that exposes both management and demo capabilities. It is slightly heavy due to many demo tools, but each tool seems to serve a distinct purpose.

Completeness4/5

The gateway covers essential management (manifest, servers, health) and demo operations (encode, decode, compare, estimate, etc.). Missing are operations for modifying server configurations or managing tools, but the core read-only monitoring and demo functionality is complete.

Maintenance

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that publishes CLI tools on your machine for discoverability by LLMs
    7 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Automatically converts any CLI built with Python's Typer into an MCP server without changing code. Gives AI agents instant access to thousands of CLI tools.
    AGPL 3.0
  • A
    license
    C
    quality
    C
    maintenance
    Turn any REST API into an MCP server in one command. Point mcpify at an OpenAPI spec and every endpoint becomes a tool your AI agent (Claude, Cursor, Windsurf) can call β€” zero glue code, always in sync with the spec.
    3
    5
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    This MCP server is a zero-config CLI tool that lets developers tap into any stdio-based MCP server from their terminal, enabling them to list tools/resources/prompts, call tools with JSON arguments, and health-check servers without requiring a full AI client or browser setup.
    1
    MIT