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) |
Capabilities
Features and capabilities supported by this server
| 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 ANTHROPIC_API_KEY is set — 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. |
| 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. |
| 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 AI vision (Claude). Prereq: bridge + plugin connected; ANTHROPIC_API_KEY set; 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; Claude synthesizes a DESIGN.md. Prereq: publicly accessible URL; ANTHROPIC_API_KEY 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 — zero values when no key or no calls). Returns: { calls, inputTokens, outputTokens, estimatedCost, 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 |
| Dashboard | page spec: Main application dashboard showing KPIs and activity trends |
| MetricCard | component spec: Display a single KPI metric with title, value, and optional trend indicator |
| ActivityChart | dataviz spec: Show daily activity trend over the last 30 days |
| RevenueChart | dataviz spec: RevenueChart chart |
Latest Blog Posts
- 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/sarveshsea/memi'
If you have feedback or need assistance with the MCP directory API, please join our Discord server