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.
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.

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 · Terms · Privacy