> ## Documentation Index
> Fetch the complete documentation index at: https://docs.funeli.top/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP tools: themes

> Reference for the Funeli MCP tools for themes: what each tool does, its parameters and whether it changes live funnels.

Pick, create and change project themes and check their accessibility. Agents call these tools for you; this page lists what each one does and the parameters it takes.

## list\_themes

**List themes.** Read-only.

Theme library of a project: every theme with optional short description/tags, tokens, accessibility and usage. Search by query or exact tags; when choosing for a funnel, match vertical/mood tags first, then name, palette and description. Starter themes are tagged; user-created metadata is optional.

| Parameter | Type | Required | Description |
| - | - | - | - |
| `projectId` | string | no | Omitted = the current project |
| `query` | string | no | Search name, short description and tags |
| `tags` | string\[] | no | Exact tags; all supplied tags must match |

## get\_theme

**Get theme.** Read-only.

One theme: optional short description/tags, tokens (colors, radius, typography), warnings, accessibility report and usage. Theme tokens are the shared defaults. Any component can locally override individual theme tokens with its appearance field; fontRole may select only the theme heading/body font.

| Parameter | Type | Required | Description |
| - | - | - | - |
| `themeId` | string | yes | |

## create\_theme

**Create theme.** Changes the draft or settings; live funnels change only after publishing.

Add a theme to a project library, from scratch or as a copy of another theme ("from") with changes. Optional description/tags are discovery metadata: use short lowercase vertical/mood/light-dark tags so agents can find it later; they are not required. Typography accepts bundled families (ABCFavorit, PP Editorial New, Ruder Plakat VIP, Mona Sans Condensed, Inter, Manrope, Nunito, Poppins, System) or Google Fonts families; bundled fonts need no install, and catalog families are installed automatically. ACCESSIBILITY: the `accessibility` report in the result (APCA contrast, type sizes) has a `fix` per finding and a `fixAllFailures` patch; on status "fail" apply it with update\_theme (or other colours) and re-check before calling the theme done (check\_theme tries colours without saving). These tokens are shared defaults. Component appearance overrides may selectively replace individual tokens without changing the project theme; font families remain defined at theme level only.

| Parameter | Type | Required | Description |
| - | - | - | - |
| `projectId` | string | no | Omitted = the current project |
| `name` | string | yes | |
| `description` | string \| null | no | Optional short description, max 160 characters |
| `tags` | string\[] | no | Optional discovery tags; max 8 lowercase slugs |
| `from` | string | no | Theme id to copy |
| `tokens` | object | no | |

## update\_theme

**Update theme.** Changes the draft or settings; live funnels change only after publishing.

Edit a library theme (and its list\_themes description/tags). Applies AT ONCE to every funnel using it, live ones included: confirm with the user first if get\_theme shows live usage. typography merges field by field; headingStyle/headingWeight pick bundled italic and bold faces when available; headingAccentStyle/headingAccentWeight style the *marked* words of a Heading. buttons sets how each Button variant looks \{primary|secondary|link: \{fill: primary|tint|surface|none, text: primaryText|primary|text|muted, border: none|text|primary|border, borderWidth 1-3, shape: theme|pill, underline, width: full|auto}}; the funnel still picks the variant. backgrounds merge by name (null removes one): named screen backgrounds \{default, hero, ...}, each \{type:"solid",color} | \{type:"gradient",color (fallback),layers:\[gradient 1-4],blur?} | \{type:"image",color (fallback),image,fit?,position?,overlay?}; without default, screens use the background colour; a background may carry text/mutedText/primary so an accent, dark or photo screen (step.background \{use:"accent"}) switches to light text; baseSize 14-22 px, scale 1.1-1.35. ACCESSIBILITY: the `accessibility` report in the result (APCA contrast, type sizes) has a `fix` per finding and a `fixAllFailures` patch; on status "fail" apply it with update\_theme (or other colours) and re-check before calling the theme done (check\_theme tries colours without saving). These tokens are shared defaults. Component appearance overrides may selectively replace individual tokens without changing the project theme; font families remain defined at theme level only.

| Parameter | Type | Required | Description |
| - | - | - | - |
| `themeId` | string | yes | |
| `name` | string | no | |
| `description` | string \| null | no | null clears it |
| `tags` | string\[] | no | \[] clears tags |
| `tokens` | object | no | |

## check\_theme

**Check theme.** Read-only.

Accessibility dry run, nothing is saved: the report for a theme as it WOULD be after create\_theme/update\_theme. Start from an existing theme ("base" = its id; omit for the built-in defaults) and apply "tokens" on top. Checks APCA lightness contrast (Lc) of every pair the components draw: body text on page and cards Lc 75; muted text, button label on primary, primary as text and accent/success/danger text Lc 60; primary as a UI part (focus ring, selection, progress) Lc 45; input borders Lc 30. Also checks that the type scale stays readable on a phone (body >= 15 px, captions >= 11 px, button >= 16 px). Each finding has severity (fail = fix before publishing, warn = likely problem), `lc`, `required` and a `fix` patch for update\_theme. Only APCA decides the status; `wcag` lists pairs below WCAG 2 AA, for information. Use it while designing a palette.

| Parameter | Type | Required | Description |
| - | - | - | - |
| `projectId` | string | no | Omitted = the current project |
| `base` | string | no | Theme id to start from |
| `tokens` | object | no | |

## set\_default\_theme

**Set default theme.** Changes the draft or settings; live funnels change only after publishing.

Make a library theme the project default. Every funnel that inherits (no themeId) switches to it at once, live ones included: confirm with the user first.

| Parameter | Type | Required | Description |
| - | - | - | - |
| `projectId` | string | no | Omitted = the current project |
| `themeId` | string | yes | |

## delete\_theme

**Delete theme.** Changes what live visitors see or pay, or removes data. Agents confirm with you first.

Delete an unused non-default theme. The API refuses deletion while it is the project default or any draft/live funnel still references it.

| Parameter | Type | Required | Description |
| - | - | - | - |
| `themeId` | string | yes | |

## set\_funnel\_theme

**Set funnel theme.** Changes the draft or settings; live funnels change only after publishing.

Pick the theme a funnel renders with from its project library (list\_themes); null inherits the project default. A draft edit: live traffic sees it after publish. To change colors or fonts, edit the theme itself (update\_theme) or create a new one. Component appearance overrides remain local and inherit every token they do not explicitly override; their fontRole resolves against this theme.

| Parameter | Type | Required | Description |
| - | - | - | - |
| `funnel` | string | yes | Funnel id (fn\_...) or slug |
| `themeId` | string \| null | yes | |
| `message` | string | no | Revision history note |

## update\_project\_theme

**Update project theme.** Changes the draft or settings; live funnels change only after publishing.

Atomically rename a project, select its defaultThemeId from list\_themes and/or edit the selected default theme. Changing the default affects inheriting live funnels immediately. When a theme is edited the result includes the same `accessibility` report as update\_theme: fix any "fail" before finishing.

| Parameter | Type | Required | Description |
| - | - | - | - |
| `name` | string | no | |
| `publicPath` | string | no | |
| `defaultThemeId` | string | no | |
| `theme` | object | no | |
| `projectId` | string | yes | |

## search\_fonts

**Search fonts.** Read-only.

Search the Google Fonts catalog for theme fonts. Filter by category (sans-serif, serif, display, handwriting, monospace) and subset (e.g. cyrillic for Russian copy).

| Parameter | Type | Required | Description |
| - | - | - | - |
| `query` | string | no | |
| `category` | string | no | |
| `subset` | string | no | |
| `limit` | integer | no | |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.