Web-based graph visualizer for backpack-ontology — Canvas 2D, force-directed layout, live reload
Strong tool definitions with clear naming (verb_noun pattern), comprehensive descriptions (avg 150 chars), and complete JSON schemas. All 12 tools have input_schema with typed properties. Descriptions are LLM-optimized and include usage guidance. However, parameter descriptions are sparse (many lack detail beyond type), output schemas are undocumented, and error handling lacks recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications in metadata. Missing pagination for search_nodes despite 20-item cap. Overall solid foundation with room for parameter-level and output documentation.
Connect two existing nodes with a typed edge.
Add a new node to the current graph. Returns the new node id. Properties should follow the existing convention in the graph — use list_node_types and get_node first to see what shape similar nodes use.
Tell the viewer to enter focus mode on the given seed nodes, expanding to N hops of neighbors. Call this when the user is asking about a specific region of the graph so they can see what you're talking about.
Get a summary of the current learning graph: total nodes, total edges, and counts by node type. Use this first to understand what's in the graph before drilling in.
Get all nodes directly connected to the given node, with the edge type for each connection.
Get full details (all properties + type) for a specific node by id.
Output schemas undocumented. No tool returns a documented schema, LLMs cannot predict response structure for downstream chaining. E.g., search_nodes returns {id, type, label} but this is inferred from code, not declared.
Parameter descriptions missing or minimal. 'nodeId' appears in 6 tools with no description; 'properties' in add_node/update_node lacks guidance on expected structure. LLMs cannot infer valid values.
No tool annotations despite clear risk levels. remove_node and remove_edge are DESTRUCTIVE but lack destructiveHint; read-only tools lack readOnlyHint. Agents cannot distinguish safe from risky operations.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | <=2025-11-25 | v2 |
List all distinct node types in the current graph with counts.
Pan and zoom the viewer to a specific node.
Delete an edge by id.
Delete a node and all edges touching it. This is destructive — confirm with the user first if the node is non-trivial.
Search nodes in the current graph by a substring match against any string property. Returns up to 20 matching nodes with id, type, and label.
Update properties on an existing node. Pass only the properties you want to change — others are preserved.
Error handling lacks recovery guidance. executeTool throws generic errors ('no graph loaded', 'query is required') with no actionable next steps. LLMs cannot self-correct or suggest alternatives.
search_nodes caps at 20 results but lacks pagination. No limit parameter, no next_cursor, no total count. Large graphs will silently truncate results.