Skip to main content
Glama

Infimium

The Private Context Layer & Super Brain for Your Codebase. Give AI agents persistent memory, deep dependency graphs, and instant code context -- 100% local, zero token bloat.

npm version MCP Badge MIT GitHub stars

Demo

Infimium demo

Related MCP server: LocalNest MCP

Why

Large repositories make agents read too much code or miss the right symbol. Infimium retrieves compact, relevant context before the agent starts editing.

200,000 lines of code
Agent reads everything -> context blown + expensive
grep "price calculation" -> misses calcPropertyValue()
tool: semantic_code_search
query: "price calculation logic"

-> services/property/calc.ts:142 · calcPropertyValue()
-> callers: getListingPrice(), estimatePropertyTax()

Quick Start

Requires Node.js 22.5+. From your project folder:

cd /path/to/your/project
npx infimium@latest setup

Run setup from the repository you want to index, not from your home directory (~). Infimium stops broad roots automatically so it cannot scan unrelated files.

That creates global config, starts Ollama if it is installed, pulls nomic-embed-text, indexes the current project or workspace, runs doctor, and opens Playground.

The published CLI keeps its executable entrypoint, so MCP clients can launch it directly through the configuration below.

If Ollama is not installed yet:

npx infimium@latest setup --install-deps

infimium setup creates one global config at ~/.infimium/.env. You do not need a .env in every project. Code, docs, memory, graphs, and vectors are stored locally under ~/.infimium/.

Web search is optional. Add a Tinyfish key only when you need it:

SEARCH_PROVIDER=tinyfish
SEARCH_API_KEY=your_key

Full infimium plan generation also needs a local text model:

ollama pull llama3.1

infimium plan --dry-run "your task" works without this model and shows the retrieved code context first.

Connect Your Agent

Cursor, Windsurf, Claude Desktop, and other MCP clients:

{
  "mcpServers": {
    "infimium": {
      "command": "npx",
      "args": ["-y", "infimium", "serve"]
    }
  }
}

Restart the client, then use:

Use Infimium hello_infimium.
Use Infimium get_context before starting.
Use Infimium semantic_code_search to explain this repository.

Infimium normally uses the MCP process working directory. If your client starts it elsewhere, pass project_path once; Infimium remembers the active project and auto-indexes it.

Tools

Tool

What it does

hello_infimium

Confirms the MCP server is healthy.

get_context

Reads saved YAML repo context, current memory and handoff; explicit refresh updates Git/index state.

infimium_update

Refreshes episodic memory and handoff graphs; controls automatic memory checkpoints.

semantic_code_search

Finds code by meaning and returns symbol signatures first.

expand_symbol

Loads one full implementation only when needed.

query_local_docs

Searches local Markdown, text, HTML, and PDF files.

dep_graph

Shows imports, callers, callees, and HTTP routes for a symbol.

project_memory

Keeps active scratchpad events, compact milestones, and durable project rules across agents.

plan

Builds a grounded implementation plan from code and graph context.

web_search

Searches the web through optional Tinyfish configuration.

fetch_url

Extracts readable Markdown or text from a URL.

shell

Runs allowlisted commands with timeouts and output limits.

CLI

Command

Description

infimium doctor

Run health checks on your dependencies and setup.

infimium status

Show the current status of the index and memory.

infimium --help

Shows all relevant cli commands.

infimium playground

Launch the local web UI to explore index, graph, and memory.

infimium index

Scan and index the current project directory (code, docs, dependencies).

infimium watch

Run the indexer in watch mode to continuously index changes.

infimium get-context

Output the full flattened context as YAML (layer.md).

infimium code-search <query>

Semantically search code and return symbol signatures.

infimium expand-symbol <symbol>

Fetch the full implementation code for a specific symbol.

infimium docs-search <query>

Semantically search local markdown/text documentation.

infimium dep-graph <symbol>

Show dependencies, callers, callees, and route graph.

