efaimo is a CLI and nothing else. No account, no hosted service, no
config file, no daemon sitting between your agent and your tools. It
reads what you already have and prints what it found. All five exist
today: four print below exactly as they ran, and the fifth's first
live measurements are quoted with their provenance.
efaimo weighv0.1, live
What does this cost me?
Counts the tokens a server or a skill adds to your context, reproducing the way your host actually serializes it. Point it at a stdio command, a URL, a repo, a skill folder, or a whole installed client config.
$npx efaimo weigh "npx -y @modelcontextprotocol/server-everything"real run · 2026-07-18
The same run the cost page is built from. Run it yourself and you should get these numbers back; that is the point of them.
efaimo check --mcpv0.1, live
Does this survive July 28?
Grades description quality and annotation hygiene, then prints 2026-07-28 readiness separately as a migration diff, not graded until the spec finalizes. Every rule names the SEP it came from.
$npx efaimo check --mcp "npx -y @modelcontextprotocol/server-everything"real run · 2026-07-18
efaimo v0.1.0
check mcp npx -y @modelcontextprotocol/server-everything
grade A (95) quality: 0 errors 1 warning 0 info
! E122 tool "echo": description misses 3/4 quality axes (length 40..600; says when to use it; mentions the result)
2026-07-28 readiness 4 items to migrate (a migration diff, not graded: the spec finalizes 2026-07-28)
! E104 server declares the logging capability; MCP Logging is deprecated in 2026-07-28 (SEP-2577) and logging/setLevel is removed
fix: log to stderr (stdio) or use OpenTelemetry; per-request level arrives via _meta io.modelcontextprotocol/logLevel
! E106 server/discover is not implemented (-32601 Method not found)
2026-07-28 servers MUST implement server/discover (SEP-2575) to advertise versions, capabilities, and identity; clients also use it as the back-compat probe.
fix: the 2.x SDKs implement server/discover for you
! E118 tools/list result omits ttlMs and/or cacheScope, which 2026-07-28 requires on list and resource-read results (SEP-2549, CacheableResult)
required on tools/list, prompts/list, resources/list, resources/read, resources/templates/list, and server/discover; cacheScope is "public" or "private"
fix: return ttlMs and cacheScope on these results so clients can cache and stop polling; the 2.x SDKs add them for you
i E107 results do not carry the resultType field required in 2026-07-28 ("complete" | "input_required")
the RC requires resultType on every result (SEP-2322); on list results the value must be "complete". RC clients treat missing resultType from earlier-protocol servers as "complete", so this is informational until you upgrade.
rules: https://github.com/efaimo-ai/efaimo/blob/main/docs/RULES.md
The official reference server. The grade is quality only; the July 28 items print under it as a migration diff, ungraded until the spec is final. Even the reference implementation has homework, which is the news.
efaimo check --skillv0.1, live
Is this skill worth loading?
Frontmatter schema, trigger collisions across everything you have installed, token budget, reference integrity, injection patterns.
$npx efaimo check --skill ./SKILL.mdreal run · 2026-07-18
efaimo v0.1.0
check skill efaimo
grade A (100) 0 errors 0 warnings 0 info
no findings. clean.
rules: https://github.com/efaimo-ai/efaimo/blob/main/docs/RULES.md
The dogfood clause from the method page, executed: this is efaimo grading its own SKILL.md. It has to keep this grade to ship.
efaimo mcpv0.1, live
And when your agent is the one asking?
A read-only MCP server over efaimo itself: efaimo_check_skill and efaimo_weigh_skill, files only, nothing that spends money. It is graded by its own check --mcp like any other server.
$node dist/cli.js check --mcp "node dist/cli.js mcp"real run · 2026-07-18
efaimo v0.1.0
check mcp node dist/cli.js mcp
grade A (100) quality: 0 errors 0 warnings 0 info
no quality findings. clean.
2026-07-28 readiness 3 items to migrate (a migration diff, not graded: the spec finalizes 2026-07-28)
! E106 server/discover is not implemented (-32601 Method not found)
2026-07-28 servers MUST implement server/discover (SEP-2575) to advertise versions, capabilities, and identity; clients also use it as the back-compat probe.
fix: the 2.x SDKs implement server/discover for you
! E118 tools/list result omits ttlMs and/or cacheScope, which 2026-07-28 requires on list and resource-read results (SEP-2549, CacheableResult)
required on tools/list, prompts/list, resources/list, resources/read, resources/templates/list, and server/discover; cacheScope is "public" or "private"
fix: return ttlMs and cacheScope on these results so clients can cache and stop polling; the 2.x SDKs add them for you
i E107 results do not carry the resultType field required in 2026-07-28 ("complete" | "input_required")
the RC requires resultType on every result (SEP-2322); on list results the value must be "complete". RC clients treat missing resultType from earlier-protocol servers as "complete", so this is informational until you upgrade.
rules: https://github.com/efaimo-ai/efaimo/blob/main/docs/RULES.md
Run from the repo checkout; once published this is: npx efaimo check --mcp "npx -y efaimo mcp"
The grader grading its own server, and printing its own homework: clean on quality, three items on the migration diff, because a fully stateless 2026-07-28 server wants the 2.x SDK. What it flags on itself (server/discover, the cache fields) is exactly what it flags on the official reference server above. We hold ourselves to the bar we sell.
efaimo testv0.1, experimental
Did the skill actually help?
Runs the same task with the skill and without it, then reports the delta. In its first live runs one skill moved a task from 0/8 to 8/8 and another moved nothing, and both lint clean, which is the point.
First measurements, quoted from the repolive runs 2026-07-17 · claude-sonnet-5 · 8 trials per arm
csv-cleanup helps on a messy CSV
+0points
with skill8/8without8/8
examples/scenario.example.yaml
contoso-crm-import helps on an unknowable format
+100points
with skill8/8without0/8
examples/scenario.crm.yaml
Both skills pass the linter clean. One is pure context overhead for a
capable model; the other encodes a convention the model cannot guess, and
rescues the task from zero. No amount of linting can tell those two apart,
and an A/B run can. That is the whole reason this command exists.
This slot said "no output to show" until the harness ran
for real. The deltas are quoted from the repo's live
session because re-proving them costs real API money; the
scenarios are committed, so a checkout with a key can.
Everything above ships in v0.1.0: npx efaimo runs it, npm i -D efaimo
pins it. The runs are real, from 2026-07-18: two against public
packages, two from inside the repo checkout, and the test deltas
quoted from the repo's own live session. The CLI is on npm now, so
you can rerun any of them yourself; the captures stay as the record.