# io.github.Distribea/distribea-mcp (remote · distribea.com)

Generate images, video, music and voice from your CLI or AI agent. On-brand AI media toolkit.

- Trust score: 61/100 (medium)
- Change this week: +6
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `distribea.com`: 61/100 (this document), [markdown](https://verifymcp.io/servers/distribea-distribea-mcp/api-mcp-remote.md), [page](https://verifymcp.io/servers/distribea-distribea-mcp/api-mcp-remote)
- npm · `distribea-mcp`: 39/100, [markdown](https://verifymcp.io/servers/distribea-distribea-mcp/distribea-mcp.md), [page](https://verifymcp.io/servers/distribea-distribea-mcp/distribea-mcp)

## Channel facts

- Endpoint: `https://distribea.com/api/mcp/remote`
- Transports: `streamable-http`
- Auth: `required`
- Version: `2.1.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 12 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 34/100
  - AI-judged instruction clarity (fair).
  - Context-footprint check failed: tool/resource definitions use about 2745 tokens (~228/item across 12 items; 12 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http distribea-distribea-mcp https://distribea.com/api/mcp/remote
```

### Codex

```toml
[mcp_servers.distribea-distribea-mcp]
url = "https://distribea.com/api/mcp/remote"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "distribea-distribea-mcp": {
      "type": "remote",
      "url": "https://distribea.com/api/mcp/remote",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add distribea-distribea-mcp --url https://distribea.com/api/mcp/remote --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  distribea-distribea-mcp:
    url: "https://distribea.com/api/mcp/remote"
```

### Other

```json
{
  "mcpServers": {
    "distribea-distribea-mcp": {
      "type": "http",
      "url": "https://distribea.com/api/mcp/remote"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 61, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 60, +3)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 57, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-28 (score 56, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 55, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 54)

First indexed and scored.

## MCP tools (12)

### `generate_image` (~234 tokens)

Generate a brand image for a site

Generates ONE image consistent with the site's style and returns its CDN URL + a ready-to-paste <img> tag. A subject mentioning a review/testimonial/avatar automatically switches to a realistic customer selfie (UGC). Ideal for heroes, about, sections, cards…

Input parameters:

- `brand_text` (boolean): If true, the brand name appears as a clean physical sign in the image
- `character` (string): Optional: name/role of a locked character to feature (same face). Pass "none" to FORCE no face (stops a locked founder/team face being auto-attached here).
- `cross_site_unique` (boolean): Review/avatar subjects only. Default false. true = reviewer faces never repeat across ALL the user's sites.
- `orientation` (string): Default: landscape
- `product` (string): Optional: name of a locked product to show (identical object)
- `project` (string): Optional: site identifier (to keep a consistent style across its images). Default: "lovable".
- `subject` (string, required): What the image shows, e.g. "hero photo: modern villa at sunrise"

### `list_models` (~70 tokens)

List the image models the user can pick

Returns the catalog of image models to choose from: id, name, what it's best at, quality tiers, formats, max images per call, and an indicative price in credits. Call this BEFORE generate_with_model when the user wants to pick a specific model or compare options/prices. Image only for now.

### `generate_with_model` (~263 tokens)

Generate an image with a chosen model + settings

Advanced/manual mode: generate an image with a SPECIFIC model and settings the user picked, billed at the regular site price. Use this when the user names a model or wants control over quality/format/number of images; otherwise use generate_image (auto robot). Get valid ids + options from list_models. Returns CDN URL(s) + ready-to-paste <img> tag(s).

Input parameters:

- `count` (integer): Optional number of images (1..max for the model, see list_models). Default 1. Free/trial accounts are limited to 1.
- `format` (string): Optional aspect ratio, e.g. "16:9", "1:1", "9:16" (see list_models for what the model supports).
- `model` (string, required): Model id from list_models, e.g. "flux-2.0-pro" or "nano-banana-pro".
- `project` (string): Optional: site identifier. Default: "lovable".
- `quality` (string): Optional quality tier, e.g. "1K"/"2K"/"4K" (see list_models). Ignored when the model has a fixed native size.
- `subject` (string, required): What the image shows (the prompt).

### `create_reference` (~316 tokens)

Lock a real photo (face, product or shop) reused identically

Register a REAL photo so Distribea reuses it IDENTICALLY in generated images — the user's own person, product or place. kind 'character' = a recurring face (founder, baker…), 'product' = the exact same object, 'place' = the real shop/location. Give the photo as image_base64 (the uploaded file's bytes — MOST RELIABLE) or image_url (a PUBLIC image URL). Free (0 credits) when a photo is given. AFTER this, call generate_image with character:"<name>" (or product:"<name>") to feature that exact reference in a scene. For a whole product range at once, pass items:[{name,image_base64|image_url}].

Input parameters:

- `description` (string): Optional physical description (product/place)
- `image_base64` (string): The photo bytes as base64 (raw or data-uri). Preferred — works even when the image isn't on a public URL.
- `image_url` (string): Public URL of the photo (fallback if no base64)
- `items` (array): Register several products/places at once: each {name, image_base64 or image_url, description?}.
- `kind` (string): Default 'character' (a recurring face)
- `name` (string): What to call it: a role ("le boulanger"), a product name ("Tarte pralinée"), or a place ("la boulangerie")
- `project` (string): Optional: site identifier. Default: "lovable".

### `blog_cover` (~226 tokens)

Cover (and illustrations) for an article

Generates the 16:9 cover of an editorial article from ITS specific topic (never a generic photo), consistent with the site's style. Returns the CDN URL + an <img> tag. Provide the article via article_text (pasted text) or article_url (public link). illustrations:N adds N images inside the article.

Input parameters:

- `article_text` (string): The article text (title + body), pasted directly
- `article_url` (string): Public URL of the article — its text is read for you
- `character` (string): Optional: name/role of a locked character to deliberately feature on the cover
- `illustrations` (number): Extra images inside the article (default 0, max 5)
- `orientation` (string): Cover shape — default "wide" (16:9)
- `product` (string): Optional: name of a locked product to deliberately feature on the cover
- `project` (string): Optional: site identifier. Default: "lovable".
- `title` (string): Optional title (overrides the one read from the source)

### `site_style` (~294 tokens)

Set or adjust the site's visual style

The site's art direction. action "setup": locks the style from a brief and/or the URL of an existing site (run this FIRST for consistent images). action "refine": plain-language feedback ("warmer") OR a correction of a misrepresented subject — the rule is recorded and honored by every subsequent image.

Input parameters:

- `action` (string): "setup" (default) to set the style, "refine" to adjust/correct it, "lock_image" to anchor the style on an approved image (pass image_base64/image_url)
- `brief` (string): setup: plain-language brand brief (business, mood…)
- `feedback` (string): refine: what to change or correct, in plain language
- `force` (boolean): setup: true to let the engine guess if the brief is short
- `image_base64` (string): lock_image: the approved image's bytes as base64 — its look becomes the permanent style anchor
- `image_url` (string): lock_image: public URL of the approved image (fallback)
- `moodboard` (boolean): setup, ONLY on request: also generate a 2×2 moodboard image of the locked style (billed as 1 image)
- `project` (string): Optional: site identifier. Default: "lovable".
- `site_url` (string): setup: URL of an existing site to draw inspiration from (optional)

### `edit_image` (~269 tokens)

Retouch an existing image (edit, redo, cutout, upscale, extend)

Retouch an image the user already has (pass it as image_base64 or image_url). action 'edit' (default): a plain-language change (remove an object, change the background, relight; apply_style=true to also match the site's locked look); 'redo': a feedback tweak; 'remove_background': transparent PNG cutout; 'upscale': ×4; 'extend': widen to a new aspect_ratio, the scene continues seamlessly. Returns the NEW image's CDN URL + an <img> tag — swap the original's src with it. Billed; use only on the user's explicit request.

Input parameters:

- `action` (string): Default 'edit'
- `apply_style` (boolean): edit only: also match the site's locked style
- `aspect_ratio` (string): extend only: target frame (default 21:9)
- `image_base64` (string): The image to retouch, as base64 (preferred)
- `image_url` (string): Public URL of the image to retouch (fallback)
- `instruction` (string): edit/redo: what to change, plain language
- `out_format` (string): Output format (default webp; cutouts stay png)
- `project` (string): Optional: site identifier. Default: "lovable".

### `brand_pack` (~289 tokens)

Logo, favicon pack, social (link-preview) image

The brand finishing pack. action 'all' (default) chains: logo (clean lettering, correct spelling) + favicon pack (favicon.ico, apple-touch-icon, 192/512 PNG incl. maskable, site.webmanifest) + social image (og:image, needs a title). Or one piece: 'logo' | 'favicons' | 'social_image'. Returns the logo as an <img> to place in the header, the favicon FILES (base64) to write into /public + the <head> tags, and the og:image <meta> tags. Optionally derive the favicon from a given logo via image_base64/image_url.

Input parameters:

- `action` (string): Default 'all'
- `background` (string): favicons: solid background colour behind the icon (default white)
- `image_base64` (string): favicons: optional existing logo/icon (base64) to derive the pack from
- `image_url` (string): favicons: optional logo/icon URL to derive the pack from
- `project` (string): Optional: site identifier. Default: "lovable".
- `subtitle` (string): social_image: optional smaller subtitle
- `tagline` (string): logo: optional small tagline under the brand name
- `title` (string): social_image: title written on the image (required for social_image; also enables it in 'all')

### `bring_alive` (~242 tokens)

Bring a page to life (propose new spots + replace existing images)

Make an EXISTING page feel alive with on-brand imagery. It PROPOSES (free, generates nothing): (1) where to ADD images in sections that have none (hero, testimonials, team/about, a key benefit, gallery…), and (2) it returns the page's EXISTING <img> tags so you can REPLACE them too. DEFAULT BEHAVIOR — replace every existing image with an on-brand one UNLESS the user explicitly asks to keep a specific image; if the user only wants to add images, leave the existing ones untouched. WORKFLOW: show both lists, ask which to KEEP; then for approved NEW spots insert the given <img> placeholder at its anchor and call generate_image to fill it, AND for each existing image to replace, call generate_image with a matching subject and swap that image's src. Use this BEFORE generate_image whenever a page's imagery is missing or off-brand. Pass the page's current code as page_text.

Input parameters:

- `page_text` (string, required): The current code (or visible text) of the page to bring alive
- `project` (string): Optional: site identifier. Default: "lovable".

### `pack_status` (~51 tokens)

Credit balance and current style

Shows the Distribea credit balance, the locked style, the known characters/products/avatars, and the latest generated images. Free.

Input parameters:

- `project` (string): Optional: site identifier. Default: "lovable".

### `list_projects` (~63 tokens)

List your Distribea projects

List the projects saved on the account (name, brand, image count, products). To keep working on one, reuse its name in the project: parameter of your calls. Free.

Input parameters:

- `project` (string): Optional: current site identifier. Default: "lovable".

### `forget_project` (~65 tokens)

Forget a project's memory (start fresh)

Wipe a project's saved memory (locked style, characters, products) so it starts fresh. Nothing on the page is touched. Free. Use when a reused project carries over unwanted style or products.

Input parameters:

- `project` (string): Site identifier to wipe. Default: "lovable".

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/distribea-distribea-mcp/api-mcp-remote#diagnostics

## Score history

- 2026-08-03: 61
- 2026-08-02: 60
- 2026-08-01: 60
- 2026-07-31: 60
- 2026-07-30: 57
- 2026-07-29: 56
- 2026-07-28: 56
- 2026-07-27: 55
- 2026-07-26: 54

## Links

- Remote endpoint: https://distribea.com/api/mcp/remote
- Authorisation metadata: https://distribea.com/.well-known/oauth-protected-resource/api/mcp/remote
- Repository: https://github.com/Distribea/distribea-mcp
- Changelog RSS feed: https://verifymcp.io/servers/distribea-distribea-mcp/api-mcp-remote/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/distribea-distribea-mcp/api-mcp-remote/changelog.json
- HTML version of this page: https://verifymcp.io/servers/distribea-distribea-mcp/api-mcp-remote
