MCP guide · Recommended

Create with
your AI assistant.

Connect Flamigo to your assistant with MCP.

A Flamigo account is required.

1. Install with your agent

Copy the prompt into your agent to install MCP and the Flamigo skill.

Install Flamigo MCP and its skill in my current agent. I authorize the required configuration and skill changes. Execute the setup yourself; ask me only for unavoidable sign-in, consent, permissions or restart actions.

Connection

  • MCP: https://api.flamigo.ai/mcp (server name: flamigo).
  • Skill: https://flamigo.ai/skills/flamigo-mcp/SKILL.md (name: flamigo-mcp; public Markdown).
  • Transport: Streamable HTTP, stateless JSON responses.
  • OAuth: Authorization Code with S256 PKCE, token_endpoint_auth_method=none, MCP URL as the resource indicator.
  • Access: account read/write; Flamigo checks ownership and an active profile. Generation uses account Credits.

Install

  1. Identify the current agent and version. Use its help or official documentation to find the supported MCP, OAuth and persistent-skill interfaces. Prefer user-level setup and honor configured paths. Reuse matching installations; back up changed files and preserve customizations. Avoid duplicate entries and unrelated changes.
  2. Register the MCP endpoint through the client's supported interface. No local Flamigo server is needed.
  3. Download the Skill URL. Require a successful response containing Markdown with YAML frontmatter, name: flamigo-mcp and a non-empty description; reject HTML or error pages. Install the complete content as SKILL.md in the agent's discovered skill directory, or use its supported import API. Read it back to verify persistence and content.
  4. Reuse valid authorization from the client's credential manager, or start its native OAuth flow. Let it handle discovery, registration, PKCE and callbacks. Have me sign in, review the client and callback, and choose Allow access when required. Keep credentials in private client storage; never request pasted passwords or tokens or bypass host permissions.

Verify

Refresh MCP and skill discovery. Confirm the saved endpoint, recognized skill, and authenticated tool/resource discovery, then call list_presentations (an empty list is valid). Do not create or modify presentations or spend generation Credits to test setup.

Report the agent, endpoint, skill location and verification result briefly. Say "Flamigo is ready" only after all checks pass. If a capability, download, authorization or reload is blocked, finish independent steps and report what remains and the smallest required user action. Do not equate saved configuration with a verified connection.

2. Create, edit & export

  1. Read flamigo://themes, choose one color ID and one font ID, then pass color_preset_id and font_preset_id to create_presentation with the title and source material. Omit them to use color-navy-white and font-modern.
  2. Use the returned presentation revision in draft_outline. Review the resulting sentences and layouts.
  3. Read the current presentation revision, then pass the reviewed outline to generate_slides_from_outline to replace all pages and their checkpoints.
  4. Read the presentation's /slides resource. For each slide with has_html=false, call render_slide with its own current revision.
  5. Before exporting the latest content, check layout_content_current in each existing preview's slide detail. Refresh stale previews with render_slide. Once every slide is ready, read flamigo://presentations/{presentation_id}/export/html and save the returned HTML document.

To edit an existing slide, read its metadata and /dsl resource first. Use update_slide for content replacement, generate_slide_dsl for new structured content. Call render_slide after editing. Save a checkpoint before a design change you may want to undo. Refresh the web workspace to see MCP changes.

Change colors, fonts, layout style or art direction

Call update_presentation with the current presentation revision and the desired preset IDs, presentation_style or illustration_instruction. presentation_style selects the native component library and layout strategy: editorial (default), swiss or minimal. Generated illustrations are image components in the slide DSL. Existing illustrations are reused. The optional background_image_url sets a separate slide background; illustration_instruction guides newly generated illustrations (up to 4,000 Unicode characters). An empty string clears this instruction; omitted or null values leave it unchanged on update. Ask whether to refresh existing slides after a style change. Colors supply canvas, text and accent; the renderer derives the remaining roles. Fonts supply display and body as ordered fallback stacks, not lists of options to select separately.

If theme_changed is true, render each entry in slides_to_refresh with a new operation ID, the presentation ID, its slide ID, expected_revision and apply_project_theme. Existing illustration components are reused. Pending slides without HTML follow the normal generation workflow. Review the refreshed slides before exporting; saved HTML and exports keep their previous appearance until rendering completes.

The refresh list is a snapshot, including when an operation is replayed. Re-read slide revisions if other edits occurred. With apply_project_theme: true, rendering uses the current project presets and style. Otherwise it prefers the saved slide theme.

