{"name":"dev.keyframer/keyframer","slug":"keyframer","title":"Keyframer","description":"150+ React Native animation recipes, scene authoring, phone preview via QR, Reanimated v4 codegen","url":"https://mcp.market/server/keyframer","rating":null,"grade":"C","score":61,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T05:10:26.645Z","last_ok_at":"2026-11-04T05:10:26.645Z","latency_ms":978},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":null,"website":"https://keyframer.dev/mcp","version":"1.0.0","remotes":[{"type":"streamable-http","url":"https://api.keyframer.dev/mcp","headers":[{"description":"Optional: 'Bearer kf_...' API key from keyframer.dev/app/profile (MCP tab). Recipe search, scene validation, and 24-hour guest scenes work with no key; a key saves scenes to your account.","isSecret":true,"name":"Authorization"}]}],"packages":[],"tools":[{"name":"create_scene","description":"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).","write_action":true,"price_micros":0,"input_schema":{"type":"object","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."},"name":{"description":"Scene name shown in the editor (default \"MCP scene\")","type":"string","maxLength":120},"make_public":{"description":"Make the scene publicly viewable — its share link (keyframer.dev/share/<id>) and QR then work for anyone, not just this account","type":"boolean"}},"required":["scene"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"generate_code","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","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."},"scene_id":{"description":"Generate from a saved scene instead of inline JSON","type":"string"},"api":{"description":"Default \"reanimated\"","type":"string","enum":["reanimated","animated"]},"relative_positioning":{"description":"Emit flex-relative layout instead of absolute coordinates","type":"boolean"},"gesture_handler_version":{"description":"react-native-gesture-handler major (default v2)","type":"string","enum":["v2","v3"]}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_preview_qr","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"scene_id":{"type":"string","description":"Scene id from create_scene or list_scenes"}},"required":["scene_id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_recipe","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"description":"Recipe slug from search_recipes","type":"string"},"id":{"description":"Alias for slug — a scene id from a recipe works too","type":"string"},"scene_id":{"description":"When a recipe has several scenes, pick one (defaults to the first)","type":"string"},"include_code":{"description":"Include generated code (default true)","type":"boolean"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_scene","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","description":"Scene id from list_scenes or an editor URL"}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_scene_format","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"section":{"description":"Default \"scene\"","type":"string","enum":["scene","nodes"]}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_scenes","description":"List the scenes in the connected Keyframer account (id, name, updated, visibility). Requires an API key.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"sample_scene","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","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":{"description":"Sample count across the duration (default 9)","type":"integer","minimum":3,"maximum":25},"element_ids":{"description":"Only report these element ids","type":"array","items":{"type":"string"}}},"required":["scene"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"search_recipes","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","description":"What to build, e.g. \"snap carousel with parallax\" or \"countdown ring\""},"category":{"type":"string","enum":["guides","keyframes","node-graphs","shaders","timing","gestures","scroll-lists"]},"limit":{"type":"integer","minimum":1,"maximum":25}},"required":["query"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"update_scene","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"scene_id":{"type":"string","description":"Scene id from create_scene or list_scenes"},"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."},"name":{"description":"New name (unchanged if omitted)","type":"string","maxLength":120},"make_public":{"description":"Change public visibility (unchanged if omitted)","type":"boolean"}},"required":["scene_id","scene"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"validate_scene","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","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."}},"required":["scene"],"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":61,"grade":"C","scanned_at":"2026-11-01T06:16:39.405Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-11-01T06:16:39.366Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":12,"max":20,"notes":["remote reachable in 5048ms"]},"poisoning":{"score":15,"max":15,"notes":["11 tool descriptions checked"]},"auth":{"score":8,"max":15,"notes":["API key sent as a header"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":8,"max":10,"notes":["endpoint served from the registry-verified namespace domain"]}},"findings":[{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"probes":[{"url":"https://api.keyframer.dev/mcp","reachable":true,"authRequired":false,"latencyMs":5048,"serverInfo":{"name":"keyframer","version":"1.0.0"}}],"packages":[],"repo":{"found":false},"icon":{"url":"https://keyframer.dev/logo512.png","source":"registry","width":512,"height":512},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}