infimium plan --dry-run "<task>"

Draft an implementation plan based on a given prompt.

infimium remember "<note>"

Add a milestone, progress, or decision to project memory.

infimium resume

Show the active task and recent scratchpad memory events.

infimium memory complete

Compact the active scratchpad into an archived milestone.

infimium memory search "<query>"

Semantically search past project rules and memory ledger.

Use npx infimium ... if you did not install the package globally.

Project Memory

Refresh memory yourself, or enable periodic checkpoints for the current project:

infimium update --note "Implemented login validation" --task "Finish login" --handoff "Run the auth tests next"
infimium update start --interval 300
infimium update status
infimium update stop

Replace the example notes with your own. Add --project /path/to/repo to select a project and --file src/auth.ts to attach a relevant file. infimium_update and infimium-update are CLI aliases. MCP agents use the infimium_update tool with action: refresh|start|stop|status, project_path, and optional note, task, handoff, files, or interval_seconds.

Auto-update is opt-in and runs while the foreground CLI watcher or an MCP server is open. Its per-project setting survives restarts; stop disables future checkpoints (an in-flight refresh may finish). Checkpoints link episodes, tasks, file references, and handoff notes in local SQLite. Unchanged observations are deduplicated. Automatic checkpoints record observable state, not guessed intent, and never mark a task complete.

get-context / get_context now reads saved context and current memory without rescanning the repo. It includes a bounded memory graph and guidance to answer repo-overview questions only when asked, using Infimium memory first. Missing context is reported explicitly. Run infimium update or get-context --refresh to refresh filesystem context. These are agent guidelines, not an enforcement mechanism for other clients.

Infimium keeps memory bounded across long sessions:

  • Scratchpad: recent events for the active task.

  • Archive: compact summaries of completed tasks.

  • Ledger: durable decisions, rules, quirks, and unresolved blockers.

Record meaningful progress while working:

infimium remember "Added rate-limit middleware" --type progress --task "Rate limiting"
infimium remember "Use Redis-backed counters in production" --type decision

When the task is complete:

infimium memory complete

Infimium uses the local llama3.1 model when available and falls back to deterministic compaction when it is not. Raw compacted events remain stored locally for seven days before pruning. get_context never calls an LLM or network service.

From a source checkout, build once and run the local playground with:

npm run build
npm run playground

Local Architecture

  • Ollama creates embeddings on your machine.

  • Embedded SQLite stores vectors, index metadata, project memory, and graph edges. No ChromaDB or Docker service is required.

  • Documents use recursive boundary-aware chunks instead of blind fixed slices.

  • JavaScript, TypeScript, Python, and Dart parsers are bundled.

  • Go, Rust, and Java Tree-sitter WASM grammars download on first use and cache in ~/.infimium/grammars/.

  • .gitignore, .infimiumignore, and framework defaults exclude dependencies, build output, Flutter artifacts, caches, and binaries before indexing.

  • semantic_code_search returns signatures; expand_symbol provides full code on demand.

  • Project memory uses session-scoped scratchpads, compact milestone archives, and a versioned semantic ledger.

  • get_context emits static anchors, dynamic repository state, and active execution as separate YAML zones.

Multiple Projects

Run the normal index command from a folder containing related projects:

infimium index

Infimium detects immediate project roots from files such as pubspec.yaml, package.json, Cargo.toml, and go.mod. It shows the detected roles and dependencies, asks once, then creates infimium.workspace.json, indexes every project, and opens Playground.

For unattended setup:

infimium index --yes --no-playground

Use --no-workspace to index only the current project. Workspace projects keep separate memory and Git state while get_context includes balanced summaries and graph relationships from related projects.

Infimium - Playground

Infimium drops the initial payload cost from approximately 1,460 tokens to 8 tokens per symbol. Semantic search returns the AST signature first; the agent requests the full implementation only when it needs it with expand_symbol.