Refresh or redesign a slide

Read the single-slide resource. has_html indicates a saved preview exists; layout_content_current indicates it matches the saved content and layout. If false, call render_slide before comparing designs. To replace the entire layout, including manual placements, call redraw_slide with the current slide revision.

Compare alternative designs

Call generate_slide_alternatives with the current revision of a rendered slide to explore up to five component variant combinations while preserving its content, layout and background. Read the returned batch resource for status and each ready candidate’s preview_resource_uri to inspect its HTML. Generation and previews do not change the saved slide. Apply a choice with apply_slide_alternative, its batch and candidate IDs, and the batch’s base_revision as expected_revision.

Choices use compatible component variants from the saved slide theme, falling back to project settings for missing or invalid fields and retain the saved background. Generating and previewing these choices makes no LLM calls and spends no Credits. They expire (normally after 30 minutes) and become stale after slide, theme or renderer changes. Generate a new set when that happens; fresh: true requests another batch once the current batch finishes. Pending batches are reused. Save a checkpoint before applying if you need an undo point.

Export to PowerPoint

Pro accounts can read flamigo://presentations/{presentation_id}/export/pptx. Save the decoded MCP binary blob as a .pptx file. Text is editable; complex visuals are separate images. Fonts are not embedded, so PowerPoint may substitute missing fonts. Export does not spend Credits. HTML export remains available for browser presentation.

Example tool call

This is a JSON-RPC request after client initialization and authorization. Subsequent writes need new operation IDs and the revisions returned by current resources.

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_presentation",
    "arguments": {
      "operation_id": "review-create-001",
      "title": "Quarterly review",
      "color_preset_id": "color-navy-white",
      "font_preset_id": "font-modern",
      "source_content": "Revenue grew 20%. Next quarter: expand onboarding."
    }
  }
}

Read resource contents using resources/read with { "uri": "flamigo://presentations" }. Resource URIs are MCP identifiers, not browser download links.

3. Tool reference

All 16 tools are listed below. Parameters without a default are required. Presentation and slide IDs use UUID strings; preset IDs are slugs such as font-modern; None means optional/null. Discover tools/list on the connected server for its current schemas.

expected_revision is the presentation revision for presentation operations and create_slide; it is the slide revision for all other slide writes. operation_id is required for every write.

NarrativeOutlineInput: page_no ≥ 1, sentence 1–500 characters, and a supported layout. SlideDslInput: optional page_no matching the 1-based array position and complete dsl as an object or JSON string. Layouts: hero, section, groups, split, process, comparison, chart, table, quote, image-focus, diagram. Complexity: concise, medium or detailed. presentation_style: editorial (default), swiss or minimal. illustration_instruction: optional art direction, up to 4,000 Unicode characters. draft_outline.direction: up to 900 Unicode characters. max_pages is a maximum of 1–30 slides; sparse material may produce fewer. Source material and single-slide AI writing input each allow up to 30,000 Unicode characters, including spaces and line breaks.

list_presentations

List the authenticated user's presentations.

No parameters.

Returns presentations and resource_uri. Read-only; no operation ID is needed.

create_presentation

Create an empty presentation. Select color_preset_id and font_preset_id from flamigo://themes by type. Defaults: color-navy-white, font-modern. IDs are preset slugs.

ParameterTypeDefault
operation_idstr
Account-wide operation ID, 1–128 characters after trimming. Reuse only for an identical retry.
Required
titlestrRequired
source_contentstr
Maximum 30,000 Unicode characters, including spaces and line breaks.
''
color_preset_idstr | NoneNone
font_preset_idstr | NoneNone
presentation_styleLiteral['editorial', 'swiss', 'minimal'] | None
Native component library and layout strategy. Defaults to editorial on creation; omitted or null leaves it unchanged on update.
None
illustration_instructionstr | None
Art direction for newly generated DSL images, up to 4,000 Unicode characters. Existing illustrations are reused. Empty string clears the instruction.
None

Returns presentation metadata, its revision, resource_uri and web_url. Creates an empty presentation; it does not generate slides.

update_presentation

Update metadata, source, presentation_style, illustration_instruction, or independent color_preset_id/font_preset_id from flamigo://themes. Ask the user whether to refresh existing HTML after a style change. Omitted or null values leave selections unchanged. Uses the presentation revision. Does not render HTML; returns theme_changed and slides_to_refresh with slide revisions and the theme refresh flag.

