Pure Functional MCP Server for knowledge graph management with semantic search, embedding-based deduplication, and relationship linking
HEngram defines 5 tools with complete JSON schemas and descriptions. All tools have proper input schemas with typed properties and required fields. Descriptions are present (avg ~100 chars) but lack depth on WHEN to use each tool and error recovery guidance. Parameter descriptions are minimal (e.g., 'Domain category for the information' for 'domain' param). No output schemas documented. No error handling guidance. Tools follow single-responsibility principle (memorize, search, link, recall, patch) but lack composition hints (e.g., which tools chain together). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear read/write semantics.
Create a relationship between two nodes in the knowledge graph
Memorize a piece of information into the knowledge graph
Update fields of an existing node. Only provided fields are changed. Recomputes the embedding if content is updated.
Retrieve a specific node from the knowledge graph by ID, including its full content and all typed outgoing relationships
Search for information in the knowledge graph
No output schemas documented. LLMs cannot plan downstream tool calls or extract required fields (e.g., node_id returned by memorize for use in link/patch). Responses are unstructured.
Parameter descriptions are generic and lack format/constraint guidance. E.g., 'node_type' accepts 10 enum values (fact, preference, project, person, decision, constraint, event, concept, procedure, summary) but description does not list them. LLMs will hallucinate invalid values.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). search/recall are read-only; memorize/link/patch are destructive writes. Agents cannot distinguish safe from risky operations without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
No error handling guidance. Tool descriptions do not explain failure modes (e.g., 'node not found', 'duplicate link', 'invalid node_type') or recovery steps. Agents cannot self-correct on errors.
Tool composition hints missing. No guidance on which tools chain together (e.g., 'memorize returns node_id; use it in link/patch/recall'). Agents must infer dependencies.