Keyframer
by keyframer.dev · remote · no sign-in to list tools · v1.0.0 · published by dev.keyframer
150+ React Native animation recipes, scene authoring, phone preview via QR, Reanimated v4 codegen
11 tools: 1 can delete or cancel things, 3 change things and 7 only read.
Scanned Oct 21, 2026
- Deletes or cancels1Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things3Claude Code: ask: see these tools
- Only reads7Claude Code: allow: see these tools
1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http keyframer https://api.keyframer.dev/mcpFindings
Matches of fixed checks, with the text they matched.
- Warngenerate_code
The server marks "generate_code" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true}; The name "generate_code" says "generate": a word for a change.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
11 tools
Deletes or cancels 1Claude Code: deny
update_sceneReplace the content of one of your scenes (full scene JSON, validated first) — the edit loop for iterating instead of duplicating.No findings
Why it is in this group
- The name "update_scene" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
Changes things 3Claude Code: ask
create_sceneSave a scene and get an editor URL where it opens in the visual editor (timeline, canvas, node graphs, mobile QR preview).No findings
Why it is in this group
- The name "create_scene" says "create": a word for a change.
Description, as the server wrote it 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).
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
generate_codeCompile a scene into a runnable React Native component.1 finding
Why it is in this group
- The name "generate_code" says "generate": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "generate_code" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true}; The name "generate_code" says "generate": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
sample_sceneNumerically 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).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 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.
Annotations the server declares
- readOnlyHint: true
Only reads 7Claude Code: allow
get_preview_qrA terminal-scannable QR code for a scene.No findings
Why it is in this group
- The name "get_preview_qr" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
get_recipeFetch one recipe by slug: metadata, the scene JSON (usable as a starting point for create_scene), and the generated React Native Reanimated component code.No findings
Why it is in this group
- The name "get_recipe" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
get_sceneFetch one of your scenes (or any public scene) as JSON — edit it and re-save with update_scene, or feed it to generate_code.No findings
Why it is in this group
- The name "get_scene" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
get_scene_formatThe Keyframer scene JSON format — read this before authoring a scene.No findings
Why it is in this group
- The name "get_scene_format" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
list_scenesList the scenes in the connected Keyframer account (id, name, updated, visibility).No findings
Why it is in this group
- The name "list_scenes" says "list": a word for reading.
Description, as the server wrote it List the scenes in the connected Keyframer account (id, name, updated, visibility). Requires an API key.
Annotations the server declares
- readOnlyHint: true
search_recipesSearch 150+ free Keyframer recipes (bounce, carousels, progress rings, particles, text effects, shaders, scroll animations…).No findings
Why it is in this group
- The name "search_recipes" says "search": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
validate_sceneValidate a scene against the Keyframer format before create_scene or generate_code.No findings
Why it is in this group
- The name "validate_scene" says "validate": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: 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 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http keyframer https://api.keyframer.dev/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__keyframer__search_recipes",
"mcp__keyframer__get_recipe",
"mcp__keyframer__get_scene_format",
"mcp__keyframer__validate_scene",
"mcp__keyframer__list_scenes",
"mcp__keyframer__get_scene",
"mcp__keyframer__get_preview_qr"
],
"ask": [
"mcp__keyframer__sample_scene",
"mcp__keyframer__create_scene",
"mcp__keyframer__generate_code"
],
"deny": [
"mcp__keyframer__update_scene"
]
}
}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 keyframer. Review it before you use it.