ParameterTypeDefault
operation_idstr
Account-wide operation ID, 1–128 characters after trimming. Reuse only for an identical retry.
Required
presentation_idUUIDRequired
expected_revisionint
Revision of the target presentation (at least 1).
Required
titlestr | NoneNone
source_contentstr | None
Maximum 30,000 Unicode characters, including spaces and line breaks.
None
color_preset_idstr | NoneNone
font_preset_idstr | NoneNone
presentation_styleLiteral['editorial', 'swiss', 'minimal'] | None
Native component library and layout strategy. Defaults to editorial on creation; omitted or null leaves it unchanged on update.
None
illustration_instructionstr | None
Art direction for newly generated DSL images, up to 4,000 Unicode characters. Existing illustrations are reused. Empty string clears the instruction.
None

Returns presentation metadata, resource_uri, theme_changed and slides_to_refresh. Each refresh entry contains slide_id, page_no, expected_revision and apply_project_theme. Existing HTML is unchanged until rendered. Omitted or null values leave existing selections unchanged.

create_slide

Create a slide, optionally after an existing slide.

ParameterTypeDefault
operation_idstr
Account-wide operation ID, 1–128 characters after trimming. Reuse only for an identical retry.
Required
presentation_idUUIDRequired
expected_revisionint
Revision of the target presentation (at least 1).
Required
after_slide_idUUID | NoneNone

Returns the new slide, presentation_revision and resource_uri. expected_revision belongs to the presentation. Omit after_slide_id to append.

update_slide

Supply at least one update: complete slide DSL or background_image_url.

ParameterTypeDefault
operation_idstr
Account-wide operation ID, 1–128 characters after trimming. Reuse only for an identical retry.
Required
presentation_idUUIDRequired
slide_idUUIDRequired
expected_revisionint
Revision of the target slide (at least 1).
Required
dsldict[str, Any] | str | NoneNone
background_image_urlstr | None
HTTPS URL to set the background, empty string to remove it, or null/omitted to keep it.
None

Returns slide ID, page number, revision, title and resource_uri. Supply a complete DSL object or serialized JSON, not a JSON Patch. Re-render after content changes.

draft_outline

Draft a presentation-level narrative outline from the saved source.

ParameterTypeDefault
operation_idstr
Account-wide operation ID, 1–128 characters after trimming. Reuse only for an identical retry.
Required
presentation_idUUIDRequired
expected_revisionint
Revision of the target presentation (at least 1).
Required
max_pagesint
Maximum slide count (1–30); sparse source material may produce fewer.
8
directionstr
Maximum 900 Unicode characters.
''

Returns outline, presentation_revision and resource_uri. Uses saved source_content. Each outline item contains page_no, sentence and layout.

generate_slides_from_dsl

Replace all slides in the presentation with the supplied complete slide DSL objects. Existing slides and their checkpoints are deleted. This clears the previous generation batch. Read /slides and render every page with has_html=false.

ParameterTypeDefault
operation_idstr
Account-wide operation ID, 1–128 characters after trimming. Reuse only for an identical retry.
Required
presentation_idUUIDRequired
expected_revisionint
Revision of the target presentation (at least 1).
Required
slideslist[SlideDslInput]
All pages in display order. Page numbers are assigned from 1.
Required

Returns slides, presentation_revision and resource_uri. Supply at least one { dsl } entry in display order. Use update_slide for a single page.

generate_slides_from_outline

Generate DSL from the reviewed outline, using its sentences as source material when the saved source is empty. Replace all slides and their checkpoints. Render each new slide afterward.

ParameterTypeDefault
operation_idstr
Account-wide operation ID, 1–128 characters after trimming. Reuse only for an identical retry.
Required
presentation_idUUIDRequired
expected_revisionint
Revision of the target presentation (at least 1).
Required
outlinelist[NarrativeOutlineInput]Required
complexityLiteral['concise', 'medium', 'detailed']'detailed'

Returns generation_id, status, phase, slide_count, presentation_revision and resource_uri. Supply outline items { page_no, sentence, layout }. Their sentences supply the material when source_content is empty. HTML rendering remains pending.

render_slide

Render a slide. Automatically reuse a saved layout when possible or create one when needed. Set apply_project_theme to refresh its theme. Returns the HTML resource_uri, including on replay.

