Specs that everyone
can work from.

Everyone writes specs: PMs, designers, engineers, AI agents. Same format. Same output. Every time.

Prose specs get misread.
By everyone.

01

Prose is ambiguous

02

The doc is always stale

03

A call isn't approval

04

AI has to guess

Prose vs. blocks.

Reset link expiry — what each person understood

PMwrote the spec
~24h?
Devwrote the code
7 days
AIgenerated from spec
30 min

With SPEC-R — one source of truth

acceptance_criteria
Email validates format before submit
Reset link expires after 24 hours
Success message shown regardless of email existence
approved · locked

structured output

One format.
Every spec.
Every time.

SPEC-R constrains AI output to named block types. Whatever you ask it to write — it answers in structured blocks. Every tool, teammate, and agent knows exactly what they're reading.

Parseable by agents
MCP tools read block types directly. No prompt engineering required.
Consistent for every reader
One spec looks the same to PMs, devs, and AI — whoever wrote it.
Lockable and diffable
Freeze approved blocks. Track every change at the block level.
user_story

What the user needs to do, and why

As a user, I can reset my password by entering my email address, so I can regain access to my account.

All block types

25types
user_storyacceptance_criteriaapi_endpointdata_modelscreen_speccomponent_spectest_specimplementation_planarchitecture_decisionheadingdtoenum_definitionpersonaproblem_statementsolution_overviewscope_boundarybusiness_ruleenvironment_configexternal_dependencyfile_structurediagramcodespec_linktextimage

For developers

Your IDE, your specs,
one config.

Add SPEC-R to Claude Code in under 5 minutes.

list_specs
get_spec
publish_spec
update_implementation
{
  "mcpServers": {
    "spec-r": {
      "command": "npx",
      "args": [
        "@spec-r/mcp-server"
      ],
      "env": {
        "SPEC_R_API_KEY": "sk-...",
        "SPEC_R_PROJECT_ID": "proj_..."
      }
    }
  }
}

Write.
Review.
Iterate.
Lock.

draft01
acceptance_criteria
Email validates before submit
Reset link expires after 24h
more criteria...
in review02
acceptance_criteria
Email validates before submit
Reset link expires after 24h
Sarah M. · PM

24h from creation or from last click?

revised03
acceptance_criteria
Email validates before submit
Link expires 24h from creation, not last click
Success shown on unknown email
✓ validated04
acceptance_criteria
Email validates before submit
Link expires 24h from creation
Success on unknown email
Previous tokens invalidated
read by Claude Code via MCP

Good specs ship.
Start here.

Free to start — bring your own AI key and wire to Claude Code in 5 minutes.