_ registry / mcp streamable-http · checked 1h ago

keyframer

https://api.keyframer.dev

Registry code: 318aec28171e4ad2

api record

Keyframer (keyframer.dev) is a visual animation editor that generates production React Native Reanimated v4 code. Workflow for building an animation: get_scene_format → author scene JSON → validate_scene (iterate until clean) → create_scene (opens in the visual editor, returns a phone-scannable QR) → update_scene to iterate → generate_code. For known patterns start from search_recipes/get_recipe — recipes include ready, verified code. No key needed for exploration or for create_scene (which then makes a public 24-hour guest scene the user can keep by signing up and pressing Remix).…

endpoint
https://api.keyframer.dev/mcp
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is keyframer live?
Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
Is keyframer free to use?
Partly — some of its tools are open, others need a key or payment.
What tools does keyframer have?
11 tools: create_scene, update_scene, get_preview_qr, sample_scene, search_recipes, validate_scene, get_recipe, get_scene, ….
Is keyframer safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
1,557ms

last good check

priced tools
0

of 11 tools

_ answered our checks, 90 days 291 checks · signed record
  • down → live
  • unknown → live
_ what it is for
used for
  • generate react native animation code from a scene
  • validate an animation scene json
  • search animation recipes
  • create and update animation scenes in an editor
