Local memory with verbatim records and correction history. Faithful agent memory with zero-LLM retrieval by default.
Fidelis has 4 tools with well-chosen verb-first names (fidelis_recall, fidelis_store, fidelis_health, fidelis_ask). Descriptions are present and moderately detailed (80-200 chars, within the 10-1024 target). All tools have input schemas with type definitions visible in the code. However, several parameter descriptions are minimal, and output schemas are not explicitly documented in the tool definitions. Parameter descriptions vary widely in detail, some lack clarity on format/constraints (e.g., 'policy' in fidelis_ask accepts both object and string but the description doesn't specify valid string values like 'auto'). Error handling guidance is limited. The metadata parameter in fidelis_store lacks explicit size constraints despite mentioning '16384 bytes JSON' in the description. Tool definitions are explicitly visible in src/fidelis/mcp_server.py with proper registration.
Bounded inquiry with multi-round LLM reasoning. Uses configurable policy for iterative refinement.
Query server health, capabilities, version, and feature status.
Broad search + cheap-LLM integer-pointer filter. Smart recall with threshold-based filtering.
Write one memory verbatim — no extraction LLM, agent decides content. Preferred write path.
fidelis_ask 'policy' parameter accepts both object and string ('auto') but description does not enumerate valid string values or document the object schema (maximum_passes, maximum_selected_records).
Output schemas are not documented. Tool descriptions mention what tools return (e.g., 'recall results', 'health status') but do not specify the structure of returned objects, field names, or types. LLMs cannot plan downstream calls without knowing response structure.
Parameter descriptions lack constraint details. 'limit' (integer, default 50) has no min/max bounds stated. 'threshold' (integer, default 400) lacks explanation of what scores are valid or what range is typical. 'metadata' states 'max 16384 bytes JSON' but is not enforced as a schema constraint.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | <=2025-11-25 | v2 |
fidelis_store 'id' parameter description mentions '3-128 chars, alphanumeric with ._:- allowed' but the regex pattern _STORE_ID_RE in code is more restrictive (requires first char to be alphanumeric, followed by 2-127 more chars). Description does not match implementation; LLM will attempt values that fail validation.
Error handling guidance is minimal. Tools do not provide actionable recovery hints. E.g., if fidelis_recall returns no results, the description does not suggest lowering the threshold or adjusting the query. If fidelis_store fails due to invalid metadata size, no guidance is offered on what the error means or how to fix it.
session_id and turn_id parameters are present in all tools but their purpose is undocumented. Are they required? Optional? How are they used? The descriptions 'Optional session identifier for context' and 'Optional turn identifier for context' are too vague to guide LLM usage.