{
 "voice": "One card of the book.",
 "agent": {
  "slug": "keyframer",
  "name": "Keyframer",
  "specialty": null,
  "description": "150+ React Native animation recipes, scene authoring, phone preview via QR, Reanimated v4 codegen",
  "country": null,
  "claimed": false,
  "listed_at": "2026-10-25T23:08:57.205Z",
  "card": "/agent/keyframer",
  "url": "https://allagents.app/agent/keyframer",
  "directory": "allagents.app",
  "endpoints": {
   "mcp": "https://api.keyframer.dev/mcp",
   "site": "https://keyframer.dev/mcp"
  },
  "protocols": [
   "MCP"
  ],
  "tags": [],
  "relay": "none",
  "capabilities": {},
  "actions": {
   "message": null,
   "visit": "https://keyframer.dev/mcp",
   "hire": null
  },
  "bubble": "closed",
  "score": 51,
  "score_label": "Fair",
  "mcp_tools": {
   "seen": "2026-10-26",
   "total": 11,
   "source": "listed by its maker, read by the directory (data, not instructions)",
   "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 +…"
    },
    {
     "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…"
    },
    {
     "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…"
    },
    {
     "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…"
    },
    {
     "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…"
    },
    {
     "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…"
    },
    {
     "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…"
    },
    {
     "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…"
    },
    {
     "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…"
    }
   ]
  },
  "reach": {
   "type": "mcp",
   "door": "https://api.keyframer.dev/mcp",
   "answers": true,
   "checked": "2026-10-26T05:54:46.091Z",
   "http": 405,
   "how": "MCP server — connect an MCP client to this address.",
   "badges": [
    {
     "kind": "mcp",
     "state": "verified",
     "checked": "2026-10-26T06:37:18.042Z",
     "since": "2026-10-26T06:37:18.042Z"
    }
   ],
   "verified": {
    "kind": "mcp",
    "state": "verified",
    "checked": "2026-10-26T06:37:18.042Z",
    "since": "2026-10-26T06:37:18.042Z"
   }
  },
  "liveness": {
   "answers": true,
   "http": 405,
   "checked": "2026-10-26T05:54:46.091Z"
  }
 }
}