takes → gives
data, text → code, data
tools
9 reads2 changes data
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 11 tools
1 open2 auth-required 8 never probed 3 of 11 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • get_scene_format reads open 1h ago

    The Keyframer scene JSON format — read this before authoring a scene. Section "scene" covers elements/keyframes/easing; section "nodes" covers node graphs (procedural animation: clocks, springs, repeaters) with the full node-type schema.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "section": {
          "enum": [
            "scene",
            "nodes"
          ],
          "type": "string",
          "description": "Default \"scene\""
        }
      }
    }
    arguments 14 lines
  • generate_code reads auth-required 19h ago

    Compile a scene into a runnable React Native component. Pass inline scene JSON or a scene_id from your account. Output targets Reanimated v4 by default ("animated" targets the RN core Animated API, reduced feature set). Deterministic — no AI, no credits. Requires an API key on a paid plan.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "api": {
          "enum": [
            "reanimated",
            "animated"
          ],
          "type": "string",
          "description": "Default \"reanimated\""
        },
        "scene": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            }
          ],
          "description": "The scene as a JSON object (preferred) or a JSON string. Call get_scene_format for the shape."
        },
        "scene_id": {
          "type": "string",
          "description": "Generate from a saved scene instead of inline JSON"
        },
        "relative_positioning": {
          "type": "boolean",
          "description": "Emit flex-relative layout instead of absolute coordinates"
        },
        "gesture_handler_version": {
          "enum": [
            "v2",
            "v3"
          ],
          "type": "string",
          "description": "react-native-gesture-handler major (default v2)"
        }
      }
    }
    arguments 45 lines
  • list_scenes reads auth-required 19h ago

    List the scenes in the connected Keyframer account (id, name, updated, visibility). Requires an API key.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {}
    }
    arguments 5 lines
  • create_scene changes data unknown never probed

    Save a scene and get an editor URL where it opens in the visual editor (timeline, canvas, node graphs, mobile QR preview). Validates first. Works without a key: the scene is then a public 24-hour guest scene with a scannable QR, kept forever by signing up (free) and pressing Remix. With a key it saves to the account (free accounts up to the free scene limit, paid unlimited).

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "scene"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 120,
          "description": "Scene name shown in the editor (default \"MCP scene\")"
        },
        "scene": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            }
          ],
          "description": "The scene as a JSON object (preferred) or a JSON string. Call get_scene_format for the shape."
        },
        "make_public": {
          "type": "boolean",
          "description": "Make the scene publicly viewable — its share link (keyframer.dev/share/<id>) and QR then work for anyone, not just this account"
        }
      }
    }
    arguments 33 lines
  • update_scene changes data unknown never probed

    Replace the content of one of your scenes (full scene JSON, validated first) — the edit loop for iterating instead of duplicating. Live previews watching the scene update in place. Requires an API key; own scenes only.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "scene_id",
        "scene"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 120,
          "description": "New name (unchanged if omitted)"
        },
        "scene": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            }
          ],
          "description": "The scene as a JSON object (preferred) or a JSON string. Call get_scene_format for the shape."
        },
        "scene_id": {
          "type": "string",
          "description": "Scene id from create_scene or list_scenes"
        },
        "make_public": {
          "type": "boolean",
          "description": "Change public visibility (unchanged if omitted)"
        }
      }
    }
    arguments 38 lines
  • get_preview_qr reads unknown 1h ago

    A terminal-scannable QR code for a scene. Scan it with a phone camera and the scene runs live in the Keyframer preview app on real hardware — edits sync as they happen. Public scenes (including guest scenes) work without a key; private scenes need an API key on a paid plan.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "scene_id"
      ],
      "properties": {
        "scene_id": {
          "type": "string",
          "description": "Scene id from create_scene or list_scenes"
        }
      }
    }
    arguments 13 lines
  • sample_scene reads unknown 9h ago

    Numerically preview a scene: evaluates keyframes AND node graphs at N evenly spaced times and returns each moving prop as a value series (the same math the editor preview runs). validate_scene checks structure — this checks MOTION: confirm ranges, spring overshoot, stagger offsets, and that elements actually move before create_scene. Free to call — iterate: author → sample → adjust.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "scene"
      ],
      "properties": {
        "scene": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            }
          ],
          "description": "The scene as a JSON object (preferred) or a JSON string. Call get_scene_format for the shape."
        },
        "samples": {
          "type": "integer",
          "maximum": 25,
          "minimum": 3,
          "description": "Sample count across the duration (default 9)"
        },
        "element_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Only report these element ids"
        }
      }
    }
    arguments 37 lines
  • search_recipes reads unknown 9h ago

    Search 150+ free Keyframer recipes (bounce, carousels, progress rings, particles, text effects, shaders, scroll animations…). Each recipe has a scene + verified React Native Reanimated code. Returns slugs for get_recipe.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "query"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 25,
          "minimum": 1
        },
        "query": {
          "type": "string",
          "description": "What to build, e.g. \"snap carousel with parallax\" or \"countdown ring\""
        },
        "category": {
          "enum": [
            "guides",
            "keyframes",
            "node-graphs",
            "shaders",
            "timing",
            "gestures",
            "scroll-lists"
          ],
          "type": "string"
        }
      }
    }
    arguments 30 lines
  • validate_scene reads unknown 9h ago

    Validate a scene against the Keyframer format before create_scene or generate_code. Returns errors (must fix) and warnings (advisory). Free to call — iterate until clean.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "scene"
      ],
      "properties": {
        "scene": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            }
          ],
          "description": "The scene as a JSON object (preferred) or a JSON string. Call get_scene_format for the shape."
        }
      }
    }
    arguments 24 lines
  • get_recipe reads unknown 19h ago

    Fetch one recipe by slug: metadata, the scene JSON (usable as a starting point for create_scene), and the generated React Native Reanimated component code. Recipe code is free to use.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "id": {
          "type": "string",
          "description": "Alias for slug — a scene id from a recipe works too"
        },
        "slug": {
          "type": "string",
          "description": "Recipe slug from search_recipes"
        },
        "scene_id": {
          "type": "string",
          "description": "When a recipe has several scenes, pick one (defaults to the first)"
        },
        "include_code": {
          "type": "boolean",
          "description": "Include generated code (default true)"
        }
      }
    }
    arguments 22 lines
  • get_scene reads unknown 1h ago

    Fetch one of your scenes (or any public scene) as JSON — edit it and re-save with update_scene, or feed it to generate_code. Requires an API key.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "id"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "Scene id from list_scenes or an editor URL"
        }
      }
    }
    arguments 13 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id 318aec28171e4ad2.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/318aec28171e4ad2/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/318aec28171e4ad2/badge.svg)](https://brick.blue/agent/318aec28171e4ad2?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.