The tool

Five commands.
One question each.

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 weigh v0.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
efaimo v0.1.0
weigh mcp  npx -y @modelcontextprotocol/server-everything
tools 13   resources 7   prompts 4

context cost of tool definitions (o200k tokens, estimated)
  raw JSON           1,607
  Claude-style       1,120   (~0.6% of a 200k window)
  OpenAI tools       1,142
  server instructions  312

heaviest tools (Claude-style)
   1. gzip-file-as-resource            202   desc 45 | schema 146
   2. simulate-research-query          131   desc 49 | schema 71
   3. get-annotated-message            102   desc 14 | schema 76
   4. get-resource-reference            84   desc 11 | schema 62
   5. trigger-long-running-operation      84   desc 11 | schema 62
   6. get-resource-links                78   desc 12 | schema 55
   7. get-structured-content            73   desc 12 | schema 49
   8. get-sum                           69   desc 6 | schema 52
      (+5 more)
      block framing                     58   (<functions> wrapper; per-tool lines + this = total)

note: token counts are estimates using the o200k_base tokenizer; hosts add fixed framing text on top (see docs/METHODOLOGY.md)

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 --mcp v0.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 --skill v0.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.md real 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 mcp v0.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 test v0.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 repo live runs 2026-07-17 · claude-sonnet-5 · 8 trials per arm

csv-cleanup helps on a messy CSV

+0points
with skill 8/8 without 8/8
examples/scenario.example.yaml

contoso-crm-import helps on an unknowable format

+100points
with skill 8/8 without 0/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.