Skip to main content
Glama

jarvis

CI PyPI Python Platforms License: MIT MCP

Your coding agent should not spend its context window on grep.

When your agent asks "where is AuthService used?", grep returns comments, markdown, test fixtures, and similarly named symbols in one noisy pile. The agent burns context re-reading files to filter signal from noise — and still misses call sites.

jarvis precomputes a local code-intelligence layer so your agent calls findReferences for exact occurrences, goToDefinition for the defining range, callHierarchy for call paths, and semanticSearch for plain-language questions — ten MCP tools for Claude Code, Cursor, or any MCP client. Your code and indexes never leave your machine.

Without jarvis

Grep → comments, tests, imports mixed with real hits → opens files to filter → guesses at call sites → burns context on search instead of reasoning

With jarvis

findReferences("AuthService") → exact file-and-range occurrences → callHierarchy for the graph → semanticSearch("where is token refresh handled?") → answers in milliseconds

Quick start · MCP tools · Dashboard · Limits · Details · Docs

Quick start

1. Install (Tree-sitter syntax baseline ships in the wheel — no external binaries needed):

uv tool install jarvis-mcp

2. Index a repo (slug defaults to the directory name):

jarvis index /path/to/your/repo

3. Register the MCP server:

claude mcp add jarvis --scope user -- jarvis-server

Ask your agent "find all references to AuthService" — it calls findReferences instead of grepping.

{
  "mcpServers": {
    "jarvis": {
      "command": "jarvis-server"
    }
  }
}

If your client can't find jarvis-server on PATH (GUI apps often don't inherit your shell's), use the absolute path from which jarvis-server.

/plugin marketplace add jarvis-intelligence/jarvis-index
/plugin install jarvis@jarvis

For exact references, call hierarchy, and type hierarchy on TypeScript/TSX, Python, Java/Kotlin, and Swift, install external indexer binaries:

curl -fsSL https://raw.githubusercontent.com/jarvis-intelligence/jarvis-index/main/setup.sh | sh
jarvis reindex /path/to/your/repo

Without them, documentSymbols and goToDefinition still work via the Tree-sitter baseline (17 languages); findReferences, callHierarchy, and typeHierarchy require SCIP data and return a capability error with recovery guidance if it's missing.

uv tool install "jarvis-mcp[watch]"      # + watchdog, for `jarvis watch`
uv tool install "jarvis-mcp[semantic]"   # + lancedb/sentence-transformers, for semanticSearch

Related MCP server: grepsense

MCP tools

Tool

What it does

goToDefinition

Resolve a symbol to its defining file and range

findReferences

Every occurrence of a symbol across the indexed repo

callHierarchy

Incoming/outgoing calls for a symbol

typeHierarchy

Supertypes/subtypes

documentSymbols

Outline of every symbol defined in one file

searchCode

Zoekt lexical/regex search, optionally filtered to one repo

semanticSearch

Natural-language search fused with lexical + symbol hits

blastRadius

Which other indexed repos depend on a package, up to 2 hops

getIndexStatus

Published commit, freshness, staleness vs. working tree

indexRepo

Build an index for a git repo at path

Dashboard

jarvis dashboard          # serves http://127.0.0.1:6080 and opens a browser

A localhost web console over the same ~/.jarvis data the CLI and MCP server read:

Requirements and limits

  • macOS and Linux only. Windows is not supported.

  • One language per repo — detected by extension plurality across git-tracked files; override with --language.

  • jarvis never edits code. It is the retrieval half — Serena complements it for renames/refactors.

  • Indexing is explicit — run jarvis index (or jarvis watch) before querying.

Details

One indexing CLI writes precomputed indexes into ~/.jarvis; one stdio runtime reads them down. The two share no other contract.

  • Publishing is atomic — a reindex writes a new snapshot, then flips the current pointer via os.replace. A query reading the old snapshot keeps working; no downtime window.

  • The runtime path never writes — every query opens the published snapshot read-only (mode=ro&immutable=1).

  • The package graph is rebuilt, not accumulated — each reindex clears that repo's outgoing edges before recomputing.

Full detail: docs/system-architecture.md