Full implementation   ~1,460 tokens
AST skeleton               ~8 tokens
Initial payload reduction  ~99.5%

These are Playground reference values, not a claim that every function has the same size. Inspect your own indexed repository and compare AST-first retrieval with full-text retrieval locally:

infimium playground

Open Token Economics to see the estimated token difference across your actual indexed symbols.

Privacy

Code, docs, embeddings, memory, graph data, prompts, queries, file paths, and repo names remain local.

Infimium sends privacy-safe anonymous lifecycle telemetry so we can understand setup success:

  • init_started, init_completed

  • doctor_run, doctor_passed

  • index_started, index_completed, setup_completed

  • serve_started, first_tool_call, playground_opened

Telemetry includes an anonymous install ID, Infimium version, OS, Node major version, timestamp, and event name. It never includes code, file paths, repo names, prompts, search queries, memory notes, API keys, or user identity.

Disable it anytime:

infimium telemetry off

or set:

INFIMIUM_TELEMETRY=false

Troubleshooting

FAQ & Common Confusions

Where is layer.md? When you run infimium get-context, it prints saved context directly to your terminal (stdout). Refreshes store project-scoped YAML under Infimium's local data directory. To export the saved context to a file, use terminal redirection:

infimium get-context > layer.md

Why does the Playground UI say "Awaiting first agent interaction..."? The CURRENT TASK tracker reflects stored project context. Run infimium update --task "Your task" to refresh it; get-context reads the saved snapshot.

How do I format infimium remember? The infimium remember command requires a message and a --type flag (valid types: note, progress, decision, blocker, index, plan). If you also want it to update the active task in the Playground, include the --task flag:

infimium remember "Added rate limiting" --type progress --task "Security Features"

Database is locked

If you see Failed to start Infimium: Database is locked, it means another instance of Infimium is actively holding a lock on the SQLite memory database. This usually happens if you try to run infimium index manually in one terminal while infimium playground or infimium watch is still running in another. Simply stop the running process (Ctrl+C) before running manual commands.

General Setup Issues

Run:

infimium doctor

Every failed check prints one copy-paste fix. If setup still fails, give this prompt to your coding agent:

Set up Infimium in this repository. Install/start Ollama, pull nomic-embed-text,
run npx infimium init, run npx infimium index, and make all six
npx infimium doctor checks pass. Do not commit secrets.

Contributing

See CONTRIBUTING.md. Adding a language starts with a parser fixture and extraction test.

Self-hosting is free forever under the MIT license.

Available Tools

11 tools
dep_graphC

Inspect dependency relationships for a symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbol_nameYes
project_pathNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden. It implies a read-only inspection but does not disclose return format, whether traversal is transitive, required permissions, or failure modes. The word 'inspect' hints at non-mutating behavior, but no explicit guarantees are given.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence, which is efficient, but it omits essential information. True conciseness balances brevity with necessary detail; this veers into under-specification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is no output schema, no annotations, and only vague parameter descriptions, the tool description is insufficient for an agent to use it effectively. It lacks details about return values, edge cases, or relation to sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds nothing about the parameters. An agent cannot determine what 'symbol_name' should look like (e.g., fully qualified name or plain string) or what 'project_path' means or its default behavior when omitted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Inspect dependency relationships for a symbol' uses a clear verb ('inspect') and identifies a specific resource ('dependency relationships for a symbol'). It distinguishes this tool from siblings like semantic_code_search or expand_symbol, though it does not specify whether it shows incoming or outgoing dependencies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus its siblings. There is no mention of alternatives, exclusions, or typical use cases, leaving the agent to guess based on the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

expand_symbolB

