FlipLetters
Draft, validate, render, and share split-flap and flip-dot board videos written in flipcode.
我該用這個嗎
品質與安全性
發現項目(3)
- LOW在 flipletters_list_postiz_destinations 中
- LOW在 flipletters_list_postiz_integrations 中
- LOW在 flipletters_template_url 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"mcp": {
"command": "npx",
"args": [
"flipletters-mcp-server"
]
}
}
}可執行的套件
0.3.1stdio遠端端點
https://app.flipletters.com/mcp/v1streamable-http它能做什麼
工具清單
工具(12)
🟢flipletters_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.
輸入結構描述
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}輸出結構描述
{
"type": "object",
"properties": {
"reference": {
"type": "string"
}
},
"required": [
"reference"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢flipletters_validate_board(code)
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.
輸入結構描述
{
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1,
"description": "A complete flipcode document (see flipletters_flipcode_reference)."
}
},
"required": [
"code"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}輸出結構描述
{
"type": "object",
"properties": {
"valid": {
"type": "boolean"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"canonicalCode": {
"type": "string"
},
"summary": {
"type": "object",
"properties": {
"template": {
"type": "string"
},
"boardRows": {
"type": "number"
},
"boardCols": {
"type": "number"
},
"canvas": {
"type": "string"
},
"slideCount": {
"type": "number"
}
},
"required": [
"template",
"boardRows",
"boardCols",
"canvas",
"slideCount"
],
"additionalProperties": false
},
"shareUrl": {
"description": "Opens this exact board in the Studio. Null when the board is too large for a URL — share the code text instead.",
"type": [
"string",
"null"
]
},
"openWithCodeUrl": {
"type": [
"string",
"null"
]
}
},
"required": [
"valid",
"warnings",
"canonicalCode",
"summary",
"shareUrl",
"openWithCodeUrl"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢flipletters_example_board(template)
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.
輸入結構描述
{
"type": "object",
"properties": {
"template": {
"type": "string",
"description": "Board type or alias: minimal, trainboard, station, artboard, art, flipdot, dots, marquee, desk, announcement, poster, arena, lightbox."
}
},
"required": [
"template"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}輸出結構描述
{
"type": "object",
"properties": {
"template": {
"type": "string"
},
"code": {
"type": "string"
}
},
"required": [
"template",
"code"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢flipletters_template_url(board, grid, title, accent, out, ...)
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.
輸入結構描述
{
"type": "object",
"properties": {
"board": {
"description": "Board type/alias, e.g. \"station\".",
"type": "string"
},
"grid": {
"description": "ROWSxCOLS, e.g. \"8x34\".",
"type": "string"
},
"title": {
"type": "string"
},
"accent": {
"description": "Hex color, # optional.",
"type": "string"
},
"out": {
"description": "Canvas: \"vertical\", \"square\", \"1200x630@25\", …",
"type": "string"
},
"sound": {
"type": "string"
},
"speed": {
"type": "string"
},
"slides": {
"description": "Each entry is one slide; | separates rows: \"EGGS BENEDICT|FLAT WHITE\".",
"type": "array",
"items": {
"type": "string"
}
},
"flip": {
"description": "Transition, commas for spaces: \"cascade,9,0.2,0.4\".",
"type": "string"
},
"hold": {
"description": "Seconds, e.g. \"6\".",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}輸出結構描述
{
"type": "object",
"properties": {
"url": {
"type": "string"
}
},
"required": [
"url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}⚪flipletters_render_board(code, repeat, wait)
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.
輸入結構描述
{
"type": "object",
"properties": {
"code": {
"type": "string",
"minLength": 1,
"description": "Complete flipcode document."
},
"repeat": {
"description": "Loop the segment this many times (default 1). Caps apply for long / 4K exports.",
"type": "integer",
"minimum": 1,
"maximum": 120
},
"wait": {
"description": "If true (default), poll until done/error. If false, return jobId immediately.",
"type": "boolean"
}
},
"required": [
"code"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢flipletters_render_status(jobId)
Poll a cloud render job started with flipletters_render_board. Requires Authorization: Bearer flk_….
輸入結構描述
{
"type": "object",
"properties": {
"jobId": {
"type": "string",
"minLength": 1,
"description": "Job id returned by flipletters_render_board."
}
},
"required": [
"jobId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢flipletters_list_teams
Lists FlipLetters teams the API key owner belongs to (teamId, name, inviteCode). Requires Authorization: Bearer flk_… with team scope.
輸入結構描述
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢flipletters_share_to_team(teamId, name, code)
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.
輸入結構描述
{
"type": "object",
"properties": {
"teamId": {
"type": "string",
"minLength": 1,
"description": "Team id from flipletters_list_teams."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "Display name for the template in the team library."
},
"code": {
"type": "string",
"minLength": 1,
"description": "Complete flipcode document."
}
},
"required": [
"teamId",
"name",
"code"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢flipletters_list_workspaces
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_….
輸入結構描述
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢flipletters_list_postiz_destinations(workspaceId)
Lists Postiz destinations (masked keys) attached to a FlipLetters project. Use flipletters_list_workspaces first. Requires Authorization: Bearer flk_….
輸入結構描述
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "Project id from flipletters_list_workspaces."
}
},
"required": [
"workspaceId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢flipletters_list_postiz_integrations(workspaceId, destinationId)
Lists connected social channels for a project's Postiz share account. Use before flipletters_share_to_postiz to get integrationId. Requires Authorization: Bearer flk_….
輸入結構描述
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1
},
"destinationId": {
"type": "string",
"minLength": 1
}
},
"required": [
"workspaceId",
"destinationId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢flipletters_share_to_postiz(workspaceId, destinationId, integrationId, date, type, ...)
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.
輸入結構描述
{
"type": "object",
"properties": {
"workspaceId": {
"type": "string",
"minLength": 1,
"description": "FlipLetters project id."
},
"destinationId": {
"type": "string",
"minLength": 1,
"description": "Postiz destination id on that project."
},
"integrationId": {
"type": "string",
"minLength": 1,
"description": "Postiz channel/integration id."
},
"date": {
"type": "string",
"minLength": 1,
"description": "UTC ISO datetime, e.g. 2026-08-14T15:00:00.000Z"
},
"type": {
"description": "Default schedule.",
"type": "string",
"enum": [
"schedule",
"draft",
"now"
]
},
"content": {
"description": "Caption / post body.",
"type": "string"
},
"mediaUrl": {
"description": "HTTPS URL of the MP4 (from cloud render).",
"type": "string"
},
"fileName": {
"description": "Local renders/*.mp4 name when Studio host has the file.",
"type": "string"
},
"providerType": {
"description": "Postiz provider __type, e.g. tiktok, x, linkedin.",
"type": "string"
}
},
"required": [
"workspaceId",
"destinationId",
"integrationId",
"date"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}社群
證據