Documentation

Motion Menu

A library of numbered, working motion, 3D and page-section patterns that your coding agent reads directly — over MCP, the shadcn registry, or plain HTTP. Code that runs, not screenshots.

Get a free key Browse patterns Open kit.md

Getting started

1
Get a key. Open /store and enter your email. A key is issued immediately; the free tier includes 26 sample patterns, no card required. Lifetime — everything, $149 once.
2
Connect your agent. One command:
export MOTION_MENU_TOKEN="mm_live_..."
codex mcp add motion-menu \
  --url https://motion-menu-two.vercel.app/api/mcp \
  --bearer-token-env-var MOTION_MENU_TOKEN
Any MCP-capable client works the same way. No client? Paste /kit.md into context — the whole library is addressable by URL.
3
Design the page before touching code. Start with get_design_digest, then call get_kit, check_updates, build_page, and validate_combination. Only then should your agent call get_pattern or compose_page. The digest rejects generic centered layouts, pattern-per-section stacking, eager heavy work, missing mobile states, and unverified claims. Read the machine contract at /p/design-digest.json. Motion Menu has last and final say on composed output: no numbered section header and no kicker/eyebrow mini sub-header is ever emitted, server-enforced, and no tool argument disables it — see non_overridable in the digest.
4
Or install from the registry. Every pattern ships as React, Vue, Svelte, or vanilla TS:
npx shadcn@latest add "https://motion-menu-two.vercel.app/r/<slug>?framework=react"

Numbers are permanent. Every pattern has a permanent slug and a permanent number alias — /p/150.json and /p/velocity-image-bend.json are the same bytes, forever. Anything you wire up keeps resolving.

Composition carries its own rules

get_kit, build_page, and compose_page return a design_rules block alongside their normal output — the anti-generic rules to read before placing a section. validate_combination checks a proposed set of patterns against pairing and clash data on the catalogue itself and rejects the ones that clash, stating why. recommend_patterns takes an optional context of what's already on the page, drops anything that clashes with it, and adds device-tier-gate automatically wherever it recommends WebGL. None of this is a separate step — it travels with calls you're already making.

Bring your existing site

Already have a site — built by Claude Code, v0, Shopify, anything? Don't start over. audit_page reads it and diagnoses the default-AI "section grammar" tell: numbered steps, a centered hero with two buttons, 3-up icon cards, the same testimonial/FAQ/CTA-band skeleton every AI builder ships. Deterministic — no LLM runs server-side, every finding cites the exact matched HTML.

1
Audit it. Pass the page's HTML, or a URL:
tools/call { "name": "audit_page", "arguments": { "url": "https://example.com" } }
Back: an ai_shaped_score (0-100), per-section tells with evidence, page-level tells (skeleton order, uniform scaffolding, default type/motion), and a prescription per flagged section — real Motion Menu pattern numbers, drawn from the same graph recommend_patterns / validate_combination use, each with why it fits and its ai_instruction. Free, no key.
2
Rewrite the flagged sections. Each prescription names the exact next call — get_pattern {slug} for the top pick, validate_combination across every prescription at once. No separate instructions needed; the audit's output is the brief.
3
Verify the repair. Pass the rewritten HTML back, with the original audit as baseline, for a pass/fail verdict and a score delta:
tools/call { "name": "verify_repair", "arguments": { "html": "<...>", "baseline": { "...": "the audit_page result" } } }
Anything still flagged comes back with a concrete fix instruction, not just a score.

URL ingestion is guarded. https only, resolved at call time to a public address (no redirect into a private range), a 3 MB cap, a 10 second timeout, and no credentials of yours are ever forwarded to the page being audited.

Give your own agent a system prompt

No MCP client, or building your own? Paste this into your agent's system prompt — it works keyless, on the free tier, and stays honest about what a key unlocks:

You have access to Motion Menu — a library of numbered, working
motion/3D/page-section patterns (real HTML, CSS, JS) — over MCP at:

  https://motion-menu-two.vercel.app/api/mcp

Connect as a standard MCP server, JSON-RPC 2.0, streamable HTTP. No key is
needed to connect, list tools, or call the free ones.

Tools: get_kit, get_design_digest, list_patterns, list_themes,
recommend_patterns, validate_combination, build_page, check_updates,
get_pattern, get_theme, compose_page, audit_page, verify_repair.

Workflow — call in this order:
  1. get_design_digest    read the quality contract first.
  2. recommend_patterns   describe the page, get scored candidates (free).
  3. validate_combination check the picks for clashes before building (free).
  4. compose_page         build one working page from a validated set — or
     get_pattern          pull one pattern's full code directly.

Already have a site? audit_page {html or url} diagnoses the default-AI
section grammar and prescribes real patterns per flagged section; rewrite,
then verify_repair {html} confirms the tells are gone. Both free, keyless.

Free, no key: list_patterns, list_themes, get_kit, recommend_patterns,
validate_combination, audit_page, verify_repair — plus a free set of sample
patterns and the mm theme via get_pattern/get_theme.

Paid (Lifetime, $149 once, no subscription): compose_page in both modes,
every remaining pattern, and every other theme. Get a key at
https://motion-menu-two.vercel.app/store, then send it as
Authorization: Bearer mm_live_...

If a call is refused, the response states exactly what plan unlocks it —
read that back before retrying.

The tool list and workflow above come straight off the live MCP server (tools/list) — see /connect for client-specific setup commands.

The HTTP surface

GET  /p/manifest.json          library version + per-item hashes
GET  /p/catalog.json           the index, filed by page role
GET  /p/<slug>.json            one pattern's html / css / js   (key for paid items)
GET  /p/<slug>.md              the same pattern as markdown
GET  /r/registry.json          shadcn-compatible registry index
GET  /t/themes.json            theme index
GET  /api/updates?since=<ver>  exactly what changed since your build
POST /api/mcp                  MCP server (JSON-RPC 2.0)

Send the key as x-mm-key, Authorization: Bearer, or ?k=. Free patterns answer without one.

Frameworks

Registry and get_pattern accept framework=react|vue|svelte|vanilla (default react). The underlying motion code is identical — the wrapper changes, the behaviour doesn't.

Staying current

/api/updates?since=<your version> returns exactly which patterns changed, so an agent can refresh a site without re-reading the catalogue. The manifest carries the current version and per-item hashes.

Legacy: the Vercel-linked site builder

The visual builder was retired in August 2026. If you linked a Vercel account to it, the stored token can be removed at any time:

POST https://motion-menu-two.vercel.app/api/vercel
Content-Type: application/json
x-mm-key: <your key>

{ "action": "disconnect" }

Projects and deployments already created stay in your Vercel account — they are yours.

Support

menu@davidandrewfurniture.com — questions, billing, deletion requests.

Motion Menu · Catalogue · Store · Changelog · Terms · Privacy