Draft, validate, render, and share split-flap and flip-dot board videos written in flipcode.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer token: your flk_ API key from FlipLetters Studio > Account > API keys & agents
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
What the board should say, e.g. "I love sourdough". Newlines force line breaks.
Board type: minimal, trainboard, marquee, announcement, arena (aliases like station, desk, poster, lightbox ok). Default minimal.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Tool list last changed Oct 23, 2026.
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.
| Argument | Type | Description |
|---|---|---|
| text* | string | What the board should say, e.g. "I love sourdough". Newlines force line breaks. |
| template | string | Board type: minimal, trainboard, marquee, announcement, arena (aliases like station, desk, poster, lightbox ok). Default minimal. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"maxLength": 1200,
"minLength": 1,
"description": "What the board should say, e.g. \"I love sourdough\". Newlines force line breaks."
},
"template": {
"type": "string",
"description": "Board type: minimal, trainboard, marquee, announcement, arena (aliases like station, desk, poster, lightbox ok). Default minimal."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| template* | string | Board type or alias: minimal, trainboard, station, artboard, art, flipdot, dots, marquee, desk, announcement, poster, arena, lightbox. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"template"
],
"properties": {
"template": {
"type": "string",
"description": "Board type or alias: minimal, trainboard, station, artboard, art, flipdot, dots, marquee, desk, announcement, poster, arena, lightbox."
}
}
}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.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Lists Postiz destinations (masked keys) attached to a FlipLetters project. Use flipletters_list_workspaces first. Requires Authorization: Bearer flk_….
| Argument | Type | Description |
|---|---|---|
| workspaceId* | string | Project id from flipletters_list_workspaces. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"workspaceId"
],
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Project id from flipletters_list_workspaces."
}
}
}Lists connected social channels for a project's Postiz share account. Use before flipletters_share_to_postiz to get integrationId. Requires Authorization: Bearer flk_….
| Argument | Type | Description |
|---|---|---|
| workspaceId* | string | |
| destinationId* | string |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"workspaceId",
"destinationId"
],
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1
},
"destinationId": {
"type": "string",
"minLength": 1
}
}
}Lists FlipLetters teams the API key owner belongs to (teamId, name, inviteCode). Requires Authorization: Bearer flk_… with team scope.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}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_….
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| code* | string | Complete flipcode document. |
| wait | boolean | If true (default), poll until done/error (hosted: up to ~45s, then poll render_status). If false, return jobId immediately. |
| repeat | integer | Loop the segment this many times (default 1). Caps apply for long / 4K exports. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"minLength": 1,
"description": "Complete flipcode document."
},
"wait": {
"type": "boolean",
"description": "If true (default), poll until done/error (hosted: up to ~45s, then poll render_status). If false, return jobId immediately."
},
"repeat": {
"type": "integer",
"maximum": 120,
"minimum": 1,
"description": "Loop the segment this many times (default 1). Caps apply for long / 4K exports."
}
}
}Poll a cloud render job started with flipletters_render_board. Requires Authorization: Bearer flk_….
| Argument | Type | Description |
|---|---|---|
| jobId* | string | Job id returned by flipletters_render_board. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"jobId"
],
"properties": {
"jobId": {
"type": "string",
"minLength": 1,
"description": "Job id returned by flipletters_render_board."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| date* | string | UTC ISO datetime, e.g. 2026-08-14T15:00:00.000Z |
| type | string | Default schedule. |
| content | string | Caption / post body. |
| fileName | string | Local renders/*.mp4 name when Studio host has the file. |
| mediaUrl | string | HTTPS URL of the MP4 (from cloud render). |
| workspaceId* | string | FlipLetters project id. |
| providerType | string | Postiz provider __type, e.g. tiktok, x, linkedin. |
| destinationId* | string | Postiz destination id on that project. |
| integrationId* |
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.
| Argument | Type | Description |
|---|---|---|
| code* | string | Complete flipcode document. |
| name* | string | Display name for the template in the team library. |
| teamId* | string | Team id from flipletters_list_teams. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"teamId",
"name",
"code"
],
"properties": {
"code": {
"type": "string",
"minLength": 1,
"description": "Complete flipcode document."
},
"name": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "Display name for the template in the team library."
},
"teamId": {
"type": "string",
"minLength": 1,
"description": "Team id from flipletters_list_teams."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| out | string | Canvas: "vertical", "square", "1200x630@25", … |
| flip | string | Transition, commas for spaces: "cascade,9,0.2,0.4". |
| grid | string | ROWSxCOLS, e.g. "8x34". |
| hold | string | Seconds, e.g. "6". |
| board | string | Board type/alias, e.g. "station". |
| sound | string | |
| speed | string | |
| title | string | |
| accent | string | Hex color, # optional. |
| slides |
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.
| Argument | Type | Description |
|---|---|---|
| code* | string | A complete flipcode document (see flipletters_flipcode_reference). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"code"
],
"properties": {
"code": {
"type": "string",
"minLength": 1,
"description": "A complete flipcode document (see flipletters_flipcode_reference)."
}
}
}| string |
| Postiz channel/integration id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"workspaceId",
"destinationId",
"integrationId",
"date"
],
"properties": {
"date": {
"type": "string",
"minLength": 1,
"description": "UTC ISO datetime, e.g. 2026-08-14T15:00:00.000Z"
},
"type": {
"enum": [
"schedule",
"draft",
"now"
],
"type": "string",
"description": "Default schedule."
},
"content": {
"type": "string",
"description": "Caption / post body."
},
"fileName": {
"type": "string",
"description": "Local renders/*.mp4 name when Studio host has the file."
},
"mediaUrl": {
"type": "string",
"description": "HTTPS URL of the MP4 (from cloud render)."
},
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "FlipLetters project id."
},
"providerType": {
"type": "string",
"description": "Postiz provider __type, e.g. tiktok, x, linkedin."
},
"destinationId": {
"type": "string",
"minLength": 1,
"description": "Postiz destination id on that project."
},
"integrationId": {
"type": "string",
"minLength": 1,
"description": "Postiz channel/integration id."
}
}
}| array |
| Each entry is one slide; | separates rows: "EGGS BENEDICT|FLAT WHITE". |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"out": {
"type": "string",
"description": "Canvas: \"vertical\", \"square\", \"1200x630@25\", …"
},
"flip": {
"type": "string",
"description": "Transition, commas for spaces: \"cascade,9,0.2,0.4\"."
},
"grid": {
"type": "string",
"description": "ROWSxCOLS, e.g. \"8x34\"."
},
"hold": {
"type": "string",
"description": "Seconds, e.g. \"6\"."
},
"board": {
"type": "string",
"description": "Board type/alias, e.g. \"station\"."
},
"sound": {
"type": "string"
},
"speed": {
"type": "string"
},
"title": {
"type": "string"
},
"accent": {
"type": "string",
"description": "Hex color, # optional."
},
"slides": {
"type": "array",
"items": {
"type": "string"
},
"description": "Each entry is one slide; | separates rows: \"EGGS BENEDICT|FLAT WHITE\"."
}
}
}