Skip to content

The README's tool table lost a tool, and two directories copied the gap - #94

Merged
peopleworks merged 1 commit into
mainfrom
readme-mcp-table-write-report
Sep 9, 2026
Merged

The README's tool table lost a tool, and two directories copied the gap#94
peopleworks merged 1 commit into
mainfrom
readme-mcp-table-write-report

Conversation

@peopleworks

Copy link
Copy Markdown
Owner

write_report shipped and its row was never added to the root README. The table listed nine tools, and the sentence under it said "the first seven run entirely on the machine" when eight do.

src/SignsOfAI.Mcp/README.md had it right the whole time. Only the file visitors read was wrong — and that is the file directory listings copy from. Found today while auditing those listings:

  • TensorBlock/awesome-mcp-servers (merged 25 Jul, live): describes six tools, "Those four run locally", and tells people to dotnet build from source.
  • punkpeye/awesome-mcp-servers (PR #14052): same six-tool description, now corrected in that PR.

Neither is a repository where we can leave a guard, so the guard goes here.

The guard

McpToolDocumentationTests reads src/SignsOfAI.Mcp/Tools/*.cs for [McpServerTool(Name = ...)] and requires both READMEs to mention every tool. The on-device/server split is derived from OpenWorld = true — the flag that actually means a tool leaves the machine — never typed, so the counts cannot drift from the code.

It follows WhyPageTests, which exists for the same reason: a comment asking the next person to remember is not a guarantee.

Proved by reverting the fix. On the stale README it fails 2 of 4, naming write_report and the wrong sentence. On the correction, 4 of 4. Full suite: 438 passing.

This is the fifth time something the tool says about itself went stale without anyone measuring it.

🤖 Generated with Claude Code

https://claude.ai/code/session_015PEbbiYSNPw7jE3LrPNhyF

write_report shipped and its row was never added to the root README, so the
table listed nine tools and the sentence under it said "the first seven run
entirely on the machine" when eight did. src/SignsOfAI.Mcp/README.md had it
right the whole time; only the file that visitors read was wrong.

That file is what directory listings copy from. Six weeks later the merged
TensorBlock entry and the open punkpeye one both describe six tools and tell
people to install from source, in repositories where we have no guard.

So the guard reads the server's own [McpServerTool] attributes -- including
OpenWorld, which is what actually means a tool leaves the machine -- and
requires both READMEs to agree. Verified by reverting the fix: it fails on
exactly the two real defects and passes on the correction.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015PEbbiYSNPw7jE3LrPNhyF
@peopleworks
peopleworks merged commit 9dfa232 into main Sep 9, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant