The server has 2 tools with basic implementations. Tool names follow verb_noun convention (get_figma_account, get_figma_file), which is positive. However, parameter descriptions are minimal, schemas lack important validation context, and output is unstructured JSON strings rather than typed objects. The server uses Zod for schema definition but does not leverage it fully for validation or error messaging. No error handling guidance is present. Output lacks pagination, field stripping, or chaining ID support.
get figma account info
get figma file info
Tool descriptions are too short and lack context. 'get figma account info' and 'get figma file info' are under 30 characters and do not explain WHEN to use the tool, WHAT it returns, or prerequisites.
Output is unstructured JSON string (type: 'text'). LLMs must parse raw JSON, which wastes tokens and invites hallucination. Should return a typed response object with named fields (account, user_id, name, email, etc.).
No error handling or recovery guidance. If Figma API fails, the raw error is returned without actionable context for the agent (e.g., 'Invalid file key, use get_team_files() to discover valid keys').
get_figma_account has empty input schema ({}). No parameters to validate, which is correct, but description lacks context on what account data is returned.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 44 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 38 | - | v1 |
get_figma_file's 'version' parameter description is in Chinese and describes optional behavior but does not explain what versions are or how to obtain valid version IDs.
Figma API credentials are injected from FIGMA_PERSONAL_ACCESS_TOKEN environment variable, which is correct (pattern:secret-injection). However, no scope or permission documentation is provided, agents don't know what operations they're authorized for.
No output schema documentation. LLMs don't know what fields (e.g., account structure, file nodes, document tree depth) to expect, limiting ability to extract and chain data.
Version parameter is ignored in implementation ('const file = await client.getFile(fileKey)' does not pass version), but description promises version-specific retrieval. Broken contract between description and implementation.