Skip to main content
Glama
781,376 tools. Updated 2026-11-14 07:27

"How to generate HTML code from Figma design files" matching MCP tools:

  • Analyze a negative Amazon review for root cause and a suggested response (async; 2 credits). Extracts the underlying issue from a critical review and drafts a brand-appropriate response angle. Use this after a negative review appears, to decide how to reply. Do NOT use it to generate a listing or an appeal - use generate_listing or generate_poa for those. Read-only; deducts 2 credits; runs asynchronously, poll for the result. Args: text: the negative review text (required). marketplace: marketplace code (default US). lang: zh or en (default en).
    ConnectorNo auth
  • Generate a Mermaid.js flowchart for human visual inspection only. NOT for orphan detection or programmatic analysis — use audit(mode=orphans) to find isolated memories. Output may be truncated for large domains; never infer graph properties (e.g. orphans) from a truncated result. Pass memory_id (memory ID) to see a single memory and all its direct connections. Pass domain to see the full domain graph (most-connected memories first, capped at limit, default 40 max 100). Returns JSON with mermaid, node_count, edge_count, nodes_shown, nodes_total, edges_shown, edges_total, truncated, memories([{id,label}]) and connections([{from,to,relationship}]). If client supports HTML widgets, prefer passing memories and connections to an interactive renderer rather than outputting raw mermaid. If not, output mermaid inside a ```mermaid code block. If truncated is true, note only most-connected memories are shown and nodes_total/edges_total reveal what was dropped.
    ConnectorAPI key
  • Show the user exactly what a generation will cost in credits BEFORE running it, as an interactive card with a Generate button. Call this FIRST, instead of asking "shall I generate? it will use some credits" — you do not know the rate, it is set per plan and per model by an admin and changes without any code change, so any number you state from memory will eventually be wrong. This reads the user's real plan and real balance and prices the run the same way the generation itself will. Nothing is charged and nothing is reserved by calling this. It is a quote. Generation only starts if the user then asks for it. kind: "video", "image" or "voice". provider: the model id you intend to use — get real ones from video_gen.list_providers / image_gen.list_providers, never from memory. Omit to quote the plan's standard rate for that kind. duration_seconds: the duration you intend to request. Only affects duration-priced models; harmless to pass otherwise. quantity: how many separate generations (e.g. number_of_images).
    ConnectorAPI key
  • Show the user exactly what a generation will cost in credits BEFORE running it, as an interactive card with a Generate button. Call this FIRST, instead of asking "shall I generate? it will use some credits" — you do not know the rate, it is set per plan and per model by an admin and changes without any code change, so any number you state from memory will eventually be wrong. This reads the user's real plan and real balance and prices the run the same way the generation itself will. Nothing is charged and nothing is reserved by calling this. It is a quote. Generation only starts if the user then asks for it. kind: "video", "image" or "voice". provider: the model id you intend to use — get real ones from video_gen.list_providers / image_gen.list_providers, never from memory. Omit to quote the plan's standard rate for that kind. duration_seconds: the duration you intend to request. Only affects duration-priced models; harmless to pass otherwise. quantity: how many separate generations (e.g. number_of_images).
    ConnectorAPI key
  • Changes one scene directly (free, instant): its variable values (merged; the ids and current values are in get_video — text, colors, numbers, images as "asset:<key>"), label, intent, duration (600–30000 ms; keep it at least as long as its narration), transition into it, narration script (null removes it), or its whole HTML (≤ 60000 characters, following the authoring rules from list_video_blocks; its variables are re-read from it). Changing the script makes its narration stale: then call generate_video_voiceovers. To change how a scene looks or moves, ask write_scene instead of writing HTML. Requires: demos:read, demos:write.
    ConnectorOAuth
  • The WHOLE design as one readable document — Vision (+ Project DNA) → every System spec → reference notes, compiled deterministically from the current design. Read this to understand a project end-to-end instead of walking list_systems → get_system N times. Returns markdown plus the project `version` it was compiled from. Long designs come back PAGED — the header says 'part N of M', call again with `page: N+1` for the rest. Pass `for_summary: true` to get the condensed projection instead (every system's Goal + Boundary, tables stripped, one page) — that is what you should summarize from.
    ConnectorNo auth

Matching MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    This MCP server lets AI agents connect to Figma to read, analyze, create, and modify designs, including elements, styles, assets, and code generation. It works with free Figma accounts and supports parallel multi-agent use across MCP-compatible clients.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Transforms Figma design data into a compact, LLM-friendly format for code generation, reducing size by 99.5% while preserving UI-critical information.
    333 npm
    7
    MIT

Matching MCP Connectors

  • Video how-to search for AI agents: 2,000+ video skills, tutorials and FFmpeg recipes. No key.

  • Figma MCP Pack

  • Fetch and convert a Microsoft Learn documentation webpage to markdown format. This tool retrieves the latest complete content of Microsoft documentation webpages including Azure, .NET, Microsoft 365, and other Microsoft technologies. ## When to Use This Tool - When search results provide incomplete information or truncated content - When you need complete step-by-step procedures or tutorials - When you need troubleshooting sections, prerequisites, or detailed explanations - When search results reference a specific page that seems highly relevant - For comprehensive guides that require full context ## Usage Pattern Use this tool AFTER microsoft_docs_search when you identify specific high-value pages that need complete content. The search tool gives you an overview; this tool gives you the complete picture. ## URL Requirements - The URL must be a valid HTML documentation webpage from the microsoft.com domain - Binary files (PDF, DOCX, images, etc.) are not supported ## Output Format markdown with headings, code blocks, tables, and links preserved.
    ConnectorNo auth
  • List the 10 senior-QS skill methodologies CivilQuants exposes (tender review, risk assessment, QS measurement/contract advice, geotechnical + geo-environmental interpretation, earthworks, preliminaries, pavement design, subcontract analysis). Universal discovery — both tiers see the full list. Returns each skill's slug, title, one-line summary and tier; then call get_skill(skill=<slug>) to fetch the methodology body. The skills are paid-tier; a free caller gets a sign-up prompt from get_skill. NOTE: the document-heavy skills (tender review, the interpretation skills) need a code-execution client (Claude Code / Codex / VS Code) plus the chunking pack from get_document_pipeline to run a real tender pack — on a chat connector you can read the methodology but cannot chunk/parse files.
    ConnectorNo auth
  • Publish a static site or single-page app to a live HTTPS URL on the account's platform subdomain (e.g. {name}.subsite.site). A new name creates the site. An existing name REPLACES EVERY FILE (files not in this call are deleted) and needs confirm:"I-want-to-replace-all-files"; preview with dryRun:true. Use update_site instead to change some files of an existing site. A 100-250 KB text file fits in this call with encoding:'gzip+base64' (gzip locally, then base64); use begin_deploy only when the files do not fit in one call. Ship a top-level 404.html for multi-page sites (otherwise unknown paths serve index.html) and use plain ASCII file names. Afterwards add_custom_domain can serve the site on the user's own domain.
    Connector
    Destructive
    No auth
  • Returns the full specification for one component: import path, props schema, usage example, anti-patterns, when-to-use and when-not-to-use notes, Figma spec, and dependencies. Read-only. Call it before writing code that uses a component, so props and import path come from the design system instead of memory. The name argument must be the exact component name as returned by list_components or search_components (case-sensitive, no package prefix); an unknown name returns a not-found error rather than a near match, so resolve the name first with search_components if you are guessing. The result may carry a provenance warning when the record was LLM-generated and not yet reviewed - treat those fields as unverified. It covers one component at a time; use list_components to enumerate and get_component_updates for version-to-version changes.
    ConnectorNo auth
  • Invites one or more chosen specialists to a project — does NOT charge payment. budget is a single amount for the whole task (not multiplied per specialist) — whoever accepts it does the work for it. Requires user_confirmed=true, set only after the user has explicitly confirmed in the conversation the choice of specialists, the list of shared files and the estimated cost. Estimate budget yourself from the problem's complexity (e.g. 1h = a single well-localized bug / a simple document fix / a minor graphic tweak; 2h = a standard debug across a few files / a draft legal document (e.g. Privacy Policy) / a landing page design; 3h = an architecture review, a full legal package (ToS+Privacy+GDPR) or a compliance audit, full branding, no clear diagnosis) times the specialist's min_rate_per_hour (from search_specialists) — this field is informational, not enforced, always in USD (the only currency on the marketplace).
    ConnectorNo auth
  • Call get_site_context first. Push NEW files (HTML/CSS/JS/images) into a site's DRAFT. To CHANGE an existing page use patch_site_file instead (find/replace on the current file) — rewriting a whole page from memory drops or duplicates things; overwriting an existing .html needs base_hash from read_site_file. Use this when YOU are writing the code yourself instead of asking sitectrl's AI. Text files go in 'content'; binary files (images/fonts) in 'content_base64'. Max 40 files/call, 2 MB/file. Keep the <script defer src="sc-track.js"></script> include on every HTML page (the site's built-in private analytics — publish re-adds it if missing). Use clearly-marked placeholder contact info unless the user provided real details. For working forms, POST to /_sc/form/submit with a hidden _form name field — submissions reach the owner's dashboard + email (never use mailto:). Every HTML file is checked before it's written (DOCTYPE, charset, and any invariant this site has declared) — a file that fails is refused and comes back in 'refused' with what's wrong and the exact fix; other files in the same call still write. Site rules: keep sc-track.js, the data-sc-carry canonical/og:url tags and the sc-badge block; never add noindex or 'Disallow: /' on a site with its own domain. Follow with publish_site to go live.
    Connector
    Destructive
    No auth
  • EDIT a deployed site — call get_project_files first, never edit from memory. PREFERRED: targeted edits ({ path, oldString, newString }) — you send only the changed text, and the server verifies oldString against the ACTUAL live file (exactly one match required), so a stale copy can never overwrite anything. Use files (full content) only for rewrites or new files, deletePaths for removals. Every file you do NOT name is guaranteed untouched — deletions never happen by omission. All-or-nothing: any failed match or invalid path rejects the whole patch with nothing changed. Text files only (HTML/CSS/JS) — images live in the Media Library. Single-file projects accept edits to their one file (path "/"); adding/deleting files is multi-file only.
    Connector
    Destructive
    OAuth
  • List the postcoordination axes WHO allows for one ICD-11 stem code (MMS linearization, pinned release). Postcoordination means attaching extra detail to a stem code — severity, laterality, anatomy, causing agent, etc. — to build a composite (cluster) code. Use this tool to: - See which axes a stem code accepts before building a composite code - Check which axes are REQUIRED vs optional - See whether an axis takes one or several values, and how many values it offers Provide an ICD-11 `code` (e.g., "BA00"). Returns one entry per axis with `axis_name`, `required`, `allow_multiple` and `value_count` — the count of allowed values, not the values themselves. A code with no postcoordination, or one WHO does not know, returns an empty `axes` list (not an error), so check the code with icd11_lookup if the list is unexpectedly empty. When NOT to use: this does not build or validate a composite code, and it does not list the allowed values; to get a code from a disease name, use icd11_search.
    ConnectorNo auth
  • Publish one HTML document (report, dashboard, Claude-style artifact) as index.html and deploy. Omit project_id to create a project. Hosted MCP cannot read local files — pass the HTML string (read the file first). Returns url, project_id, and deployment. Poll get_deployment_status until live or failed. For multi-file sites use the upload + deploy loop instead. Re-call with the same project_id to replace the live page.
    ConnectorNo auth
  • Display a holiday photo to the user by creating an HTML artifact that embeds the photo from its hosted URL. After calling this tool you MUST create an HTML artifact (type text/html) whose body is a single <img> tag pointing at the hosted URL returned in the result. Do not write a prose description, caption, or commentary — the user wants to view the photo, not read about it. Use list_photos first to discover valid IDs.
    ConnectorNo auth
  • Create a job (or reuse job_id) and start a generative run. Omitting job_id ALWAYS creates a NEW job — call at most ONCE per user request. If you already have a job_id (including from a prior create_design error), pass it or use update_design; never call create_design again without job_id for the same request. The API rejects a second run on a job while one is still queued or running (409) — if a run fails or stalls, report it and ask the user before cancelling or re-running. Always tell the user job_id and run_id as soon as this returns. If the result includes concurrency_notice, show that reminder (pay-as-you-go accounts run one design at a time). Do not set wait:true. If the user asked to be emailed (including in the original request), set notify_email:true here immediately — do not wait until after wait_for_run. After create, call wait_for_run ONCE (default ~45s). If still_running and they have not already asked for email, stop polling, show the IDs, and offer notify_run_email. Photos/logos: prefer request_file_upload (or upload_file on stdio) then pass file_ids — never compress or generate a replacement. asset_paths is stdio-only; asset_files base64 is a last resort for tiny files. After completion, return viewer_url and offer export (pdf/html/png) — do not publish unless the user asks.
    Connector
    Destructive
    OAuth
  • Open one attachment of an Outlook message and return what is in it. Text, CSV, JSON, HTML and code files come back as themselves; images come back as pictures the assistant can look at (a large photo, or a HEIC or TIFF, is scaled down to a JPEG; images up to 25 MB); a PDF comes back whole as a document (an embedded application/pdf resource) for the assistant to read. Excel workbooks and Word files can't be read yet — but any file attachment can be saved as-is with save_outlook_attachment_to_onedrive. Attached emails and OneDrive links are not files and are refused. Other attachments up to 10 MB. Get attachmentId from get_outlook_message or get_outlook_conversation.
    ConnectorOAuth
  • Generate a document as a PDF and store it in the workspace. It never emails or sends anything, so a request to email or send a document is not a request to generate one. Pass exactly one source: - `params`: values you provide, with a `document_slug`. Call well_list_generative_documents first: it gives each design's document_slug and the JSON Schema its params must satisfy. Values that do not match are refused with the path and reason of each problem, so fix them and call again. The design prints light unless `params.theme` is "dark". Each call prints and stores a new document, unless you pass `document_id`. - `document_id` (with `params` only): when the user asks to change, fix or redo a document you already generated in this conversation, pass its document_id so it is replaced in place instead of adding a new file. Its document_id and links keep working and serve the new PDF. Only a document this tool generated from values can be replaced. - `invoice_id`: an invoice already in Well. The PDF prints that invoice, in its own chosen ink, and is attached to it as its document. Pass a `document_slug` to choose the design; without one, the invoice's own chosen design prints. Refused when the invoice already carries a file a user or connector supplied: a generated PDF never replaces one. Generating again updates that same document in place, so its document_id and links keep working. - `design` (with `invoice_id` only): the options the invoice-design card returned, passed exactly as the card gave them. `layout`, `theme` and `locale` choose the design, the ink and the language of this print, on an issued invoice too. `payment_terms_note_id`, `tax_rate_id`, `legal_mentions_note_id` and `payment_means_id` must equal what is saved on the invoice, or be null when nothing is saved: an id that differs is refused, so save a change with well_update_invoice_design first. Each option is optional, and every option left out keeps the value the invoice already holds. `theme` is a key of `design`, not a top-level input. Do not pass `design.layout` together with a different `document_slug`, or `design.locale` together with a different `locale`: the call is refused. - `account_id`: a bank account of the workspace's own company. The PDF prints its bank account details sheet (RIB) from the stored IBAN and BIC. Totals are never supplied: every sum is computed from the lines, so a printed total cannot disagree with the lines above it. The tool returns the stored PDF's document_id. A `guide` printed for a lead magnet guide on WhatsApp can return `success: false` with `say`: the person's free guide is used, nothing printed, and `say` is the exact ask, with their own invite link, to write as given. `file` carries the PDF's name and size plus the links to fetch it. The result renders as a card with Download and View in Well; when no card is shown, hand the user `download_url`. - `download_url` saves the PDF and `signed_url` opens it in a browser. Both work with a plain HTTP GET and no auth header, and stop working at `expires_at`. - `preview_url` is a PNG image of the first page, for showing the document; add `page=N` for page N, up to `page_count`. Same token and expiry as the other links. - `sheet_url` is the document's HTML sheet, which the card draws with zoom and pan. Same token and expiry. - When the user wants to do more with a PDF already generated (attach it to an email, upload it elsewhere, read or analyse it, pass it to another tool), fetch `download_url` with a plain HTTP GET to get the bytes. - If the links have expired, call this tool again: with `params` it prints a new document with fresh links; with `invoice_id` it refreshes the same document and its links. - `app_url` opens the document in Well and never expires. - The links grant access to the file on their own: share them only with the user, never in a public place. With `invoice_id` of an issued invoice, the PDF is the issued invoice and `portal_url` is its customer page, the page its QR code opens, for the owner to forward to the customer. It is null when the invoice has no customer page.
    ConnectorOAuth
  • Publish a website's files to a domain's Secure Static Hosting. TEXT FILES GO IN `text`, AS WRITTEN: for .html, .css, .js, .svg, .json, .txt and .xml send { path, text } with the file's contents exactly as you wrote them. Do NOT base64-encode text files; base64 is slow and error-prone for you and is only for binary files (images, fonts, PDFs), sent as { path, content }. A `path` may include directories (e.g. `assets/css/style.css`) — missing parent directories are created automatically. ≤10MB total per call (split larger sites across calls). Only static-web file types are accepted (html/css/js/images/fonts/…); server-executable types are rejected. Hosting must be ACTIVE (check get_hosting first). To change an existing site, read the current files first with read_hosting_file and edit them, rather than rebuilding from the visible page. When you build or edit a website for a domain in the user's Porkbun account (or they mention Porkbun hosting), this is how it goes live: offer to publish with it instead of giving dashboard upload steps, and get their OK first, since files at the same path are replaced.
    Connector
    Destructive
    OAuth
  • Read the content of ONE named file from a GitHub repository - 'path' is required and names that file. To see what a repository or directory CONTAINS, call github_list_repository_files instead (its 'path' is optional). Prefer the exact owner from github_list_repositories; 'repo' also accepts the combined 'owner/name' form. Use this to inspect Dockerfiles, package.json, CI configs, Helm charts, source code, and other text files. Refuses to read known sensitive files (.env, private keys, etc.).
    ConnectorOAuth