memoire
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PENPOT_TOKEN | No | Token for accessing Penpot API (required when using --penpot option) | |
| PENPOT_FILE_ID | No | File ID for the Penpot file to pull from (required when using --penpot option) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pull_design_systemA | Pull the full design system from Figma (tokens, components, styles) into the local registry. Prereq: Figma bridge running + plugin connected — verify with check_bridge_health; start via |
| pull_design_system_restA | Pull the design system from Figma via REST API — no plugin or bridge required. Prereq: FIGMA_TOKEN and FIGMA_FILE_KEY env vars.
Returns: { tokens, components, styles, lastSync }.
Errors: missing env vars, or Figma API errors (403 = bad token, 404 = bad file key). Use in CI/headless; equivalent to |
| get_specsA | List all saved specs (cheap summary operation). Returns: [{ name, type: "component"|"page"|"dataviz"|"design"|"ia", purpose? }]; [] when none exist. Use before create_spec (overwrite check) or generate_code; fetch a full body with get_spec. |
| get_specA | Fetch the full body of one spec by name. Returns: full spec JSON — ComponentSpec: atomicLevel, props, variants, composesSpecs, codeConnect, WCAG fields; PageSpec: sections, meta; DataVizSpec: chartType, dataShape. Errors: isError if the name is not found (list names via get_specs). |
| create_specA | Create or overwrite a spec in the registry (Zod-validated). Same-name specs are silently overwritten — check get_specs first. Returns: |
| generate_codeA | Generate shadcn/ui + Tailwind code from a saved spec and write files into atomic design folders (atoms → components/ui/, molecules/organisms/templates → components//). Returns: { entryFile, files[], generatedAt, findings[], critique? }. For page specs, critique is an AI layout score (0-100) + hierarchy/spacing/consistency notes when an AI provider is configured — informational only, never blocks. Errors: isError if specName is not found. isError with { blocked: true, findings } if a critical quality-gate finding (raw hex/color when tokens exist, a token-pair contrast failure, or a strict-mode skill-compliance violation) prevented the write — pass force:true to write anyway after reviewing the findings. |
| get_tokensA | Get design tokens from the local registry, optionally filtered. Prereq: none — local read; run pull_design_system if empty. Returns: [{ name, type: "color"|"spacing"|"typography"|"radius"|"shadow"|"other", values (keyed by mode), cssVariable? }]; [] when none. format "dtcg" returns the same tokens as a W3C Design Tokens (DTCG) document instead — nested groups, $type/$value, lossless via $extensions. Filter by type/name to keep payloads small on large token sets. For a Tailwind-ready mapping use sync_design_tokens. |
| get_shadcn_registryA | Build a shadcn registry.json-compatible index from the workspace (component specs; tokens map to a registry:theme item when present). Returns: { $schema, name, homepage, items[] } with file targets, registryDependencies, cssVars. For a single item use get_registry_item. |
| get_registry_itemA | Return one shadcn registry-item.json-compatible item from the workspace. Returns: files, targets, dependencies, cssVars, and Atomic Design metadata. Errors: isError if the item is unknown (discover names via get_shadcn_registry). |
| diagnose_app_qualityA | Diagnose UI quality for an existing shadcn/Tailwind app from code or a public URL. Returns on success: App-quality diagnosis V2 with scores, issues, evidence locations, affected files, confidence, effort estimates, fix categories, and app graph summary. Use this tool: before planning UI fixes, exporting a registry, or giving an AI editor context on real app design debt. |
| generate_health_reportA | Compose one self-contained design-health report (HTML + markdown) from all persisted .memoire audits — app quality, UX tenets/traps, interface craft, skill compliance, and the score trend, with provenance badges, the not-assessed legend, and the active policy hash. Prereq: run diagnose_app_quality (or the CLI audits) first so artifacts exist; missing sections are listed, never silently omitted. Returns: { html, markdown, score, sections[], missing[] }. Static content — write it wherever needed. redact=true strips evidence excerpts (paths stay) for NDA-safe sharing. |
| check_skill_complianceA | Check real source files for the objectively-checkable rules in skills/ATOMIC_DESIGN.md (composition, state, data-fetching, naming) and skills/MOTION_VIDEO_DESIGN.md (motion tokens, reduced-motion, GPU-safe properties) — a post-hoc, deterministic verification pass, the same mechanism a linter uses to enforce a style guide. This does not read the skill docs at check time or make an agent obey markdown — the checkable rules are hand-extracted into regex/string checks. It closes the gap where nothing downstream ever notices whether an agent actually followed those docs. skills/DESIGN_SYSTEM_REFERENCE.md is a pure external-system catalog with zero checkable rules and contributes nothing here. Prereq: none — no Figma, no AI, works entirely offline.
Returns: { version, target, generatedAt, findings: [{ severity, rule, file, message, fix?, docRef }], summary: { critical, warning, filesChecked } }.
Real enforcement requires wiring |
| plan_ui_fixesA | Build a dry-run UI fix plan from diagnosis evidence and app graph data. Returns on success: { patches[], summary, caveats[] } where every patch includes risk, confidence, affected files, operations, and writeSafe. This tool never modifies source files. Use this tool: to decide what a human or coding agent should patch before calling memi fix apply or making manual edits. |
| audit_ux_tenets_trapsA | Audit UX tenets and traps from app-quality evidence or a screenshot artifact. Returns on success: UX audit JSON with score, tenetCoverage, trapRisks, findings, and recommendedTweaks. This tool does not modify source files. Use this tool: when an agent needs a focused design critique packet for clarity, feedback, control, consistency, accessibility, error recovery, progressive disclosure, workflow fit, trust, and state continuity. |
| audit_interface_craftA | Audit interface design craft from local app-quality evidence or a screenshot artifact. Returns: InterfaceCraftReport JSON — score, critique, dimensions, findings, topOpportunities (lenses: visual design, interface design, conventions, user context). Use before UI edits or after a redesign; pairs with diagnose_app_quality and audit_ux_tenets_traps. |
| prepare_design_agent_briefA | Prepare a cost-aware design-agent brief before editing UI. Returns on success: JSON with mission, evidenceCommands, designRules, costControls, compatibility installs, MCP command, Agent Skills command, and handoffChecklist. Use this tool: as the first MCP call when a coding agent is asked to design, polish, audit, refactor, or generate interface code. It is local-first and does not call Figma, browsers, or models. |
| prepare_apple_design_briefA | Prepare a compact, local-first Apple-platform design and verification brief. Returns: mission, skill triggers, availability policy, Xcode preflight, design checks, build/test commands, and handoff requirements. Use before creating or changing SwiftUI, SwiftData, App Intents, Liquid Glass, or concurrency-sensitive UI. This tool does not run Xcode or mutate files. |
| scaffold_swiftui_filesA | Preview or write a deterministic SwiftUI feature scaffold. Default approved=false is non-mutating and returns every planned path and file body: Memi iOS spec, SwiftUI view, optional screen model, preview, and Swift Testing file. Set approved=true only after reviewing the plan. Writes never alter Xcode project files and refuse to overwrite existing files. |
| scaffold_agent_design_filesA | Preview or write a spec-first Atomic Design scaffold for agent-created files. Default is non-mutating: approved=false returns a dry-run JSON plan with the exact spec path, guardrails, and next generation commands. To write the spec, pass approved=true. This writes only the registry spec; generated code still requires generate_code or memi generate, so quality gates stay intact. |
| update_tokenA | Update a design token value in the local registry, optionally pushing to Figma. Prereq: token must exist (names via get_tokens); Figma connection only for pushToFigma. Returns: { updated: true, name, pushedToFigma, reason? } — a requested-but-skipped or failed push is reported in reason, never silently dropped. Errors: isError if the token name is not found. For bulk Tailwind mapping use sync_design_tokens. |
| capture_screenshotA | Capture a screenshot of a Figma node (or the current page) as image data. Prereq: bridge + plugin connected (check_bridge_health); node IDs from get_selection or get_page_tree. Returns: { type: "image", data: base64, mimeType }. Feed into analyze_design; first step of the self-heal loop (CREATE → SCREENSHOT → ANALYZE → FIX). Prefer SVG for vector components, PNG for complex frames. Errors: isError if not connected or the node is invalid. |
| get_selectionA | Get the nodes currently selected in Figma with layout/style details. Prereq: bridge + plugin connected; returns [] if nothing is selected. Returns: [{ id, name, type, width, height, x, y, layoutMode?, padding/sizing/itemSpacing?, fills?, strokes?, effects?, styles?, variantProperties? }]. Use for node IDs (capture_screenshot, analyze_design) or reading layout/variants before writing a spec. Errors: isError if not connected. |
| composeA | Run the agent orchestrator on a natural-language design intent — classifies, builds a multi-step plan, executes it. Prereq: Figma bridge only for Figma-touching intents. Returns: { success, plan: { steps[] }, results[], summary, errors? }; success=false with errors on failure (per-step failures do not abort the plan). Examples: "create a dashboard page with KPI cards, a chart, and a data table"; "audit button variants for WCAG contrast"; "pull design system, then generate all missing component specs". Be specific — name components, atomic levels, and target output. |
| run_auditA | Run a deterministic design-system audit (WCAG contrast, token completeness, spec accessibility) and return structured findings. Prereq: none — token/spec level, no Figma, no AI. Returns: { success, results: issues[], score, level, summary }. focus="contrast" narrows to token contrast pairs; focus="skill-compliance" checks real source files against ATOMIC_DESIGN.md/MOTION_VIDEO_DESIGN.md's checkable rules. vs analyze_design: run_audit = systematic spec/token compliance; analyze_design = AI vision review of a live Figma frame. |
| design_systems_contextA | Normalize design-systems-mcp corpus data into compact, deterministic agent context. This read-only tool validates caller-supplied JSON and never fetches URLs, reads files, writes files, or executes corpus content. Use mode=corpus with a native manifest plus filename-keyed entries, or mode=category with the proposed category-manifest/v1 envelope. Returns byte-capped context plus inclusion counts. |
| get_researchA | Load and return the project's user research V2 store — observations, findings, personas, themes, quantitative metrics, and quality metadata. Prerequisites: None — reads from the local .memoire/research/ directory. Research data is populated by running Returns on success: Research store object with shape { version, sources, observations, findings, themes, personas, quantitativeMetrics, opportunities, risks, contradictions, quality, summary, methods }. Findings include auditable evidence links via Error behavior: Never throws — loads gracefully and returns an empty store if files are missing. Use this tool: before running compose with a research-driven intent (e.g. "generate a dashboard based on user research"), to inspect what research context is available, or to verify that a research import or synthesis succeeded. Combine with compose to ground design decisions in actual user data. Research stores grow large — request only the sections you need (default is a summary with per-section counts). |
| research_design_packageA | Preview a research-backed vibe design package from ResearchStore V2 plus an optional simulation run. Returns on success: { package } with brief, Atomic Design specs, evidence ids, Mermaid Jam-ready source artifacts, and warnings. This tool is non-mutating; call research_generate_specs to write specs or mermaid_jam_export to write FigJam source files. |
| research_generate_specsB | Write research-backed Atomic Design specs generated from ResearchStore V2. Prerequisites: Call research_design_package first to preview. This tool requires approved=true to make the write explicit. Writes DesignSpec, IASpec, PageSpec, ComponentSpec, and DataVizSpec objects through the Memoire registry. |
| mermaid_jam_exportB | Write Mermaid Jam-ready FigJam source artifacts from research or a simulation run. This is source + open friendly: it writes .mmd/.md files under .memoire/mermaid-jam and returns next steps. It does not attempt clipboard or direct paste automation. |
| simulation_modelsA | List Codex-first model profiles available to Memoire model-swarm simulations. Live model execution is opt-in; unavailable providers automatically fall back to deterministic clean-room simulation. |
| simulation_list_runsA | List persisted simulation runs with lightweight summaries. Use this to discover runIds for simulation_status, simulation_stream, simulation_transcript, simulation_costs, simulation_report, and simulation_compare. |
| simulation_generate_agentsB | Generate a 20-60 agent model-swarm cohort from Memoire research evidence without starting a run. |
| simulation_planA | Create a clean-room product simulation scenario from Memoire research evidence. Prereq: research/store.v2.json or a ResearchStore JSON string. Local TypeScript simulation core only; adapter=model-swarm plans Codex-first profiles with deterministic fallback. Returns: { scenario (agents, variables, graph, evidenceFindingIds), warnings }. |
| simulation_runA | Run a prepared local or model-swarm product simulation scenario. Prerequisites: Call simulation_plan first and pass the returned scenario.id. Returns on success: SimulationRun with status, events, eventCount, and persisted run id. |
| simulation_run_matrixB | Plan and run multiple model-swarm hypotheses, then compare outcomes for product-spec decision work. |
| simulation_streamA | Read persisted simulation events in stream order. Paginated — use offset/limit to page through long runs instead of materializing the full event log. |
| simulation_statusA | Read a local simulation run status from .memoire/simulations/runs. |
| simulation_interviewB | Interview a simulated product stakeholder from a completed local or model-swarm run. |
| simulation_transcriptC | Read model-swarm transcript memory for a run. |
| simulation_compareA | Compare completed simulation runs by adoption, confidence, evidence coverage, risk, and cost. |
| simulation_costsA | Summarize token and cost usage for a simulation run. |
| simulation_reportB | Export a simulation report with recommendations, risks, assumptions, events, interviews, and evidenceFindingIds. |
| simulation_export_specC | Convert a simulation report into a product-spec impact artifact that agents can paste into specs or handoff docs. |
| analyze_designA | Capture a Figma node and analyze it with configured AI vision. Prereq: bridge + plugin connected; a vision-capable AI provider configured; spec-compliance mode needs the spec in the registry. Returns by mode — general: { summary, issues[], suggestions[], qualityScore }; accessibility: { summary, contrastIssues[], touchTargetIssues[], focusIssues[], wcagLevel }; spec-compliance: { summary, compliant, mismatches[], missingProps[], extraElements[] }. Errors: isError on missing key, no connection, bad node, or missing spec. Modes: general = visual polish; accessibility = WCAG checks of a frame; spec-compliance = rendered design vs saved spec before codegen. Core of the self-heal loop: create → capture_screenshot → analyze_design → fix → verify. |
| get_page_treeA | Get the hierarchical node tree of the current Figma file. Prereq: bridge + plugin connected. Returns: array of pages { id, name, type: "PAGE", children[] }; child nodes { id, name, type, children? }. IDs feed capture_screenshot and analyze_design. depth=1 pages only, 2 (default) top-level frames, 3+ component internals — high depths may be slow on large files. |
| measure_textA | Predict text layout — height, line count, overflow, breakpoint behavior — via Node canvas. No browser, Figma, or AI needed. Returns: { height, lineCount, lines[] }; plus { overflow } when containerHeight is given; plus { breakpoints: { mobile, tablet, desktop } } when checkBreakpoints=true. Never throws (0 height / 1 line for unparseable fonts). Use to verify labels or body copy fit fixed containers or maxLines constraints before generating designs or code. |
| sync_design_tokensA | Map registry tokens to a Tailwind theme.extend object; optionally import a W3C DTCG token file first. Prereq: tokens in the registry (pull_design_system first) — or pass dtcgFile to import them here. Never throws — returns {} when empty. Returns: partial theme (colors, spacing, fontSize, borderRadius, boxShadow) using var(--token) references; keys from the last token-name segment; "other" tokens skipped. With dtcgFile also { imported, warnings }. vs get_tokens: get_tokens = raw data for inspection (format "dtcg" exports the DTCG document); this = paste-ready Tailwind patch. |
| check_bridge_healthA | Check health of the Figma WebSocket bridge. Works with no plugin connected; never throws. Returns: { status: "healthy"|"degraded"|"down", connected, clientCount, latencyMs, uptimeSeconds, port, error? } — clientCount 0 means no plugin open in Figma. Call this first before any Figma-dependent tool. |
| design_docA | Scrape a public URL and extract its design system — parses CSS custom properties, colors, fonts, spacing, radii, shadows; the configured AI provider synthesizes a DESIGN.md. Prereq: publicly accessible URL; configured AI provider for synthesis (pass raw=true without it). Returns (raw=false): DESIGN.md with Color System, Typography, Spacing, Borders & Surfaces, Component Patterns, Voice & Tone, Do/Don't, Tailwind Config Sketch. Returns (raw=true): { url, title, tokens: { cssVars, colors, fonts, fontSizes, spacing, radii, shadows, counts } }. Errors: isError if the URL is unreachable/has no usable CSS, or the key is missing in synthesis mode. Use to reverse-engineer a reference site's system or extract tokens for comparison. |
| get_ai_usageA | AI token usage and estimated cost for this MCP session (in-memory tracker; never throws; unknown when provider pricing is not configured). Returns: { calls, inputTokens, outputTokens, estimatedCost, knownEstimatedCost, costComplete, unpricedCalls, summary }. Use to monitor spend from analyze_design, design_doc, or compose. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| design-system | Current design system: tokens, components, styles, and last sync timestamp |
| project | Detected project context: framework, styling, shadcn status, Tailwind config |
| MetricCard | component spec: Display a single KPI metric with title, value, and optional trend indicator |
| Dashboard | page spec: Main application dashboard showing KPIs and activity trends |
| ActivityChart | dataviz spec: Show daily activity trend over the last 30 days |
| RevenueChart | dataviz spec: RevenueChart chart |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/memi-design/memi'
If you have feedback or need assistance with the MCP directory API, please join our Discord server