Skip to main content
Glama

https://github.com/user-attachments/assets/0272d3a8-c74f-428d-8559-fbf804ce0685


πŸš€ Quick Start (Choose Your Way)

When installed, mcptoon automatically injects its own official skill (/mcptoon) into your agents. You never need to memorize terminal commands β€” just ask directly in Cursor, Claude Code, Windsurf, or DSH:

# Ask the built-in skill anytime:
"Load /mcptoon skill and check what MCP tools I currently have."
"Help me find an MCP tool that converts HTML to PDF and call it."
"The tool output was truncated, retrieve the full original copy."
"How many tokens did mcptoon save for me today?"
"Doctor self-check: are all my MCP servers connected properly?"

Your agent loads /mcptoon and drives everything behind the scenes!

# 1. Install (zero dependencies, 534KB)
pip install mcptoon

# 2. One command: detect MCP servers & auto-configure agents
# (Also self-installs `/mcptoon` skill into all detected agents)
mcptoon quickstart

# 3. View compact tool catalog (-99.2% tokens)
mcptoon manifest

# 4. Route tasks to skills or doc chapters (<5ms)
mcptoon skills resolve "write git commit message"
mcptoon docs resolve "how does release gating work"

Is it actually saving you anything? After a fresh install mcptoon can sit in direct mode β€” installed but not wired into the agent β€” and save nothing. See Which mode is cheapest?, or just run mcptoon mode.

⚑ Core Capabilities at a Glance

πŸ’₯ Save context (why β‘ )

🧩 One config, every agent (why β‘‘)

β€’ βœ… Compact name index (βˆ’99.2%): 255 tools β†’ 581 tokens, full schema fetched on demandβ€’ βœ… Lossless result compression: reversible, retrieve the original behind any handleβ€’ βœ… Session dedup: byte-identical output in one turn becomes a referenceβ€’ βœ… Skills the same way: one 39-token pointer + one lookup replaces every SKILL.mdβ€’ βœ… Docs too: docs feeds 1 chapter, not 19 β€” 40k β†’ 17k tokens per questionβ€’ βœ… Honest numbers: real tiktoken accounting via mcptoon bench

β€’ βœ… Native CLI: any shell-capable agent runs mcptoon and gets every feature β€” no MCP server, no configβ€’ βœ… GUI clients too: sync writes the JSON for Claude, Cursor, Cline, Windsurf, VS Code, Claude Code β€” 6 here, 103+ supportedβ€’ βœ… Verified list: 42 clients run the CLI directly, 61 mount one mcptoon serve entryβ€’ βœ… Skills too: one catalog distributed to every agent's folder (skills sync)β€’ βœ… Import what you have: pull servers from Claude / Cursor / Cline / Windsurfβ€’ βœ… One-command setup: quickstart = discover + configure + show toolsβ€’ βœ… Fine control: toggle on/off, policy sets each tool's output tier, --version-gate / --tombstone for skills

πŸ” Find & call (why β‘’)

πŸ”Œ Drive any API, not just MCP

β€’ βœ… 17,000+ registry: plain-language search across serversβ€’ βœ… Discover what's already installed: discover scans existing client configs β€” nothing to reinstallβ€’ βœ… Call anything: call headless, or call --auto to auto-find the serverβ€’ βœ… On-demand schema: inspect only when a tool is actually usedβ€’ βœ… Pick for a task: select "<task>" returns just the top fewβ€’ βœ… Export anywhere: manifest --format openai|openapi|mcp

β€’ βœ… OpenAPI / Swagger: any REST API as commands (openapi list|call)β€’ βœ… GraphQL: any endpoint as commands (graphql list|call)β€’ βœ… OAuth built in: PKCE login, client-credentials, Dynamic Client Registrationβ€’ βœ… MCP resources & prompts: resources, prompts, completeβ€’ βœ… Saved connections: bake β€” secrets by reference only (env: / file:)β€’ βœ… Code sandbox: exec β€” only stdout enters context

πŸ›‘οΈ Safe, small, private

πŸ“š Docs & doctor

β€’ βœ… Zero dependencies: pure standard library, pyproject.toml cleanβ€’ βœ… 534KB, installs in 2sβ€’ βœ… 100% local & private: no cloud, no telemetry, air-gap readyβ€’ βœ… Guards: destructive-op + prompt-injection + credential-leak checks on every callβ€’ βœ… XDG compliant: sandbox-friendly --dir isolation

β€’ βœ… Docs router: docs indexes a Markdown tree, feeds 1 chapter instead of 19 (40k β†’ 17k tokens)β€’ βœ… Search inside docs: kb returns passages, not whole files (95KB β†’ 3 snippets)β€’ βœ… Self-heal: doctor repairs stdio pipes & environments; health probes every serverβ€’ βœ… Live proof: bench / demo show the real numbers on your machineβ€’ βœ… Transparent footer: footer-facts prints live savings after each turn

Every command, with flags, is in All commands.


Why mcptoon

Every MCP agent (Claude Code, Cursor, Codex, …) loads the full description of every tool and every skill into its context window before it does any work β€” and re-sends it every turn. On 255 tools that is 71,929 tokens: more than half of a 128K window spent on descriptions, before the first question.

Related MCP server: typer-mcp

How the token saving works

mcptoon keeps those descriptions on disk, not in context, and hands the agent a compact view instead:

  • A name index, not full schemas. Picking a tool only needs its name β€” 255 tools become 581 tokens (βˆ’99.2%). The full schema is fetched on demand with mcptoon inspect, only when a tool is actually called.

  • Skills the same way. One resident pointer (39 tokens) plus one lookup (791 tokens) replaces loading every SKILL.md in full β€” 1,572,330 β†’ 39 + 791 (βˆ’99.99%).

  • Results too. --toon re-encodes a tool's result as standard TOON. Measured 5.7% smaller on a mixed result sample, ranging 1.8%-48.6% by result shape β€” a list of records barely shrinks, a single record halves. Not a flat 34%: see assets/benchmark_results.json.

Nothing is lost: the full schema and the full skill text stay one command away. Only the context window is spared.

mcptoon is a 534KB, zero-dependency native CLI that manages every MCP tool and agent skill on your computer β€” and shares them across all your agents with no config written by you.

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:

