Skip to content

mcptoon changelog

io.github.activeing123/mcptoon

34 changes recorded. MCP Harbor re-reads this listing from the official registry every six hours and asks the live server what it exposes, and keeps what changed between one look and the next.

  • AGENTS.md +7 −1

    https://raw.githubusercontent.com/activeing123/mcptoon/HEAD/AGENTS.md

    −   grace window sized to its bot (2h tap, 24h registry, 72h numtide).+ Windows note: the tap's `auto-bump.yml` is a **twice-daily cron** (measured runs+ 06:49Z and 19:44Z, gaps up to ~13h), so the Homebrew grace window is **14h**, not 2h+ (raised 2026-11-12). At 2h the gate reported Homebrew as blocking for hours after+ every release while the formula was already correct — v0.8.37's tap commit landed+ 3.3h after the release — and a false red trains people to ignore the job. A tap that+ is genuinely broken is still caught within 14h.+   grace window sized to its bot (14h tap, 24h registry, 72h numtide).
  • server.json 1 field changed
    version
    0.8.36 0.8.40

  • server.json 1 field changed
    version
    0.8.35 0.8.36

  • server.json 1 field changed
    version
    0.8.34 0.8.35

  • llms.txt +9

    https://mcptoon.github.io/llms.txt

    + ## Guides+ - [Too many Claude Code skills?](https://mcptoon.github.io/guides/claude-code-skills-too-many/) — what a skill catalog costs per turn (1,572,330 -> 39 tokens for 489 skills) and the resident-pointer fix.+ - [`tools/list` token bloat](https://mcptoon.github.io/guides/mcp-tools-list-token-bloat/) — what the protocol method returns on a 255-tool catalog (71,929 tokens) and what a name index returns instead.+ - [Too many MCP tools? (EN)](https://mcptoon.github.io/guides/mcp-tools-too-many/) · [中文](https://mcptoon.github.io/guides/mcp-tools-too-many/zh/) — why a few hundred tool schemas cost more than the conversation, how to tell whether that is your problem, and the name-index fix.+ - [Too many MCP tools in Cursor?](https://mcptoon.github.io/guides/cursor-mcp-tools-too-many/) — the same bill inside Cursor specifically: what `tools/list` costs per turn, how to spot it in Cursor, and the gateway fix.+ - [MCP tool overload](https://mcptoon.github.io/guides/mcp-tool-overload/) — what tool overload is, the three symptoms, and what actually reduces it (71,929 -> 581 tokens on the benchmark corpus).+ - [LLM tool calling overhead](https://mcptoon.github.io/guides/llm-tool-calling-overhead/) — where function-calling overhead comes from, a two-minute audit for your own catalog, and the three levers.+ - [MCP server discovery tool](https://mcptoon.github.io/guides/mcp-server-discovery-tool/) — discovery is half the job; the other half is what each server costs your context. Local discovery plus per-catalog pricing.+ - ["Context low" in Claude Code?](https://mcptoon.github.io/guides/claude-code-context-window-full/) — why tool catalogs, not conversations, usually drain the window, and why auto-compact can't fix re-injection.

  • AGENTS.md +3 −2

    https://raw.githubusercontent.com/activeing123/mcptoon/HEAD/AGENTS.md

    − | numtide/llm-agents.nix | S-tier: packaged; bot auto-follows since init PR #7839 (zimbatm) | Release discipline above; after each release, confirm the bot PR merged |− | `microsoft/winget-pkgs` | PR #443014 open (0.8.3), awaiting a community moderator (validation pipeline already passed) | manual: needs a self-contained zip asset per version. Advisory-only in the drift gate. Say "PR submitted", never "on winget" until merged. **Decided 2026-10-02:** merge 0.8.3 first to claim the version number (version directories are immutable in winget), then file a fresh 0.8.5 manifest afterwards. Do not reopen the PR to change its version, and do not chase the moderator. + | numtide/llm-agents.nix | S-tier: packaged; bot auto-follows since init PR #7839 (zimbatm). Its derivation fetches the **GitHub tag** (`fetchFromGitHub { tag = "v${version}"; hash = …; }`), not PyPI and not `main` — so a fix on `main` reaches it only after a release. Its build runs **our** `pytest` suite inside the Nix sandbox (`pytestCheckHook`), which means a flaky test of ours blocks their PR: measured 2026-10-29, `checks.aarch64-linux.pkgs-mcptoon` failed with `RESPONSE_TIMEOUT != PROCESS_D+ | **sudosubin/agents.nix** | S-tier: packaged **twice** — as an agent *skill* and as an agent *plugin* (`data/agent-skills/github.com/activeing123/mcptoon.json` and `data/agent-plugins/…`, two separate files). Its own bot auto-follows; 6+ merged PRs in three days, each titled `0.8.x → 0.8.x`. Measured 2026-10-30: already at **0.8.33**, hours after release. **It was not in this ledger until now** — nothing watched it, which is the same structural gap that let the Homebrew tap drift four releases + | `microsoft/winget-pkgs` | **PR #460772 open (0.8.27)** — the only one still open. Three earlier submissions were closed unmerged: #443014 (0.8.3) and #450462 (0.8.17) closed together 2026-10-21, #457898 (0.8.25) closed 2026-10-24. **Re-verified 2026-10-29** — the row previously named #443014, which had been closed for eight days, so the standing obligation was tracked against a dead PR. `release_sync.py` reads the live number and was always right; only this prose was stale. | manual: needs a s

  • server.json 1 field changed
    version
    0.8.33 0.8.34

  • server.json 1 field changed
    version
    0.8.32 0.8.33

  • server.json 1 field changed
    version
    0.8.31 0.8.32

  • server.json 1 field changed
    version
    0.8.30 0.8.31

  • server.json 1 field changed
    version
    0.8.29 0.8.30
  • server.json 1 field changed
    version
    0.8.28 0.8.29
  • server.json 1 field changed
    version
    0.8.27 0.8.28

  • server.json 1 field changed
    version
    0.8.26 0.8.27

  • AGENTS.md +14 −2

    https://raw.githubusercontent.com/activeing123/mcptoon/HEAD/AGENTS.md

    − - **Update the `Tests-<n> passed` badges** in `README.md` and `README.zh-CN.md` (and the−   matching comment in their contributor sections) to the suite total of the release.+   **Use `python scripts/bump.py X.Y.Z`** — it rewrites all of the above *plus* the+   `softwareVersion` in both landing pages and the `vX.Y.Z · N passed` line in+   DEVELOPERS.md / ROADMAP.md (the surfaces `test_registry_sync` and+   `test_footprint_claims` also check), and renames `## [Unreleased]` to the new+   version. Then run those guard suites to prove the tree is consistent.+ - **The test total is on eight surfaces — let the script write it.**+   `python scripts/sync_claims.py --apply` measures collection and rewrites the+   `tests-<n>%20passed` badges in both READMEs, the one-line `N passed · M skipped`+   claim on the landing pages / DEVELOPERS / ROADMAP, the prose `N tests` spelling,+   and `docs/tiktoken-benchmarks.md`, then runs `test_footprint_claims.py` to prove+   it. Adding tests without running it is how the badges drift; note the badge text+   is lowercase `tests-` (a case-sensitive guard missed it for months — fixed+   2026-10-17).+ | HOL Registry (`hol.org`) | listed; **owner-verified 2026-10-22** (GitHub provenance check; the granted scopes are `read:user` + `user:email` only — no repo access) | free Owner-verified badge + a followed link on the verified listing. A live README badge exists but its `trust` metric is still `unknown` — do not paste it until it resolves. It is a listing, not a versioned channel: nothing to re-publish per release |
  • server.json 1 field changed
    version
    0.8.25 0.8.26

  • server.json 1 field changed
    version
    0.8.24 0.8.25

  • server.json 1 field changed
    version
    0.8.23 0.8.24

  • server.json 1 field changed
    version
    0.8.22 0.8.23

  • server.json 2 fields changed
    version
    0.8.20 0.8.22
    website_url
    https://activeing123.github.io/mcptoon/ https://mcptoon.github.io/

  • AGENTS.md +26

    https://raw.githubusercontent.com/activeing123/mcptoon/HEAD/AGENTS.md

    + ### Step 7 (added 2026-10-11) — prove the skill still loads in a host+ ```powershell+ python scripts/check_skill_loadable.py     # from the ops zone, not this repo+ ```+ The skill's frontmatter must parse with a **real** YAML parser. If it does not, the+ host does not error — it *drops the skill with a warning nobody reads*: the file+ ships, installs into every view, stays byte-identical in all three copies, and is+ never loadable. **Exit code 2 means at least one copy or installed view failed to+ parse — fix it before releasing.**+ This step exists because of a measured failure, not theory: the 0.8.16 skill+ (`6245006`, 2026-10-07) wrote `description` as a double-quoted scalar with two inner+ quotes left unescaped (`` `mcptoon docs resolve "<question>"` ``). A double-quoted+ scalar ends at the first unescaped `"`, so the value closed early; PyYAML and DSH's+ `yaml` package both rejected the block, and every strict host dropped the skill for+ **four days** while all mcptoon's own tooling stayed green. The in-repo guard+ (`tests/test_skill_package.py`) now pins the shape, but it only sees the three+ shipped copies — CI cannot see the installed views (the source skills tree and the+ per-agent skill folders) that a host actually reads. This checks both, and+ cross-checks against PyYAML rather than a home-grown rule.+ Design limits, so the check does not turn into noise:+ - **Blocking** = any copy or view whose frontmatter fails to parse.+ - **Advisory** = the description's length against the host's catalog budget+   (currently 1024 chars; the skill is ~1900, which the host renders every turn).+   It is printed, never compared, and never blocks a release.+ - It is a strict-parse proxy: if PyYAML accepts the block, every YAML-based host+   will too. It cannot see a host that reads frontmatter without a YAML parser.

  • server.json 1 field changed
    version
    0.8.19 0.8.20

  • server.json 1 field changed
    version
    0.8.18 0.8.19

  • server.json 1 field changed
    version
    0.8.17 0.8.18
  • server.json 1 field changed
    version
    0.8.16 0.8.17

  • AGENTS.md +36 −2

    https://raw.githubusercontent.com/activeing123/mcptoon/HEAD/AGENTS.md

    − | Chocolatey community package | listed (0.8.3); 0.8.5 submitted, awaiting review | manual: build the nupkg, push, wait for the automated review. Advisory-only in the drift gate |− | `microsoft/winget-pkgs` | PR #443014 open (0.8.3), awaiting a community moderator | manual: needs a self-contained zip asset per version. Advisory-only in the drift gate. Say "PR submitted", never "on winget" until merged |+ ### Release notes are in English (added 2026-10-04)+ **The GitHub Release title and body are English — always.** The body is the `CHANGELOG.md`+ block for that version, verbatim; the title is `vX.Y.Z — <short English summary>`. Do not+ paste a commit subject into the title, and do not hand-write a translated body.+ Why this is a rule and not a preference: the Release is a *global* surface. The numtide+ packaging bot and its maintainers, the PyPI project page (which renders this body), the MCP+ Registry, Glama's reviewers and every upstream PR author read it. The Chinese-facing surface+ already exists and is `README.zh-CN.md`. Measured drift this rule prevents: v0.8.12 shipped+ with a Chinese title (the `release:` commit subject, pasted into `name`) and v0.8.11 with a+ fully Chinese body that was never in `CHANGELOG.md` at all — 2 of 47 releases, both fixed+ 2026-10-04. `CHANGELOG.md` itself has stayed 0.0% CJK throughout, so following it is enough+ to stay English; the failure mode is bypassing it.+ ### Batch the release, don't ship every finding (added 2026-10-02)+ **A release is the unit of a finished topic, not of a single fix.** Ship one version per+ topic once the topic is exhausted — not one version per discovery. Measured cost of the+ alternative: **six releases on 2026-10-02** (0.8.6 → 0.8.11), each one a full ritual+ (version in 5 places, 3 claim surfaces, CHANGELOG, tag, GitHub Release, 3 workflow runs,+ tap dispatch, drift gate, ledger in 2 places) — roughly an hour of mechanical work per+ version, and most of it repeated. Worse, every release resets the numtide grace window,+ so the bot that packages us stayed pinned at 0.8.7 all day and could never catch up.+ Rules that follow:+ - **Finish the attack surface before you bump.** If you are probing one module (or one+   class of defect), keep finding and fixing until the probe reports nothing, *then*+   release once. 0.8.10 and 0.8.11 were both products of the same adversarial technique on+   adjacent code and could have shipped together.+ - **Same topic, same version.** A fix and the test that pins it and the docstring it+   corrects belong to one release. Splitting them across versions is what "one finding,+   one release" looks like from the outside.+ - **Cap the cadence at one release per day** unless a shipped defect is actively+   corrupting data or blocking installs. If a second release seems necessary the same day,+   the honest question is whether the first one should have waited.+ - **Do not batch unrelated work into one version to satisfy this rule.** The rule is+   "finish the topic", not "hoard changes". A release with two unrelated themes is harder+   to reason about than two releases with one theme each.+ | Chocolatey community package | listed and **approved at 0.8.5** (2026-10-02 verified: OData `Published=2026-09-30T12:07:12Z`, package page `Approved`) | manual: build the nupkg, `PUT` it, wait for moderation. **There is no automation** — `release_sync.py` lists this one as advisory, so a new release needs a human to push the package. Advisory-only in the drift gate |+ | `microsoft/winget-pkgs` | PR #443014 open (0.8.3), awaiting a community moderator (validation pipeline already passed) | manual: needs a self-contained zip asset per version. Advisory-only in the drift gate. Say "PR submitted", never "on winget" until merged. **Decided 2026-10-02:** merge 0.8.3 first to claim the version number (version directories are immutable in winget), then file a fresh 0.8.5 manifest afterwards. Do not reopen the PR to change its version, and do not chase the moderator. 

  • server.json 1 field changed
    version
    0.8.15 0.8.16

  • server.json 1 field changed
    version
    0.8.14 0.8.15

  • server.json 1 field changed
    version
    0.8.13 0.8.14
  • server.json 1 field changed
    version
    0.8.12 0.8.13

  • server.json 1 field changed
    version
    0.8.11 0.8.12

  • server.json 1 field changed
    version
    0.8.8 0.8.11
  • server.json 1 field changed
    version
    0.8.6 0.8.8
  • server.json 1 field changed
    version
    0.8.5 0.8.6