Attestation

/certify — signed attestations for MotionSpec spec documents

A MotionSpec spec document describes the motion a page ships. /certify signs such a document so anyone can later check that the exact spec you claim is the spec you were issued a signature for. It is evidence by reproduction: the signature covers the document, and the same document always yields the same compiled motion.

Status. The endpoint is live and key-bound. New keys are issued through the Dev Key plan, and that tier is paused — not on sale today while key delivery is being rebuilt. Existing keys keep working. Write to hello@motionspec.dev if you need one before it reopens.

What it is — and what it is not

Where it runs

On the hosted MCP service, not on this website. Two routes, both POST, both key-bound:

POST https://api.motionspec.dev/certify          sign a spec document
POST https://api.motionspec.dev/certify/verify   check a signature

Authentication is the same single header as every other keyed route — treat the key like a password:

x-motionspec-key: <your key>

Example

curl -sS -X POST https://api.motionspec.dev/certify \
  -H "content-type: application/json" \
  -H "x-motionspec-key: <your key>" \
  -d '{"spec": { ... your MotionSpec spec document ... }}'

And to check a signature someone hands you:

curl -sS -X POST https://api.motionspec.dev/certify/verify \
  -H "content-type: application/json" \
  -H "x-motionspec-key: <your key>" \
  -d '{"spec": { ... }, "signature": "<the signature>"}'

Both routes are POST only and fail closed. Without a valid key they answer 401 {"error":"unauthorized"}; GET answers 404 (measured 18 Aug 2026). The keyless tools motion_catalog and motion_validate stay open and need no key at all.

Before you need a key

motion_validate checks a spec against the schema and is free and keyless — run it first, in the playground or from any MCP client. Signing only makes sense once the spec is the one you actually ship.

Scope, rate limits and what is stored are documented on /docs. Nothing you submit to the keyless tools is stored; for the keyed routes we record the tool name, a non-identifying key label, the plan tier, timestamp and outcome — never the spec contents. See the Privacy Policy.