ParameterTypeDefault
operation_idstr
Account-wide operation ID, 1–128 characters after trimming. Reuse only for an identical retry.
Required
presentation_idUUIDRequired
slide_idUUIDRequired
expected_revisionint
Revision of the target slide (at least 1).
Required
apply_project_themeboolFalse

Returns slide_id, revision and an HTML resource_uri. Older replay results can omit page_no. The default reuses the saved layout when possible and creates one when needed. Generated illustrations are stored once as DSL images. Read the latest slide revision before calling.

redraw_slide

Redesign the whole slide layout from its saved content and render a new preview, replacing any manual layout.

ParameterTypeDefault
operation_idstr
Account-wide operation ID, 1–128 characters after trimming. Reuse only for an identical retry.
Required
presentation_idUUIDRequired
slide_idUUIDRequired
expected_revisionint
Revision of the target slide (at least 1).
Required

Returns slide_id, page_no, revision and an HTML resource_uri. Replans the entire slide, including any manual layout, using its saved content and effective slide theme.

generate_slide_dsl

Replace the target slide content with newly generated DSL and clear its saved layout and HTML. Render it afterward.

ParameterTypeDefault
operation_idstr
Account-wide operation ID, 1–128 characters after trimming. Reuse only for an identical retry.
Required
presentation_idUUIDRequired
slide_idUUIDRequired
expected_revisionint
Revision of the target slide (at least 1).
Required
contentstr
Maximum 30,000 Unicode characters, including spaces and line breaks.
Required
layoutSlideDslLayout'section'
complexityLiteral['concise', 'medium', 'detailed']'detailed'

Returns slide data including DSL, and resource_uri. Replaces the slide content and clears its layout and HTML; call render_slide afterward.

get_generation_status

Read generation batch progress. Direct DSL imports have idle status. Use has_html in /slides to find missing previews and layout_content_current in slide detail to find stale previews.

ParameterTypeDefault
presentation_idUUIDRequired

Returns presentation metadata and per-slide id, page_no, status, error and revision. Read-only; use this to identify unfinished or failed slides.

save_checkpoint

Save the current slide design as a restorable checkpoint.

ParameterTypeDefault
operation_idstr
Account-wide operation ID, 1–128 characters after trimming. Reuse only for an identical retry.
Required
presentation_idUUIDRequired
slide_idUUIDRequired
expected_revisionint
Revision of the target slide (at least 1).
Required
labelstr'Agent checkpoint'

Returns checkpoint, slide_revision and resource_uri. Retain the returned checkpoint ID for restoration.

restore_checkpoint

Restore a saved checkpoint with revision protection.

ParameterTypeDefault
operation_idstr
Account-wide operation ID, 1–128 characters after trimming. Reuse only for an identical retry.
Required
presentation_idUUIDRequired
slide_idUUIDRequired
checkpoint_idUUIDRequired
expected_revisionint
Revision of the target slide (at least 1).
Required

Returns checkpoint, slide_revision and the slide HTML resource_uri. The checkpoint must belong to the selected slide.

generate_slide_alternatives

Generate up to five variant combinations using the slide’s saved theme, preserving geometry and background. Waits for newly created choices; reuses existing choices unless fresh=true. May return pending choices from another request: read resource_uri for status. Preview ready candidates using preview_resource_uri, then apply_slide_alternative. Requires configured Redis and a preview matching the current slide and layout. No LLM calls or generation credits. Choices expire. Replaying operation_id returns the original snapshot; read resource_uri for current status.

ParameterTypeDefault
operation_idstr
Account-wide operation ID, 1–128 characters after trimming. Reuse only for an identical retry.
Required
presentation_idUUIDRequired
slide_idUUIDRequired
expected_revisionint
Revision of the target slide (at least 1).
Required
freshbool
Request a new batch after the current batch finishes. An in-progress batch is always reused.
False

Returns a batch with base_revision, candidate status, resource_uri and preview_resource_uri values. Read the resource for current status; operation replay returns the original snapshot. Choices preserve layout and background, with no AI calls or Credits.

apply_slide_alternative

Apply a ready design choice with the batch's base_revision as expected_revision. Preserves slide content and saves the selected design and HTML. Expired choices or changes to the slide/theme require generating a new set.

ParameterTypeDefault
operation_idstr
Account-wide operation ID, 1–128 characters after trimming. Reuse only for an identical retry.
Required
presentation_idUUIDRequired
slide_idUUIDRequired
batch_idUUIDRequired
candidate_idLiteral['1', '2', '3', '4', '5']Required
expected_revisionint
base_revision returned by the candidate batch (at least 1).
Required

