You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
A public record of api-mcp-server's tool definitions over time #67
I've been building a public log of MCP tool definitions, because clients ask a user to approve a server once and then never re-check. If a description changes in a later release, nothing tells that user.
Yours is the largest surface I've fingerprinted so far: 372 tools and just over 101,000 characters of description. horizons_createWebsiteV1 alone is 1,767 characters. That's a lot of model-facing instruction, and across 193 tags I'd guess a fair amount of it has moved.
That's the case this is built for. A user approved these tools at some version, and their client has not looked since. The log now has a fingerprint per tool, so any future change shows up as a dated diff rather than being invisible.
The log caught your release. Between 2 Sep 19:12 and 3 Sep 07:06 UTC, three tools were added (reach_createADraftCampaignV1, reach_createAnEmailTemplateV1, reach_listEmailTemplatesV1) and agency-hosting_createANewWebsiteV1 changed with a byte-identical description and a different fingerprint, so its schema moved while the text didn't.
Related to the diff above: there's now a GitHub Action that catches this in the PR that makes it, rather than after the fact. Add uses: GautamTalksDev/mcp-pin@v1 to a workflow with command: node and args: dist/index.js. Setup is in the README.
The baseline is a file in your repo and it doesn't contact anything. Schema changes that leave the description untouched get flagged first.
We keep a similar record — pin tool contracts and skill files, diff on every release — and your point about the description surface (372 tools, 101k chars) is well taken. One finding from our log that your fingerprint format doesn't capture: Hostinger also delivers agent-skill instructions as MCP resources, not tools.
Between 2.4.0 and 2.11.0, six SKILL.md files appeared silently through the resources channel:
audit-hosting/SKILL.md
connect-domain/SKILL.md
deploy-to-hosting/SKILL.md
maintain-wordpress/SKILL.md
migrate-to-hosting/SKILL.md
troubleshoot-website/SKILL.md
These are model-facing instructions delivered alongside the 372 tools you fingerprinted, but through a different channel (resources/list, not tools/list). A user who approved the 2.4.0 surface now receives new instruction content with no approval step — the tools are unchanged, the descriptions are unchanged, but the agent is being served new instructions it was never consented to.
We verified this across three versions: 2.4.0 had 6 resources (all hostinger-headless), 2.11.0 had 12 (+ the six above), and 2.13.0 (current latest) has the same 12 with tool contracts clean. The six skill files persist through the latest release.
This is the sharpest version of the staleness problem this issue describes: not just definitions changing, but new instruction payloads arriving through a channel the fingerprint doesn't watch. If your format ever adds a resources section, these would be the first entries.
Activity
GautamTalksDev commentedon Sep 3, 2026
Follow-up: here's a 35-second walkthrough of what this looks like when it fires, including a real change it caught on day one.
https://youtu.be/uDFFiV10hLo
GautamTalksDev commentedon Sep 3, 2026
The log caught your release. Between 2 Sep 19:12 and 3 Sep 07:06 UTC, three tools were added (reach_createADraftCampaignV1, reach_createAnEmailTemplateV1, reach_listEmailTemplatesV1) and agency-hosting_createANewWebsiteV1 changed with a byte-identical description and a different fingerprint, so its schema moved while the text didn't.
Full diff: https://mcp-pin.gautamkhosla.com/servers/c4fae9e413747b6a.html
GautamTalksDev commentedon Sep 3, 2026
Related to the diff above: there's now a GitHub Action that catches this in the PR that makes it, rather than after the fact. Add uses: GautamTalksDev/mcp-pin@v1 to a workflow with command: node and args: dist/index.js. Setup is in the README.
The baseline is a file in your repo and it doesn't contact anything. Schema changes that leave the description untouched get flagged first.
Paraphern commentedon Oct 12, 2026
We keep a similar record — pin tool contracts and skill files, diff on every release — and your point about the description surface (372 tools, 101k chars) is well taken. One finding from our log that your fingerprint format doesn't capture: Hostinger also delivers agent-skill instructions as MCP resources, not tools.
Between 2.4.0 and 2.11.0, six SKILL.md files appeared silently through the resources channel:
audit-hosting/SKILL.mdconnect-domain/SKILL.mddeploy-to-hosting/SKILL.mdmaintain-wordpress/SKILL.mdmigrate-to-hosting/SKILL.mdtroubleshoot-website/SKILL.mdThese are model-facing instructions delivered alongside the 372 tools you fingerprinted, but through a different channel (
resources/list, nottools/list). A user who approved the 2.4.0 surface now receives new instruction content with no approval step — the tools are unchanged, the descriptions are unchanged, but the agent is being served new instructions it was never consented to.We verified this across three versions: 2.4.0 had 6 resources (all
hostinger-headless), 2.11.0 had 12 (+ the six above), and 2.13.0 (current latest) has the same 12 with tool contracts clean. The six skill files persist through the latest release.This is the sharpest version of the staleness problem this issue describes: not just definitions changing, but new instruction payloads arriving through a channel the fingerprint doesn't watch. If your format ever adds a resources section, these would be the first entries.
Repro (resources diff between 2.4.0 and 2.11.0):
Happy to compare pin formats if useful — we ship a PIN-SPEC that covers both channels.