Load the full implementation of one symbol returned by semantic_code_search.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathNo
symbol_nameYes
project_pathNo

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of transparency. It only states the action 'load the full implementation' but doesn't disclose what exactly is returned (e.g., source code, metadata), whether it requires a project path or file path for disambiguation, or any error behavior. The one-line description lacks essential behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler words. It clearly states the purpose and the workflow context, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema and no annotations, so the description must cover both input parameters and return behavior. It fails to explain the role of optional parameters, what 'full implementation' includes, or how the returned data is structured. While simple, the lack of context around optional file_path and project_path leaves the agent guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the three parameters. It doesn't explain what file_path and project_path mean or how they relate to symbol_name. The description only mentions 'one symbol', leaving the optional parameters completely undocumented, which is insufficient for an agent to correctly populate them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Load' with a clear resource 'full implementation of one symbol', and explicitly ties it to symbols returned by semantic_code_search. This distinguishes it from sibling tools like semantic_code_search (search) and dep_graph (dependencies).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'returned by semantic_code_search' provides a clear workflow context: this tool should be used after obtaining a symbol from semantic_code_search. However, it doesn't explicitly state when not to use it or mention alternative tools, so it falls short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fetch_urlC

Fetch a URL and extract readable content.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
extractNomarkdown

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden of behavioral disclosure. It does not mention possible failures (e.g., invalid URLs, network errors, redirects), rate limits, authentication requirements, or the structure/format of the returned content. This is a significant gap for a network-fetching tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, front-loaded with the core action. It is easy to scan and understand the primary purpose. However, the brevity sacrifices important behavioral and usage details, so it is not perfectly complete for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is no output schema and no annotations, the description needs to provide more context about what the agent should expect. It does not describe the return structure, error handling, or what formats 'extractable content' may take. For a simple tool with only two parameters, the description is under-specified and leaves too much to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description only indirectly references the 'url' parameter ('Fetch a URL') and the 'extract' action ('extract readable content'). It does not explain the two parameter names, the enum choices for 'extract', or the default behavior. The schema provides the default and enum, but the description adds little semantic value beyond what the parameter names imply.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Fetch' and clearly identifies the resource ('a URL'), with the added action of extracting readable content. It is distinguishable from sibling tools like 'web_search', which implies a search-based retrieval rather than direct fetch of a specified URL. However, it does not explicitly state what 'readable content' includes, leaving some ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like web_search or get_context. There are no exclusions, prerequisites, or preferred scenarios. The description simply states the action, leaving the agent to infer when it is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_contextA

Read the balanced YAML context layer with repo overview, Git state, task, memory, and AST-first handoff guidance. Pass project_path once to activate the current IDE workspace as the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
formatNoyaml
refreshNo
project_pathNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry behavioral disclosure. It does disclose that passing project_path activates the IDE workspace as default, a side-effectful behavior, and uses 'Read' to signal a non-mutating operation. It does not explain refresh/format defaults or whether any re-indexing occurs, but it avoids contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: the first states purpose with specific content, the second gives a concise setup instruction. No redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description gives a solid purpose and one parameter's behavior, but without annotations or output schema it leaves gaps: it does not describe the output format/length or how refresh/limit alter results, and it lacks guidance relative to sibling tools. It is adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description only adds semantics for project_path ('activate the current IDE workspace as the default'). It does not explain the meaning or effect of limit, format, or refresh, leaving the agent to infer from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies a clear action ('Read') and a concrete resource ('balanced YAML context layer') with listed contents (repo overview, Git state, task, memory, AST-first handoff guidance). It is not a tautology and conveys a distinct purpose, though it does not explicitly contrast with sibling tools like project_memory.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly implies when to use it — when you need repo overview, Git state, task, memory, or handoff guidance — and includes a practical activation instruction ('Pass project_path once...'). However, it does not provide explicit exclusions or alternative tool recommendations, so it stops short of the strongest guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hello_infimiumB

