Expose the Cortrix HTTP API as MCP tools for IDE agents (Claude Code / Cline / Cursor). Provides semantic storage, document indexing, hybrid search, conversation memory, and admin operations.
29 tools with consistent verb-noun naming (cortrix_*). All have descriptions (avg ~120 chars, within baseline 34-392). Input schemas present for all tools with typed parameters. However, descriptions are generic and lack LLM-optimized guidance on WHEN to use each tool vs alternatives. Parameter descriptions are minimal (avg ~40 chars vs baseline 72). No output schemas documented. Error handling is absent, no recovery guidance, no categorization of retryable vs fatal errors. Missing idempotency hints for write operations. No tool annotations (readOnlyHint, destructiveHint). Composition is reasonable (single responsibility per tool), but chaining IDs are not guaranteed in responses.
Add a directory watcher for automatic document indexing (POST /watchers).
Upload a large document asynchronously (POST /documents/async).
Submit a batch of documents for processing (POST /batch/submit).
Cancel a running async task (POST /tasks/{task_id}/cancel).
Create a new namespace for data isolation (POST /namespaces).
Semantic search across multiple namespaces with cross-namespace ranking.
No output schemas documented. LLMs cannot infer what fields to expect from tool responses, forcing them to guess at downstream chaining and risking context loss.
No error handling guidance. Tools lack recovery hints (e.g., 'If namespace not found, call cortrix_list_namespaces()'), error categorization (retryable vs fatal), or actionable error messages. Agents cannot self-correct.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot distinguish safe reads from destructive writes or know which operations are idempotent and safe to retry.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2025-06-18+ | v2 |
Get the status of a document indexing task (GET /documents/tasks/{task_id}/progress).
Check that the Cortrix backend is running and reachable (GET /system/health).
List indexed documents in a namespace (GET /documents).
List conversation memory interactions (GET /memory/interactions).
List authorized namespaces (GET /namespaces).
List recent operations and their status (GET /operations).
List active directory watchers (GET /watchers).
Log a user-agent interaction to conversation memory (POST /memory/interactions).
Create a new memory fact (POST /memory).
Edit an existing memory fact (PUT /memory/{fact_id}).
Extract structured memory facts from conversation (POST /memory/extract).
Trigger memory extraction from conversation (POST /memory/extract/trigger).
Get audit log for memory operations (GET /memory/audit).
Invalidate a memory fact (POST /memory/{fact_id}/invalidate).
List stored memory facts (GET /memory).
Opt out of memory collection for a user (POST /memory/opt-out).
Revoke a previously stored memory fact (POST /memory/revoke).
Semantic search over conversation memory (POST /memory/search). user_id ownership is enforced server-side (MEM05 isolation).
Semantic search over conversation memory with filtering (POST /memory/search/filter).
Semantic search (vector + BM25) across one or more namespaces.
Get an explanation of how a query was processed (POST /query/explain).
Get the status of an async task (GET /tasks/{task_id}).
Upload a document for indexing (async; POST /documents -> task_id).
Parameter descriptions are minimal (avg ~40 chars vs baseline 72). Many lack format/constraint guidance. E.g., 'pattern' in cortrix_add_watcher has no explanation of glob syntax; 'filter' in cortrix_memory_search_filter is undocumented.
No pagination guidance in list tools. cortrix_list_documents, cortrix_list_interactions, cortrix_list_watchers accept limit/offset but descriptions do not state max limits or whether results are capped. Risk of context window exhaustion.