Returns slide_id, page_no, revision and the saved HTML resource_uri. Use the batch base_revision as expected_revision. Keeps the current DSL and saves the chosen design.

4. Resource reference

Read resources with resources/read; discover fixed URIs with resources/list and parameterized URIs with resources/templates/list. Use returned UUIDs for presentation and slide IDs. Use the returned preset slug for {preset_id}.

flamigo://presentations

The authenticated user's Flamigo presentations. application/json

flamigo://presentations/{presentation_id}

Presentation metadata and generation state; large content has dedicated resources. application/json

flamigo://presentations/{presentation_id}/source

The complete source material for a presentation. text/markdown

flamigo://presentations/{presentation_id}/outline

The current presentation-level narrative outline and layout choices. application/json

flamigo://presentations/{presentation_id}/export/html

Export saved HTML with slide navigation. For the latest content, render missing or stale previews first. text/html

flamigo://presentations/{presentation_id}/slides

Ordered slide IDs, revisions, and has_html. Render pages with has_html=false regardless of generation status. application/json

flamigo://presentations/{presentation_id}/slides/{slide_id}

Slide metadata, revision and layout_content_current (whether saved HTML matches the slide content and layout). application/json

flamigo://presentations/{presentation_id}/slides/{slide_id}/dsl

The complete structured Slide DSL for one slide. application/json

flamigo://presentations/{presentation_id}/slides/{slide_id}/html

The complete rendered document for one slide. text/html

flamigo://themes

Available color and font presets. Select one ID of each type. application/json

flamigo://themes/{preset_id}

One color or font preset and its JSON parameters. application/json

flamigo://presentations/{presentation_id}/export/pptx

Export saved slide previews as a PPTX binary. Requires Pro. For the latest content, render missing or stale previews first. application/vnd.openxmlformats-officedocument.presentationml.presentation

flamigo://presentations/{presentation_id}/slides/{slide_id}/alternatives/{batch_id}

Current design choices and preview URIs. Choices expire and become stale after edits. application/json

flamigo://presentations/{presentation_id}/slides/{slide_id}/alternatives/{batch_id}/{candidate_id}/html

Preview one ready design without changing the saved slide. text/html

Metadata and slide lists are lightweight: they omit full source, DSL and HTML. Read the dedicated resources only when needed. The HTML export includes presentation navigation; linked assets may still require network access.

5. Revisions & idempotency

  • Read the target revision before writing. Never assume a revision increments by a fixed amount or reuse a presentation revision for a slide.
  • Use a unique operation_id of 1–128 characters for each new write. The ID is scoped to your account across tools.
  • After a transport failure, retry with the same operation ID and identical arguments. A completed operation replays its saved result.
  • The same ID with different arguments is rejected. A running operation reports that it is already running; inspect status before retrying.
  • A failed operation remains failed under that ID. Re-read state, fix the cause, and use a new ID for a corrected request.
  • On revision conflict, read the resource again, reconcile changes, and submit a new operation. Avoid simultaneous edits to the same slide.

6. Troubleshooting

401 / authorization expired
Let the client refresh its token, or reconnect through browser authorization.
Endpoint unavailable / 404
Check the backend host, configured MCP path and whether MCP is enabled. A missing resource can also mean it does not belong to the signed-in account.
Revision conflict
Re-read the target and reconcile the current version before a new write.
Invalid input
Check tool discovery schemas, UUIDs, layout, DSL content. Correct the arguments before trying again.
Generation failed
Read get_generation_status for per-slide errors. Resolve the reported cause, then render missing or stale previews using current slide revisions and new operation IDs.
Choices expired or stale
Generate a new batch after a 410 expiry or 409 slide/theme conflict; use its base revision when applying.
Choices temporarily unavailable
Try again later if the shared design cache is unavailable. Successful candidates can still be used when other candidates fail.
PPTX access denied
PowerPoint downloads require a Pro account. You can still export HTML.
Export not ready
Generate every slide's HTML first. DSL generation alone does not produce an exportable presentation.

Tool failures are reported as MCP tool errors; application HTTP codes may appear inside the error message. Resource failures are MCP resource errors. Treat an error response as a failed operation, not as a completed presentation.

Explore complete presentation examples →

Back to top ↑