Health probe for the Infimium MCP server.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should disclose whether the tool is read-only, what it returns, or if it has side effects. 'Health probe' implies safety but does not explicitly confirm behavior, response format, or error conditions. This is a significant gap for a tool with no structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence that conveys the essential purpose without wasted words. For a zero-parameter health probe, this level of conciseness is appropriate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (no params, no output schema, no annotations), but the description still omits key context such as the return value (e.g., OK/status), potential errors, and whether any setup is required. It feels incomplete for an agent deciding whether to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so the baseline is 4. There is nothing for the description to explain regarding parameters, and no schema-description coverage issues exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the tool as a 'health probe' for the Infimium MCP server, which clearly indicates its purpose. It is distinct from sibling tools like web_search or shell, though it lacks an explicit verb like 'checks' or 'returns'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives, no prerequisites, and no mention of typical scenarios. The description is purely declarative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

planC

Generate a grounded implementation plan for the current repository.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYes
top_kNo
dry_runNo
languageNo
write_planNo
output_pathNoplan.md
project_pathNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It does not mention potential side effects such as writing files (write_plan, output_path) or the ability to run in dry-run mode (dry_run). The tool also supports custom languages and project paths, none of which are disclosed, leaving significant behavioral ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, which is structurally efficient and front-loaded. However, for a tool with 7 parameters and multiple behavioral options, this is under-specified—a complete description would need more detail to be appropriately sized. It is not excessively verbose, but the lack of substance makes it minimally adequate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, no annotations, no output schema), the description is drastically incomplete. It does not explain what a 'grounded implementation plan' entails, how the plan is generated, whether the tool returns a string or writes a file, or how parameters like dry_run and write_plan alter behavior. An agent would have insufficient context to invoke this tool reliably.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 7 parameters with 0% description coverage, and the tool description does not mention any of them. It fails to explain what 'task' means, what 'top_k' controls, or that 'language' and 'project_path' affect scope. The description provides no semantic value beyond the schema's raw field names, making parameter understanding entirely dependent on the agent's prior knowledge.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Generate') and object ('grounded implementation plan') scoped to 'the current repository.' It distinguishes itself from sibling tools like semantic_code_search or dep_graph, which serve different functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'grounded implementation plan' implies it should be used when planning based on repository context, but it does not explicitly state when to use this tool over alternatives like get_context or shell. No exclusions or alternative recommendations are provided, so guidance is inferred rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

project_memoryB

Manage compact project memory across chats, agents, and IDEs: remember active work, complete and archive sessions, search history, or update durable rules.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNo
noteNo
taskNo
limitNo
queryNo
valueNo
actionNoresume
categoryNo
use_modelNo
event_typeNonote
project_pathNo

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It names operations like remember, complete/archive, and search, but does not explain side effects, persistence semantics, return values, or any prerequisites. This is insufficient for a tool with multiple mutating actions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the primary purpose and lists key actions without fluff. It is efficient and appropriate in size for a high-level overview.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (11 parameters, multiple action modes, no output schema, no annotations), the description is far too incomplete. It provides only a high-level summary and omits critical usage details, action-specific semantics, and expected responses.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description provides no parameter-level information. The tool has 11 parameters, including enums and defaults, but none are explained, leaving agents unable to construct valid calls.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool manages compact project memory across chats, agents, and IDEs, and enumerates specific operations (remember, complete/archive, search, update rules). It distinguishes from sibling tools by focusing on memory management, though 'manage' is a generic verb and the exact resource is broad.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when needing to maintain project memory across chats, agents, and IDEs, providing clear context for when to use it. It does not explicitly mention alternatives or exclusions, but the context is specific enough to guide selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

query_local_docsC

