MCP server for fighting game character authoring and frame data management. Provides tools for character export, state management, global state handling, and validation of fighting game data.
Framesmith MCP exhibits significant gaps in definition quality. While tool names follow verb-first conventions (get_, list_, create_, update_, delete_), descriptions are minimal and uninformative, parameter schemas lack proper types and constraints, and output structures are not documented. The server uses STDIO transport only, which is a hard architectural limitation preventing remote accessibility. Most tools have skeletal descriptions that do not guide LLM decision-making or explain when to use them. Parameter descriptions are either absent or generic. No error handling guidance is provided. The codebase shows tool registration via rmcp macros, but the visible schema definitions are incomplete.
Create a new global state
Delete a global state
Export all characters to a directory (runs validation + rules). Returns a JSON array of per-character results.
Export a character to a file (runs validation + rules). Supports fspk (.fspk) and json-blob (.json).
Get all states (moves) for a character with full frame data
Get a specific global state by ID
Get all global states (e.g., burst, tension) defined in the project
Minimal parameter descriptions across all tools. Most parameters lack clear guidance on expected format, constraints, or valid values. For example, 'state_data' in update_state is described only as 'Complete state data as JSON object', no schema detail of required/optional fields, no examples of valid structure.
No documented output schemas for any tool. LLMs cannot plan downstream calls or extract required fields because return types are not specified. For instance, export_character returns success/failure, but the response structure (fields, types, error format) is undocumented.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 46 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Get a specific state (move) for a character by input notation
List all available character IDs in the characters directory
Returns a greeting to verify the MCP server is working
Read the rules specification documentation (SSOT)
Update an existing global state
Update a state (move) for a character, returns the updated state
Object-type parameters like 'state_data' and 'state' lack detailed JSON schema specification. No schema shows required properties, types, or nested structure. This forces LLMs to guess the correct format, leading to invalid calls.
No error handling guidance or recovery instructions. A tool that fails (e.g., invalid character_id) provides no actionable error message or next steps for the LLM. Export operations are destructive/mutating, yet no error categorization (retryable vs. fatal) is documented.
Destructive operations (delete_global_state, export_character with overwrite, update_state) lack confirmation patterns or dry-run modes. No documentation warns that these are irreversible or guides the agent to confirm before execution.
Generic tool descriptions that do not explain WHEN to use the tool or distinguish it from similar tools. For example, 'Get a specific state (move) for a character by input notation' (get_state) vs 'Get all states (moves) for a character with full frame data' (get_character_states), but no guidance on when to choose one over the other or what 'full frame data' means.
Parameter 'adapter' in export tools accepts 'fspk' or 'json-blob' but is described as free-form string. No enum constraint is declared, inviting hallucinated invalid values. The description should reference the enum explicitly.
Ambiguous parameter naming and semantics. 'state' and 'state_data' are used interchangeably across different tools (create_global_state uses 'state', update_state uses 'state_data'), risking confusion. Fields referenced in responses (if any) may not match parameter names.
No pagination support documented for list_characters or get_character_states, despite potential large result sets. No limit or offset parameters, no total count in response. Large character libraries could exhaust context windows.
ping tool exists but does not follow current MCP spec (ping was removed in 2026-07-28). This indicates outdated implementation patterns.