cortex
This server provides local MCP tools for agent memory, code navigation, log compaction, workspace snapshots, action safety checks, context selection, and prompt drafting.
Store, recall, or erase persistent architectural facts and project rules in neural memory.
Locate functions, classes, structs, or interfaces across a codebase quickly.
Compact verbose logs and test output while preserving errors and stack traces.
Create deduplicated workspace snapshots and atomically rewind to them before or after risky edits.
Forecast whether a candidate shell command or action aligns with a goal and avoids loops or destructive hazards.
Select an optimal context set under a budget, optionally forcing inclusion of a failed-attempt warning.
Generate greedy prompt-lookup speculative token drafts from a token sequence.
Enables local LLM agents like Ollama to use MCP tools for project memory, code symbol lookup, log compaction, workspace snapshots, execution shielding, and context packing.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@cortexcompact this failing test log and keep the traceback"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ROMS
By Buzburg.
Stop re-explaining your project to every AI.
Your useful knowledge is scattered across notes, manuals, code, PDFs and past work. ROMS brings it into one local library—then helps you find the right evidence, carry it into another AI conversation, and turn repeatable work into reusable skill drafts.
Give your local AI something worth knowing. Search your documents, select the passages that matter, and build a task brief you can paste into any assistant. When you want more, connect an agent to draft and retain task-specific procedures from your indexed knowledge.
Try ROMS · Download source · Portable task briefs · Local skill agent
What you can do with ROMS
Bring the files you already have. Import notes, source code, logs, uneven CSV, PDFs, modern Office documents and images. Local OCR recovers text from scans.
Find it even when you barely remember it. Keyword matching, typo handling and semantic retrieval share one search. Results retain source references.
Carry context between assistants. Select up to eight search passages, add your task and constraints, then preview, copy or download a cited Markdown brief. Assembling the brief needs no generation model or client integration.
Turn recurring work into reusable skills. Imported guides become procedural drafts. The optional local agent can also create and save a tailored candidate from an ordinary task request, reuse it, and revise it when sources change.
Keep the evidence attached. Saved candidates retain original constraints, source identity and revision-specific feedback. Changed sources withhold stale drafts; detected conflicts produce questions before another candidate is saved.
Keep your library local. Search, embeddings and OCR run locally after setup. You choose what to copy into another client; that client's data settings apply.
Try it with a deployment guide, a project README and a few troubleshooting notes. Search for the task you're working on, build a brief, and start your next AI conversation with relevant evidence already in hand.
How task briefs work · Knowledge-derived skills · Task-specific skills and their limits
Search benchmarks cover specific fixtures and machines. Historical timings do not describe the current search backend or promise production speed or accuracy. See the results and limits.
The lightweight Python demos and preparation tools are tested on Windows and Linux with Python 3.11 and 3.12. The full Mojo search environment targets x86-64 Linux/WSL2. Python remains the adapter for file formats, model inference and MCP; ROMS is not a pure-Mojo application. Optional operating-system integrations are separate from the core search setup.
Related MCP server: Code Project Brain
Choose your starting point
Goal | Start here | Requirements |
Try a controlled recovery demo | Python only; no model or network | |
Import and search your own files | Linux/WSL2, Pixi, compiled Mojo kernels and local embeddings | |
Carry selected evidence into any assistant | The knowledge workspace; no generation model needed for export | |
Give an AI client access to knowledge | The search environment plus an MCP-compatible client | |
Prepare a task for human review | Python and the lightweight CI dependencies |
Download the source above, or clone the repository:
git clone https://github.com/Buzburg/ROMS.git
cd ROMSRun the commands below from this directory. The source checkout contains neither prebuilt Mojo binaries nor embedding weights. The first full setup needs network access for packages and the embedding model; search and OCR then run locally.
Five parts
Part | Purpose |
Decision Maker | Rank supplied options, return structured results and abstain when configured thresholds are not met. The current backend uses heuristics; its scores are not calibrated probabilities of correctness. |
RAG | Find relevant document passages through keyword and vector search, with source references and bounded context. |
OKF | Import local knowledge files, preserve document metadata and update their search indexes. |
MCP | Let a compatible agent call registered tools and read resources through one local server. |
Skills | Supply reusable Markdown playbooks. Generated drafts need review before activation. |
The workflow is request → knowledge and skills → decision → proposed next step → operator approval → separately configured execution. The preparation API implements the first four steps. It does not execute the proposal or approve itself. See the component map.
Try one useful thing first
From a downloaded or cloned checkout, use Python 3.11 or 3.12 (the tested versions):
python -I -S -B scripts/demo_first_run.pyNo installation, account, model, GPU or network connection is needed. The demo creates a temporary invoice program, introduces a known bad edit and runs a real failing check. ROMS extracts the error from the log, locates the function and restores the original file. The check must pass again before the temporary files are removed and success is reported.
Add --json to inspect the original failure log, compacted log, source location and before/after file hashes. The demo accepts no path to your project. It demonstrates controlled recovery, not autonomous repair or safe rollback of concurrent edits. Verification scope.
Prepare a task for review
The harness uses the lightweight dependencies in requirements-ci.txt. On Linux:
python3.12 -m venv .venv
.venv/bin/python -m pip install -r requirements-ci.txt
.venv/bin/python roms.py harness --request examples/harness-request.json
.venv/bin/python -B scripts/demo_harness.pyOn Windows (PowerShell):
py -3.12 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements-ci.txt
.\.venv\Scripts\python.exe roms.py harness --request examples/harness-request.json
.\.venv\Scripts\python.exe -B scripts/demo_harness.pyPython 3.11 also works. These commands use the environment explicitly; activation is optional. The harness guide explains request fields, database setup and examples.
The harness demo uses a temporary synthetic knowledge index and selected skill to exercise real retrieval and the public CLI. It prints its checks and removes the fixture afterward.
Preparation retrieves keyword matches from an existing OKF index, reads explicitly selected Markdown skills, and evaluates supplied choices through the current Decision Maker. Retrieval uses the indexed snapshot; it does not revalidate the original documents. The response includes source hashes, a bounded context, a decision or abstention, and a proposed next step. It always reports approval_required: true and execution_allowed: false.
This path does not call a model, use the network, run tools, edit documents or save topic-discovery records. SQLite may use normal coordination sidecars. It is a preparation step for a caller or operator to review, not a complete autonomous execution loop.
Other command-line tools
The existing utility CLI uses Python's standard library:
python roms.py --help
python roms.py index --path .
python roms.py lookup --query invoice_total_cents
python roms.py pack --costs "50,40,30" --values "100,60,50" --budget 70 --required 2Commands for advisory decisions, memory, log compaction and snapshots are listed in --help. Utilities can write local state under data/prefrontal/; set ROMS_DATA_DIR to use another data directory. Snapshot restoration writes files and validates saved paths and content. Older
unbound snapshots require manual recovery; read the recovery boundaries
before applying a snapshot to a real workspace.
Standalone Decision Maker utilities can also persist topic discovery under ROMS_STATE_DIR (default ~/.roms). Harness preparation disables that persistence.
Add knowledge in your browser
On x86-64 Linux or WSL2, install Pixi and use the repository's locked environment throughout:
pixi install --locked
pixi run python scripts/build_search_native.py
pixi run python -c "from app.config import get_embedding_model; get_embedding_model()"
pixi run python roms.py knowledgeThe model-loading command provisions the default CPU embedding model before the
first import. Keep using pixi run python so ROMS sees the packages installed by
Pixi. Open the private local link printed in the terminal. Drop files, select a
folder, or paste text. Imports show progress and retry controls; restarting resumes
interrupted jobs from retained originals. Search, headings and a source-linked
glossary share the same index. Import guide and limits.
Alternatively, use a Python 3.11/3.12 virtual environment with
python -m pip install -r requirements.txt mojo==1.1.0, build with
python scripts/build_search_native.py, and launch with python roms.py knowledge.
In that route, every python must be the environment's executable, and Tesseract
with English data plus Poppler must be installed separately. Pixi includes them.
Connect an MCP client
Complete the search setup above, then start the Python MCP server:
pixi run python roms.py mcpThis command uses stdio and waits for MCP messages. For clients with an mcpServers
configuration, use the absolute path to the same environment's Python:
{
"mcpServers": {
"roms": {
"command": "/absolute/path/to/ROMS/.pixi/envs/default/bin/python",
"args": ["/absolute/path/to/ROMS/roms.py", "mcp"]
}
}
}If you installed with pip instead, use /absolute/path/to/ROMS/.venv/bin/python.
Configure the client to launch inside WSL when using the Linux environment from
Windows; a Windows process cannot directly execute this Linux Python binary.
See the search setup guide for supported formats and extraction limits.
Startup initializes the database, indexes supported files in knowledge/, starts the watcher and loads only explicitly enabled local plugins. ROMS uses only pinned local Q8 embeddings on CPU; first use may download model files. The 768-dimensional index defaults to data/embeddinggemma-q8.db. Re-ingest your knowledge into this new index when upgrading from the legacy embedding backend; old databases are preserved. Review security and data handling before connecting an agent.
Reference repositories used for design inspiration are not required installations.
See the dependency guide for what the runtime actually uses.
Test tools are separate: install requirements-dev.txt when running the full test
suite, or use pixi run -e dev test-search for native search checks.
Useful registered interfaces
Task | Interface |
Export selected evidence for another assistant |
|
Create or revise a task-skill candidate |
|
Prepare a reviewable request |
|
Search knowledge |
|
Import status |
|
Queue files or pasted text |
|
Track imports and retry failures |
|
Browse headings and definitions |
|
Add or refresh documents |
|
Retain and recall project lessons |
|
Record or revise lesson evidence |
|
Get an advisory decision |
|
Find tools and skills |
|
Read a skill | Resource |
Inspect logs and source locations |
|
MCP starts in read_only mode: search and recall work immediately, while authoring tools require ROMS_MCP_PROFILE=local. Rewind and permanent deletion additionally require ROMS_MCP_ALLOW_DESTRUCTIVE=1. See MCP settings for plugin opt-in and request limits.
The server advertises the full tool list and schemas on connection. The harness tool uses the server's configured database and skills directory; it does not accept arbitrary paths. Other tools can write knowledge, change lessons, author skills or restore files. Caller-supplied verification records are not authenticated test results.
Troubleshooting
Symptom | What to check |
| Run with |
“Build the required Mojo search module” | Build in that environment with |
Model loading fails offline | Run |
A scan or image cannot be imported | Check Tesseract English data and |
A changed file still returns old content | A failed update retains the previous index while the watcher retries with backoff capped at 60 seconds. Inspect ingestion status and resolve persistent errors; |
Deleted files still appear in search | The watcher and |
MCP authoring tools are denied | The default profile is |
See search setup, MCP settings and snapshot recovery for detailed boundaries.
Status and limits
ROMS is a developer project for a trusted local operator. Its Python tools, native components and optional integrations have different prerequisites and verification scopes.
Decision scores and retrieved text can be wrong. They do not establish truth or grant permission to change a system.
Local plugins run with the server's permissions. Skills and retrieved documents are untrusted input to the agent.
The optional model gateway needs a separately configured inference service. Installing ROMS does not install model weights or an operating system.
Dataset export does not train a model. Routing prototypes do not establish measured model-quality improvements.
Benchmark reports cover specific fixtures and machines. No general latency, token-saving or GPU-performance guarantee is made. The planned 128 GB machine needs its own qualification.
Verification
The no-install demo has standard-library regression checks. For the commands in
this section, use your environment's Python (.venv/bin/python on Linux or
.\.venv\Scripts\python.exe on Windows), or prefix python with pixi run:
python -m unittest discover -s tests -p test_first_run_demo.py -vAfter installing requirements-ci.txt in your environment:
python -m pytest tests/test_first_run_demo.py tests/test_prefrontal_integration.py tests/test_decisions_jev_laya.py tests/test_release_safety.py tests/test_memory.py tests/test_context.py -qFor native search, document extraction and the local knowledge interface:
pixi run -e dev python scripts/build_search_native.py
pixi run -e dev python -m pytest tests/test_search_native.py tests/test_search_upgrades.py tests/test_messy_ingestion.py tests/test_knowledge_intake.py -qThe October 20 review records verified checks, the index-freshness fixes and recommended follow-up work. The harness guide records its checks, and the CI workflow defines the portable test matrix. Native builds and live-model checks have separate prerequisites.
More documentation
The Linux/Omarchy workshop adds staged changes, registered validation and operator-approved promotion. It requires its own configured runtime and confinement components; those execution features are not established by the portable preparation command or a positive decision score.
License
Apache-2.0. Copyright 2026 Buzburg LLC. Third-party licenses and acknowledgements remain in NOTICE and the relevant source directories.
For local 8-bit embeddings, see setup and verification.
Available Tools
10 toolscortex_context_packB
Optimal 0/1 dynamic-programming knapsack context selector (ROMS engine) that reserves the highest-ranked failed-attempt warning first.
| Name | Required | Description | Default |
|---|---|---|---|
| costs | Yes | Character/token costs of candidate chunks | |
| budget | Yes | Maximum character/token budget | |
| values | Yes | Relevance value scores of candidate chunks | |
| required_index | No | Mandatory failed-attempt warning index (-1 if none) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the selection algorithm and the special rule that the highest-ranked failed-attempt warning is reserved first, but it omits side effects, return behavior, error conditions, and whether the operation is purely read-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with no obvious filler, and it front-loads the core mechanism before the special reservation rule. The dense jargon and engine name make it slightly less accessible, but the structure is otherwise efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-trivial optimization tool with four parameters and no output schema, the description is too sparse. It does not explain the expected return shape or edge cases such as what happens when the required warning cannot fit within the budget.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters. The description adds only a small amount of meaning by indicating that the required index corresponds to a highest-ranked failed-attempt warning that is reserved first, without further clarifying costs, values, or budget.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and mechanism: it selects context chunks via an optimal 0/1 dynamic-programming knapsack method. It is clear what the tool does at a technical level, though it does not distinguish itself from any sibling tool by name or scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives, nor about prerequisites or exclusions. The only conditional behavior mentioned, reserving the failed-attempt warning first, is an internal rule rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cortex_memory_eraseB
Surgically erase an obsolete key from neural memory using the Gated DeltaNet-2 pure erase gate.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Key to erase |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It mentions 'erase' but does not disclose whether the erase is permanent, what data is removed, whether it requires permissions, or what side effects occur. 'Surgically' and 'Gated DeltaNet-2 pure erase gate' are flavor/implementation detail rather than actionable transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loading the action and resource. The trailing 'using the Gated DeltaNet-2 pure erase gate' is technical flavor that does not help an agent invoke the tool, but the overall length is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, no-annotation tool with no output schema, the description is incomplete: it omits irreversibility, confirmation requirements, and side effects. The schema covers the key parameter, but the safety context an agent needs before erasing memory is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter 'key' is already documented as 'Key to erase.' The description adds no additional syntax, format, or constraint details beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('erase') and resource ('key from neural memory'), making the action clear. It does not explicitly name sibling alternatives like cortex_memory_remember or cortex_memory_recall, so it lacks the sibling differentiation that would earn a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'obsolete key' gives a vague condition for use, but there is no explicit when-to-use guidance, no exclusions, and no mention of alternatives such as cortex_memory_remember or recall. Usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cortex_memory_recallA
Recall a persistent fact or project rule from associative neural memory in <100 microseconds.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Key or semantic concept to recall |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses a performance trait (<100 microseconds) and the memory type, but says nothing about miss behavior, permission/scope requirements, or confirmation that this is a safe read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste; the action, target, source, and performance trait are all delivered compactly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with no annotations and no output schema, the description covers the essentials, but it omits what happens when nothing matches and whether the lookup is scoped or permissioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single documented parameter, so the baseline is 3. The description hints that the query can be a key or semantic concept but adds no format, matching, or syntax detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear verb (Recall) and resource (persistent fact or project rule) drawn from a named store (associative neural memory). It is distinguishable from cortex_memory_remember and cortex_memory_erase by verb, though it does not explicitly differentiate itself from the other lookup siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrasing implies when to reach for this tool (retrieving stored facts/rules), but there is no explicit when-to-use versus alternatives like cortex_symdex_lookup or cortex_prompt_lookup, and no when-not guidance or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cortex_memory_rememberB
Store or cleanly overwrite a persistent architectural fact or project rule using Titans + DeltaNet-2 neural memory.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Concept or variable identifier | |
| value | Yes | Fact or value to memorize | |
| category | No | architecture |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It does disclose two valuable traits: the write is persistent and the overwrite is 'clean' (idempotent upsert rather than an error on duplicate keys), plus the backing store. It omits scope/namespace, whether the value fully replaces prior content, and any permission or size constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the action and scope. No filler, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers the core behavior (persistent upsert) but leaves gaps: no return/confirmation semantics, no scoping model, and no guidance on the undocumented category parameter. Adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%: key and value are documented in-schema, while category has only a default ('architecture') and no description. The phrase 'architectural fact or project rule' hints at what category values might be, but the description does not explain the category parameter or the key format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb pair (store/overwrite) and resource (persistent architectural fact or project rule), and the 'remember' framing clearly positions it against the recall/erase siblings. It stops short of explicitly differentiating itself from siblings like cortex_symdex_lookup or cortex_sieve_compact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this tool versus cortex_memory_recall, cortex_memory_erase, or the other memory siblings. The only usable signal is the implied upsert ('store or cleanly overwrite'), which is behavioral rather than a selection guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cortex_prompt_lookupC
Parameter-free greedy prompt-lookup speculative token drafter (mojond engine) matching trailing n-gram windows.
| Name | Required | Description | Default |
|---|---|---|---|
| tokens | Yes | Prompt token sequence | |
| max_ngram | No | ||
| draft_budget | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it only hints at algorithm ('greedy') and output nature ('drafter'). It omits whether the call is read-only, what gets returned (draft tokens? counts?), latency or budget semantics, and how the required 'tokens' input should be sourced. 'Parameter-free' actively obscures the fact that parameters are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single, front-loaded sentence with no filler, which is structurally efficient. However, the compression comes at the cost of clarity, packing three unexplained terms into one line rather than using the space to inform.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no annotations and no output schema, the description is too thin: it doesn't define the two undocumented parameters, the output, or when to select it over neighbors. The agent lacks enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% — max_ngram and draft_budget have no descriptions at all. The description's mention of 'trailing n-gram windows' loosely relates to max_ngram but never explains it, nor does it clarify draft_budget. It fails to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific function (greedy prompt-lookup speculative token drafting via trailing n-gram matching), so a domain-knowledgeable agent can grasp the intent. However, it is dense with unexplained jargon ('mojond engine') and doesn't differentiate itself from siblings like cortex_symdex_lookup. 'Parameter-free' is also confusing since the schema requires a 'tokens' argument.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance is given: nothing says this should be called for drafting/speculation versus the sibling lookup or memory tools, and no prerequisites or invocation context are stated. The agent must infer usage entirely from the technical label.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cortex_shield_forecastB
Evaluate a candidate shell command or action for goal alignment, cyclic loops, and destructive hazards before execution.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | Active task objective | |
| action | Yes | Proposed command or action |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the three evaluation dimensions, which is meaningful behavioral context. But it says nothing about what the evaluation produces (a verdict? a block? a score?), whether the call is side-effect-free, or what happens on a hazardous result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero filler; the purpose and the checked dimensions arrive immediately. It is well-sized for a two-parameter tool, though it is arguably under-developed rather than padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description is the sole source of behavioral information, and it leaves the return contract and the consequence of a failing forecast unstated. For a safety-gating tool this is a noticeable gap, though the core purpose is covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both 'goal' (active task objective) and 'action' (proposed command). The description adds no format or syntax detail beyond what the schema provides, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Evaluate') on a specific resource ('candidate shell command or action') and enumerates the three checks (goal alignment, cyclic loops, destructive hazards), so an agent can tell it apart from the memory/snapshot/context siblings. It stops short of naming any sibling for contrast, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'before execution' implies the correct moment to call it (pre-flight on a proposed action), which is genuine usage context. However there is no explicit when-not guidance and no named alternative, so the guidance remains implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cortex_sieve_compactA
Compact verbose terminal logs or test outputs by 90-98% using SnapKV observation windows while retaining all stack traces and errors.
| Name | Required | Description | Default |
|---|---|---|---|
| raw_text | Yes | Raw terminal or build output | |
| max_lines | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses a key behavioral trait: it retains all stack traces and errors, which is critical for an agent to know the compaction is lossy but safe for debugging. However, it doesn't mention other potential behaviors like idempotency or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, efficient sentence that front-loads the action, target, and benefit. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema, no annotations), the description covers the core purpose and one behavioral trait. However, it fails to explain the 'max_lines' parameter or any edge cases, leaving gaps for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 50%, so the description must compensate. It does not describe the 'max_lines' parameter or its effect on the output, nor does it explain the 'raw_text' input beyond what the schema already says. The description adds no parameter-level detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Compact), resource (terminal logs or test outputs), and quantifies the effect (90-98%). Clearly distinguishable from siblings like cortex_context_pack or cortex_prompt_lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage context (verbose terminal logs, test outputs) but does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cortex_snapshot_createA
Create a deduplicated copy-on-write workspace snapshot before executing risky multi-file edits.
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | Agent pre-edit checkpoint |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that snapshots are deduplicated and copy-on-write (implying cheap, low-storage checkpoints), which encourages frequent use. But it says nothing about required permissions, what the call returns, or how the created snapshot is later referenced, so significant gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action, with every clause earning its place (what is created, how it is implemented, and when to call it). There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a snapshot-creation tool with no annotations, no output schema, and one optional param, the description covers the what and the when. It omits the natural lifecycle linkage to cortex_snapshot_rewind (how to restore) and any indication of the returned handle, which an agent would need to use the snapshot afterwards.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description never mentions the single 'label' parameter, so it adds no semantic detail. The impact is limited because the parameter is optional with a sensible default ('Agent pre-edit checkpoint'), keeping the stakes low, but the description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Create a ... workspace snapshot') with meaningful qualifiers ('deduplicated copy-on-write'), so an agent knows exactly what operation this is. It does not explicitly name the complementary sibling cortex_snapshot_rewind or contrast itself against it, which keeps it at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It supplies a concrete trigger condition: invoke this 'before executing risky multi-file edits.' That is real usage guidance, not just a restatement of purpose. However, it offers no explicit exclusions (e.g., when a snapshot is unnecessary) and no named alternative, so it falls short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cortex_snapshot_rewindA
Atomically rewind the workspace to a previous snapshot without altering .git history.
| Name | Required | Description | Default |
|---|---|---|---|
| snapshot_id | Yes | Snapshot ID (e.g. snap_001) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does add two meaningful traits beyond the schema: the operation is 'atomic' (all-or-nothing) and it does not touch .git history. But it is silent on whether this is destructive, what happens to current uncommitted workspace state, reversibility, and permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the verb and scope constraint are stated immediately and every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation-style tool with no annotations and no output schema, the description is thin: it does not disclose destructiveness, reversibility, or the fate of current workspace state. The atomicity and .git-exclusion notes help, but an agent still lacks key facts for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage, so the schema already documents snapshot_id including an example format. The description adds nothing about the identifier, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (rewind) and resource (workspace to a previous snapshot), with a useful scope qualifier that the operation leaves .git history untouched. It is clearly distinguishable from cortex_snapshot_create, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without altering .git history' implies this is the tool to use when you want to restore workspace state without a git-based reset, which is a reasonable implied usage cue. However, there is no explicit when-to-use, when-not-to-use, prerequisite, or alternative named, so the agent must infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cortex_symdex_lookupC
Locate function, class, struct, or interface definitions across the codebase in <150 microseconds without reading full files.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Symbol name to find | |
| top_k | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it discloses useful behavior beyond the schema: sub-150-microsecond lookup that avoids reading full files, which is read-only by implication. However, it says nothing about match semantics (exact vs fuzzy), result ordering, or what happens when nothing matches, so the disclosure is only partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. The performance claim ('<150 microseconds without reading full files') is the one slightly promotional phrase, but it doubles as a behavioral hint, so it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and an undocumented second parameter, the description should compensate but does not: it omits return shape, match semantics, and any usage guidance. For a lookup tool in a large sibling set, this leaves the agent with meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: 'query' is documented in the schema, but 'top_k' has no schema description and the description never mentions it, so its meaning (number of definitions returned?) is left entirely to inference. The description adds no parameter meaning at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Locate) and resource (function, class, struct, or interface definitions) with a clear scope ('across the codebase'). It is distinguishable from the memory/snapshot siblings, though it never explicitly names or contrasts with the nearest sibling, cortex_prompt_lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage ('locate definitions') but gives no when-to-use context, no exclusions, and no alternative tool to prefer in other cases. An agent must infer entirely when this is the right call versus cortex_prompt_lookup or cortex_context_pack.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v1.0.0- First observed
cortex_context_pack - First observed
cortex_memory_erase - First observed
cortex_memory_recall - First observed
cortex_memory_remember - First observed
cortex_prompt_lookup - First observed
cortex_shield_forecast - First observed
cortex_sieve_compact - First observed
cortex_snapshot_create - First observed
cortex_snapshot_rewind - First observed
cortex_symdex_lookup
TDQS
Scored across 10 tools
Most tools target clearly distinct resources and actions: the three memory tools (remember/recall/erase) split cleanly by CRUD verb, snapshots split by create/rewind, and symdex_lookup, sieve_compact, and shield_forecast each have unique purposes. The only mild overlap is between cortex_context_pack and cortex_prompt_lookup, which both operate on token/context handling and could be confused at a glance.
Every tool follows a strict cortex_<namespace>_<action> snake_case pattern (memory_remember, snapshot_create, sieve_compact, etc.). Namespace grouping is predictable and verbs are consistent in style across all ten tools.
Ten tools is well within the ideal 3-15 range and each maps to a distinct capability (memory, code lookup, log compaction, snapshots, safety forecast, context selection). No tool feels redundant or padded.
Memory offers full create/read/delete coverage and snapshots offer create/rewind, so the core lifecycle is present. Minor gaps remain (no snapshot list/prune or memory enumeration), but agents can work around these without dead ends.
Maintenance
Related MCP Connectors
Persistent memory, knowledge graph, task management and more for AI agents via MCP.
- LogRackOAuthai.lograck
Shared memory for your AI tools: tasks, notes and context every tool can read and write over MCP.
Cross-tool persistent memory and context for AI assistants over MCP.
The project brain for AI coding agents — memory, decisions, sprints, knowledge base via MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI coding agents to retrieve and manage code context with hybrid search, project memory, and observability via MCP tools.29MIT
- AlicenseNot gradedqualityCmaintenanceProvides AI agents with a governed, three-layer project memory (guide, code facts, and knowledge) through namespaced MCP tools for code search, context compilation, impact analysis, and proposal-driven documentation updates.4 npm2MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to locally search, query, and understand codebases with token-efficient context, dependency graphs, history, architecture diagrams, and metrics through MCP.15 npm3MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI coding agents to retrieve token-budgeted project context, search code symbols, look up definitions, and access project memory and cross-project learnings through local MCP tools. It reduces redundant exploration by supplying the smallest useful context from a deterministic, local-first index.MIT