A live mathematical canvas for reasoning, visualization, and WebMCP-native tutoring with 48 tools for world manipulation, geometry, animation, and project management.
Mathburst WebMCP exhibits significant definition quality gaps. While 26 tools are registered with names and basic descriptions, most descriptions are terse (10-50 chars, well below the 194-char baseline for A+ tools). Input schemas are present but severely underspecified: most parameters lack type constraints, enums, or validation guidance. For example, putObject accepts a generic 'object' parameter with only 'The object to create with id, kind, bounds, and kind-specific properties', no schema for the nested structure, no enum for 'kind' values, no bounds format. Similarly, updateObject's 'updates' parameter is completely untyped. Output schemas are entirely absent from visible definitions. Error handling is minimal, no recovery guidance, no categorization of retryable vs fatal errors. The tool set is well-composed (single responsibilities, clear naming with verb prefixes), but the LLM-facing contract is incomplete.
Control timeline playback (play, pause, seek, etc.).
Create a new project in the library, optionally from a template.
Delete a binding from the world.
Delete an entity from the world.
Delete an object and all objects that depend on it from the world.
Delete a project from the library (soft delete).
Delete a timeline from the world.
Focus the viewport on a set of objects with optional emphasis level.
Generic object/updates parameters lack type schemas. putObject, updateObject, putEntity, updateEntity, putBinding, putTimeline, updateTimeline all accept untyped 'object' or 'updates' params with only prose descriptions. LLMs cannot validate structure or infer required nested fields.
Descriptions are uniformly terse (10-50 chars, baseline 194 chars). Most lack WHEN to use, prerequisites, or return value guidance. E.g., 'Create a new object' tells LLM nothing about which 'kind' values are valid or what bounds format is expected.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 35 | 2026-07-28+ | v2 |
Get the current attention weights from the attention model in the world.
List all projects in the library with their metadata.
Open a project from the library and optionally switch to a specific scene.
Open a specific scene by id, switching the active project and viewport.
Create a new binding (connection between objects and entities) in the world.
Create a new entity (variable, function, or constant) in the world.
Create a new object (ink, shape, arrow, text, equation, image, frame, graph, geometry, matrix, or attention) in the world.
Create a new animation timeline in the world.
Redo the last undone action in the world history.
Set the z-order (layering) of objects in the world.
Set the current selection of objects in the world.
Set the camera viewport (pan and zoom) of the world.
Highlight objects with a spotlight effect for a specified duration.
Animate text being typed into an object field over a specified duration.
Undo the last action in the world history.
Update properties of an existing entity in the world.
Update properties of an existing object in the world.
Update properties of an existing timeline in the world.
No output schemas documented. LLMs cannot plan downstream tool calls or extract return values. E.g., createProject returns {ok, summary, data: {projectId}} but this is inferred from bridge code, not declared in tool definition.
Destructive tools (deleteObject, deleteEntity, deleteBinding, deleteProject, deleteTimeline) lack confirmation or dry-run support. No error recovery guidance. Agents cannot safely preview consequences before committing.
No enum constraints on 'kind' parameters (putObject, putEntity) or 'action' (controlTimeline). LLMs will hallucinate invalid values. focusObjects 'emphasis' enum is present but others are missing.