Skip to content

FlipLetters

by flipletters.com · remote · local (npm) · no sign-in to list tools · v0.3.1 · published by com.flipletters

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

Changes · 5

12 tools: 5 change things and 7 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http flipletters https://app.flipletters.com/mcp/v1 --header 'Authorization: <your-authorization>'

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "flipletters_validate_board" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The name "flipletters_validate_board" says "validate": a word for reading.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

12 tools

Changes things 5Claude Code: ask
  • flipletters_render_boardParses flipcode and submits a cloud MP4 render under the API key owner's FlipLetters plan (same free quota / Premium / Studio limits as the Studio).No findings

    Why it is in this group

    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • flipletters_share_to_postizUploads a cloud media URL (or Studio host local fileName) to a project's Postiz destination and schedules/drafts/posts it.No findings

    Why it is in this group

    • The description's first verb is "upload": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • flipletters_share_to_teamParses flipcode and shares the board into a Team Library the key owner is a member of.No findings

    Why it is in this group

    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • flipletters_template_urlBuilds 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 messa…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • flipletters_validate_boardParses 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 …1 finding

    Why it is in this group

    • The name "flipletters_validate_board" says "validate": a word for reading.
    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "flipletters_validate_board" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The name "flipletters_validate_board" says "validate": a word for reading.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
Only reads 7Claude Code: allow
  • flipletters_example_boardReturns a complete, valid flipcode document for a board type (minimal, trainboard/station, artboard, flipdot, marquee, announcement, arena) — a known-good starting point to edit ra…No findings

    Why it is in this group

    • The description's first verb is "return": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • flipletters_flipcode_referenceReturns the flipcode cheat sheet (spec v1): directives, board types and size limits, transition modes, and flip-native effect recipes.No findings

    Why it is in this group

    • The description's first verb is "return": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • flipletters_list_postiz_destinationsLists Postiz destinations (masked keys) attached to a FlipLetters project.No findings

    Why it is in this group

    • The name "flipletters_list_postiz_destinations" says "list": a word for reading.
    Description, as the server wrote it
    Lists Postiz destinations (masked keys) attached to a FlipLetters project. Use flipletters_list_workspaces first. Requires Authorization: Bearer flk_….

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: true
  • flipletters_list_postiz_integrationsLists connected social channels for a project's Postiz share account.No findings

    Why it is in this group

    • The name "flipletters_list_postiz_integrations" says "list": a word for reading.
    Description, as the server wrote it
    Lists connected social channels for a project's Postiz share account. Use before flipletters_share_to_postiz to get integrationId. Requires Authorization: Bearer flk_….

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: true
  • flipletters_list_teamsLists FlipLetters teams the API key owner belongs to (teamId, name, inviteCode).No findings

    Why it is in this group

    • The name "flipletters_list_teams" says "list": a word for reading.
    Description, as the server wrote it
    Lists FlipLetters teams the API key owner belongs to (teamId, name, inviteCode). Requires Authorization: Bearer flk_… with team scope.

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: true
  • flipletters_list_workspacesLists agency projects (workspaces) for the API key owner, plus the active project id.No findings

    Why it is in this group

    • The name "flipletters_list_workspaces" says "list": a word for reading.
    Description, as the server wrote it
    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_….

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: true
  • flipletters_render_statusPoll a cloud render job started with flipletters_render_board.No findings

    Why it is in this group

    • The name "flipletters_render_status" says "status": a word for reading.
    Description, as the server wrote it
    Poll a cloud render job started with flipletters_render_board. Requires Authorization: Bearer flk_….

    Annotations the server declares

    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.3.1. Values in angle brackets are yours to fill in.

claude mcp add --transport http flipletters https://app.flipletters.com/mcp/v1 --header 'Authorization: <your-authorization>'

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__flipletters__flipletters_flipcode_reference",
      "mcp__flipletters__flipletters_example_board",
      "mcp__flipletters__flipletters_render_status",
      "mcp__flipletters__flipletters_list_teams",
      "mcp__flipletters__flipletters_list_workspaces",
      "mcp__flipletters__flipletters_list_postiz_destinations",
      "mcp__flipletters__flipletters_list_postiz_integrations"
    ],
    "ask": [
      "mcp__flipletters__flipletters_validate_board",
      "mcp__flipletters__flipletters_template_url",
      "mcp__flipletters__flipletters_render_board",
      "mcp__flipletters__flipletters_share_to_team",
      "mcp__flipletters__flipletters_share_to_postiz"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as flipletters. Review it before you use it.