# FlipLetters (remote · app.flipletters.com)

Draft, validate, render, and share split-flap and flip-dot board videos written in flipcode.

- Trust score: 85/100 (high trust)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `app.flipletters.com`: 85/100 (this document), [markdown](https://verifymcp.io/servers/com-flipletters-mcp/mcp-v1.md), [page](https://verifymcp.io/servers/com-flipletters-mcp/mcp-v1)
- npm · `flipletters-mcp-server`: 73/100, [markdown](https://verifymcp.io/servers/com-flipletters-mcp/flipletters-mcp-server.md), [page](https://verifymcp.io/servers/com-flipletters-mcp/flipletters-mcp-server)

## Channel facts

- Endpoint: `https://app.flipletters.com/mcp/v1`
- Transports: `streamable-http`
- Auth: `required`
- Version: `0.3.1`

## 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-11-05.

- **Endpoint Security**: 89/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 74/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 1602 tokens (~123/item across 13 items; 13 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 63/100
  - Stability observed for 19 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 96/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 85% of tool parameters carry a description.
  - Structured output schemas are declared (46% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 13 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 13 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the FlipLetters MCP server?

FlipLetters is a hosted endpoint at https://app.flipletters.com/mcp/v1, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http com-flipletters-mcp 'https://app.flipletters.com/mcp/v1'
```

### Cursor

```json
{
  "mcpServers": {
    "com-flipletters-mcp": {
      "url": "https://app.flipletters.com/mcp/v1"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-flipletters-mcp": {
      "type": "http",
      "url": "https://app.flipletters.com/mcp/v1"
    }
  }
}
```

### Codex

```toml
[mcp_servers.com-flipletters-mcp]
url = "https://app.flipletters.com/mcp/v1"
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add com-flipletters-mcp --url 'https://app.flipletters.com/mcp/v1' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  com-flipletters-mcp:
    url: "https://app.flipletters.com/mcp/v1"
```

### Netclaw

```json
{
  "McpServers": {
    "com-flipletters-mcp": {
      "Transport": "http",
      "Url": "https://app.flipletters.com/mcp/v1"
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-flipletters-mcp -t streamable-http -u 'https://app.flipletters.com/mcp/v1'
```

### Other

```json
{
  "mcpServers": {
    "com-flipletters-mcp": {
      "type": "http",
      "url": "https://app.flipletters.com/mcp/v1"
    }
  }
}
```

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-11-04 (score 85, 0)

- [security] Tool “flipletters_share_to_team” rewrote its description, which is the text the model reads
- [security] Tool “flipletters_share_to_postiz” rewrote its description, which is the text the model reads
- [security] Tool “flipletters_render_board” rewrote its description, which is the text the model reads
- [security] Tool “flipletters_create_animation” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 109 → 123

### 2026-11-03 (score 85, +1)

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

### 2026-11-01 (score 84, +1)

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

### 2026-10-30 (score 83, +1)

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

### 2026-10-28 (score 82, +1)

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

### 2026-10-25 (score 81, +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-10-24 (score 80, +3)

- [security improvement] Authorization: fail → pass
- [security] First check of Authorization: partial
- [functional regression] Schema quality: pass → fail
- [functional improvement] Tool coverage: 33% → 46%
- [functional improvement] Tool “flipletters_render_board” now declares an output schema
- [functional] New tool “flipletters_create_animation”
- [cosmetic] “flipletters_render_board” reworded the description of “wait”

### 2026-10-22 (score 77, +1)

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

## MCP tools (13)

### `flipletters_flipcode_reference` (~57 tokens)

flipcode reference

Returns the flipcode cheat sheet (spec v1): directives, board types and size limits, transition modes, and flip-native effect recipes. Call this before writing a board so the code you produce is valid on the first try.

Output parameters:

- `reference` (string)

### `flipletters_validate_board` (~114 tokens)

Validate a board

Parses a flipcode document, returning the normalized canonical code, any warnings (out-of-range values are clamped, unknown lines ignored), a board summary, and links: a share URL that opens the exact board in the FlipLetters Studio, and an open-with-code URL that also reveals the code panel. Use this after drafting a board; fix warnings and re-validate until clean, then give the human the share link.

Input parameters:

- `code` (string, required): A complete flipcode document (see flipletters_flipcode_reference).

Output parameters:

- `canonicalCode` (string)
- `openWithCodeUrl` (string|null)
- `shareUrl` (string|null): Opens this exact board in the Studio. Null when the board is too large for a URL — share the code text instead.
- `summary` (object)
- `valid` (boolean)
- `warnings` (array)

### `flipletters_example_board` (~97 tokens)

Example board

Returns a complete, valid flipcode document for a board type (minimal, trainboard/station, artboard, flipdot, marquee, announcement, arena) — a known-good starting point to edit rather than writing from scratch.

Input parameters:

- `template` (string, required): Board type or alias: minimal, trainboard, station, artboard, art, flipdot, dots, marquee, desk, announcement, poster, arena, lightbox.

Output parameters:

- `code` (string)
- `template` (string)

### `flipletters_template_url` (~230 tokens)

Readable template URL

Builds a human-readable FlipLetters Studio URL where every query parameter mirrors one flipcode line — good for short text boards you want legible in the address itself (chat messages, docs). For full fidelity or paint grids use flipletters_validate_board's share link instead. Slides are strings with | between rows.

Input parameters:

- `accent` (string): Hex color, # optional.
- `board` (string): Board type/alias, e.g. "station".
- `flip` (string): Transition, commas for spaces: "cascade,9,0.2,0.4".
- `grid` (string): ROWSxCOLS, e.g. "8x34".
- `hold` (string): Seconds, e.g. "6".
- `out` (string): Canvas: "vertical", "square", "1200x630@25", …
- `slides` (array): Each entry is one slide; | separates rows: "EGGS BENEDICT|FLAT WHITE".
- `sound` (string)
- `speed` (string)
- `title` (string)

Output parameters:

- `url` (string)

### `flipletters_create_animation` (~213 tokens)

Create a split-flap animation from text

One call from plain text to a FlipLetters video: builds a board on a text template (default minimal), checks the text against FlipLetters content rules, cloud-renders an MP4 under the signed-in owner's plan (free renders carry the FlipLetters watermark), and returns mp4Url (downloadable HTTPS), shareUrl (opens in Studio), jobId, status and expiresAt. If the render is still running when this returns, poll flipletters_render_status with jobId. Not idempotent: each call starts a new render and counts against the plan's render quota; poll render_status instead of calling again. If a call fails or times out, confirm with the user before retrying.

Input parameters:

- `template` (string): Board type: minimal, trainboard, marquee, announcement, arena (aliases like station, desk, poster, lightbox ok). Default minimal.
- `text` (string, required): What the board should say, e.g. "I love sourdough". Newlines force line breaks.

Output parameters:

- `error` (string|null)
- `expiresAt` (string|null): ISO time the mp4Url stops working, or null when it does not expire.
- `fileName` (string|null)
- `jobId` (string|null)
- `mp4Url` (string|null): HTTPS download URL for the finished MP4 (public token URL; no expiry). Null until status is done.
- `shareUrl` (string|null): Opens the board in FlipLetters Studio. Null if the board is too large for a URL.
- `status` (string): queued | running | done | error | cancelled | moderated | paywall
- `watermarked` (boolean|null)

### `flipletters_render_board` (~215 tokens)

Cloud-render a board to MP4

Parses flipcode and submits a cloud MP4 render under the API key owner's FlipLetters plan (same free quota / Premium / Studio limits as the Studio). Requires Authorization: Bearer flk_… (or FLIPLETTERS_API_KEY on stdio). Polls until done (or returns jobId if wait=false). Prefer share links for free previews; only render when the human wants an MP4 file. Not idempotent: each call starts a new render and counts against the plan's render quota; poll flipletters_render_status instead of calling again. If a call fails or times out, confirm with the user before retrying.

Input parameters:

- `code` (string, required): Complete flipcode document.
- `repeat` (integer): Loop the segment this many times (default 1). Caps apply for long / 4K exports.
- `wait` (boolean): If true (default), poll until done/error (hosted: up to ~45s, then poll render_status). If false, return jobId immediately.

Output parameters:

- `error` (string|null)
- `expiresAt` (string|null): ISO time the mp4Url stops working, or null when it does not expire.
- `fileName` (string|null)
- `jobId` (string|null)
- `mp4Url` (string|null): HTTPS download URL for the finished MP4 (public token URL; no expiry). Null until status is done.
- `shareUrl` (string|null): Opens the board in FlipLetters Studio. Null if the board is too large for a URL.
- `status` (string): queued | running | done | error | cancelled | moderated | paywall
- `watermarked` (boolean|null)

### `flipletters_render_status` (~47 tokens)

Cloud render job status

Poll a cloud render job started with flipletters_render_board. Requires Authorization: Bearer flk_….

Input parameters:

- `jobId` (string, required): Job id returned by flipletters_render_board.

### `flipletters_list_teams` (~43 tokens)

List my teams

Lists FlipLetters teams the API key owner belongs to (teamId, name, inviteCode). Requires Authorization: Bearer flk_… with team scope.

### `flipletters_share_to_team` (~128 tokens)

Share board to team library

Parses flipcode and shares the board into a Team Library the key owner is a member of. Requires Authorization: Bearer flk_…. Use flipletters_list_teams first to get teamId. Not idempotent: each call adds another copy of the board to the Team Library. If a call fails or times out, confirm with the user before retrying.

Input parameters:

- `code` (string, required): Complete flipcode document.
- `name` (string, required): Display name for the template in the team library.
- `teamId` (string, required): Team id from flipletters_list_teams.

### `flipletters_list_workspaces` (~50 tokens)

List FlipLetters projects

Lists agency projects (workspaces) for the API key owner, plus the active project id. Project-scoped keys return their bound project as active. Requires Authorization: Bearer flk_….

### `flipletters_list_postiz_destinations` (~61 tokens)

List Postiz share accounts on a project

Lists Postiz destinations (masked keys) attached to a FlipLetters project. Use flipletters_list_workspaces first. Requires Authorization: Bearer flk_….

Input parameters:

- `workspaceId` (string, required): Project id from flipletters_list_workspaces.

### `flipletters_list_postiz_integrations` (~63 tokens)

List channels on a Postiz destination

Lists connected social channels for a project's Postiz share account. Use before flipletters_share_to_postiz to get integrationId. Requires Authorization: Bearer flk_….

Input parameters:

- `destinationId` (string, required)
- `workspaceId` (string, required)

### `flipletters_share_to_postiz` (~284 tokens)

Schedule export on Postiz

Uploads a cloud media URL (or Studio host local fileName) to a project's Postiz destination and schedules/drafts/posts it. Loop: render_board → list_workspaces → list_postiz_destinations → list_postiz_integrations → share_to_postiz. Requires Authorization: Bearer flk_…. Prefer mediaUrl from flipletters_render_board. Posts publicly to the connected social account when not drafted; confirm the destination and caption with the user before calling. Not idempotent: each call creates another post. If a call fails or times out, confirm with the user before retrying.

Input parameters:

- `content` (string): Caption / post body.
- `date` (string, required): UTC ISO datetime, e.g. 2026-08-14T15:00:00.000Z
- `destinationId` (string, required): Postiz destination id on that project.
- `fileName` (string): Local renders/*.mp4 name when Studio host has the file.
- `integrationId` (string, required): Postiz channel/integration id.
- `mediaUrl` (string): HTTPS URL of the MP4 (from cloud render).
- `providerType` (string): Postiz provider __type, e.g. tiktok, x, linkedin.
- `type` (string): Default schedule.
- `workspaceId` (string, required): FlipLetters project id.

## Diagnostics

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

## Score history

- 2026-11-05: 85
- 2026-11-04: 85
- 2026-11-03: 85
- 2026-11-02: 84
- 2026-11-01: 84
- 2026-10-31: 83
- 2026-10-30: 83
- 2026-10-29: 82
- 2026-10-28: 82
- 2026-10-27: 81
- 2026-10-26: 81
- 2026-10-25: 81
- 2026-10-24: 80
- 2026-10-23: 77
- 2026-10-22: 77
- 2026-10-21: 76
- 2026-10-20: 76
- 2026-10-19: 75
- 2026-10-18: 75
- 2026-10-17: 74

## Common questions

### What is the FlipLetters MCP server?

FlipLetters is an MCP server listed in the public MCP registry as com.flipletters/mcp. Draft, validate, render, and share split-flap and flip-dot board videos written in flipcode. This page covers its hosted endpoint (https://app.flipletters.com/mcp/v1).

### Is the FlipLetters MCP server safe to use?

FlipLetters scores 85 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the FlipLetters MCP server expose?

FlipLetters exposes 13 tools: flipletters_flipcode_reference, flipletters_validate_board, flipletters_example_board, flipletters_template_url, flipletters_create_animation, and 8 more. Their descriptions and schemas cost roughly 1,602 tokens of context every time the server is loaded.

### Does the FlipLetters MCP server require authentication?

Yes. FlipLetters asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the FlipLetters MCP server still maintained?

FlipLetters is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://app.flipletters.com/mcp/v1
- Authorisation metadata: https://app.flipletters.com/.well-known/oauth-protected-resource/mcp/v1
- Repository: https://github.com/Terahertz-Inc/flipletters-mcp
- Website: https://flipletters.com/mcp
- Changelog RSS feed: https://verifymcp.io/servers/com-flipletters-mcp/mcp-v1.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-flipletters-mcp/mcp-v1.json
- HTML version of this page: https://verifymcp.io/servers/com-flipletters-mcp/mcp-v1
