Read-only MCP server for AgentLoom knowledge graph access. Provides tools for searching KG nodes, fetching node details, and listing pending proposals.
Three read-only tools with basic descriptions and partial schemas. Tool names follow verb_noun convention (kg_search, kg_get_node, kg_list_proposals). Descriptions exist but are brief (40-60 chars) and lack context on when to use each tool or what downstream actions they enable. Input schemas are present with type declarations, but parameter descriptions are minimal (10-20 chars). Output is JSON strings rather than structured objects. No error handling guidance, no pagination support despite search returning variable results, and no indication of result limits. The server is STDIO-only, which is a hard transport cap.
Fetch a KG node by id plus its linked markdown body.
List pending KG proposals in agents/knowledge-graphs/proposals/.
Search KG nodes by keyword over titles, descriptions, and markdown bodies.
Descriptions are too brief (35-45 chars) and lack context. 'Search KG nodes by keyword...' does not explain when to use kg_search vs kg_get_node, what the search indexes, or how results are ranked. LLMs cannot reliably select the right tool without clearer guidance.
Parameter descriptions are minimal (10-20 chars). 'Search terms, e.g. "iso 3166"' is an example, not a constraint. 'Max results (default 5)' lacks guidance on valid range. 'Optional filter: "builder" or "domain"' should be an enum constraint, not a prose example.
Output is JSON-serialized strings, not structured objects. Tools return json.dumps() instead of typed dicts. LLMs must parse JSON strings to extract fields, wasting tokens and increasing hallucination risk. Should return structured output with typed fields.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | <=2025-11-25 | v2 |
No pagination or result limit enforcement. kg_search accepts 'limit' but no documentation of max allowed value, default behavior if limit > available results, or next_cursor/offset for large result sets. Search could return hundreds of nodes, blowing context window.
No error handling guidance. kg_get_node returns {'error': '...'} on missing node, but does not suggest recovery (e.g. 'Try kg_search() to find the correct node_id'). Agents cannot self-correct without explicit recovery hints.