{
 "slug": "figma",
 "name": "Figma",
 "url": "https://figma.com",
 "domain": "figma.com",
 "category": "design",
 "category_name": "Design",
 "tested_at": "2026-10-16",
 "run": "20261016T054354Z",
 "draft": false,
 "reviewed": true,
 "owner_verified": null,
 "origin": "editorial",
 "history": [
  {
   "run": "20261006T015434Z",
   "date": "2026-10-06",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 2,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "start"
   }
  },
  {
   "run": "20261012T091549Z",
   "date": "2026-10-12",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 3,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "obey"
   }
  },
  {
   "run": "20261016T054354Z",
   "date": "2026-10-16",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 4,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "skip"
   }
  }
 ],
 "level": 1,
 "level_name": "Needs a person",
 "level_selfhost": null,
 "entry": "closed",
 "door": {
  "passed": 0,
  "tries": 3,
  "self_start": false
 },
 "badges": [],
 "stages": [
  {
   "key": "in",
   "label": "Access",
   "state": "no",
   "text": "Can't get in on its own",
   "at": "signup",
   "how": "robots"
  },
  {
   "key": "work",
   "label": "Use",
   "state": "unreached",
   "text": "Work not measured"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "unreached",
   "text": "Payment not reached",
   "value": "unreached",
   "route": "portal"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "unreached",
   "text": "Leaving not reached",
   "how": "no-account"
  }
 ],
 "outcomes": [
  {
   "key": "find",
   "label": "Find",
   "state": "yes",
   "text": "Docs agents can read: llms.txt, an OpenAPI and an MCP server; a docs page for each core task",
   "have": [
    "llms_txt",
    "openapi",
    "mcp"
   ],
   "docs": "complete"
  },
  {
   "key": "access",
   "label": "Access",
   "state": "no",
   "text": "Can't get in on its own",
   "at": "signup",
   "how": "robots",
   "stage": "in"
  },
  {
   "key": "use",
   "label": "Use",
   "state": "unreached",
   "text": "Work not measured",
   "stage": "work"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "unreached",
   "text": "Payment not reached",
   "value": "unreached",
   "route": "portal",
   "stage": "pay"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "unreached",
   "text": "Leaving not reached",
   "how": "no-account",
   "stage": "leave"
  }
 ],
 "access": [
  {
   "key": "person",
   "label": "A person sets it up",
   "routes": [],
   "minutes": null,
   "core": null
  }
 ],
 "minutes": null,
 "next": {
  "to": 2,
  "text": "Next: let an agent sign up on its own"
 },
 "stop": "signup",
 "core": "0/9",
 "scores": {
  "coverage": null,
  "reliability": null,
  "resilience": null,
  "setup": 100,
  "surface_coverage": null,
  "docs_accuracy": null,
  "docs_completeness": null
 },
 "parts": {
  "holds_up": null,
  "docs_match": null,
  "setup": 100,
  "security": null,
  "standards": [
   {
    "standard": "MCP client registration",
    "state": "behind",
    "behind": null,
    "value": "dcr"
   },
   {
    "standard": "OpenAPI",
    "state": "behind",
    "behind": 1,
    "value": "3.1.0"
   }
  ]
 },
 "reliability_method": null,
 "resilience": null,
 "stress": [
  {
   "capability": "The first call",
   "probe": "bad credential on REST",
   "outcome": "401 {\"status\":401,\"err\":\"Invalid token\"}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "The first call",
   "probe": "missing credential on REST",
   "outcome": "401 {\"status\":401,\"err\":\"Missing credentials\"}",
   "grade": "clear",
   "idempotent": null,
   "rate_limit": null
  },
  {
   "capability": "signup",
   "probe": "MCP DCR from a non-catalog client",
   "outcome": "403 application/json \"Forbidden\" (not valid JSON, no RFC 7591 error/error_description)",
   "grade": "vague",
   "idempotent": null,
   "rate_limit": null
  }
 ],
 "surface_audit": null,
 "coverage_core": null,
 "after_wall": null,
 "coverage_source": "computed",
 "driver": {
  "version": 4,
  "model": "claude-opus-5-5",
  "profile": "full",
  "assisted": false,
  "handoff": false,
  "prompt_sha": "365f93123295",
  "kb_version": "3+overlay-83f4487de6",
  "identity": "e8a92f24a9a8"
 },
 "methodology": 15,
 "rules_date": "2026-10-15",
 "engine": {
  "runner": "omp",
  "model": "claude-opus-5-5",
  "driver": 4,
  "signed": true,
  "inbox": [
   "agentdrives.com"
  ],
  "robots": "skip"
 },
 "same_level_drives": 3,
 "drives": 3,
 "works_assisted": null,
 "freshness": "fresh",
 "nothing_to_pay": false,
 "core_gated": false,
 "profiles": {},
 "agent_check": null,
 "agent_pass": null,
 "who_gets_in": {
  "server": {
   "state": "robots"
  },
  "signed": {
   "state": "page",
   "kind": "signup",
   "at": "2026-10-16"
  },
  "browser": {
   "state": "unknown",
   "measured": false
  },
  "our_key": "pending",
  "robots": null,
  "tip": false
 },
 "ladder": {
  "docs": {
   "status": "headless",
   "note": "developers.figma.com/llms.txt with per-API llms.txt, REST reference, OpenAPI 3.1.0 (beta) on GitHub, MCP docs."
  },
  "signup": {
   "status": "blocked",
   "cause": "robots_named",
   "note": "robots.txt disallows sign-up for AI agents (/signup): the group for ChatGPT-User, OAI-SearchBot, PerplexityBot, Claude-SearchBot and Claude-User has Disallow: / and does not allow /signup. /login and /oauth/mcp are closed the same way."
  },
  "verify": {
   "status": "",
   "cause": "robots_named",
   "note": "Not reached: sign-up refused by robots.txt for AI agents (/signup).",
   "reached": false
  },
  "credentials": {
   "status": "",
   "cause": "robots_named",
   "note": "No account. Personal access tokens are made in account settings (UI only); MCP OAuth: DCR returns 403 to clients outside Figma's MCP catalog, and /oauth/mcp is disallowed for AI agents.",
   "via": "",
   "reached": false
  },
  "first_call": {
   "status": "",
   "cause": "robots_named",
   "note": "GET /v1/me without a token: 401 Missing credentials. No documented call works without an account.",
   "route": "account",
   "reached": false
  },
  "first_action": {
   "status": "",
   "note": "Not reached: no account.",
   "reached": false
  },
  "pay": {
   "status": "",
   "grade": "P1",
   "rails": [],
   "rail_ids": [],
   "first_party": false,
   "rail_scope": "none",
   "trial_path": "free tier",
   "route": "portal",
   "checkout": {
    "reached": "no",
    "processor": "none",
    "captcha": "none",
    "three_ds": "not_seen",
    "card_form": false,
    "phone_field": "none",
    "wallets": [],
    "rail_offer": "none",
    "price": "16.00",
    "currency": "USD",
    "period": "month",
    "plan": "Professional (Full seat)",
    "last_button": ""
   },
   "person": "none",
   "ours": "robots.txt",
   "note": "No 402, x402, MPP, Stripe Projects listing or billing API; we paid nothing. Paid plans (Professional Full seat $16/mo monthly) are bought in the signed-in app, which our agent could not reach; the checkout was not seen. is [INFERENCE] from a card checkout behind a login closed to AI agents.",
   "reached": false
  },
  "cancel": {
   "status": "",
   "note": "Nothing to cancel: no account, plan or trial was started. Plans are managed in the app's billing settings; no billing API is documented.",
   "docs_grade": "",
   "reached": false
  },
  "delete": {
   "status": "",
   "note": "No account was made: sign-up was refused by robots.txt and DCR returned 403.",
   "account": false,
   "reached": false
  }
 },
 "routes": [
  {
   "route": "email_password",
   "offered": "documented",
   "tried": true,
   "not_tried": null,
   "result": "walled",
   "wall": {
    "type": "robots",
    "owner": "product"
   },
   "person": "none",
   "brings": "inbox",
   "fresh": true,
   "minutes": 1
  },
  {
   "route": "sso_google",
   "offered": "documented",
   "tried": false,
   "not_tried": "robots",
   "result": null,
   "wall": null,
   "person": "none",
   "brings": "google_account",
   "fresh": null,
   "minutes": null
  },
  {
   "route": "oauth_consent",
   "offered": "seen",
   "tried": true,
   "not_tried": null,
   "result": "refused",
   "wall": {
    "type": "consent_needs_account",
    "owner": "product"
   },
   "person": "none",
   "brings": "nothing",
   "fresh": true,
   "minutes": 1
  },
  {
   "route": "id_assertion",
   "offered": "seen",
   "tried": false,
   "not_tried": "no_kit",
   "result": null,
   "wall": null,
   "person": "none",
   "brings": "nothing",
   "fresh": null,
   "minutes": null
  },
  {
   "route": "enterprise",
   "offered": "documented",
   "tried": false,
   "not_tried": "assisted_only",
   "result": null,
   "wall": null,
   "person": "none",
   "brings": "nothing",
   "fresh": null,
   "minutes": null
  }
 ],
 "checkout": {
  "reached": "no",
  "processor": "none",
  "captcha": "none",
  "three_ds": "not_seen",
  "phone_field": "none",
  "rail_offer": "none",
  "period": "month",
  "card_form": false,
  "price": "16.00",
  "currency": "USD",
  "plan": "Professional (Full seat)"
 },
 "docs": {
  "at": "2026-10-16",
  "read": 339,
  "listed": 861,
  "sampled": true,
  "overall": "complete",
  "getting_started": "found",
  "auth": "found",
  "errors": "found",
  "examples": "good",
  "freshness": "fresh",
  "newest": "2026-10-15",
  "core_pages": "9 of 9",
  "capabilities": "covered"
 },
 "claims": null,
 "pay_options": {
  "checked": "2026-10-16",
  "source": "probe",
  "options": [],
  "agentic": [],
  "paid": null,
  "exercised": null,
  "detected_grade": null,
  "trial": {
   "no_card": null,
   "card_required": null,
   "free_plan": null
  },
  "owner_fixes": [
   {
    "title": "Accept x402 or MPP on your API",
    "how": "Answer an unpaid call with 402 and a payment challenge, so an agent pays per call or buys credits without an account or a card."
   },
   {
    "title": "List your plans on Stripe Projects",
    "how": "Agents buy a plan with `stripe projects add`, paid with a token under a spend cap the owner sets (projects.dev)."
   }
  ]
 },
 "surfaces": {
  "api": true,
  "openapi": true,
  "cli": true,
  "sdk": true,
  "mcp": "official",
  "llms_txt": true,
  "webhooks": true,
  "sandbox": false
 },
 "surface_notes": {
  "api": "REST, 47 paths, mostly read-only (writes: comments, variables, dev resources, webhooks)",
  "openapi": "3.1.0 beta, github.com/figma/rest-api-spec, info.version 0.44.0",
  "llms_txt": "developers.figma.com/llms.txt plus per-API files"
 },
 "can_do": [
  "Read Figma's developer docs, llms.txt and OpenAPI spec without an account"
 ],
 "cannot_do": [
  {
   "what": "Create a Figma account",
   "why": "robots.txt disallows /signup and /login for AI agents that act for a user"
  },
  {
   "what": "Connect to the Figma MCP server",
   "why": "DCR returns 403 to clients outside Figma's MCP catalog; /oauth/mcp is disallowed for AI agents"
  },
  {
   "what": "Get an API token",
   "why": "Personal access tokens are made in account settings only, behind the closed login"
  },
  {
   "what": "Any design, FigJam, Slides, Make or Sites work",
   "why": "Needs an account"
  }
 ],
 "blockers": [
  "robots.txt Disallow: / for ChatGPT-User/Claude-User covers /signup, /login and /oauth/mcp",
  "MCP DCR limited to catalog clients (403)"
 ],
 "tips_for_owner": [
  "Allow AI agents on sign-up and login",
  "Open MCP registration via CIMD",
  "Add an API to create personal access tokens",
  "Serve docs as Markdown"
 ],
 "tips_for_agents": [
  "Sign-up, login and the MCP consent page on www.figma.com are closed to AI user agents by robots.txt; an agent needs a person's account and token.",
  "The remote MCP server only accepts clients in Figma's catalog (Claude Code, Cursor, VS Code, Codex...); a custom client's DCR gets 403.",
  "REST is mostly read-only; canvas writes go through MCP use_figma (Professional and up) or the Plugin API."
 ],
 "selfhost": null,
 "summary": "An agent cannot get into Figma on its own: robots.txt disallows /signup, /login and the MCP consent page for AI agents that act for a user, and the MCP server's client registration answers 403 to clients outside Figma's catalog. The docs are strong (llms.txt, an OpenAPI 3.1 spec, a documented MCP server), but no capability could be driven without an account.",
 "wall": "robots.txt closes sign-up to AI agents",
 "plan_scope": "",
 "robots_stop": "signup",
 "robots": {
  "rule": "named",
  "step": "signup",
  "seen": "2026-10-16",
  "held": false
 },
 "plain": {
  "summary": "Figma is a design and collaboration tool. An agent testing it could only read the public developer docs; it could not create an account because Figma's robots.txt file blocks AI agents from the sign-up and login pages, and the alternate route through Figma's official plug-in protocol (MCP) also refused the agent's registration.",
  "can_do": [
   "Read Figma's public developer documentation and API reference without logging in."
  ],
  "cannot_do": [
   {
    "what": "Create a Figma account",
    "why": "Figma's robots.txt blocks AI agents from the sign-up and login pages"
   },
   {
    "what": "Connect through Figma's official agent plug-in protocol",
    "why": "Figma only allows a short list of approved apps to register, and this agent wasn't on it"
   },
   {
    "what": "Design, edit, or do any other task inside Figma",
    "why": "All of it requires a logged-in account, which the agent could not create"
   }
  ]
 },
 "plan_gated": [],
 "reply": null,
 "capabilities": [
  {
   "id": "cap-01",
   "group": "Design",
   "capability": "Create and edit a design file on the canvas",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "PUT /v1/files/{file_key} (via plugin/MCP write)",
    "mcp": "write to canvas (remote MCP server)",
    "cli": null,
    "ui": "Figma Design editor"
   },
   "check": "GET /v1/files/{file_key} shows new/changed nodes in the document tree",
   "source": "https://www.figma.com/design-explore/; https://developers.figma.com/docs/figma-mcp-server/write-to-canvas/"
  },
  {
   "id": "cap-02",
   "group": "Design",
   "capability": "Build and manage reusable components and design-system libraries",
   "weight": "core",
   "plan": "paid (team-wide libraries); free locally",
   "surfaces": {
    "api": "GET /v1/files/{file_key}/components, /v1/files/{file_key}/component_sets",
    "mcp": "get_design_context tool",
    "cli": null,
    "ui": "Assets panel, Libraries"
   },
   "check": "GET /v1/files/{file_key}/components lists the published component and its key",
   "source": "https://www.figma.com/pricing/ (Team-wide design libraries); https://developers.figma.com/docs/rest-api/component-endpoints/"
  },
  {
   "id": "cap-03",
   "group": "Design",
   "capability": "Prototype interactions and flows between frames",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Prototype tab in Figma Design"
   },
   "check": "Open file prototype/present mode and confirm transitions fire between linked frames",
   "source": "https://www.figma.com/pricing/ (Advanced prototyping tools)"
  },
  {
   "id": "cap-04",
   "group": "Design",
   "capability": "Inspect designs and generate code in Dev Mode",
   "weight": "core",
   "plan": "paid (Dev or Full seat)",
   "surfaces": {
    "api": "GET /v1/files/{file_key}?geometry=paths",
    "mcp": "get_code, get_design_context",
    "cli": null,
    "ui": "Dev Mode panel"
   },
   "check": "Dev Mode inspector returns CSS/layout values and code snippet for a selected node",
   "source": "https://www.figma.com/pricing/ (Advanced Dev Mode inspection and MCP Server)"
  },
  {
   "id": "cap-05",
   "group": "AI build",
   "capability": "Prompt-to-code a working app or site in Figma Make",
   "weight": "core",
   "plan": "free (limited AI credits)",
   "surfaces": {
    "api": null,
    "mcp": "Retrieve Make resources",
    "cli": null,
    "ui": "Figma Make"
   },
   "check": "Make project preview shows the generated app running; shareable preview URL loads it",
   "source": "https://www.figma.com/make/; https://developers.figma.com/docs/figma-mcp-server/bringing-make-context-to-your-agent/"
  },
  {
   "id": "cap-06",
   "group": "AI generate",
   "capability": "Generate images/video/audio from prompts (Figma Weave)",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Weave node on canvas"
   },
   "check": "A Weave-generated image node appears on canvas with the prompt in its node properties",
   "source": "https://www.figma.com/ (Figma Weave on home page); https://help.weavy.ai/en/"
  },
  {
   "id": "cap-07",
   "group": "Whiteboard",
   "capability": "Brainstorm on a FigJam whiteboard (stickies, diagrams, widgets)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "GET /v1/files/{file_key} (FigJam file type)",
    "mcp": "Retrieve FigJam resources",
    "cli": null,
    "ui": "FigJam"
   },
   "check": "GET /v1/files/{file_key} returns FigJam nodes (e.g. sticky, shape_with_text) created in session",
   "source": "https://www.figma.com/pricing/ (FigJam); https://help.figma.com/hc/en-us/categories/360002051633"
  },
  {
   "id": "cap-08",
   "group": "Presentation",
   "capability": "Build and present slide decks (Figma Slides)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "GET /v1/files/{file_key} (Slides file type)",
    "mcp": null,
    "cli": null,
    "ui": "Figma Slides"
   },
   "check": "Present mode steps through slides matching the edited deck",
   "source": "https://www.figma.com/pricing/ (Figma Slides)"
  },
  {
   "id": "cap-09",
   "group": "Publish",
   "capability": "Publish a responsive website (Figma Sites)",
   "weight": "core",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Figma Sites"
   },
   "check": "Published site URL is reachable and reflects the design changes",
   "source": "https://www.figma.com/pricing/ (Figma Sites); https://help.figma.com/hc/en-us/categories/31823555275671"
  },
  {
   "id": "cap-10",
   "group": "Illustration",
   "capability": "Draw vector illustrations with advanced brush/vector tools (Figma Draw)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Figma Draw"
   },
   "check": "A vector/brush-stroke layer appears in the file's node tree after drawing",
   "source": "https://www.figma.com/pricing/ (Figma Draw); https://help.figma.com/hc/en-us/sections/31830768959511"
  },
  {
   "id": "cap-11",
   "group": "Motion",
   "capability": "Create production-ready animations (Figma Motion)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Figma Motion"
   },
   "check": "Exported animation preview plays the authored keyframe sequence",
   "source": "https://www.figma.com/pricing/ (Figma Motion); https://help.figma.com/hc/en-us/categories/41274596092695"
  },
  {
   "id": "cap-12",
   "group": "Brand assets",
   "capability": "Produce on-brand marketing assets at scale (Figma Buzz)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Figma Buzz"
   },
   "check": "Generated batch of on-brand asset variants appears in the Buzz project",
   "source": "https://www.figma.com/pricing/ (Figma Buzz); https://help.figma.com/hc/en-us/categories/31194838351767"
  },
  {
   "id": "cap-13",
   "group": "Collaboration",
   "capability": "Comment on a file and resolve threads",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET/POST /v1/files/{file_key}/comments, POST .../{comment_id}/replies",
    "mcp": null,
    "cli": null,
    "ui": "Comment tool on canvas"
   },
   "check": "GET /v1/files/{file_key}/comments returns the new comment with its resolved_at field",
   "source": "https://developers.figma.com/docs/rest-api/comments-endpoints/"
  },
  {
   "id": "cap-14",
   "group": "Collaboration",
   "capability": "View and restore file version history",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /v1/files/{file_key}/versions",
    "mcp": null,
    "cli": null,
    "ui": "File > Show version history"
   },
   "check": "GET /v1/files/{file_key}/versions lists the named version after saving it",
   "source": "https://developers.figma.com/docs/rest-api/version-history-endpoints/"
  },
  {
   "id": "cap-15",
   "group": "Design system",
   "capability": "Define and manage design variables (color, number, string, boolean modes)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "GET/POST /v1/files/{file_key}/variables/local, /v1/files/{file_key}/variables",
    "mcp": null,
    "cli": null,
    "ui": "Local variables panel"
   },
   "check": "GET /v1/files/{file_key}/variables/local returns the created variable and its value by mode",
   "source": "https://developers.figma.com/docs/rest-api/variables-endpoints/"
  },
  {
   "id": "cap-16",
   "group": "Developer handoff",
   "capability": "Attach dev resources (links) to nodes for engineers",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "GET/POST/PUT/DELETE /v1/files/{file_key}/dev_resources",
    "mcp": null,
    "cli": null,
    "ui": "Dev Mode node inspector"
   },
   "check": "GET /v1/files/{file_key}/dev_resources returns the attached resource URL for the node",
   "source": "https://developers.figma.com/docs/rest-api/dev-resources-endpoints/"
  },
  {
   "id": "cap-17",
   "group": "Developer handoff",
   "capability": "Connect design components to real code components (Code Connect)",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": "get_code uses Code Connect mapping",
    "cli": "figma connect publish",
    "ui": "Code Connect config"
   },
   "check": "Dev Mode code snippet for the component returns the connected repo's real component usage",
   "source": "https://help.figma.com/hc/en-us/articles/23920389749655-Code-Connect"
  },
  {
   "id": "cap-18",
   "group": "Developer handoff",
   "capability": "Export images/assets of frames and layers",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /v1/images/{file_key}",
    "mcp": null,
    "cli": null,
    "ui": "Export panel in right sidebar"
   },
   "check": "GET /v1/images/{file_key}?ids=... returns a usable image URL for the exported node",
   "source": "https://developers.figma.com/docs/rest-api/file-endpoints/#get-images-endpoint"
  },
  {
   "id": "cap-19",
   "group": "AI build",
   "capability": "Capture live web UI into editable Figma design layers",
   "weight": "secondary",
   "plan": "paid (beta, free during beta)",
   "surfaces": {
    "api": null,
    "mcp": "code-to-canvas capture tools",
    "cli": null,
    "ui": "MCP client capture toolbar"
   },
   "check": "New Figma file contains layers matching the captured web page's rendered DOM",
   "source": "https://developers.figma.com/docs/figma-mcp-server/code-to-canvas/"
  },
  {
   "id": "cap-20",
   "group": "Organize",
   "capability": "Organize files into projects and folders",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /v1/projects/{project_id}/files, /v1/teams/{team_id}/projects, folders endpoints",
    "mcp": null,
    "cli": null,
    "ui": "File browser"
   },
   "check": "GET /v1/projects/{project_id}/files lists the file after moving it into the project",
   "source": "https://developers.figma.com/docs/rest-api/projects-endpoints/; https://developers.figma.com/docs/rest-api/folders-endpoints/"
  },
  {
   "id": "cap-21",
   "group": "Automation",
   "capability": "Subscribe to file/library change events via webhooks",
   "weight": "secondary",
   "plan": "paid (Organization+ for team webhooks)",
   "surfaces": {
    "api": "POST/GET/DELETE /v2/webhooks",
    "mcp": null,
    "cli": null,
    "ui": "Webhooks settings (admin)"
   },
   "check": "GET /v2/webhooks/{webhook_id} shows the registered webhook; a FILE_UPDATE event fires its endpoint on next save",
   "source": "https://developers.figma.com/docs/rest-api/webhooks-endpoints/"
  },
  {
   "id": "cap-22",
   "group": "Automation",
   "capability": "Extend the editor with custom plugins and widgets",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": "figma-plugin-devtools / `npx create-figma-plugin`",
    "ui": "Plugins & widgets menu"
   },
   "check": "Installed plugin appears under Resources > Plugins and runs against the active file",
   "source": "https://www.figma.com/community/ui-kits/; https://developers.figma.com/docs/plugin-api/"
  },
  {
   "id": "cap-24",
   "group": "Governance",
   "capability": "Branch a file and merge design changes",
   "weight": "secondary",
   "plan": "paid (Organization/Enterprise)",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Branching in Figma Design"
   },
   "check": "Branch file shows isolated edits; merging applies them back to the main file's version history",
   "source": "https://help.figma.com/hc/en-us/articles/360063144053-Branching-overview"
  },
  {
   "id": "cap-25",
   "group": "Analytics",
   "capability": "View library usage/adoption analytics",
   "weight": "secondary",
   "plan": "paid (Organization/Enterprise)",
   "surfaces": {
    "api": "GET /v1/analytics/libraries/{file_key}/component/actions|usages",
    "mcp": null,
    "cli": null,
    "ui": "Library analytics dashboard"
   },
   "check": "GET /v1/analytics/libraries/{file_key}/component/usages returns usage counts for published components",
   "source": "https://developers.figma.com/docs/rest-api/library-analytics-endpoints/"
  },
  {
   "id": "cap-27",
   "group": "Collaboration",
   "capability": "Share a file/prototype link with view/edit permissions",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Share dialog"
   },
   "check": "Opening the generated share link in an incognito session with the granted permission level loads the file",
   "source": "https://help.figma.com/hc/en-us/articles/360041051154-Share-files-and-prototypes"
  },
  {
   "id": "cap-28",
   "group": "Collaboration",
   "capability": "Browse and remix Community templates, UI kits, and plugins",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Figma Community"
   },
   "check": "Duplicating a Community file creates a copy owned by the current account",
   "source": "https://www.figma.com/community"
  },
  {
   "id": "cap-26",
   "group": "Analytics",
   "capability": "View org-wide member activity logs",
   "weight": "peripheral",
   "plan": "paid (Enterprise)",
   "surfaces": {
    "api": "GET /v1/activity_logs",
    "mcp": null,
    "cli": null,
    "ui": "Admin console audit log"
   },
   "check": "GET /v1/activity_logs returns a log entry for a recent file open/edit event",
   "source": "https://developers.figma.com/docs/rest-api/activity-logs-endpoints/"
  },
  {
   "id": "cap-29",
   "group": "Account admin",
   "capability": "Manage team members, seats, and roles",
   "weight": "peripheral",
   "plan": "free (Starter has limited seats; full seat management on paid)",
   "surfaces": {
    "api": "GET /v1/teams/{team_id}... (limited)",
    "mcp": null,
    "cli": null,
    "ui": "Team/Org admin settings"
   },
   "check": "Admin settings page shows the invited member with the assigned seat type (Full/Dev/Collab)",
   "source": "https://www.figma.com/pricing/ (Full/Dev/Collab seat pricing)"
  },
  {
   "id": "cap-30",
   "group": "Account admin",
   "capability": "Apply security and access controls (SSO, SAML, domain capture, guest restrictions)",
   "weight": "peripheral",
   "plan": "paid (Organization/Enterprise)",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin security settings"
   },
   "check": "SSO-enforced login redirects unauthenticated org members to the configured identity provider",
   "source": "https://help.figma.com/hc/en-us/sections/20833164749719-Security-features"
  },
  {
   "id": "cap-31",
   "group": "Account admin",
   "capability": "Configure branding (custom fonts, workspace branding)",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": "fonts available to MCP server/Figma Agent",
    "cli": null,
    "ui": "Font management settings"
   },
   "check": "Uploaded custom font appears in the font picker for files in that workspace",
   "source": "https://help.figma.com/hc/en-us/articles/360039956894-Add-a-font-to-Figma"
  },
  {
   "id": "cap-32",
   "group": "Account admin",
   "capability": "Manage billing groups and workspaces (Enterprise)",
   "weight": "peripheral",
   "plan": "paid (Enterprise)",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Enterprise admin console"
   },
   "check": "Admin console shows the created billing group with its assigned workspaces",
   "source": "https://help.figma.com/hc/en-us/sections/19100866155543-Billing-groups"
  },
  {
   "id": "cap-33",
   "group": "Account admin",
   "capability": "Register an OAuth app / manage API access tokens",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": "OAuth2 /oauth endpoints; personal access tokens",
    "mcp": null,
    "cli": null,
    "ui": "My apps / Account > Personal access tokens"
   },
   "check": "A request to GET /v1/me using the issued token returns the authenticated user's profile",
   "source": "https://developers.figma.com/docs/rest-api/authentication/"
  }
 ],
 "attempts": [
  {
   "t": "01:04",
   "cap": "discovery",
   "route": "api",
   "documented": true,
   "verified": true,
   "probe": "MCP server/discover on https://mcp.figma.com/mcp (2026-07-28 headers)",
   "result": "done",
   "evidence": "HTTP 401 text/plain \"Unauthorized\", WWW-Authenticate: Bearer resource_metadata=\"https://mcp.figma.com/.well-known/oauth-protected-resource\",scope=\"mcp:connect\"; auth required before discover",
   "capability": "Docs"
  },
  {
   "t": "01:04",
   "cap": "discovery",
   "route": "api",
   "documented": true,
   "verified": true,
   "probe": "MCP server card <endpoint>/server-card",
   "result": "failed",
   "evidence": "https://mcp.figma.com/mcp/server-card: 405 JSON-RPC -32000 \"Method not allowed.\"",
   "capability": "Docs"
  },
  {
   "t": "01:04",
   "cap": "discovery",
   "route": "api",
   "documented": true,
   "verified": true,
   "probe": "AI catalog / agent cards",
   "result": "failed",
   "evidence": "www.figma.com/.well-known/ai-catalog.json, agent-card.json, agent.json, mcp/server-card.json: all 404 text/html",
   "capability": "Docs"
  },
  {
   "t": "01:04",
   "cap": "discovery",
   "route": "api",
   "documented": true,
   "verified": true,
   "probe": "PRM + AS metadata",
   "result": "done",
   "evidence": "PRM 200 JSON resource https://mcp.figma.com/mcp, AS https://api.figma.com; AS metadata: registration_endpoint https://api.figma.com/v1/oauth/mcp/register (DCR), no client_id_metadata_document_supported, grants authorization_code, refresh_token, jwt-bearer (id-jag profile), S256 PKCE, iss param supported",
   "capability": "Docs"
  },
  {
   "t": "01:04",
   "cap": "discovery",
   "route": "api",
   "documented": true,
   "verified": true,
   "probe": "robots.txt Content-Usage / Content-signal",
   "result": "done",
   "evidence": "www.figma.com/robots.txt: no Content-Usage or Content-signal lines; User-Agent * disallows /api/* and /proto/ (signup not disallowed); our token not named",
   "capability": "Docs"
  },
  {
   "t": "01:04",
   "cap": "discovery",
   "route": "api",
   "documented": true,
   "verified": true,
   "probe": "Markdown: Accept text/markdown and .md url on developers.figma.com",
   "result": "failed",
   "evidence": "Accept: text/markdown on /docs/rest-api/ -> text/html, no Vary: Accept; /docs/rest-api.md -> 404. llms.txt exists at https://developers.figma.com/llms.txt (200 text/plain, with per-API llms.txt)",
   "capability": "Docs"
  },
  {
   "t": "03:43",
   "cap": "docs",
   "capability": "find docs",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "developers.figma.com/llms.txt 200 (+ per-API llms.txt for REST, plugins, widgets, code-connect); REST API docs incl. authentication, rate limits; OpenAPI 3.1.0 beta at github.com/figma/rest-api-spec (info.version 0.44.0); MCP docs (remote server, tools, rate limits)"
  },
  {
   "t": "03:44",
   "cap": "signup",
   "way": "keyless",
   "result": "skipped",
   "not_tried": "same_as",
   "route": "api",
   "documented": true,
   "verified": false,
   "evidence": "No keyless route: GET https://api.figma.com/v1/me without token -> 401 {\"status\":401,\"err\":\"Missing credentials\"}; MCP endpoint 401 without bearer",
   "notes": "not offered",
   "capability": "Sign up"
  },
  {
   "t": "03:44",
   "cap": "signup",
   "way": "api_signup",
   "result": "skipped",
   "not_tried": "same_as",
   "route": "none",
   "documented": false,
   "verified": false,
   "evidence": "No sign-up API documented; /auth.md 404 (door_probe); no agent_auth block in AS metadata",
   "notes": "not offered",
   "capability": "Sign up"
  },
  {
   "t": "03:44",
   "cap": "signup",
   "way": "email_password",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "cause": "robots_named",
   "evidence": "Help center \"Create a Figma account\": sign up at figma.com/signup with email + password.",
   "notes": "robots.txt disallows sign-up for AI agents (/signup)",
   "capability": "Sign up"
  },
  {
   "t": "03:44",
   "cap": "signup",
   "way": "sso_google",
   "result": "skipped",
   "not_tried": "robots",
   "route": "browser",
   "documented": true,
   "verified": false,
   "evidence": "\"Continue with Google\" sits on https://www.figma.com/signup and /login, both disallowed for AI user agents by robots.txt (pw refused /signup and /login)",
   "capability": "Sign up"
  },
  {
   "t": "03:44",
   "cap": "signup",
   "way": "sso_github",
   "result": "skipped",
   "not_tried": "same_as",
   "route": "none",
   "documented": false,
   "verified": false,
   "evidence": "Not offered: help center lists email+password, Google, and SAML SSO only",
   "capability": "Sign up"
  },
  {
   "t": "03:44",
   "cap": "signup",
   "way": "magic_link",
   "result": "skipped",
   "not_tried": "same_as",
   "route": "none",
   "documented": false,
   "verified": false,
   "evidence": "Not offered (help center: email+password, Google, SAML SSO)",
   "capability": "Sign up"
  },
  {
   "t": "03:45",
   "cap": "signup",
   "way": "stripe_projects",
   "result": "skipped",
   "not_tried": "same_as",
   "route": "none",
   "documented": false,
   "verified": false,
   "evidence": "Not listed in Stripe Projects catalog (pay_probe registries empty)",
   "capability": "Sign up"
  },
  {
   "t": "03:45",
   "cap": "signup",
   "way": "sso_agent",
   "result": "skipped",
   "not_tried": "same_as",
   "route": "none",
   "documented": false,
   "verified": false,
   "evidence": "No Sign in with AgentID offered",
   "capability": "Sign up"
  },
  {
   "t": "03:45",
   "cap": "signup",
   "way": "device_login",
   "result": "skipped",
   "not_tried": "same_as",
   "route": "none",
   "documented": false,
   "verified": false,
   "evidence": "AS metadata has no device_authorization_endpoint; no CLI login documented",
   "capability": "Sign up"
  },
  {
   "t": "03:45",
   "cap": "signup",
   "way": "oauth_consent",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "DCR POST https://api.figma.com/v1/oauth/mcp/register (client_name \"AgentDrives drive figma\") -> 403 application/json body \"Forbidden\". Docs: \"Only clients listed in the Figma MCP catalog, such as VS Code, Cursor, and Claude Code, can connect to the Figma MCP server... join the waitlist\". Authorization endpoint https://www.figma.com/oauth/mcp is also disallowed for AI user agents by robots.txt (pw refused). Needs an account first anyway.",
   "capability": "Sign up"
  },
  {
   "t": "03:45",
   "cap": "signup",
   "way": "id_assertion",
   "result": "skipped",
   "not_tried": "no_kit",
   "route": "none",
   "documented": true,
   "verified": false,
   "evidence": "AS metadata grant urn:ietf:params:oauth:grant-type:jwt-bearer with id-jag profile; docs: \"for Claude through Okta Cross App Access (XAA)\" - needs an enterprise Okta IdP and Figma org we do not have",
   "capability": "Sign up"
  },
  {
   "t": "03:45",
   "cap": "signup",
   "way": "enterprise",
   "result": "skipped",
   "not_tried": "assisted_only",
   "route": "none",
   "documented": true,
   "verified": false,
   "evidence": "SCIM / SAML SSO for Organization/Enterprise: a person (org admin) must act",
   "capability": "Sign up"
  },
  {
   "t": "03:45",
   "cap": "verify",
   "result": "blocked",
   "route": "none",
   "documented": true,
   "verified": false,
   "evidence": "Not reached: sign-up refused by robots.txt for AI agents (/signup). Docs: Figma sends a verification email after sign-up.",
   "capability": "Verify"
  },
  {
   "t": "03:45",
   "cap": "login",
   "result": "blocked",
   "route": "browser",
   "documented": true,
   "verified": false,
   "evidence": "",
   "capability": "login"
  },
  {
   "t": "03:45",
   "cap": "credentials",
   "key": "create",
   "result": "blocked",
   "route": "none",
   "documented": true,
   "verified": false,
   "evidence": "No account. Docs (rest-api/authentication): personal access tokens are generated in the Figma account settings (UI); plan access tokens are Organization/Enterprise admin-only; OAuth apps registered at figma.com/developers (UI). No documented API/CLI to create a key.",
   "capability": "Key"
  },
  {
   "t": "03:45",
   "cap": "first_call",
   "result": "blocked",
   "route": "api",
   "documented": true,
   "verified": false,
   "evidence": "GET https://api.figma.com/v1/me -> 401 {\"status\":401,\"err\":\"Missing credentials\"}; no documented call works without a token",
   "capability": "First call"
  },
  {
   "t": "03:45",
   "cap": "first_action",
   "result": "blocked",
   "route": "none",
   "documented": true,
   "verified": false,
   "evidence": "Not reached: no account, no token",
   "capability": "First action"
  },
  {
   "t": "04:16",
   "cap": "cap-01",
   "capability": "Create and edit a design file on the canvas",
   "task": "Create and edit a design file on the canvas on account",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files.",
   "step": "create"
  },
  {
   "t": "04:16",
   "cap": "cap-02",
   "capability": "Build and manage reusable components and design-system libraries",
   "task": "Build and manage reusable components and design-system libraries on account",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files.",
   "step": "create"
  },
  {
   "t": "04:16",
   "cap": "cap-03",
   "capability": "Prototype interactions and flows between frames",
   "task": "Prototype interactions and flows between frames on account",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files.",
   "step": "create"
  },
  {
   "t": "04:16",
   "cap": "cap-04",
   "capability": "Inspect designs and generate code in Dev Mode",
   "task": "Inspect designs and generate code in Dev Mode on account",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files.",
   "step": "create"
  },
  {
   "t": "04:17",
   "cap": "cap-05",
   "capability": "Prompt-to-code a working app or site in Figma Make",
   "task": "Prompt-to-code a working app or site in Figma Make on account",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files.",
   "step": "create"
  },
  {
   "t": "04:17",
   "cap": "cap-06",
   "capability": "Generate images/video/audio from prompts (Figma Weave)",
   "task": "Generate images/video/audio from prompts (Figma Weave) on account",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files.",
   "step": "create"
  },
  {
   "t": "04:17",
   "cap": "cap-07",
   "capability": "Brainstorm on a FigJam whiteboard (stickies, diagrams, widgets)",
   "task": "Brainstorm on a FigJam whiteboard (stickies, diagrams, widgets) on account",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files.",
   "step": "create"
  },
  {
   "t": "04:17",
   "cap": "cap-08",
   "capability": "Build and present slide decks (Figma Slides)",
   "task": "Build and present slide decks (Figma Slides) on account",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files.",
   "step": "create"
  },
  {
   "t": "04:17",
   "cap": "cap-09",
   "capability": "Publish a responsive website (Figma Sites)",
   "task": "Publish a responsive website (Figma Sites) on account",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files.",
   "step": "create"
  },
  {
   "t": "04:17",
   "cap": "cap-10",
   "capability": "Draw vector illustrations with advanced brush/vector tools (Figma Draw)",
   "task": "Draw vector illustrations with advanced brush/vector tools (Figma Draw) on account",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:18",
   "cap": "cap-11",
   "capability": "Create production-ready animations (Figma Motion)",
   "task": "Create production-ready animations (Figma Motion) on account",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:18",
   "cap": "cap-12",
   "capability": "Produce on-brand marketing assets at scale (Figma Buzz)",
   "task": "Produce on-brand marketing assets at scale (Figma Buzz) on account",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:18",
   "cap": "cap-13",
   "capability": "Comment on a file and resolve threads",
   "task": "Comment on a file and resolve threads on account",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:18",
   "cap": "cap-14",
   "capability": "View and restore file version history",
   "task": "View and restore file version history on account",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:18",
   "cap": "cap-15",
   "capability": "Define and manage design variables (color, number, string, boolean modes)",
   "task": "Define and manage design variables (color, number, string, boolean modes) on account",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:18",
   "cap": "cap-16",
   "capability": "Attach dev resources (links) to nodes for engineers",
   "task": "Attach dev resources (links) to nodes for engineers on account",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:18",
   "cap": "cap-17",
   "capability": "Connect design components to real code components (Code Connect)",
   "task": "Connect design components to real code components (Code Connect) on account",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:18",
   "cap": "cap-18",
   "capability": "Export images/assets of frames and layers",
   "task": "Export images/assets of frames and layers on account",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:18",
   "cap": "cap-19",
   "capability": "Capture live web UI into editable Figma design layers",
   "task": "Capture live web UI into editable Figma design layers on account",
   "route": "mcp",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:18",
   "cap": "cap-20",
   "capability": "Organize files into projects and folders",
   "task": "Organize files into projects and folders on account",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:18",
   "cap": "cap-21",
   "capability": "Subscribe to file/library change events via webhooks",
   "task": "Subscribe to file/library change events via webhooks on account",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:18",
   "cap": "cap-22",
   "capability": "Extend the editor with custom plugins and widgets",
   "task": "Extend the editor with custom plugins and widgets on account",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:19",
   "cap": "cap-24",
   "capability": "Branch a file and merge design changes",
   "task": "Branch a file and merge design changes on account",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:19",
   "cap": "cap-25",
   "capability": "View library usage/adoption analytics",
   "task": "View library usage/adoption analytics on account",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:19",
   "cap": "cap-27",
   "capability": "Share a file/prototype link with view/edit permissions",
   "task": "Share a file/prototype link with view/edit permissions on account",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:19",
   "cap": "cap-28",
   "capability": "Browse and remix Community templates, UI kits, and plugins",
   "task": "Browse and remix Community templates, UI kits, and plugins on account",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:19",
   "cap": "cap-26",
   "capability": "View org-wide member activity logs",
   "task": "check it exists and is documented",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Documented surfaces per map: {'api': 'GET /v1/activity_logs', 'mcp': None, 'cli': None, 'ui': 'Admin console audit log'}; source https://developers.figma.com/docs/rest-api/activity-logs-endpoints/. Not callable: No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:19",
   "cap": "cap-29",
   "capability": "Manage team members, seats, and roles",
   "task": "check it exists and is documented",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Documented surfaces per map: {'api': 'GET /v1/teams/{team_id}... (limited)', 'mcp': None, 'cli': None, 'ui': 'Team/Org admin settings'}; source https://www.figma.com/pricing/ (Full/Dev/Collab seat pricing). Not callable: No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:19",
   "cap": "cap-30",
   "capability": "Apply security and access controls (SSO, SAML, domain capture, guest restrictions)",
   "task": "check it exists and is documented",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Documented surfaces per map: {'api': None, 'mcp': None, 'cli': None, 'ui': 'Admin security settings'}; source https://help.figma.com/hc/en-us/sections/20833164749719-Security-features. Not callable: No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:19",
   "cap": "cap-31",
   "capability": "Configure branding (custom fonts, workspace branding)",
   "task": "check it exists and is documented",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Documented surfaces per map: {'api': None, 'mcp': 'fonts available to MCP server/Figma Agent', 'cli': None, 'ui': 'Font management settings'}; source https://help.figma.com/hc/en-us/articles/360039956894-Add-a-font-to-Figma. Not callable: No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:19",
   "cap": "cap-32",
   "capability": "Manage billing groups and workspaces (Enterprise)",
   "task": "check it exists and is documented",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Documented surfaces per map: {'api': None, 'mcp': None, 'cli': None, 'ui': 'Enterprise admin console'}; source https://help.figma.com/hc/en-us/sections/19100866155543-Billing-groups. Not callable: No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:19",
   "cap": "cap-33",
   "capability": "Register an OAuth app / manage API access tokens",
   "task": "check it exists and is documented",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Documented surfaces per map: {'api': 'OAuth2 /oauth endpoints; personal access tokens', 'mcp': None, 'cli': None, 'ui': 'My apps / Account > Personal access tokens'}; source https://developers.figma.com/docs/rest-api/authentication/. Not callable: No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:19",
   "kind": "claim",
   "cap": "cap-01",
   "surface": "api",
   "claim": "PUT /v1/files/{file_key} (via plugin/MCP write)",
   "doc_url": "https://github.com/figma/rest-api-spec",
   "result": "failed",
   "verified": false,
   "documented": true,
   "notes": "No PUT/POST on /v1/files/{file_key} in the OpenAPI (rest-api-spec 0.44.0: GET only); llms.txt says REST is \"Mostly read-only (write access for comments, variables, and dev resources)\". Canvas writes are MCP use_figma (Professional+) or the Plugin API.",
   "capability": "Docs claim: Create and edit a design file on the canvas",
   "task": "PUT /v1/files/{file_key} (via plugin/MCP write)",
   "route": "api",
   "evidence": "No PUT/POST on /v1/files/{file_key} in the OpenAPI (rest-api-spec 0.44.0: GET only); llms.txt says REST is \"Mostly read-only (write access for comments, variables, and dev resources)\". Canvas writes are MCP use_figma (Professional+) or the Plugin API."
  },
  {
   "t": "04:19",
   "kind": "claim",
   "cap": "cap-01",
   "surface": "mcp",
   "claim": "write to canvas (remote MCP server)",
   "doc_url": "https://developers.figma.com/docs/figma-mcp-server/write-to-canvas/",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files.",
   "capability": "Docs claim: Create and edit a design file on the canvas",
   "task": "write to canvas (remote MCP server)",
   "route": "mcp",
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:20",
   "kind": "claim",
   "cap": "cap-02",
   "surface": "api",
   "claim": "GET /v1/files/{file_key}/components, /v1/files/{file_key}/component_sets",
   "doc_url": "https://developers.figma.com/docs/rest-api/component-endpoints/",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files.",
   "capability": "Docs claim: Build and manage reusable components and design-system libraries",
   "task": "GET /v1/files/{file_key}/components, /v1/files/{file_key}/component_sets",
   "route": "api",
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:20",
   "kind": "claim",
   "cap": "cap-02",
   "surface": "mcp",
   "claim": "get_design_context tool",
   "doc_url": "https://developers.figma.com/docs/rest-api/component-endpoints/",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files.",
   "capability": "Docs claim: Build and manage reusable components and design-system libraries",
   "task": "get_design_context tool",
   "route": "mcp",
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:20",
   "kind": "claim",
   "cap": "cap-04",
   "surface": "api",
   "claim": "GET /v1/files/{file_key}?geometry=paths",
   "doc_url": "https://developers.figma.com/docs/figma-mcp-server/tools-and-prompts/",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files.",
   "capability": "Docs claim: Inspect designs and generate code in Dev Mode",
   "task": "GET /v1/files/{file_key}?geometry=paths",
   "route": "api",
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:20",
   "kind": "claim",
   "cap": "cap-04",
   "surface": "mcp",
   "claim": "get_code, get_design_context",
   "doc_url": "https://developers.figma.com/docs/figma-mcp-server/tools-and-prompts/",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files.",
   "capability": "Docs claim: Inspect designs and generate code in Dev Mode",
   "task": "get_code, get_design_context",
   "route": "mcp",
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:20",
   "kind": "claim",
   "cap": "cap-05",
   "surface": "mcp",
   "claim": "Retrieve Make resources",
   "doc_url": "https://developers.figma.com/docs/figma-mcp-server/bringing-make-context-to-your-agent/",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files.",
   "capability": "Docs claim: Prompt-to-code a working app or site in Figma Make",
   "task": "Retrieve Make resources",
   "route": "mcp",
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:20",
   "kind": "claim",
   "cap": "cap-07",
   "surface": "api",
   "claim": "GET /v1/files/{file_key} (FigJam file type)",
   "doc_url": "https://developers.figma.com/docs/figma-mcp-server/tools-and-prompts/",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files.",
   "capability": "Docs claim: Brainstorm on a FigJam whiteboard (stickies, diagrams, widgets)",
   "task": "GET /v1/files/{file_key} (FigJam file type)",
   "route": "api",
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:21",
   "kind": "claim",
   "cap": "cap-07",
   "surface": "mcp",
   "claim": "Retrieve FigJam resources",
   "doc_url": "https://developers.figma.com/docs/figma-mcp-server/tools-and-prompts/",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files.",
   "capability": "Docs claim: Brainstorm on a FigJam whiteboard (stickies, diagrams, widgets)",
   "task": "Retrieve FigJam resources",
   "route": "mcp",
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:21",
   "kind": "claim",
   "cap": "cap-08",
   "surface": "api",
   "claim": "GET /v1/files/{file_key} (Slides file type)",
   "doc_url": "https://developers.figma.com/docs/rest-api/file-endpoints/",
   "result": "blocked",
   "verified": false,
   "documented": true,
   "notes": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files.",
   "capability": "Docs claim: Build and present slide decks (Figma Slides)",
   "task": "GET /v1/files/{file_key} (Slides file type)",
   "route": "api",
   "evidence": "No account: every way in is walled (robots.txt disallows /signup, /login and /oauth/mcp for AI agents that act for a user; MCP DCR 403 for non-catalog clients). The route needs an authenticated Figma user (PAT/OAuth) on our own files."
  },
  {
   "t": "04:21",
   "cap": "pay",
   "step": "probe",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "pay_probe.json: no 402 on figma.com, api.figma.com; x402./mpp./agents. subdomains do not resolve; no MPP/Bazaar/Stripe Projects listings; no /.well-known/ucp. pay_tx.json: nothing paid (\"no 402 on the product's own endpoint\"). OpenAPI 0.44.0 has no billing/plan endpoint (/v1/payments is plugin payments). Pricing page (fetched): Starter Free; Professional monthly Full seat $16/mo, Dev $12/mo, Collab $3/mo; \"Contact sales\" for higher tiers.",
   "capability": "Pay"
  },
  {
   "t": "04:21",
   "cap": "pay",
   "step": "checkout",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Checkout needs a signed-in account; sign-up and login are disallowed for AI agents by robots.txt, so the plan page/checkout was not reached. Processor unknown.",
   "capability": "Pay"
  },
  {
   "t": "04:21",
   "cap": "cancel",
   "result": "skipped",
   "route": "none",
   "documented": true,
   "verified": false,
   "evidence": "Nothing started that renews: no account, no plan, no trial. Nothing to cancel.",
   "capability": "Cancel"
  },
  {
   "t": "04:21",
   "cap": "delete",
   "result": "skipped",
   "route": "none",
   "documented": true,
   "verified": false,
   "evidence": "No account was created; DCR client registration was refused (403), so nothing was made.",
   "left": "nothing_made",
   "capability": "Delete"
  },
  {
   "t": "04:21",
   "cap": "credentials",
   "key": "use",
   "result": "blocked",
   "route": "api",
   "documented": true,
   "verified": false,
   "evidence": "No key exists (no account)",
   "capability": "Key"
  },
  {
   "t": "04:21",
   "cap": "credentials",
   "key": "revoke",
   "result": "blocked",
   "route": "api",
   "documented": true,
   "verified": false,
   "evidence": "No key exists (no account)",
   "capability": "Key"
  }
 ],
 "stale": false,
 "icon": "/logos/figma.png",
 "monitored": false,
 "verdict": null,
 "page": "https://agentdrives.com/tools/figma?via=api"
}