mcptoon is the one you can use today: it covers any agent that can run a shell, and writes a single hookup line into the mainstream GUI clients it knows.


Two ways in

Install once, and every AI you have β€” Claude Desktop, Claude Code, Codex, Cursor, Windsurf, Cline, VS Code Copilot, Gemini CLI, Qwen Code, Zed, Crush, opencode and any other agent β€” shares all the tools and skills you already have. You write nothing in any agent's config.

β†’ Install and go

Script it. mcptoon is a plain CLI with stable JSON output and an mcptoon serve MCP endpoint β€” wire it into your own agent, CI, or app.

β†’ Commands and formats

Measure your numbers: pip install mcptoon && mcptoon bench β€” it reports your own catalog, not the fixed 255-tool sample below (that sample's method is in docs/tiktoken-benchmarks.md).

Without mcptoon

With mcptoon

Descriptions in context

full description of every tool + skill, re-sent every turn

a compact view β€” 581 tokens for 255 tools (βˆ’99.2%, lossless)

Adding a tool or skill

hand-write JSON in every agent

one command β€” no agent config touched

Which agents get it

only the ones you configured

every agent on the machine β€” they just run mcptoon

Finding tools & skills

hunt GitHub by hand

install --search (17,000+ MCP servers) + skills search

Starting from scratch

wire tools one by one

4 built-in starter packs β€” one command to a working set

Skills work the same way: 1,572,330 tokens of SKILL.md text β†’ 39 resident + 791 per lookup (βˆ’99.99%). Call results shrink a further ~6% with --toon (shape-dependent).


Path 1 Β· I just use AI tools

You have a desktop AI β€” Claude, Codex, Cursor, Windsurf, Cline, VS Code Copilot, and 97 more (full list of 103 β†’). Today, adding a tool or a skill means hand-editing that agent's JSON. mcptoon removes that step:

  1. Install once.

    pip install mcptoon && mcptoon quickstart

    quickstart finds your MCP servers, writes your config, and registers mcptoon in every agent it detects. (Skip quickstart and the first command you run still self-heals: it installs mcptoon's own skill into each agent and builds the skill index, once per machine.)

  2. Add tools and skills in one place β€” here, not in each agent.

    mcptoon install --search github     # find and install any MCP server
    mcptoon skills search "make a PDF"  # find a skill by what it does
  3. Use them from any agent. Your agent runs mcptoon like any other command β€” no config, no restart. See Works with every AI agent.

Want a head start? Four built-in starter packs β€” essentials, web-research, code-review, docs β€” stand up a working toolset in one command:

mcptoon install --pack essentials

Path 2 Β· I build with MCP / agents

mcptoon is a plain CLI with scriptable output, plus an MCP endpoint when you want one.

mcptoon manifest --format json      # machine-readable tool index
mcptoon call <server> <tool> '{}'   # call any tool, JSON or --toon output
mcptoon serve                       # expose every configured server behind one MCP endpoint
  • Stable output β€” JSON by default, --toon for smaller results (shape-dependent, 5.7% on a mixed sample), --format mcp to export standard MCP JSON.

  • mcptoon serve β€” stdio or HTTP, connection pooling, per-agent keys, for clients that insist on a proxy.

  • Zero dependencies β€” pure Python standard library, so it drops into any environment (CI, containers, air-gapped).

Full reference: DEVELOPERS.md and All commands.


Contents


30 seconds up and running

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

# One command: find your MCP servers, write your config, register the gateway
# in every agent you have, and show you what it found:
mcptoon quickstart

# 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).
# `everything` is only present if you already had it; otherwise add the built-in
# zero-dependency demo server first (no Node, no network) and call that:
mcptoon add demo --stdio python -m mcptoon demo-server
mcptoon call demo echo_message '{"message":"hi"}'

quickstart is also what makes mcptoon visible: it writes mcptoon serve into each agent's config as the reserved server mcptoon, so your agent can see mcptoon itself. Already synced? Re-register with mcptoon sync --self (plain mcptoon sync only writes your servers); check the state any time with mcptoon status.

Two ways in β€” and you don't pick one. mcptoon is a CLI first: a shell-capable agent runs mcptoon commands, and that is the cheapest path β€” the schemas never enter context. quickstart also registers mcptoon's own MCP entry (mcptoon serve) with each agent that takes one, so a client that can only see MCP servers still reaches your tools. The MCP entry ships in compact mode: it keeps your upstream tool list out of the model's context and sends it to mcptoon_manifest β†’ inspect β†’ call instead. mcptoon status shows both ledgers.

And it is fully reversible. The install registers the gateway, and by default quickstart also takes over β€” it routes your existing servers through the gateway and removes their direct entries (without that step your agent sees the same tools twice, once direct and once through the gateway, which costs more, not less). It is a listed, confirmed step, and it is undoable: mcptoon restore drops the gateway entry and puts your servers back exactly where they were. Anything you added to a config afterwards is left untouched. mcptoon off is the lighter switch β€” it removes only the gateway entry and leaves your servers where they are. Preview either with --dry, and preview the complete removal plan with mcptoon uninstall --dry (it prints exactly what it will remove first).

Don't want to install yet? Watch it work instead (needs Node):

uvx mcptoon demo --quick

It boots the official "everything" reference server, calls one tool, and prints the token math on your screen β€” no API key, none of your servers, nothing written to disk.


What it does

Tools: schema on demand

The full schema is compressed to a name index. When you need one, mcptoon inspect fetches its real parameters, then call runs it. You pay for a listing, not for every turn.

Skills: one resident pointer

No more loading the whole catalog. A single pointer line stays resident (39 tokens) and one lookup returns the most relevant skills (791 tokens). Views are links (a junction on Windows, no admin needed), so one edit at the source is live everywhere and there is no second copy to drift.

Install once, share everywhere

Install mcptoon once and every AI on the machine gets all your tools and skills. Add more later and it is live immediately β€” no agent restart, no per-agent JSON.

Add tools your way

mcptoon install brave-search --npm @modelcontextprotocol/server-brave-search
mcptoon install my-tool --pip mcp-my-tool
mcptoon install remote-api --url https://example.com/mcp
mcptoon add my-server --stdio npx -y @any/mcp-package
mcptoon install --list                       # see what's installed
mcptoon install --remove brave-search        # uninstall one

One command per server, from npm / pip / HTTP. Or let mcptoon scan what you already have: mcptoon discover.

A remote server that needs a token reads it from the environment, so no credential is ever written to disk:

mcptoon install remote-api --url https://example.com/mcp \
  --header 'Authorization: Bearer ${BAIZHI_TOKEN}'   # BAIZHI_TOKEN set in your environment

${NAME} is resolved at request time, so the config, the generated handler and every log keep the template β€” rotate the variable and the next call uses the new value, with no reinstall. A missing or empty variable fails loudly, naming it, never as an empty header.


Where the tools come from β€” search 17,000+, install with one command

On a new machine the first question isn't "how do I save tokens", it's "which tools do I even want". The old answer is to hunt GitHub for mcpServers snippets and hand-copy them into JSON.

mcptoon ships no tools and bundles no catalog. It queries the upstream registries, so you search for exactly what you need:

mcptoon install --search github     # search, list only β€” nothing installed
mcptoon install --search postgres
mcptoon install github              # search and install

Results carry a βœ“ (registry-verified), a type tag (npm / pypi / hosted / remote) and a call count. Data comes from two upstreams, queried live and never stored:

Source

What it is

Scale

Smithery

the largest MCP registry

17,000+ entries

Official MCP Registry

the official meta-registry

installable npm / pypi packages

Why nothing is bundled: a built-in list would need a release to update and would pull someone else's source into your supply chain. mcptoon stores only a pointer β€” the search writes one line into your own ~/.mcptoon/config.json; third-party source never lands inside mcptoon.

Then distribute to every agent:

mcptoon sync          # push the new tools to every detected agent
mcptoon manifest      # see every tool (name index, the cheapest view)

How to read a result: the index mixes official @modelcontextprotocol/* servers with packages individuals publish. A βœ“ means the registry verified the entry β€” your cue to read the source before you hand it credentials.

The skills half: skills search <query> queries the open skills index (skills.sh) β€” find a skill by what it does, then install it with skills add <git-url>. mcptoon installs the repos you point it at β€” the catalog is the open ecosystem itself.

Starter packs: if you'd rather not pick tool-by-tool, four built-in packs β€” essentials, web-research, code-review, docs β€” each bundle a few tools plus a ready-made prompt. mcptoon install --packs lists them; mcptoon install --pack essentials installs one. The two research packs need no API key.


The three bills, and why you must not mix them

mcptoon saves tokens in three separate places. Comparing the numbers across them is meaningless.

The figures below come from catalogs of three different sizes β€” a 255-tool synthetic sample (the fixed headline benchmark), a 1,109-tool machine, and whatever your own machine has. Do not compare a percentage from one against a token count from another; each table states which catalog it measures.

There are two ways to read "how much does this save?", and they answer different questions. The gateway figure β€” full schemas versus what the agent actually loads under the default compact exposure β€” is what installing mcptoon buys, and it is the honest headline (it scales with catalog size: the more tools you have, the larger it gets). The slim-schema figure (same tools, terser descriptions) is the smaller, secondary claim (88.5%), and it is what manifest --slim buys. mcptoon status prints both, side by side, from one measurement, so the two can never drift apart.

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

mcptoon manifest with no flags is this tier. Want more? --slim (names plus param types, 8,282 tokens, βˆ’88.5%) or --full (the complete schema).

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

This bill comes due after a tool returns. mcptoon call prints JSON by default and saves nothing by default. Add --toon to shrink the result.

Bill 3 Β· Skill catalog (skills): 1,572,330 β†’ 39 resident + 791 per lookup

mcptoon skills manifest                      # 39 tokens, resident
mcptoon skills resolve "make a PDF" --k 5    # 791 tokens, the 5 most relevant

One table, all three, on the machine this README was written on:

Path

What the agent loads

Tokens

vs native

Tool schemas (212)

every full schema

640,787

β€”

manifest (name index)

914

99.85%

manifest --slim

3,056

99.52%

Skill files (480)

every SKILL.md, full text

1,572,330

β€”

skills manifest (pointer)

39

99.99%

skills resolve --k 5

791

99.94%

The fixed headline benchmark β€” a synthetic sample of 255 tools across 50 servers, tiktoken cl100k_base. It is not your catalog; run mcptoon status to see your own numbers:

Format

Tokens

Savings

JSON

71,929

β€”

TOON

47,438

34%

SLIM

8,282

88.5%

Compact

581

99.2%

Measure your own catalog with mcptoon bench (it reports your tools, not this fixed sample). The exact three-format table above is reproducible too β€” no clone needed:

mcptoon manifest                 # populate the schema cache
python -m mcptoon.bench_tokens   # the same JSON / --slim / --compact counts, your tools

Method and caliber: docs/tiktoken-benchmarks.md.


Install

pip install mcptoon

Linux (Debian/Ubuntu 23.04+, and any distro that follows PEP 668), and Homebrew Python on macOS. A plain pip install into the system Python is refused there with error: externally-managed-environment. That is the distro protecting itself, not a problem with mcptoon. Install it the clean way instead:

pipx install mcptoon     # isolates the CLI; recommended
# or, into a virtualenv you control:
python3 -m venv ~/.mcptoon-venv && ~/.mcptoon-venv/bin/pip install mcptoon

pip install --break-system-packages mcptoon also works, but it writes into the system Python β€” prefer pipx or a venv. On Windows, pip install mcptoon just works.

# Run without installing (needs Node)
uvx mcptoon demo --quick

# Isolated CLI install (avoids the PEP 668 error on Linux / Homebrew Python)
pipx install mcptoon

# From source (for development)
git clone https://github.com/activeing123/mcptoon.git
cd mcptoon
pip install -e . --no-build-isolation

# Claude Code plugin
/plugin marketplace add activeing123/mcptoon

Nix

Packaged by numtide/llm-agents.nix β€” a bot follows every PyPI release, so the flake is never a version behind by hand:

# Run straight from the flake, no install step
nix run github:numtide/llm-agents.nix#mcptoon -- --help

The plugin and the skill are both surfaced through sudosubin/agents.nix as pkgs.agent-plugins.github.activeing123.mcptoon.<plugin-name> and pkgs.agent-skills.github.activeing123.mcptoon.<skill-name>.


Works with every AI agent

mcptoon reaches an agent one of two ways, and every client below falls into one of them. You don't pick β€” quickstart registers both, and each host takes whichever it can:

  • CLI leg β€” the agent runs mcptoon itself. Anything with a shell (a CLI agent, or a coding IDE with a terminal) needs zero config: it runs mcptoon call, mcptoon search, mcptoon skills resolve. Nothing is written into it at all.

  • serve leg β€” the client can't run a shell. A chat app or GUI mounts MCP instead, so it gets one entry: mcptoon serve as a single MCP server. One line, one place.

The market, covered. 103 clients, taken from awesome-mcp-clients plus vendor docs for the coding agents that postdate it; developer libraries (mcp-agent, mcp-client-go) are excluded because a user does not run them. Evidence is per client β€” we name what we verified, not what we assumed.

CLI leg β€” 42 clients, zero config (they run mcptoon themselves):

AdaL Β· Aider Β· Amazon Q Developer Β· auggie Β· Autohand Code CLI Β· Claude Code Β· Claude Code Open Β· ClaudeMind Β· Cline Β· Codex Β· ContextKit Β· Continue Β· Copilot CLI Β· Copilot-MCP Β· Crush Β· Cursor Β· Dexto Β· Dolphin-MCP Β· Enola Β· Gemini CLI Β· Goose Β· JDBCX Β· Junie Β· KiloCode Β· Kiro Β· McPico Β· MCPOmni Connect Β· mistral-vibe Β· Nerve Β· Octomind Β· opencode Β· OpenHands Β· PraisonAI Β· Qwen Code Β· Roo Code Β· Slack MCP Client Β· SwarmClaw Β· Trae Β· VS Code GitHub Copilot Β· Warp Β· Windsurf Β· Zed

serve leg β€” 61 clients, one mcptoon serve entry (no shell, so they mount MCP):

5ire Β· Agent Bridge Β· Agent-cli Β· AgentOne Β· AIaW Β· Ano Β· AnythingLLM Β· Argo-LocalAI Β· askit-mcp Β· AstrBot Β· BoltAI Β· BrowseWiz Β· Canvas MCP Client Β· CarrotAI Β· Chainlit Β· ChatMCP Β· Cherry Studio Β· Claude Desktop Β· console-chat-gpt Β· DeepChat Β· DocsGPT Β· eechat Β· Enconvo Β· Fastchat MCP Β· FLUJO Β· Glue Β· HyperChat Β· kibitz Β· Klavis AI Β· LangBot Β· LibreChat Β· LobeHub Β· Lutra Β· MCP Chatbot Β· MCP CLI client Β· MCP Playground Β· MCP Simple Slackbot Β· MCP SuperAssistant Β· MCPCLIHost Β· MCPHost Β· Memex Β· MindPal Β· NextChat Β· OpenClaw Β· oterm Β· Qordinate Β· Runbear Β· SeekChat Β· Simple AI Β· Superinterface Β· Tambo Β· Taskade Β· Tester MCP Client Β· Tiles Notebook Β· Tome Β· Vercade Β· WhatsMCP Β· Witsy Β· y-cli Β· Yume Β· Zin-MCP-Client

Evidence status β€” sync --self writes a hookup line into the 12 hosts we have verified against their own docs; every other host above is reached by the CLI or by mcptoon serve without a host-specific file, so there is nothing to verify per host.

What mcptoon writes, host by host

mcptoon is a CLI tool β€” a manager, not a resident proxy or service, and not a client library. Your agent never talks to your upstream MCP servers directly: it either runs mcptoon commands, or reaches them through mcptoon's own MCP entry (mcptoon serve). For the hosts that take a file, this is exactly what lands where:

Agent

How it hooks up

Claude Desktop

mcptoon sync --self adds one mcptoon entry to claude_desktop_config.json

Claude Code

mcptoon sync --self writes its config and a pointer into ~/.claude/CLAUDE.md

Codex

mcptoon sync --self writes a pointer into ~/.codex/AGENTS.md

Gemini CLI

mcptoon sync --self writes a pointer into ~/.gemini/GEMINI.md

Qwen Code

mcptoon sync --self writes a pointer into ~/.qwen/QWEN.md

Zed

mcptoon sync --self writes a pointer into Zed's AGENTS.md

Crush

mcptoon sync --self writes a pointer into ~/.config/crush/CRUSH.md

opencode

mcptoon sync --self writes a pointer into ~/.config/opencode/AGENTS.md

Cursor

mcptoon sync --self adds it to Cursor's MCP config; or put it in AGENTS.md

Windsurf

mcptoon sync --self writes mcp_config.json

Cline

mcptoon sync --self writes Cline's MCP config

VS Code Copilot

mcptoon sync --self writes VS Code's MCP config

Any agent that can run a shell

call mcptoon directly β€” zero config

# Agent needs GitHub access mid-task? It just runs:
mcptoon add github --url https://api.githubcopilot.com/mcp/
# Done. No JSON editing. No restart. No lost context.

mcptoon serve is the other direction: run all your configured servers behind one MCP endpoint, with connection pooling and per-agent keys, for clients that insist on a proxy. You don't have to choose between the two β€” the CLI stays the primary way in, and the bridge is wired alongside it wherever the host can take one.


Why a CLI, not a proxy

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

A command line is the one interface every agent already has. And the form factor is measurably cheaper on its own, before mcptoon does anything:

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

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

The proxy form exists too β€” mcptoon serve puts all configured servers behind one MCP endpoint β€” and quickstart wires it alongside the CLI, so you never have to choose. This section is about the shape mcptoon is built around, not a switch you have to flip.


Which mode is cheapest?

There are three ways mcptoon can hand tools to an agent, and they cost very differently. Only one is the cheapest, and it is not the state a fresh install starts in. (The token figures below are from the 255-tool sample; your own catalog differs β€” mcptoon mode prints your numbers.)

Mode

What the agent loads

Fixed cost every turn

When to use

CLI (cheapest)

nothing until it runs a command β€” then a name index (581 tokens for 255 tools) plus the one schema it needs

0

any agent that can run a shell

serve

mcptoon's own gateway tools instead of every upstream schema (the gateway figure β€” scales with catalog size)

small, fixed

a client that can only see MCP servers

direct

every full schema of every tool (71,929 tokens on the 255-tool sample)

largest

never, once mcptoon is installed

CLI is cheapest because it is idle at zero. It costs nothing on a turn that uses no tool, and a few hundred tokens only on the turn it does. serve is a close second β€” a small fixed bill every turn. direct is what you pay when mcptoon is installed but not wired into the agent, and it is where a fresh install sits, which is why mcptoon can feel invisible until you run mcptoon quickstart.

The "99%" in this README is the definition-side saving β€” from not loading every schema. CLI and serve both get it; direct does not. Result compression is a separate, much smaller bill (Bill 2 above) and is never the reason to install.

Find out which mode you are in β€” and what each costs on your catalog β€” with mcptoon mode; print a one-line badge with mcptoon statusline.


All commands

mcptoon quickstart              # one-shot start (discover + configure + register the gateway)
mcptoon discover                # scan this machine for MCP servers (--write to keep, --health to probe)
mcptoon import                  # import servers from Claude Desktop / Cursor / Cline / Windsurf
mcptoon init                    # create a sample config (--auto to discover and fill it)
mcptoon list                    # show configured servers
mcptoon manifest                # all tool names (compact by default; 255 tools = 581 tokens)
mcptoon manifest --sort alpha|usage|recent       # order the list (usage = your most-called first)
mcptoon manifest --top 3 --verbose              # cap to N tools per server; --verbose adds descriptions
mcptoon inspect <server> <tool> # inspect one tool's schema
mcptoon search <query>          # search tools across servers
mcptoon select "<task>"         # top 3 tools for a task (past ~40 tools, models pick wrong)
mcptoon select "<task>" --top 5 # ...or how many you want
mcptoon call <server> <tool> '{"args":"here"}'   # call a tool
mcptoon call <server> <tool> ... --transport sse|streamable  # HTTP transport preference (default auto)
mcptoon exec python "print(len(open('big.log').readlines()))"  # run code; only stdout enters context
mcptoon exec python --file analyze.py            # same, from a script file
mcptoon exec --langs                             # what this machine can actually run
mcptoon openapi list <spec>                      # any OpenAPI/Swagger REST API as commands
mcptoon openapi call <spec> <cmd> pet-id=2       # call one operation (params: name=value)
mcptoon openapi call <spec> <cmd> --base-url U   # override the server (prod vs staging)
mcptoon openapi call <spec> <cmd> --cache-ttl 0 --cache-key v2  # re-fetch the spec; keep versions apart
mcptoon graphql list <endpoint>                  # any GraphQL endpoint as commands
mcptoon graphql call <endpoint> <cmd> --fields "name id"  # one query/mutation
mcptoon auth login <name> --auth-url U --token-url U --client-id ID  # OAuth (PKCE)
mcptoon auth creds <name> --token-url U --client-id ID  # OAuth client credentials
mcptoon auth login <name> ... --register REG_URL --client-name mine  # DCR (RFC 7591) β€” no client-id needed
mcptoon openapi call <spec> <cmd> --auth oauth:<name>   # use a stored token
mcptoon resources list [server]                  # list a server's MCP resources
mcptoon resources read <server> <uri>            # read one resource by URI
mcptoon prompts list [server]                    # list a server's prompt templates
mcptoon prompts get <server> <name> a=1          # render a prompt with arguments
mcptoon complete <server> <ref>:<arg>=<prefix>   # ask the server to finish a value
mcptoon bake create <name> --openapi <spec>      # save a connection under a name
mcptoon bake create <name> --openapi <spec> --auth-header 'K: env:VAR'  # secret by reference only (env:/file:)
mcptoon bake run <name> <action> ...             # reuse a saved connection
mcptoon bake install <name> --bin ~/.local/bin   # write a launcher that only carries the bake name
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 --search <kw>   # search the live registries (nothing installed)
mcptoon update                  # refresh each server's cached tool surface; report what moved
mcptoon upgrade                 # update mcptoon itself to the latest PyPI release
mcptoon plugin install <dir>    # install an Agent Plugins 1.0.0 plugin
mcptoon sync                    # sync native config to every detected agent
mcptoon health                  # health-check every MCP server
mcptoon serve                   # run as an MCP server (stdio/HTTP)
mcptoon skills list             # list the skill catalog (--usage adds hit counts)
mcptoon skills sync <src>       # distribute a skill catalog to every agent's folder
mcptoon skills resolve "<task>" # BM25 shortlist of skills (offline, no LLM)
mcptoon docs index <dir>        # index a Markdown tree so agents stop reading it whole
mcptoon docs resolve "<query>"  # best files for a query β€” returns paths (offline)
mcptoon docs list               # every indexed document, by slug
mcptoon docs doctor             # check the docs index against the disk
mcptoon kb index <path>         # index documents so you can search INSIDE them
mcptoon kb fetch <url>          # fetch a URL and index it (24h TTL cache)
mcptoon kb search "<query>"     # ranked passages, not whole files (porter + trigram, RRF)
mcptoon kb list                 # indexed sources with size and age
mcptoon kb stats                # chunks, DB size, trigram support
mcptoon session                 # what happened this session (catch up after a compaction)
mcptoon bench                   # prove the savings on this machine (tools + skills, one table)
mcptoon demo                    # one command, live demo on your machine
mcptoon demo-server             # the same proof with zero downloads (11 stdlib tools)
mcptoon doctor                  # self-check: Python, config, connectivity
mcptoon status                  # one screen: what's configured, gateway wired, tokens saved
mcptoon stats                   # token-savings dashboard (vs raw JSON)
mcptoon report                  # the whole savings account: tools + skills + cumulative
mcptoon savings                 # milestones you've crossed (1B? ~12,000 novels?)
mcptoon credit                  # one screen: your mode, what it really saves, one action
mcptoon mode                    # which delivery mode you're in (cli/serve/direct) and what each costs
mcptoon statusline              # one-line savings badge for a status bar or turn header
mcptoon usage                   # local call statistics
mcptoon activity                # who used mcptoon, when, on what (last 20 calls)
mcptoon footer-facts            # one line of savings for a chat footer (never blocks)
mcptoon retrieve <handle>       # get back the original behind any --smart handle
mcptoon config                  # show gateway settings (footer, welcome, lang)
mcptoon toggle <server> <tool>  # enable/disable a single tool (--list to show all)
mcptoon policy                  # per-tool compression policy (raw / toon / slim)
mcptoon completion ps           # shell completion (bash/zsh/fish/powershell)
mcptoon off                     # remove the gateway entry from your agents (reversible)
mcptoon restore                 # drop the gateway and put your servers back
mcptoon uninstall               # full cleanup β€” prints the plan first (--dry to preview)

Full reference in DEVELOPERS.md.

Format family: four tiers, compact by default

All optional; the default is already the leanest tier.

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

toon (results)

reversible structured encoding

5.7% on a mixed sample (1.8-48.6% by shape)

open TOON standard

Why compact by default? Choosing which tool to use only needs names (581 tokens for 255 tools); parameter detail matters at call time and is fetched on demand. Defaulting to full schemas would hand the 99.2% right back.

The rule for agents: use manifest to choose, inspect before you call. Measured on 41 live tools: an agent guessing arguments from names alone lands ~10% valid calls, while one that runs inspect once for the 2–3 tools a turn actually uses hits 100% β€” identical to injecting every schema, at a fraction of the cost.


Trust and safety

It's just a 534KB native CLI β€” delete it anytime; keep it, and you never have to configure tools or skills for any agent again. mcptoon touches your agent configs, so it is built to be transparent β€” and easy to walk away from.

Three guards run on every tool result before your agent sees it:

Guard (on by default)

What it does

Destructive-action block

a dangerous call is refused unless you pass --destructive

Prompt-injection guard

results are scanned for injection patterns like "ignore previous instructions" and blocked

Credential-leak detection

a result carrying an API key or token is blocked before it enters context

  • Reversible. mcptoon restore undoes a takeover (drops the gateway and returns your servers); mcptoon off removes only the gateway entry; mcptoon uninstall --dry prints the full removal plan first. Your servers are never deleted unless you ask.

  • No telemetry. No analytics, no crash reports, nothing phoned home.

  • Local-first. Your tools, skills and files stay on your machine. The only thing that leaves is install --search, which asks the registries for a catalog listing β€” it never sends your data.

  • 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. CI enforces it with scripts/check_zero_deps.py.

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

  • Formats don't break compatibility. The wire protocol is always standard JSON-RPC; compact/slim/toon only affect mcptoon's output to the agent. If --toon decoding ever fails it falls back to JSON, and one --full restores the native schema. No lock-in.

Scope, in one line: mcptoon is an index and a config manager β€” it points you to each tool's own source, which you can review on its own terms.


Credits and references

  • TOON standard β€” v4.1 (MIT), vendored from python-toon and credited in NOTICE

  • ToonDeck β€” a GUI console for mcptoon (pre-alpha): same engine, point and click instead of typing commands

Who builds this: mcptoon is an independent third-party project maintained by @activeing123. It is not affiliated with Anthropic.


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   # 3010 passed, 2 skipped

Three hard rules: zero dependencies (CI-enforced), new behavior ships with tests, Windows is a first-class target. New here? Start with CONTRIBUTING.md and DEVELOPERS.md.

The codebase: 41,104 lines of Python across 56 modules, zero third-party dependencies.


Support

Hitting an error? Troubleshooting & FAQ covers the common ones (Server 'X' not configured, the skills sync mis-delete gate, unknown command/option exit codes, why a saving reads 99% not 100%, and a stale skills count).

mcptoon is a one-person side project and stays free for individuals. If it cut your context bill:

Team features are not built yet. One shared server list synced to every teammate's machine; a log of what got hydrated when. No pricing and no waitlist page β€” mail activeing123@gmail.com and it moves up the list.


License

Apache 2.0. See LICENSE and NOTICE.


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.

Star History Chart

Available Tools

12 tools
mcptoon_callCall any upstream toolA
Destructive

Run any upstream tool by its namespaced name (server_tool). Under the default compact exposure the tool list is withheld, so this is how you run one found via mcptoon_manifest. Arguments are validated first.

NameRequiredDescriptionDefault
nameYesNamespaced name in server_tool form, e.g. fetch_fetch.
argumentsNoArguments object for the tool; see mcptoon_inspect.

Output Schema

NameRequiredDescription
toolYes
resultNo
serverYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already communicate the open-world/destructive nature, so the description only needs to add context; it does so by noting the withheld tool list and that arguments are validated first. There is no contradiction between the description and the annotations.

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 sentences, each earning its place: core action, usage context, and validation behavior. No filler or repetition of schema/annotation data.

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 an open-world dispatcher, the description covers how a name is found, what form it takes, how to obtain the arguments object, and the validation guarantee. The output schema covers return expectations, so nothing critical 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 baseline is 3; the schema already documents the name pattern and points to mcptoon_inspect for the arguments object. The description's 'validated first' is behavioral rather than semantic parameter detail.

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 opens with a specific actionβ€”'Run any upstream tool'β€”and names the exact resource format ('namespaced name (server_tool)'). It also separates this execution tool from sibling discovery/introspection tools by pointing to how one arrives at a name via mcptoon_manifest.

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 a concrete when-to-use signal: under default compact exposure the tool list is withheld, so this is the route to run a tool discovered through mcptoon_manifest. It does not explicitly list when-not-to-use cases or name alternative tools, which keeps it a 4 rather than a 5.

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.

NameRequiredDescriptionDefault

No parameters

Output 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_inspectInspect one tool's parametersA
Read-onlyIdempotent

Show one upstream tool's full input schema β€” the parameters to call it with. Read-only; nothing runs. Use it after mcptoon_manifest names a tool.

NameRequiredDescriptionDefault
toolYesNamespaced name from mcptoon_manifest, e.g. fetch_fetch. A bare name works when only one server owns it.
serverNoServer that owns the tool; disambiguates a shared bare name.

Output Schema

NameRequiredDescription
toolYes
serverYes
inputSchemaYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description reinforces this with 'Read-only; nothing runs' and adds the workflow sequencing, but adds little beyond what annotations already convey.

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 that lead with the core action, then state the read-only behavior and the suggested usage context. There is zero filler or redundancy.

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 simple read-only inspection tool with full schema coverage, annotations, and an output schema, the description covers purpose, safety, and when to call it. 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 description coverage is 100% for both parameters, including the namespaced tool name and server disambiguation. The description adds no parameter-level detail beyond the schema, 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?

The description states a specific verb ('Show') and resource ('one upstream tool's full input schema'), and clarifies that it is read-only and executes nothing. This distinguishes it from mcptoon_call and other siblings despite not naming them explicitly.

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 explicitly says 'Use it after mcptoon_manifest names a tool,' giving a clear workflow context. The statement 'nothing runs' implies it is not for execution, but it does not name an alternative like mcptoon_call, so it stops short of a full when-not alternatives list.

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

mcptoon_kb_indexIndex a document for searchA
Idempotent

Chunk a local file or a URL into the knowledge base so mcptoon_kb_search can find passages in it. Indexing is what keeps the document out of your context window while staying searchable.

NameRequiredDescriptionDefault
urlNoA URL to fetch and index instead of a local path. Reuses the cached copy within its TTL.
pathNoA local file path to index.
sourceNoOptional label for this source in the index.

Output Schema

NameRequiredDescription
bytesNo
errorNo
chunksYes
sourceYes
indexedYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already disclose idempotence, non-destructiveness, and open-world behavior. The description adds real value beyond them by explaining chunking and the context-window rationale, though it doesn't address duplicate re-indexing or what happens when both url and path are supplied.

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 no filler; purpose comes first and the searchability rationale second. Nothing repeats the title or schema unnecessarily.

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

Completeness3/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 needn't be explained, and annotations cover the safety profile. However, with zero required parameters the description should clarify that at least one of url or path must be supplied and how they interact, which it leaves 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 coverage is 100%, so all three parameters are already documented, including URL caching TTL and optional source label. The description only restates the local-file-or-URL choice at a high level and adds no syntax or precedence detail beyond the 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 (chunk/index) and resource (local file or URL into the knowledge base) and explicitly ties it to sibling mcptoon_kb_search, so an agent can distinguish it from the retrieval tools without opening a 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?

The phrase 'so mcptoon_kb_search can find passages in it' gives a clear use context: index first, then search. No explicit when-not or alternative indexing paths are named, which keeps it just short of a 5.

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.

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

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_resolve_skillsResolve skills for a taskA
Read-onlyIdempotent

Return the skills that best match a task description, best first. Call this with the user's request before acting, then read the chosen skill's SKILL.md. Offline BM25 ranking, no LLM.

NameRequiredDescriptionDefault
kNoHow many candidates to return. The default 5 is enough to pick from; larger only when the top few look wrong.
taskYesWhat the user wants to do, in their own words. More detail ranks better than a single keyword.

Output Schema

NameRequiredDescription
kYes
queryYes
shortlistYesBest matches first, each with its BM25 score.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnly and idempotent annotations, the description adds that ranking is 'Offline BM25 ranking, no LLM.' This tells the agent the algorithm is deterministic and fast, and that no external LLM call is involved. This is useful behavioral context that the annotations do not cover.

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 two concise sentences. The first states the core function; the second gives the usage timing and the algorithm. No wasted words, and the most important info (purpose and when to call) is front-loaded.

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 has an output schema, so return values don't need explanation. The description covers what it does, when to call it, and the follow-up step (read SKILL.md). For a simple read-only resolution tool, this is complete.

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?

Schema description coverage is 100%, so the baseline is 3. The description adds extra guidance: 'More detail ranks better than a single keyword' for task, and for k it explains the default and when to increase it ('larger only when the top few look wrong'). These go beyond the schema descriptions, so a 4 is warranted.

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 clearly states the action: 'Return the skills that best match a task description, best first.' It specifies the resource (skills) and the matching criterion, and distinguishes this from simply listing all skills (a likely sibling). The verb is specific and unambiguous.

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 gives a direct usage instruction: 'Call this with the user's request before acting.' It also implies the workflow by telling the agent to read the chosen skill's SKILL.md after. It doesn't explicitly name alternatives or state when not to use it, but the context is clear enough.

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

mcptoon_retrieveRetrieve a compressed resultA
Read-onlyIdempotent

Get back the full, uncompressed text of a tool result mcptoon compressed. When a result ends with a line naming a handle, call this if the summary lacks a detail you need.

NameRequiredDescriptionDefault
handleYesThe handle from a result's 'mcptoon_retrieve handle=...' line, e.g. ab12cd34ef56.

Output Schema

NameRequiredDescription
foundYes
handleYes
originalNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: it describes what the call returns (the full uncompressed text) and the dependency on a handle emitted by the compression step.

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, both front-loaded with purpose then trigger; every clause earns its place and nothing is repeated or padded.

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-value detail can be omitted, and the description covers the remaining essentials: what is retrieved, why it exists (compression round-trip), and when to invoke it. Nothing needed 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 single handle parameter is already documented in the schema's own description, including its format and where it comes from. The description adds no syntax or format detail beyond what the structured field 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 and resource ('Get back the full, uncompressed text of a tool result mcptoon compressed') and ties it to the compression mechanism, which no sibling tool does. An agent can distinguish this from mcptoon_call or mcptoon_inspect 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 a concrete trigger condition: 'When a result ends with a line naming a handle, call this if the summary lacks a detail you need.' This is clear when-to-use context, though it stops short of stating when not to call it or naming an alternative retrieval path.

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.

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

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

mcptoon_sessionThis session's activityA
Read-onlyIdempotent

Summarise what has routed through this gateway in this project: tools used, files written, errors, git operations. Call it after a context compaction to catch up on where you were. It is on-demand, not automatic β€” the gateway cannot inject into your context itself.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
errorsNo
eventsYes
gitOpsNo
projectYes
toolsUsedNo
filesWrittenNo

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 safety is covered. The description adds genuinely non-derivable behavior: it must be pulled explicitly and cannot be auto-injected, which explains why an agent should invoke it proactively. Return shape is covered by the output schema.

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: the content summary comes first, then the invocation guidance and the caveat about non-automatic delivery. Nothing is redundant.

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 describing the return value and annotations covering the safety profile, the description supplies exactly the missing pieces β€” what is aggregated and when to call it. Nothing an agent needs to invoke it correctly is absent.

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 to disambiguate; the baseline for a parameterless tool applies. The description correctly implies no inputs are needed.

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 ('Summarise') and resource ('what has routed through this gateway in this project') and enumerates the covered content: tools used, files written, errors, git operations. The scope is unambiguous, though it never explicitly contrasts itself with siblings like mcptoon_usage or mcptoon_inspect that might also report activity.

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 a concrete trigger β€” 'Call it after a context compaction to catch up on where you were' β€” plus the important clarification that it is on-demand and the gateway cannot inject into context. No alternatives or exclusions are named, so it stops short of a 5.

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

mcptoon_skillsSkill catalogA
Read-onlyIdempotent

List the skills mcptoon indexes on this machine: slug and one-line description per skill. Read it once to learn what skills exist, then resolve the one you need with mcptoon_resolve_skills. Offline and read-only; pass include_aliases to also see alias cards.

NameRequiredDescriptionDefault
include_aliasesNoInclude alias cards, not only canonical skills. The default false keeps one row per real skill.

Output Schema

NameRequiredDescription
skillsYesOne entry per skill, sorted by slug.
totalSkillsYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already supply readOnlyHint, idempotentHint, and destructiveHint, so the description adds value by clarifying 'offline and read-only' and explaining the alias-card behavior. No contradiction with annotations; the only minor gap is no detail about result ordering or size, but the output schema covers return structure.

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, information-dense sentences with no filler. The purpose is front-loaded, and the follow-up tool reference and optional parameter hint each occupy their own meaningful sentence.

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 low-complexity, read-only catalog tool with one optional boolean parameter and a provided output schema, the description is complete. It covers what the tool returns, how to use it in the broader discovery flow, and its safety/offline characteristics.

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 include_aliases parameter is already well-documented in the schema. The description mostly restates the same meaning ('pass include_aliases to also see alias cards'), adding little beyond the schema baseline.

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 ('List'), a clear resource ('the skills mcptoon indexes'), and the output shape (slug and one-line description). It also distinguishes itself from the sibling mcptoon_resolve_skills by framing itself as the discovery step before resolution.

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 tells the agent to read this once to learn available skills and then resolve the target with mcptoon_resolve_skills. It also gives the optional include_aliases usage condition, making the intended workflow unambiguous.

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

mcptoon_usageToken savings so farA
Read-onlyIdempotent

How much this gateway has saved: tools compressed, tokens saved and the session call count. Call this when you want to tell the user what mcptoon did. Report these numbers verbatim; never estimate them yourself.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
savingsPctYes
tokensSavedYes
callsRecordedNoCalls mcptoon has recorded, cumulative across sessions.
footerEnabledYesFalse when the user turned the disclosure off.
toolsCompressedYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, and non-destructive behavior. The description adds genuinely useful behavioral context beyond those: 'Report these numbers verbatim; never estimate them yourself.' This is a real instruction about how to handle output data that prevents a common agent failure mode.

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, each earning its place. The first front-loads the resource and the specific metrics; the second delivers the when-to-call guidance and the verbatim-handling instruction. Zero filler words.

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 zero-parameter, read-only reporting tool with an output schema and full annotation coverage, nothing essential is missing. The description explains what the report contains, when to invoke it, and how the values must be handled. Low complexity means low documentation burden, and this fully meets it.

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 the baseline is 4. Schema coverage is provably complete at 100% since the schema is an empty object. The description's mention of the three reported metrics is output-related rather than parameter-related, but no compensation 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 names a specific resource (this gateway's savings) and enumerates the exact data points returned: tools compressed, tokens saved, and session call count. This verb+resource framing distinguishes it from siblings like mcptoon_health, mcptoon_manifest, and mcptoon_servers without needing to open their schemas.

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 an explicit trigger condition: 'Call this when you want to tell the user what mcptoon did.' This provides clear context for when the tool is appropriate. It stops short of a 5 because it doesn't explicitly name alternatives or state when not to use it, but the use case is 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. 3 tool updatesv0.8.26
    • Addedmcptoon_kb_index
    • Addedmcptoon_kb_search
    • Addedmcptoon_session
  2. 1 tool updatev0.8.2
    • Addedmcptoon_retrieve
  3. 13 tool updatesv0.8.1
    • Removeddemo_build_tool_manifest
    • Removeddemo_compare_formats
    • Removeddemo_decode_toon
    • Removeddemo_describe_runtime
    • Removeddemo_echo_message
    • Removeddemo_encode_toon
    • Removeddemo_estimate_tokens
    • Removeddemo_list_supported_agents
    • Removeddemo_report_benchmark_rows
    • Removeddemo_simplify_tool_schema
    • Removeddemo_validate_config_draft
    • Addedmcptoon_call
    • Addedmcptoon_inspect
  4. 2 tool updatesv0.7.23
    • Addedmcptoon_resolve_skills
    • Addedmcptoon_skills
  5. 1 tool updatev0.7.19
    • Addedmcptoon_usage
  6. 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

A4.2/5.0

Scored across 12 tools

Disambiguation4/5

Each tool has a describable job and the descriptions cross-reference each other (manifest→inspect→call, skills→resolve_skills, index→search→retrieve), which makes the intended chains clear. The weak spot is the meta/status cluster: health, servers, session and usage are all 'report something about the gateway', and an agent may briefly hesitate between health and servers or between session and usage.

Naming Consistency4/5

Every tool shares the same mcptoon_ namespace prefix and snake_case, so the set reads as one family. The trailing segment mixes verbs (call, inspect, retrieve, resolve_skills) with bare nouns (manifest, session, health, servers, skills, usage), so there is no strict verb_noun grammar, but it is predictable and readable.

Tool Count5/5

Twelve tools is squarely in the sweet spot for a gateway. Each one maps to a distinct need β€” discover, introspect, invoke, decompress, index, search, skills, and observability β€” and none looks like filler.

Completeness4/5

The invoke path (servers→manifest→inspect→call→retrieve) and the skills path are fully covered, with health and usage for diagnostics. The knowledge-base path is the gap: you can index and search, but there is no way to list what is indexed, delete or re-index a stale document, so an agent can create state it cannot clean up.

Maintenance

ActivityActive
ResponsivenessResponsive

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
    5 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
    D
    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