SayDo MCP server
Does the tool do what it says? Conformance receipts for MCP servers, and unknown when unchecked.
0 stars19 downloads/wk
Reviews
Write oneNobody has reviewed SayDo yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
SayDo tools (4)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
check_nowActually run a package in a sandbox and report what
inspect_definitionHash a tool definition and read its wording. Takes
scopeWhat SayDo can and cannot settle. CALL THIS FIRST.
statusWhether a package has a SayDo conformance receipt.
Public scan report
scanner v0.1.10 · 2026-10-29 · same rubric, same numbers if you re-run it
- Code scan30 source files scanned20/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 57 days ago12/15
- Maintainer identityregistry namespace matches repository owner6/10
Findings (1)
- mediumHeavily hex-escaped string (obfuscation)
obf.hex-densitysaydo-0.1.1/tools/plans.py: …x00\x00\x00" b"\x01\x00\x01\x00\x44\xac\x00\x00\x88\x58\x01\x00" b"\x02\x00\x1…
How SayDo compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 77/100
- higher than 50% of 48,243 servers
- Tools
- 4
- the typical server has 7
- Tools that change things
- 0%
- typical: 0%. Fewer write tools means less an agent can break
- Downloads a week
- 19
- more than 6% of 12,306 servers with a package
What its tools let an agent do: 4 read
Install SayDo in Claude Code, Cursor or VS Code
claude mcp add saydo -- uvx saydo
What the publisher says
From the SayDo repository's README, as published. We do not edit it. Read it on GitHub
╔════════════════════════════════════════════════════════════════════════════════════════════╗
║ ║
║ ███████╗ █████╗ ██╗ ██╗██████╗ ██████╗ ║
║ ██╔════╝██╔══██╗╚██╗ ██╔╝██╔══██╗██╔═══██╗ ║
║ ███████╗███████║ ╚████╔╝ ██║ ██║██║ ██║ ║
║ ╚════██║██╔══██║ ╚██╔╝ ██║ ██║██║ ██║ ║
║ ███████║██║ ██║ ██║ ██████╔╝╚██████╔╝ ║
║ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ║
║ ║
║ does the tool do what it says ║
║ ║
╚════════════════════════════════════════════════════════════════════════════════════════════╝DRAFT COPY — pending the owner's pass. Everything below is measured or mechanical, and none of it is a marketing claim, but the wording has not been approved.
A publisher declares, in a signed machine-readable contract, exactly what a tool does. A harness makes the tool run and checks it against that contract. Every run emits a hash-chained receipt anyone verifies in a browser, with no account, and without trusting the issuer.
The question it answers is narrow on purpose: does this tool do what it says? Not is it safe, not is it good. A tool that refuses to act has not been shown to be safe — it has not been shown anything, and SayDo says that in those words rather than returning a green tick.
What a verdict can be
pass the declared behaviour held under the run fail the tool did something it declared it would not not-covered the run established nothing either way
not-covered is never quietly upgraded to pass. Most of the interesting failures in this domain come from silence being read as good behaviour.
And a whole run resolves to one of four things, not two:
CONFORMANT it did what it said, and it was shown doing it NOT CONFORMANT it did something it declared it would not INCONCLUSIVE nothing failed, and nothing was established (revoked / expired, once a registry has spoken)
INCONCLUSIVE carries most of the weight. A server that declines every call — the commonest kind in the public sweep — makes no network request, writes no file and starts no process, so a naive harness marks all three as passes and issues a warrant for a program that did nothing. SayDo requires a run to have demonstrated conduct before any of those checks can pass, and a server describing itself does not count as conduct.
In your CI
with: command: python -m my_server declaration: saydo.declaration.json
- uses: vince-gonzalez/saydo@main
The build fails if the tool breaks its declaration, and also if the run established nothing — because a green check that proves nothing is worse than no check, being a claim of conformance that nobody actually made. Set require-coverage: false to let such a build through; the receipt still records it as inconclusive and never as a warrant.
This is the place the tool is worth the most. Coverage comes from the tool actually doing its work, which needs the credentials and inputs it accepts — and those exist in the publisher's own CI and essentially nowhere else.
Run it on anything
saydo puts one tool under test and writes a receipt. The tool does not have to be yours, and it does not have to be an F-Keys one:
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
SayDo: common questions
- Is SayDo MCP server safe?
- Mostly: it is graded B (77/100). Read the SayDo safety report
- How do I install SayDo?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does SayDo need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is SayDo maintained?
- The last commit was 64 days ago (2026-09-03). The latest release is v0.1.1.
- How does SayDo compare with other MCP servers?
- safety score 77/100 (higher than 50% of 48,243 servers); tools 4 (the typical server has 7); tools that change things 0% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.