AgentCore Runtime MCP server exposing knowledge graph operations as tools. Manages a bilingual (Spanish/English) knowledge graph with semantic search, node enrichment, and daily digest surfacing.
Server exposes 6 tools with basic descriptions and parameter types, but lacks critical production-grade polish. All tools have descriptions (10-100 chars, mostly adequate) and visible input schemas with typed parameters. However, output schemas are undocumented (tools return JSON.dumps of Lambda responses with no declared structure), error handling is absent (Lambda failures will surface raw errors to LLM), and parameter descriptions lack actionable constraints. No enums for constrained inputs (e.g., 'type' in add_node accepts 'concept|note|experiment|essay' but this is not declared). Write operations lack idempotency hints or confirmation patterns. Tool composition is reasonable (read/list/search separate from write ops), but responses are not shaped for agent chaining, no guarantee that returned IDs match parameter names in downstream tools.
Create a new knowledge node from text. AI classifies and generates metadata. Starts as 'seed' status.
Create an edge between two existing knowledge nodes.
Flag a knowledge node for human review. Does not modify the node.
List knowledge nodes with optional filters by type, status, and tag.
Read a knowledge node by its slug. Returns metadata, edges, and related nodes.
Search the knowledge graph using hybrid keyword + semantic search.
Output schemas completely undocumented. All tools return json.dumps(Lambda response) with no declared structure. LLMs cannot plan downstream calls or extract required fields (e.g., does read_node return 'node_id' or 'id'? Does list_nodes return 'total_count' or 'count'?). This violates pattern:tool and forces agents to guess field names.
No error handling guidance. Lambda invocation failures (network, timeout, permission, validation) will surface raw JSON or stack traces to the LLM with no recovery hints. Missing pattern:recovery-guide and pattern:error-classification. LLM cannot determine if error is retryable, user-fixable, or fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2026-07-28+ | v2 |
Constrained inputs not declared as enums. 'type' param in add_node accepts 'concept|note|experiment|essay' but schema shows bare string type. 'edge_type' in connect_nodes has no enum constraint. LLMs will hallucinate invalid values. Missing pattern:constrained-input.
Write operations lack idempotency hints and confirmation patterns. add_node, connect_nodes, and flag_stale modify state but have no dry-run, confirmation, or idempotent markers. Agents retrying on ambiguous failures risk duplicate nodes/edges. Missing pattern:idempotent-operation and pattern:confirmation-request.
Parameter descriptions lack actionable constraints. 'limit' params have no min/max bounds (list_nodes default 20, search default 10, are these caps?). 'language' defaults to 'es' but no enum of supported languages. 'weight' in connect_nodes has no range. Missing pattern:tool-description guidance on format/range/allowed values.