jarvis index /path/to/your/repo            # slug defaults to the directory name
jarvis index /path/to/your/repo --slug foo # or pick one explicitly
jarvis index /path/to/your/repo --scheme MyScheme # Swift repo with an ambiguous Xcode scheme
jarvis index /path/to/your/repo --language python # force the language instead of detecting it
jarvis index /path/to/your/repo --no-scip   # skip optional SCIP enrichment; syntax baseline + Zoekt still publish
jarvis index /path/to/your/repo --scip      # re-enable SCIP enrichment (both flags persist per repo)
jarvis list
jarvis status foo
jarvis reindex foo
jarvis forget foo
jarvis watch /path/to/your/repo [--debounce 5.0]  # debounced auto-reindex on file changes (foreground)
  • scip-java can't index Android/Gradle repos — its Gradle plugin keys off standard source sets that AGP replaces (scip-java#177). Detected automatically; degrades to search-only.

  • Kotlin indexing requires an exact Kotlin version matchscip-kotlinc is compiled against one pinned release (currently 2.2.0). Detected automatically.

  • Maven-built Java repos need bash ≥ 4.4 on macOSbrew install bash fixes it.

  • Swift indexing requires scip >= v0.9.0 — older converters silently drop occurrence ranges. jarvis index refuses an older scip rather than publishing a broken index.

Variable

Purpose

JARVIS_DATA_DIR

Override default ~/.jarvis for all indexes and registry

JARVIS_EMBEDDING_QUERY_PREFIX / JARVIS_EMBEDDING_DOC_PREFIX

Override embedding instruction prefixes (auto-detected for bge-m3, e5, nomic-embed)

jarvis index --no-semantic skips the vector stage even when the semantic extra is installed. The MCP indexRepo tool defaults to --no-semantic so an agent tool call never implicitly downloads embedding weights.

Documentation

License

MIT

Available Tools

9 tools
blastRadiusA

2-hop bounded BFS over the package dependency graph: every other indexed repo whose package directly (1 hop) or transitively through one intermediary (2 hops) depends on symbol_or_package as registered for repo (built by codeintel index, e.g. "npm:@scope/name"). The graph has no per-node timestamp, so freshness is always reported as unknown here — an honest limitation, not a bug.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
symbol_or_packageYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses the bounded BFS behavior, the dependency on 'codeintel index', and the honest limitation that freshness is always 'unknown' because the graph lacks per-node timestamps. This adds genuine transparency beyond the schema.

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 information-dense without being verbose, front-loading the core algorithm. The first sentence is somewhat dense with parentheticals, but every clause contributes value, and the limitation note is concise.

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

Completeness4/5

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

Given an output schema exists, return values are covered. The description explains the graph traversal logic, indexing prerequisite, and a known limitation, which is sufficient for selecting and invoking the tool correctly. It omits details like authentication, but those are unlikely to be critical for this dependency-graph query tool.

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

Parameters3/5

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

Schema description coverage is 0%, but the description gives meaningful context for both parameters: `symbol_or_package` is a package identifier (with example) and `repo` is where it is registered. It does not fully specify input formats for `repo` or possible variations of `symbol_or_package`, so it only partially compensates.

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 it performs a '2-hop bounded BFS over the package dependency graph' to find repos depending on a given symbol/package. The verb and resource are specific, and the example (npm:@scope/name) distinguishes it from sibling code-navigation tools.

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 conveys that this tool is for package dependency analysis, not code-level references, and mentions it relies on prior indexing. However, it does not explicitly state when not to use it or name an alternative, though the sibling context makes this reasonably clear.

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

callHierarchyA

Single-level incoming/outgoing call hierarchy for symbol within repo.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
symbolYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Since annotations are absent, the description carries the behavioral disclosure burden. It adds the limitation 'single-level' and the scope 'incoming/outgoing', which are important behavioral traits beyond the schema. It does not mention side effects or prerequisites, but for a read-only hierarchy tool this is largely sufficient.

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 immediately conveys the core function. Every word adds value, with no filler or redundancy.

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

Completeness4/5

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