Query indexed local documentation.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
top_kNo
project_pathNo

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states 'Query indexed local documentation' without indicating whether the operation is read-only, what setup is required, or what the response contains. This is a significant gap for a query tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, which is concise, but it is under-specification rather than effective conciseness. It fails to include necessary usage and parameter details, so the brevity is not a benefit.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This tool has three parameters, no annotations, and no output schema. The description is far from complete: it does not clarify what 'indexed' means, how project_path scopes the query, or what top_k controls. The tool cannot be used reliably based on this description alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description provides no parameter explanations. The agent must infer meanings for query, top_k, and project_path from names alone, which is insufficient for correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb ('Query') and resource ('indexed local documentation'), distinguishing it implicitly from siblings like web_search and semantic_code_search. However, it does not explicitly contrast with alternatives, so it stops short of a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus alternatives. There is no mention of prerequisites, exclusions, or a preferred context, leaving the agent to guess.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shellC

Run an allowlisted shell command.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNo
commandYes
timeoutNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosing behavioral traits, but it only says 'Run an allowlisted shell command.' It fails to mention potential side effects, output format, error handling, security implications, or the fact that this could modify the system. 'Allowlisted' hints at some restriction but lacks detail, leaving significant ambiguity for a powerful tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise—a single sentence with no fluff—which is positive. However, it is under-specified to the point of being almost unhelpful. Concision is valued, but here it sacrifices necessary detail, making it only minimally acceptable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that this tool executes arbitrary system commands, the description is critically incomplete. It lacks information about the execution environment, command output, exit codes, security restrictions, timeout behavior, and interaction with 'cwd'. With no annotations or output schema, the description fails to provide a complete picture, making safe and effective use nearly impossible.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not compensate. Parameters like 'cwd', 'timeout', and even 'command' are not elaborated in any way. The description doesn't clarify that 'command' is the executable string, 'cwd' sets the working directory, or 'timeout' limits execution time. This leaves users without meaningful guidance on how to structure invocations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's primary function: to run a shell command. The verb 'Run' is action-specific and 'shell command' identifies the resource. While it doesn't elaborate on what 'allowlisted' entails, it distinguishes itself from siblings like web_search or fetch_url, which perform other actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention scenarios like executing system-level commands or interacting with the local environment, nor does it specify any prerequisites or exclusions. Users are left to infer its context from the tool name alone.

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.

  1. 11 tool updatesv0.5.8
    • First observeddep_graph
    • First observedexpand_symbol
    • First observedfetch_url
    • First observedget_context
    • First observedhello_infimium
    • First observedplan
    • First observedproject_memory
    • First observedquery_local_docs
    • First observedsemantic_code_search
    • First observedshell
    • First observedweb_search

TDQS

B3/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a clearly distinct function: context reading, health probe, web search, URL fetching, local docs, semantic code search, symbol expansion, dependency graph, shell execution, planning, and project memory. There is no overlap or ambiguity between them.

Naming Consistency2/5

Naming is inconsistent: some tools use verb_noun (web_search, fetch_url, expand_symbol), while others are bare nouns (shell, plan), abbreviations (dep_graph), or greetings (hello_infimium). This mixed style makes the set harder to predict and navigate.

Tool Count5/5

With 11 tools, the server is well-scoped—each tool earns its place and the count is within the ideal 3-15 range. It feels comprehensive without being bloated.

Completeness4/5

The tool surface covers a broad workflow: context, code exploration, web/docs lookup, shell access, planning, and memory. Slight gaps like a direct file editor exist, but shell can fill in, so the coverage is nearly complete.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server for semantic code search & navigation that helps AI agents work efficiently without burning through costly tokens. Instead of reading entire files, agents can search conceptually and jump directly to the specific functions, classes, and code chunks they need.
    120
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    A local-first MCP server that provides AI agents with safe codebase access through file discovery, hybrid lexical-semantic search, and project introspection. It features durable local memory and semantic indexing while keeping all data and processing entirely on your local machine.
    74
    14
    6
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that gives AI agents structured code understanding and precise code intelligence via local indexing of AST, call graphs, and semantic search.
    81
    4
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that provides structure-aware code analysis (symbol trees, dependencies, docs) to reduce AI agent token consumption by up to 99%, along with Git commit intelligence.
    MIT