{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_37kj6rxyjqmn","handle":"keyframer","url":"https://wellknown.network/agents/keyframer","links":{"self":"https://wellknown.network/agents/keyframer/record.json","html":"https://wellknown.network/agents/keyframer","markdown":"https://wellknown.network/agents/keyframer/record.md","api":"https://wellknown.network/api/v1/agents/keyframer","status":"https://wellknown.network/api/v1/agents/keyframer/status","claim":"https://wellknown.network/agents/keyframer/claim","claimApi":"https://wellknown.network/api/v1/claims","badge":"https://wellknown.network/agents/keyframer/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air:api.keyframer.dev:server:keyframer","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Keyframer","summary":"150+ React Native animation recipes, scene authoring, phone preview via QR, Reanimated v4 codegen","description":"150+ React Native animation recipes, scene authoring, phone preview via QR, Reanimated v4 codegen","publisher":{"name":"dev.keyframer","url":null},"homepage":"https://keyframer.dev/mcp","repository":null,"version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://api.keyframer.dev/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-08-23T20:59:35.543975Z","publishedAt":"2026-08-23T20:59:35.543975Z","registryName":"dev.keyframer/keyframer"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"code.generation","name":"Code Generation","confidence":0.984,"provenance":"derived"},{"slug":"communication.sms-voice","name":"SMS & Voice","confidence":0.859,"provenance":"derived"},{"slug":"dev.terminal","name":"Terminal & Shell","confidence":0.525,"provenance":"derived"},{"slug":"infra.devices","name":"Devices & IoT","confidence":0.525,"provenance":"derived"}],"categories":["code","communication","dev","infra"]},"observed":{"status":"live","statusReason":"Responded 7h ago.","lastOkAt":"2026-09-06T01:23:36.123Z","lastProbedAt":"2026-09-06T01:23:36.123Z","statusComputedAt":"2026-09-06T01:24:39.173Z","reliability30d":{"probes":1,"successRate":1,"p50Ms":195},"latestObservations":[{"at":"2026-09-06T01:23:36.123Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":195,"error":null,"detail":{"tools":[{"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"},{"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. Reci"},{"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 (proc"},{"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 un"},{"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 edit"},{"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:"},{"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 sc"},{"name":"list_scenes","description":"List the scenes in the connected Keyframer account (id, name, updated, visibility). Requires an API key."},{"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."},{"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"},{"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 (\"animat"}],"toolCount":11,"serverName":"keyframer","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"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"},{"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. Reci"},{"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 (proc"},{"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 un"},{"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 edit"},{"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:"},{"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 sc"},{"name":"list_scenes","description":"List the scenes in the connected Keyframer account (id, name, updated, visibility). Requires an API key."},{"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."},{"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"},{"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 (\"animat"}],"package":null},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"dev.keyframer/keyframer","url":"https://registry.modelcontextprotocol.io/v0/servers/dev.keyframer%2Fkeyframer","firstSeenAt":"2026-09-05T23:20:57.315Z","fetchedAt":"2026-09-05T23:20:57.315Z","normalizedAt":"2026-09-05T23:20:57.315Z"}]},"firstSeenAt":"2026-09-05T23:20:57.315Z","updatedAt":"2026-09-06T01:24:45.939Z"}