Skip to content
MotionSpec
Docs

Connect the MotionSpec MCP

MotionSpec is the MCP server for checking UI animation accessibility in AI-generated web apps. The MotionSpec MCP server is one URL: https://api.motionspec.dev/mcp. It's free, keyless and remote (Streamable HTTP) — there is nothing to install locally, no API key to manage, and nothing you send to the keyless tools is stored. The two keyless tools, motion_catalog and motion_validate, turn UI animation from something a model improvises into something it composes and checks. Setup takes about two minutes in any MCP client.

Connect the hosted MCP (keyless)

Claude Code

claude mcp add --transport http motionspec https://api.motionspec.dev/mcp

Then type /mcp to confirm the server is connected.

Claude Desktop

Open Settings → Connectors → "Add custom connector", name it MotionSpec, paste https://api.motionspec.dev/mcp, and save. Because the server is keyless, there is no OAuth step and no token field; the connector is usable immediately.

Cursor or any MCP client

Add the server to the client's MCP configuration:

{
  "mcpServers": {
    "motionspec": { "url": "https://api.motionspec.dev/mcp" }
  }
}

Or run it locally (no key needed)

The MIT core is on npm; it runs the same tools over stdio, entirely on your machine:

npm i -g motionspec        # MIT core
npx -y motionspec          # stdio MCP server
motion catalog             # list primitives
npx -p motionspec motion audit https://example.com --json  # no global install

The tools

Keyless (open on the free, unauthenticated tier; rate-limited):

  • motion_catalog — list the 40 reviewed motion primitives.
  • motion_validate — check a motion spec against the schema, fail-closed.

Keyed (require an API key):

  • motion_compile — deterministic code output (vanilla-GSAP JS + CSS) with the reduced-motion guard and a performance budget enforced by default.
  • motion_audit — a static motion-accessibility check of a live URL against WCAG 2.2.2 and 2.3.3.
  • motion_stats — routing and compilation telemetry.

All five tools are listed in tools/list. Without a key, the three keyed tools answer with a short pointer to /pricing instead of a result. A Dev Key ($39/month, one domain) or the Agency plan ($249/month, up to ten domains) unlocks them on the hosted endpoint. Locally, the same three run for free: npx motionspec starts the MIT stdio server with all five tools, and motion compile spec.json / motion audit <url> run from the CLI.

Keyed spec attestations run over /certify — what it signs, the two routes and a curl example.

Keys come with the Dev Key — see the packages →

What a key adds

A key (Dev Key, $39/month; Agency, $249/month) adds four things on top of the free check and the MIT package:

  • A portal — your account page (linked from the key e-mail): the plan, the key prefix, the domains you have added, rotate the key, cancel.
  • A weekly re-scan of the homepage of each added domain — the same static CSS scan as the free check, dated and kept as an audit history per domain. A regression against the previous week is flagged in that history (no automatic customer email notifications).
  • One key, up to 10 domains on Agency (one domain on the Dev Key) — added and removed by you in the portal.
  • Ad-hoc motion_audit on any public URL — the domain list governs the weekly re-scans and the audit history, not what you may audit by hand.

Since motionspec 1.2.8, the CLI and local MCP tools use scoring v2, like the free check and Motion Report. Older releases used scoring v1; update and re-baseline before comparing scores. For hosted MCP results, check the response's scoring field before comparing runs. See Scope.

Using your key

Authentication is one header on every keyed request — treat the key like a password:

x-motionspec-key: <your key>

In an MCP client (Claude Code, Cursor, …), point at the same remote server and add the header:

{
  "mcpServers": {
    "motionspec": {
      "url": "https://api.motionspec.dev/mcp",
      "headers": { "x-motionspec-key": "<your key>" }
    }
  }
}

Sanity check: curl -s -H "x-motionspec-key: <your key>" https://api.motionspec.dev/health — 200 means you're in; without the header the same route answers 401. The keyless tools (motion_catalog, motion_validate) keep working without a key. Keys are issued via the Dev Key plan on /pricing.

Scope & what's stored

Be clear on what the tools do and do not do. motion_validate checks a spec against the schema; motion_audit is a static CSS scan against WCAG 2.2.2 (Pause, Stop, Hide) and WCAG 2.3.3 (Animation from Interactions) — it is not a full accessibility audit, and runtime JS/GSAP motion is not audited. Compiled output is reduced-motion-safe by default: the guard and a performance budget are in place at compile time. It is not a general accessibility guarantee and does not claim conformance with any specific accessibility law.

Scoring v2 and comparable results. Since motionspec 1.2.8, the CLI and local MCP tools use scoring v2, like the free check and Motion Report. Older releases used scoring v1; update and re-baseline before comparing scores. For hosted MCP results, check the response's scoring field before comparing runs. Read status first: not-measurable means score is null, not a pass. Only compare measurable results with the same scoring version, input content and fetch coverage. The static scan reads at most 12 linked stylesheets, with a 2 MB response cap and an 8-second timeout. See how the tools line up against other checkers on /compare.

Nothing you submit to the keyless tools — no spec contents, no prompts — is stored; the keyless URL needs no signup and no token. See the Privacy Policy for the full data statement.

Rate limits & status

The keyless tier is rate-limited (60 requests per 10 seconds; excess is throttled and returns HTTP 429). An uptime canary runs every minute. Status and support: hello@motionspec.dev.

How to buy (for agents)

Buying on a user’s behalf is a three-line protocol:

  • 1. Pick a tier — Motion Report $29 one-time · Dev Key $39/mo · Agency from $249/mo. Fourteen‑day refund, no questions asked.
  • 2. Check out — today’s checkout bills in USD via the existing Stripe links on /pricing — append ?client_reference_id=<surface>-<market>, e.g. docs-report-US. All three tiers have a Stripe checkout on /pricing.
  • 3. Count yourself — fire a counting beacon: POST /api/ping-pricing?cta=docs-report-US. Allowed ids: docs-report-US, docs-agency-US.
Try a tool before you connect anything.

The browser playground runs the live motion_validate from the keyless MCP — no key, nothing stored.

Open the playground

Generating web UI at scale? See the Design Partner Program.