Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,533Letters: 13Defects: 1,322counted just now
teppi

Server definition

Hash
sha256:10aadfea11e42fbd252c0b9233b2a688d194f30d58984843e9656787311bb1c9
What it is
What a remote MCP server returned when asked what it offers: 11 tools

The blob, as servednamed by its sha256

{ "instructions": "Motion Menu — 597 numbered, working motion/3D/page-section patterns (real HTML, CSS, JS) that this agent reads directly and drops into a page.\n\nWORKFLOW, in order — each step grounds the next:\n 1. get_design_digest read the quality contract FIRST — the rules a generic page breaks.\n 2. recommend_patterns describe intent, get scored candidates. Free, metadata only.\n 3. validate_combination check picks for clashes/caps BEFORE building. Free.\n 4. get_pattern pull one pattern's full code, or a react/vue/svelte/vanilla wrapper.\n get_kit is the one-call shortcut — design laws plus the full index in a single response.\n Read it first if you want the whole picture before making individual calls.\n\nALREADY HAVE A SITE? Don't start over — audit_page {html or url} diagnoses the default-AI section grammar (numbered steps, centered hero + two buttons, 3-up cards, the same skeleton every AI builder ships) and prescribes real patterns per flagged section, by number. Rewrite with get_pattern, then verify_repair {html} confirms the tells are gone. Both free, keyless, no LLM server-side — deterministic evidence, not a vibe check.\n\nFREE: the entire library — all 597 patterns, list_patterns, get_kit, recommend_patterns, validate_combination and build_page all cost nothing, no key, no card. Motion Menu is free; we fund it building with it (Plinth: fixed-scope sites from these same patterns).\n\nAUTH: none required — every tool answers with no key. Optional keys exist only for usage metering on your own account.\n\nEXAMPLE:\n tools/call { \"name\": \"recommend_patterns\", \"arguments\": { \"intent\": \"dark minimal SaaS landing page\", \"role\": \"hero\" } }", "tools": [ { "description": "Audit an EXISTING page (yours or a client's — any AI builder, any stack) for the default-AI \"section grammar\" tell: numbered steps, a centered hero with two buttons, 3-up icon cards, a testimonial/FAQ/CTA-band skeleton repeating unchanged. Deterministic, no LLM — every finding cites the exact matched HTML. Returns an ai_shaped_score (0-100), per-section tells with evidence, page-level tells (skeleton order, uniform scaffolding, default type/motion), and prescriptions: real Motion Menu patterns to replace each flagged section, drawn from the same graph recommend_patterns/validate_combination use, plus the exact next tool calls to fetch and validate them. FREE, no key required.", "inputSchema": { "properties": { "html": { "description": "the page's full HTML — one page per call; a multi-page site is the caller's own loop", "type": "string" }, "url": { "description": "alternative to html — fetched server-side (https only, public addresses only, 3 MB cap, 10 s timeout, no redirect to a private range, no credentials forwarded)", "type": "string" } }, "type": "object" }, "name": "audit_page", "outputSchema": null }, { "description": "Design a complete page from intent. Returns an act map — 5–7 acts in page order, each with a purpose, recommended patterns (by slug), and a density rating (loud/quiet). Follows the one-page protocol: density wave pacing, one GL spectacle, 12–18 viewport-heights. Feed the result straight to get_pattern to retrieve the code. Returns metadata only — no pattern bodies.", "inputSchema": { "properties": { "acts": { "description": "Number of acts (default 6, range 5–7)", "type": "number" }, "direction_id": { "description": "One direction_id returned by propose_directions for this same intent/seed.", "type": "string" }, "exclusions": { "description": "Pattern slugs or numbers that must not be used.", "items": { "type": "string" }, "type": "array" }, "history": { "description": "Recently used pattern slugs or numbers to cool down.", "items": { "type": "string" }, "type": "array" }, "intent": { "description": "What the page is for, e.g. \"luxury real estate landing page\" or \"SaaS startup launch with pricing\"", "type": "string" }, "seed": { "description": "Reproducible creative seed.", "type": [ "string", "number" ] } }, "required": [ "intent" ], "type": "object" }, "name": "build_page", "outputSchema": null }, { "description": "Check whether patterns you already built with have changed. Pass the library version you last built against (from `version` in a previous check_updates or /p/manifest.json) and get back exactly which slugs were added, changed or removed — so you re-pull three patterns instead of all of them. Call with no arguments to read the current version and library counts. Record the version you get back alongside the code you generate.", "inputSchema": { "properties": { "since": { "description": "The library version you built against. Omit to just read the current one.", "type": "string" } }, "type": "object" }, "name": "check_updates", "outputSchema": null }, { "description": "Get the machine-readable Motion Menu quality contract. Call before build_page. It defines anti-generic composition rules, motion lifecycle, responsive requirements, truth constraints, and release verification gates.", "inputSchema": { "properties": {}, "type": "object" }, "name": "get_design_digest", "outputSchema": null }, { "description": "Get the Motion Menu build kit: the design laws, the one-page act protocol, stack pins, known gotchas, and the full pattern index. Call this FIRST before building a page.", "inputSchema": { "properties": {}, "type": "object" }, "name": "get_kit", "outputSchema": null }, { "description": "Get one pattern by number, including its complete transplantable HTML, CSS and JS. Pass framework to get a ready-to-use component wrapper (react .tsx, vue .vue, svelte .svelte, or vanilla .ts).", "inputSchema": { "properties": { "framework": { "description": "component wrapper format (default: raw HTML/CSS/JS)", "enum": [ "react", "vue", "svelte", "vanilla" ], "type": "string" }, "number": { "description": "pattern number, e.g. \"84\" — a permanent alias for the slug", "type": "string" }, "slug": { "description": "permanent identity, e.g. \"velocity-image-bend\" — preferred", "type": "string" } }, "type": "object" }, "name": "get_pattern", "outputSchema": null }, { "description": "List Motion Menu patterns. Every row is \"number slug <role> [tags] · title\". ROLE is where the pattern goes on a page (hero, nav, pricing, background, product, form…) — filter by it when you are building a page rather than hunting an effect. The SLUG is the permanent identity — prefer it. Filter by tag (e.g. \"scroll\", \"webgl\", \"seam\", \"commerce\"), by collection slug (e.g. \"seams-handoffs\"), by free-text query, or by legacy section letter. Call with no arguments to see the whole catalogue and its tag vocabulary.", "inputSchema": { "properties": { "collection": { "description": "optional collection slug, e.g. \"webgl-3d\"", "type": "string" }, "query": { "description": "optional substring filter on title/description", "type": "string" }, "role": { "description": "WHERE IT GOES on a page — hero, nav, footer, pricing, background, gallery, product, form, stats, testimonial, cta, content, seam, chrome, type. Start here when building a page.", "type": "string" }, "section": { "description": "legacy section letter, e.g. \"J\" — tags supersede this", "type": "string" }, "tag": { "description": "optional tag, e.g. \"scroll\", \"glsl\", \"commerce\"", "type": "string" } }, "type": "object" }, "name": "list_patterns", "outputSchema": null }, { "description": "Turn a business/page brief into three deliberately different design genomes before choosing components. Each direction defines layout grammar, typography, imagery, motion physics, density rhythm, and explicit avoid rules. Pass a returned direction_id into build_page with the same brief and seed.", "inputSchema": { "properties": { "brief": { "description": "Business, audience, offer, conversion goal, real assets, and brand constraints.", "type": "string" }, "seed": { "description": "Reproducible creative seed.", "type": [ "string", "number" ] } }, "required": [ "brief" ], "type": "object" }, "name": "propose_directions", "outputSchema": null }, { "description": "Intent-aware pattern recommendations. Describe what you are building — industry, style, mood, technical needs — and get scored results with reasons and compatibility suggestions. Returns metadata only (number, slug, title, role, score, reason, compatible_with). Call get_pattern to retrieve the actual code for any recommendation.", "inputSchema": { "properties": { "context": { "description": "Slugs or numbers already chosen for this page (order does not matter here). Recommendations that clash with any of them are excluded, a pattern already at its own max_per_page in context is skipped, and a WebGL pattern in context or in the results auto-adds device-tier-gate (245) as the fallback.", "items": { "type": "string" }, "type": "array" }, "count": { "description": "Max results (default 5, max 20)", "type": "number" }, "exclusions": { "description": "Pattern slugs or numbers that must not be returned.", "items": { "type": "string" }, "type": "array" }, "history": { "description": "Recently used pattern slugs or numbers. They receive a strong cooldown penalty instead of dominating every session.", "items": { "type": "string" }, "type": "array" }, "intent": { "description": "What you are building, e.g. \"premium SaaS landing page for enterprise AI startup\" or \"dark minimal portfolio with dramatic 3D hero\"", "type": "string" }, "role": { "description": "Optional page-role filter (hero, nav, pricing, footer, background, etc.)", "type": "string" }, "seed": { "description": "Reproducible creative seed. The same brief and seed return the same candidates; change it to explore another valid realization.", "type": [ "string", "number" ] } }, "required": [ "intent" ], "type": "object" }, "name": "recommend_patterns", "outputSchema": null }, { "description": "Check whether a set of patterns work well together. Pass the slugs (or numbers) of patterns you plan to combine on a page and get a compatibility report: overall score, per-pair analysis, style/industry coherence, intensity balance, page-flow coverage, and warnings (duplicate roles, missing positions, too many heavy patterns). Call BEFORE building to catch mismatches early.", "inputSchema": { "properties": { "components": { "description": "Pattern slugs or numbers to validate together", "items": { "type": "string" }, "maxItems": 20, "minItems": 2, "type": "array" } }, "required": [ "components" ], "type": "object" }, "name": "validate_combination", "outputSchema": null }, { "description": "Re-audit a page you just rewrote from audit_page's prescriptions and get a pass/fail verdict: fresh ai_shaped_score, the delta from the prior audit (pass baseline_score or the whole prior audit_page result as `baseline`), and any tells STILL present, each with a concrete fix instruction. FREE, no key required.", "inputSchema": { "properties": { "baseline": { "description": "optional — the whole prior audit_page result, for a per-section tell-count delta in addition to the overall score delta; baseline_score is derived from it if omitted", "type": "object" }, "baseline_score": { "description": "optional — the ai_shaped_score from the prior audit_page call, for a pass/fail delta", "type": "number" }, "html": { "description": "the rewritten page's full HTML", "type": "string" } }, "required": [ "html" ], "type": "object" }, "name": "verify_repair", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:10aadfea11e42fbd252c0b9233b2a688d194f30d58984843e9656787311bb1c9 | sha256sum