Given the tool's simplicity, an output schema, and the description covering purpose and limitations, it is largely complete. It lacks explicit usage alternatives and deeper parameter definitions, but these are not critical for a low-complexity read tool.

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

Parameters3/5

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

With 0% schema description coverage, the description must compensate. It contextualizes `symbol` as the target and `repo` as the container, giving basic meaning, but does not define what constitutes a valid symbol or repository. This leaves some ambiguity for an AI agent.

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 returns a single-level call hierarchy (incoming/outgoing) for a named symbol in a repo, using the specific resource and scope. This distinguishes it from siblings like findReferences and typeHierarchy, which serve different code navigation purposes.

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 description implies usage when a call relationship view is needed, but provides no explicit guidance on when to prefer this over siblings (e.g., findReferences) or when not to use it. No alternatives or exclusions are mentioned.

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

documentSymbolsA

List every top-level symbol (with its range) defined in path within repo.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
repoYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of explaining behavior. It discloses the core behavior of listing top-level symbols with ranges, but does not explicitly state that it is a read-only operation or mention any edge cases, errors, or performance characteristics.

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 of 13 words, immediately front-loading the action ('List') and the resource ('every top-level symbol'). There is no filler or redundant information, making it highly concise and well-structured.

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

Completeness4/5

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

Given the simplicity of the tool (two string params) and the existence of an output schema, the description provides sufficient context for invocation. It specifies the scope and what is returned (symbols with ranges), though it does not cover potential edge cases or limit behaviors.

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 schema has zero description coverage for the two parameters, so the description must compensate. It does so by clarifying that 'path' is a file path 'within repo', establishing the relationship between the parameters and their roles. This adds meaning beyond the bare schema types.

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 a specific verb 'List' and identifies the resource as 'every top-level symbol (with its range)' scoped to 'path within repo'. This clearly distinguishes it from siblings like goToDefinition, findReferences, and searchCode, which serve different purposes.

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 description implies usage for obtaining an overview of symbols in a file, but it does not explicitly state when to use this tool over alternatives or provide any exclusions. It relies on the agent inferring context from sibling tool names.

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

findReferencesB

Every occurrence of symbol within repo, definition sites included.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
symbolYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description should disclose read-only status or side effects. It only notes that definition sites are included, but does not mention whether the operation is safe or depends on an index.

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?

One short sentence that is front-loaded and contains no redundant words. Every phrase adds relevant scope.

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 tool is simple and has an output schema, so return values are covered. However, the description lacks usage context and any dependence on indexing, making it only minimally complete.

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?

The schema has 0% description coverage, and the description only contextualizes the two parameters ('symbol' in 'repo') without adding format or matching semantics (e.g., case sensitivity, path syntax).

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 finds every occurrence of a symbol within a repo, with definition sites included. This specific verb+resource phrasing distinguishes it from sibling tools like goToDefinition.

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 vs siblings like searchCode or blastRadius. The description only states what it does, with no exclusions or alternative mentions.

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

getIndexStatusA

