Agent platform with bitemporal memory, live observability, and audit-grade traceability — for AI that needs to act at the right moment
Kalairos defines 17 tools with complete input schemas and descriptions. Naming follows verb_noun patterns (ingest, query, remember, annotate). Descriptions are substantive (100-250 chars typical), explaining WHAT and WHEN. However, output schemas are undocumented, LLMs cannot predict response structure for chaining. Error handling is minimal; no recovery guidance or actionable error messages visible. Parameters lack enums for constrained values (e.g., 'type', 'classification', 'retention' accept free-form strings). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels (WRITE, DESTRUCTIVE, READ_ONLY). Composition is strong, tools are single-responsibility and chainable (query returns IDs for get/annotate). Security: no visible secrets in params, but no permission gates or audit logging in tool definitions.
Annotate an entity (trust, verified, notes, memoryType) without creating a new content version.
Create a named checkpoint over the audit trail for point-in-time recovery and compliance snapshots.
Consolidate near-duplicate memories by merging similar entities based on semantic similarity threshold.
Export all memories as a Markdown document with full provenance and version history.
Retrieve a single entity by ID with full version history and metadata.
Retrieve full version history and provenance trail for an entity including all mutations and annotations.
Get server status including initialization state, store health, and configuration.
Output schemas undocumented. LLMs cannot predict response structure (fields, types, pagination) for downstream tool chaining. E.g., query() returns 'ranked results with scores' but field names, array structure, and pagination tokens are invisible.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite explicit risk levels. purge() is DESTRUCTIVE but unmarked; query() is READ_ONLY but unmarked. LLMs cannot infer safety/retry semantics.
Constrained parameters lack enums. 'type' (ingest, remember) accepts free-form strings; no enum of valid types. 'classification' and 'retention' similarly unconstrained. LLMs hallucinate invalid values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Import memories from a Markdown document. Parses facts and metadata from structured Markdown.
Store a fact with optional metadata, tags, and temporal parameters. Supports type classification, trust scoring, and importance weighting.
Batch ingest multiple facts in a single request. Accepts up to 500 items per request.
Ingest a file from the filesystem. Reads and indexes the file content.
Ingest time-series data with labeled points. Each point is indexed with timestamp and value.
Permanently erase an entity and all its versions. Irreversible GDPR-style deletion.
Retrieve memories relevant to a query text using semantic similarity. Returns ranked results with scores.
Store or update a fact with automatic version detection. Semantically similar to ingest but with version-aware deduplication.
Soft-delete an entity with a stated reason. Use purge() for permanent GDPR-style erasure.
Read-only audit trail of memory mutations across the store. Supports filtering by workspace, agent, action type, and time range.
No error recovery guidance. Error responses (if any) likely return raw codes/messages without actionable next steps. E.g., 'Entity not found' vs 'Entity not found. Try query() to search by text.'
Batch tool (ingest/batch) lacks per-item success/failure reporting. If 1 of 500 items fails, entire batch likely fails. LLM cannot retry just the failed item.