Whether repo has a published index, and its freshness. Pass repo_path (the repo's local git working directory) to compare the published commit against git rev-parse HEAD; omitted, freshness is reported without a staleness comparison.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
repo_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It explains the core behavior (published index check) and the conditional staleness comparison when repo_path is passed, adding meaningful behavioral detail. It does not discuss error handling or return format, but the output schema likely covers return structure.

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 two sentences, front-loaded with the main purpose, and the optional parameter behavior is explained efficiently without verbosity.

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

Completeness4/5

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

Given the simple 2-parameter schema and presence of an output schema, the description sufficiently covers the tool's behavior and the optional parameter's effect. It is complete enough for an agent to invoke it correctly, though it could mention edge cases like missing indexes.

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?

Schema coverage is 0%, so the description must compensate. It defines repo_path explicitly as 'the repo's local git working directory' and explains its effect, while repo is implicitly defined as the repository identifier. This adds meaning beyond the bare schema.

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 checks whether a repo has a published index and reports its freshness, using a specific verb and resource. It distinguishes itself from the code navigation siblings by focusing on index status rather than code exploration.

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 gives clear context for when to use the tool (to check index existence/freshness) and explains the optional repo_path behavior for staleness comparison. It does not explicitly mention alternatives or exclusions, but the purpose is strong enough to make usage obvious.

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

goToDefinitionA

Resolve symbol's definition location(s) within repo.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
symbolYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/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. It only states the core action and does not disclose edge-case behavior, such as how multiple definitions are returned, what happens if the symbol is not found, or whether indexing is required. This is a minimal disclosure.

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 a clear front-loaded verb. Every word contributes to meaning, with no filler or redundancy.

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

Completeness4/5

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

For a simple two-parameter tool with an output schema available, the description covers the primary purpose. It does not mention prerequisites like indexing, but the low complexity and existence of an output schema keep the baseline high.

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

Parameters3/5

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

The schema has no parameter descriptions (0% coverage). The description places both params in context: 'symbol' is the thing to resolve, 'repo' is the scope. It clarifies the roles but gives no format details (e.g., repo identifier format, symbol qualification). This partially compensates for the schema gap.

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 a specific verb ('Resolve') with a clear resource ('symbol') and outcome ('definition location(s)') within a repo. This effectively distinguishes it from sibling tools like findReferences and documentSymbols.

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 description implies usage: if you need to find a symbol's definition, you use this tool. However, it offers no explicit guidance on when not to use it or alternatives (e.g., 'use findReferences for usages'), so the guidance is only implied.

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

searchCodeA

Lexical code search via an embedded Zoekt index (lazy-started on first call). repo, if given, is applied as a Zoekt r: query filter scoping results to that one indexed repo; omitted, results span every indexed repo.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

The description adds meaningful behavioral context beyond the schema: it mentions the index is 'lazy-started on first call' and explains how the repo filter transforms to a Zoekt 'r:' query. This goes beyond a bare statement of function. However, with no annotations, the description still lacks disclosure on result format, limits, or potential side effects (e.g., indexing delays), so it is not fully transparent.

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 two well-structured sentences: the first clearly states the tool's purpose and mechanism, the second explains the repo parameter's behavior. Every sentence contributes unique information with no filler or redundancy.

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

Completeness4/5

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

For a search tool with an output schema present, the description sufficiently covers the core functionality, the lazy-start behavior, and the repo scoping logic. It misses some contextual information like query syntax or limits, but these are less critical given the output schema and the fact that the core behavior is clearly explained. Sibling tools like getIndexStatus could complement but are not strictly required to be mentioned.

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

Parameters3/5

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

The schema provides no descriptions (coverage 0%), so the description must compensate. It does explain 'repo' semantics in detail (Zoekt r: filter, scoping vs. all repos), which adds real meaning. However, the required 'query' parameter is not described beyond the general 'lexical code search' phrase, leaving its syntax and expected format ambiguous. Thus partial compensation only.

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 'Lexical code search via an embedded Zoekt index', specifying the verb (search), the resource (code), and the distinguishing mechanism (lexical via Zoekt). This differentiates it from sibling tools like semanticSearch, which implies a non-lexical search, and also names a concrete implementation detail (Zoekt index).

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 description implies usage by specifying 'lexical code search' and the repo scoping behavior, but it does not explicitly state when to prefer this over semanticSearch or other siblings, nor does it provide exclusions or alternative tool references. The repo filter is explained functionally, but this is more behavioral than usage guidance.

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

semanticSearchA

Natural-language code search over repo: embeds query, retrieves top vector matches from the repo's semantic index, fuses them with Zoekt lexical hits via reciprocal rank fusion. Requires the repo to have been indexed with the semantic extra installed.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses non-obvious behavior: embedding the query, retrieving top vector matches, and fusing with Zoekt hits via reciprocal rank fusion. It also flags a prerequisite. Lacks error/output details but is quite transparent for a search tool.

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 concise sentences, front-loaded with purpose and algorithm. Every word adds value; no redundancy or filler.

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

Completeness4/5

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

An output schema exists, so return-value discussion is unnecessary. The description covers purpose, mechanism, and prerequisite. It could benefit from mentioning 'limit' or an explicit sibling comparison, but overall it's sufficiently complete for moderate complexity.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It adds meaning to 'repo' and 'query' but omits 'limit', which has a default. Partial coverage—enough to understand core parameters but not complete.

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 performs natural-language code search over a repo, with a specific verb ('search') and resource ('repo'). It further differentiates from siblings like searchCode by detailing the semantic/vector retrieval and fusion with Zoekt lexical hits.

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 implies usage for natural-language queries and gives a prerequisite (repo must be indexed). It does not explicitly name alternatives or exclusions, but the context is clear enough to guide selection among sibling tools.

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

typeHierarchyA

Single-level super/subtypes for symbol within repo.

Returns an explicit error when the index carries no relationship data —
`scip expt-convert` does not populate `global_symbols.relationships`, so
an empty result would wrongly imply the symbol has no supertypes.
ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
symbolYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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 critical behavior: returning an explicit error when relationship data is absent, and explains the underlying reason (`scip expt-convert` does not populate `global_symbols.relationships`). This goes beyond the tool's nominal function and helps prevent misinterpretation of empty results.

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 exceptionally concise: two sentences. The first states the core purpose, and the second adds a crucial caveat about error behavior. No unnecessary words or redundancy.

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

Completeness4/5

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

The tool is simple with an output schema, so it doesn't need to describe the return format. The description covers the main functionality and a significant edge case that could otherwise mislead users. However, it stops short of providing explicit guidance on when to prefer this tool over sibling tools like callHierarchy.

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

Parameters3/5

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

The description references `symbol` and `repo` within its sentence, providing minimal contextual clues, but does not elaborate on their meanings, types, or formats. Schema description coverage is 0%, so the description does not significantly augment the schema's parameter definitions beyond the obvious names.

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 returns 'Single-level super/subtypes for `symbol` within `repo`', using a specific verb-like purpose that distinguishes it from sibling tools like callHierarchy. The 'single-level' qualifier prevents confusion with transitive or multi-level hierarchies.

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 description implies usage for type hierarchy queries but does not explicitly mention when not to use it or compare with alternatives like callHierarchy. It does provide a caution about the error condition, which partially guides usage, but lacks explicit when-to-use/versus guidance.

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. 9 tool updatesv0.2.1
    • First observedblastRadius
    • First observedcallHierarchy
    • First observeddocumentSymbols
    • First observedfindReferences
    • First observedgetIndexStatus
    • First observedgoToDefinition
    • First observedsearchCode
    • First observedsemanticSearch
    • First observedtypeHierarchy

TDQS

A4/5.0

Scored across 9 tools

Disambiguation5/5

Each tool targets a clearly distinct code intelligence operation: symbol listing, definition resolution, references, call/type hierarchies, index status, lexical search, semantic search, and dependency impact analysis. No two tools serve the same purpose.

Naming Consistency4/5

All names are camelCase and reasonably descriptive, but the pattern is not fully uniform: some start with verbs (goTo, find, get, search) while others are noun phrases (callHierarchy, typeHierarchy, blastRadius). This minor inconsistency does not seriously impede readability.

Tool Count5/5

Nine tools is well-scoped for a code intelligence server, covering standard queries without excess. Each tool contributes a distinct capability and none feel redundant.

Completeness5/5

The surface covers core code intelligence workflows: symbol navigation, references, hierarchies, search (both lexical and semantic), index freshness, and dependency blast radius. No obvious dead ends or missing critical operations for the implied scope.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    A
    maintenance
    Local-first codebase intelligence engine providing AI coding agents with a typed MCP toolset for understanding and navigating code repositories.
    100
    51
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides two-modal code search (lexical via Zoekt and semantic via ChromaDB embeddings) for AI coding agents through MCP tools, enabling fast regex and meaning-based code lookup.
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    A local code-intelligence MCP server that provides structural, exact-query, related-search, and research capabilities from a validated repo-local index, enabling agents to perform deterministic lookups, semantic search, and code analysis.
    21
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Provides a local-first code indexing and search engine for coding agents via MCP, enabling precise codebase queries, symbol lookup, and freshness-aware retrieval.
    -