Skip to main content
Glama

Context+

Semantic Intelligence for Large-Scale Engineering.

Context+ is an MCP server designed for developers who demand 99% accuracy. By combining RAG, Tree-sitter AST, Spectral Clustering, and Obsidian-style linking, Context+ turns a massive codebase into a searchable, hierarchical feature graph.

https://github.com/user-attachments/assets/a97a451f-c9b4-468d-b036-15b65fc13e79

Tools

Discovery

Tool

Description

get_context_tree

Structural AST tree of a project with file headers and symbol ranges (line numbers for functions/classes/methods). Dynamic pruning shrinks output automatically.

get_file_skeleton

Function signatures, class methods, and type definitions with line ranges, without reading full bodies. Shows the API surface.

semantic_code_search

Search by meaning, not exact text. Uses embeddings over file headers/symbols and returns matched symbol definition lines.

semantic_identifier_search

Identifier-level semantic retrieval for functions/classes/variables with ranked call sites and line numbers.

semantic_navigate

Browse codebase by meaning using spectral clustering. Groups semantically related files into labeled clusters.

Analysis

Tool

Description

get_blast_radius

Trace every file and line where a symbol is imported or used. Prevents orphaned references.

run_static_analysis

Run native linters and compilers to find unused variables, dead code, and type errors. Supports TypeScript, Python, Rust, Go.

Code Ops

Tool

Description

propose_commit

The only way to write code. Validates against strict rules before saving. Creates a shadow restore point before writing.

get_feature_hub

Obsidian-style feature hub navigator. Hubs are .md files with [[wikilinks]] that map features to code files.

Version Control

Tool

Description

list_restore_points

List all shadow restore points created by propose_commit. Each captures file state before AI changes.

undo_change

Restore files to their state before a specific AI change. Uses shadow restore points. Does not affect git.

Memory & RAG

Tool

Description

upsert_memory_node

Create or update a memory node (concept, file, symbol, note) with auto-generated embeddings.

create_relation

Create typed edges between nodes (relates_to, depends_on, implements, references, similar_to, contains).

search_memory_graph

Semantic search with graph traversal — finds direct matches then walks 1st/2nd-degree neighbors.

prune_stale_links

Remove decayed edges (e^(-λt) below threshold) and orphan nodes with low access counts.

add_interlinked_context

Bulk-add nodes with auto-similarity linking (cosine ≥ 0.72 creates edges automatically).

retrieve_with_traversal

Start from a node and walk outward — returns all reachable neighbors scored by decay and depth.

Complementary server: pmll-memory-mcp (npx pmll-memory-mcp) is a separate MCP server by @drQedwards that adapts Context+'s long-term memory graph and adds short-term KV context memory, Q-promise deduplication, and a solution engine on top. See drQedwards/PPM for details.

Related MCP server: SRC (Structured Repo Context)

Setup

Quick Start (npx / bunx)

No installation needed. Add Context+ to your IDE MCP config.

For Claude Code, Cursor, and Windsurf, use mcpServers:

{
  "mcpServers": {
    "contextplus": {
      "command": "bunx",
      "args": ["contextplus"],
      "env": {
        "OLLAMA_EMBED_MODEL": "nomic-embed-text",
        "OLLAMA_CHAT_MODEL": "gemma2:27b",
        "OLLAMA_API_KEY": "YOUR_OLLAMA_API_KEY"
      }
    }
  }
}

For VS Code (.vscode/mcp.json), use servers and inputs:

{
  "servers": {
    "contextplus": {
      "type": "stdio",
      "command": "bunx",
      "args": ["contextplus"],
      "env": {
        "OLLAMA_EMBED_MODEL": "nomic-embed-text",
        "OLLAMA_CHAT_MODEL": "gemma2:27b",
        "OLLAMA_API_KEY": "YOUR_OLLAMA_API_KEY"
      }
    }
  },
  "inputs": []
}

If you prefer npx, use:

  • "command": "npx"

  • "args": ["-y", "contextplus"]

Or generate the MCP config file directly in your current directory:

npx -y contextplus init claude
bunx contextplus init cursor
npx -y contextplus init opencode

Supported coding agent names: claude, cursor, vscode, windsurf, opencode.

Config file locations:

IDE

Config File

Claude Code

.mcp.json

Cursor

.cursor/mcp.json

VS Code

.vscode/mcp.json

Windsurf

.windsurf/mcp.json

OpenCode

opencode.json

CLI Subcommands

  • init [target] - Generate MCP configuration (targets: claude, cursor, vscode, windsurf, opencode).

  • skeleton [path] or tree [path] - (New) View the structural tree of a project with file headers and symbol definitions directly in your terminal.

  • [path] - Start the MCP server (stdio) for the specified path (defaults to current directory).

From Source

npm install
npm run build

Embedding Providers

Context+ supports two embedding backends controlled by CONTEXTPLUS_EMBED_PROVIDER:

Provider

Value

Requires

Best For

Ollama (default)

ollama

Local Ollama server

Free, offline, private

OpenAI-compatible

openai

API key

Gemini (free tier), OpenAI, Groq, vLLM

Ollama (Default)

No extra configuration needed. Just run Ollama with an embedding model:

ollama pull nomic-embed-text
ollama serve

Google Gemini (Free Tier)

Full Claude Code .mcp.json example:

{
  "mcpServers": {
    "contextplus": {
      "command": "npx",
      "args": ["-y", "contextplus"],
      "env": {
        "CONTEXTPLUS_EMBED_PROVIDER": "openai",
        "CONTEXTPLUS_OPENAI_API_KEY": "YOUR_GEMINI_API_KEY",
        "CONTEXTPLUS_OPENAI_BASE_URL": "https://generativelanguage.googleapis.com/v1beta/openai",
        "CONTEXTPLUS_OPENAI_EMBED_MODEL": "text-embedding-004"
      }
    }
  }
}

Get a free API key at Google AI Studio.

OpenAI

{
  "mcpServers": {
    "contextplus": {
      "command": "npx",
      "args": ["-y", "contextplus"],
      "env": {
        "CONTEXTPLUS_EMBED_PROVIDER": "openai",
        "OPENAI_API_KEY": "sk-...",
        "OPENAI_EMBED_MODEL": "text-embedding-3-small"
      }
    }
  }
}

Other OpenAI-compatible APIs (Groq, vLLM, LiteLLM)

Any endpoint implementing the OpenAI Embeddings API works:

{
  "mcpServers": {
    "contextplus": {
      "command": "npx",
      "args": ["-y", "contextplus"],
      "env": {
        "CONTEXTPLUS_EMBED_PROVIDER": "openai",
        "CONTEXTPLUS_OPENAI_API_KEY": "YOUR_KEY",
        "CONTEXTPLUS_OPENAI_BASE_URL": "https://your-proxy.example.com/v1",
        "CONTEXTPLUS_OPENAI_EMBED_MODEL": "your-model-name"
      }
    }
  }
}

Note: The semantic_navigate tool also uses a chat model for cluster labeling. When using the openai provider, set CONTEXTPLUS_OPENAI_CHAT_MODEL (default: gpt-4o-mini).

For VS Code, Cursor, or OpenCode, use the same env block inside your IDE's MCP config format (see Config file locations table above).

Architecture

Three layers built with TypeScript over stdio using the Model Context Protocol SDK:

Core (src/core/) - Multi-language AST parsing (tree-sitter, 43 extensions), gitignore-aware traversal, Ollama vector embeddings with disk cache, wikilink hub graph, in-memory property graph with decay scoring.

Tools (src/tools/) - 17 MCP tools exposing structural, semantic, operational, and memory graph capabilities.

Git (src/git/) - Shadow restore point system for undo without touching git history.

Runtime Cache (.mcp_data/) - created on server startup; stores reusable file, identifier, and call-site embeddings to avoid repeated GPU/CPU embedding work. A realtime tracker refreshes changed files/functions incrementally.

Config

Variable

Type

Default

Description

CONTEXTPLUS_EMBED_PROVIDER

string

ollama

Embedding backend: ollama or openai

OLLAMA_EMBED_MODEL

string

nomic-embed-text

Ollama embedding model

OLLAMA_API_KEY

string

-

Ollama Cloud API key

OLLAMA_CHAT_MODEL

string

llama3.2

Ollama chat model for cluster labeling

CONTEXTPLUS_OPENAI_API_KEY

string

-

API key for OpenAI-compatible provider (alias: OPENAI_API_KEY)

CONTEXTPLUS_OPENAI_BASE_URL

string

https://api.openai.com/v1

OpenAI-compatible endpoint URL (alias: OPENAI_BASE_URL)

CONTEXTPLUS_OPENAI_EMBED_MODEL

string

text-embedding-3-small

OpenAI-compatible embedding model (alias: OPENAI_EMBED_MODEL)

CONTEXTPLUS_OPENAI_CHAT_MODEL

string

gpt-4o-mini

OpenAI-compatible chat model for labeling (alias: OPENAI_CHAT_MODEL)

CONTEXTPLUS_EMBED_BATCH_SIZE

string (parsed as number)

8

Embedding batch size per GPU call, clamped to 5-10

CONTEXTPLUS_EMBED_CHUNK_CHARS

string (parsed as number)

2000

Per-chunk chars before merge, clamped to 256-8000

CONTEXTPLUS_MAX_EMBED_FILE_SIZE

string (parsed as number)

51200

Skip non-code text files larger than this many bytes

CONTEXTPLUS_EMBED_NUM_GPU

string (parsed as number)

-

Optional Ollama embed runtime num_gpu override

CONTEXTPLUS_EMBED_MAIN_GPU

string (parsed as number)

-

Optional Ollama embed runtime main_gpu override

CONTEXTPLUS_EMBED_NUM_THREAD

string (parsed as number)

-

Optional Ollama embed runtime num_thread override

CONTEXTPLUS_EMBED_NUM_BATCH

string (parsed as number)

-

Optional Ollama embed runtime num_batch override

CONTEXTPLUS_EMBED_NUM_CTX

string (parsed as number)

-

Optional Ollama embed runtime num_ctx override

CONTEXTPLUS_EMBED_LOW_VRAM

string (parsed as boolean)

-

Optional Ollama embed runtime low_vram override

CONTEXTPLUS_EMBED_TRACKER

string (parsed as boolean)

true

Enable realtime embedding refresh on file changes

CONTEXTPLUS_EMBED_TRACKER_MAX_FILES

string (parsed as number)

8

Max changed files processed per tracker tick, clamped to 5-10

CONTEXTPLUS_EMBED_TRACKER_DEBOUNCE_MS

string (parsed as number)

700

Debounce window before tracker refresh

Test

npm test
npm run test:demo
npm run test:all

Available Tools

17 tools
add_interlinked_contextA

Bulk-add multiple memory nodes with automatic similarity linking. Computes embeddings for all items, then creates similarity edges between any pair (new-to-new and new-to-existing) with cosine similarity ≥ 0.72. Ideal for importing related concepts, files, or notes at once.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesArray of nodes to add. Each needs type, label, and content.
auto_linkNoWhether to auto-create similarity edges. Default: true.

TDQS

A4.2/5.0
Behavior4/5

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

Discloses significant implementation detail absent from annotations: specifically cites the cosine similarity threshold (≥0.72), reveals embedding computation occurs, and clarifies edge creation scope (new-to-new AND new-to-existing). Missing only operational details like atomicity guarantees or failure modes.

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 dense sentences with zero redundancy. Front-loaded with the core action (bulk-add), followed by technical mechanism (embeddings/similarity), then usage context. Every clause provides distinct value.

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?

Comprehensively explains the mutation behavior (node creation + edge linking) and algorithmic specifics (0.72 threshold). Lacks only return value documentation, which is relevant given no output schema exists, but the behavioral description is complete enough for invocation decisions.

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 100%, providing complete documentation for both 'items' and 'auto_link' parameters. The description references these concepts ('all items', 'automatic similarity linking') but does not augment the schema with additional semantic guidance (e.g., content format recommendations), warranting baseline 3.

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?

Excellent specificity: 'Bulk-add multiple memory nodes with automatic similarity linking' clearly defines the verb (bulk-add), resource (memory nodes), and distinguishing mechanism (automatic similarity linking). Differentiates from sibling 'upsert_memory_node' (single node) and 'create_relation' (manual edges) through the bulk/automatic scope.

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?

Provides clear contextual signal with 'Ideal for importing related concepts, files, or notes at once,' indicating bulk ingestion use cases. However, lacks explicit contrast with single-node alternative (upsert_memory_node) or when to disable auto_link.

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

create_relationA

Create a typed edge between two memory nodes. Supports relation types: relates_to, depends_on, implements, references, similar_to, contains. Edges have weights (0-1) that decay over time via e^(-λt). Duplicate edges update weight instead of creating new ones.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_idYesID of the source memory node.
target_idYesID of the target memory node.
relationYesRelationship type between nodes.
weightNoEdge weight 0-1. Higher = stronger relationship. Default: 1.0.
metadataNoOptional key-value metadata for the edge.

TDQS

A4.4/5.0
Behavior5/5

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

Superior disclosure despite no annotations. Uniquely documents temporal decay physics (e^(-λt)) and idempotent upsert behavior on duplicates—critical behavioral traits for a write operation that agents need to understand for correct invocation and expectation-setting.

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?

Four precisely ordered sentences spanning purpose, valid types, physics, and uniqueness constraints. Zero waste—every clause earns its place. Front-loaded with the core action, followed by necessary constraints and behaviors.

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?

Comprehensive for a graph mutation tool without output schema. Covers unique domain logic (decay, duplicates) that schema cannot express. Minor gap: does not explicitly state prerequisite that source/target nodes must exist (implied but not guaranteed).

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?

With 100% schema coverage, baseline is 3. Description adds value by contextualizing the weight parameter (decay mechanics, 0-1 range emphasis) and implying directional semantics via 'typed edge'. Lists enum values explicitly, slightly redundant with schema but reinforces valid options.

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?

Excellent specificity with clear verb 'Create' and resource 'typed edge between two memory nodes'. Distinctly differentiates from sibling node-creation tools (upsert_memory_node) and retrieval tools by explicitly mentioning edges/relationships.

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?

Provides implicit guidance through enumeration of relation types and duplicate-handling behavior, but lacks explicit 'when to use this vs alternatives' guidance. Does not clarify when to prefer this over add_interlinked_context or prerequisite that nodes must exist first.

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

get_blast_radiusA

Before deleting or modifying code, check the BLAST RADIUS. Traces every file and line where a specific symbol (function, class, variable) is imported or used. Prevents orphaned code. Also warns if usage count is low (candidate for inlining).

ParametersJSON Schema
NameRequiredDescriptionDefault
symbol_nameYesThe function, class, or variable name to trace across the codebase.
file_contextNoThe file where the symbol is defined. Excludes the definition line from results.

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 behavioral burden. It discloses key traits: traces imports AND uses, excludes definition line (via file_context behavior), generates warnings for low usage (inlining candidates), and prevents orphaned code. Missing explicit read-only declaration, though implied by 'get' prefix and 'traces' verb.

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?

Four tightly constructed sentences with zero waste. Front-loaded with usage context (sentence 1), followed by mechanism (sentence 2), and value-add behaviors (sentences 3-4). Every clause earns its place.

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?

No output schema exists, but the description adequately describes conceptual output ('every file and line', usage count warnings). Good coverage for a read-only analysis tool, though explicit mention of return format (e.g., list of locations) would strengthen it.

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 100% and descriptions are thorough. The tool description reinforces the semantic types (function, class, variable) but doesn't add syntax details, format constraints, or examples beyond what the schema already provides. Baseline 3 appropriate for high-coverage schemas.

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?

Specific verb ('traces') + resource ('symbol') + scope ('every file and line'). The parenthetical '(function, class, variable)' clarifies the polymorphic input, and the front-loaded context 'Before deleting or modifying code' clearly distinguishes this impact-analysis tool from general search siblings like semantic_code_search.

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?

Explicitly states when to use ('Before deleting or modifying code') and implies workflow integration (safety check). While it doesn't name specific alternatives, the context makes it clear this is for pre-modification validation versus general exploration.

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

get_context_treeA

Get the structural tree of the project with file headers, function names, classes, enums, and line ranges. Automatically reads 2-line headers for file purpose. Dynamic token-aware pruning: Level 2 (deep symbols) -> Level 1 (headers only) -> Level 0 (file names only) based on project size.

ParametersJSON Schema
NameRequiredDescriptionDefault
target_pathNoSpecific directory or file to analyze (relative to project root). Defaults to root.
depth_limitNoHow many folder levels deep to scan. Use 1-2 for large projects.
include_symbolsNoInclude function/class/enum names in the tree. Defaults to true.
max_tokensNoMaximum tokens for output. Auto-prunes if exceeded. Default: 20000.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, description carries full behavioral disclosure burden effectively. Documents non-obvious behaviors: automatic 2-line header reading for file purpose and the three-level degradation strategy (Level 2→1→0) based on token limits. Could improve by stating read-only nature or output format specifics.

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 dense sentences with zero waste. First sentence establishes capability and scope; second sentence elaborates on intelligent behaviors (header extraction, dynamic pruning). Every clause provides distinct semantic value (content types, automation, fallback strategy).

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?

With 4 optional parameters (100% schema coverage) and no output schema, description adequately compensates by detailing what the tree structure contains (headers, functions, classes, enums, ranges) and how output scales. Minor gap: doesn't specify output format (JSON vs text tree) or structure despite complexity of the hierarchical data.

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 100% (baseline 3). Description adds significant value by explaining how parameters interact: the 'Level 2 (deep symbols)' maps to include_symbols=true, while the pruning explanation clarifies max_tokens behavior. Elaborates on what 'file headers' means (2-line extraction) beyond schema literalism.

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?

Description uses specific verb 'Get' with specific resource 'structural tree of the project' and enumerates exact contents (file headers, function names, classes, enums, line ranges). Clearly distinguishes from siblings like semantic_code_search (semantic vs structural) and get_file_skeleton (single file vs project tree).

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?

Provides implied usage guidance through the 'Dynamic token-aware pruning' explanation (indicating automatic scaling for large projects), but lacks explicit when-to-use statements versus alternatives like semantic_code_search or get_file_skeleton. No explicit exclusions or prerequisites stated.

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

get_feature_hubA

Obsidian-style feature hub navigator. Hub files are .md files containing [[path/to/file]] wikilinks that act as a Map of Content. Modes: (1) No args = list all hubs, (2) hub_path or feature_name = show hub with bundled skeletons of all linked files, (3) show_orphans = find files not linked to any hub. Prevents orphaned code and enables graph-based codebase navigation.

ParametersJSON Schema
NameRequiredDescriptionDefault
hub_pathNoPath to a specific hub .md file (relative to root).
feature_nameNoFeature name to search for. Finds matching hub file automatically.
show_orphansNoIf true, lists all source files not linked to any feature hub.

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description must carry the full burden of behavioral disclosure. It adds valuable context that the tool returns 'bundled skeletons of all linked files' and identifies orphaned files, but omits critical safety information (read-only vs. destructive), error handling for invalid hub paths, or performance characteristics for large codebases.

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 efficiently structured and front-loaded: it opens with the navigation concept, defines the resource (hub files), enumerates the three modes with clear numbering, and closes with value propositions. Every sentence serves a distinct purpose without 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 three well-documented parameters (100% schema coverage) but no output schema, the description adequately explains the tool's scope and mentions 'bundled skeletons' to hint at return format. It covers the three operational modes comprehensively, though it could explicitly describe the return structure or read-only nature given the lack of output schema and annotations.

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?

With 100% schema description coverage, the baseline is 3. The description adds significant value by explaining how the three parameters create distinct modes of operation (listing vs. specific retrieval vs. orphan detection), and clarifies that hub_path and feature_name are alternative ways to target a specific hub.

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 defines the tool as an 'Obsidian-style feature hub navigator' and specifies it operates on '.md files containing [[path/to/file]] wikilinks.' It distinguishes from siblings like get_context_tree or semantic_navigate by emphasizing the specific 'Map of Content' pattern and graph-based navigation approach.

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 explicitly outlines three distinct usage modes: (1) no arguments to list all hubs, (2) hub_path or feature_name to show a specific hub with bundled skeletons, and (3) show_orphans to find unlinked files. While it maps parameters to behaviors clearly, it lacks explicit guidance on when to use this versus alternatives like get_context_tree or retrieve_with_traversal.

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

get_file_skeletonA

Get detailed function signatures, class methods, and type definitions of a specific file WITHOUT reading the full body. Shows the API surface: function names, parameters, return types, and line ranges. Perfect for understanding how to use code without loading it all.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesPath to the file to inspect (relative to project root).

TDQS

A4.2/5.0
Behavior4/5

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

Strong disclosure of scope limitations given no annotations: explicitly clarifies this extracts only API surface (signatures, line ranges) versus full content. Could mention if results are cached or any performance characteristics, but clearly defines the lightweight/skeleton nature of the return data.

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?

Three sentences with zero waste. Front-loaded with the core value proposition (signatures without body), followed by specific return contents, and closing with the use case. No repetition of tool name or tautology.

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?

Compensates well for missing output schema by enumerating specific return elements (function names, parameters, return types, line ranges). Given single-parameter simplicity and no annotations, provides sufficient context for an agent to understand the tool's contract, though response format structure (JSON vs text) isn't specified.

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 100% with 'file_path' fully documented. The description references 'specific file' which aligns with the parameter semantics but doesn't add syntax details, format constraints, or examples beyond the schema's 'relative to project root' specification.

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?

Excellent specificity with 'Get detailed function signatures, class methods, and type definitions' defining the exact resource extracted. The 'WITHOUT reading the full body' clause effectively distinguishes this from full-content retrieval tools in the sibling set (like retrieve_with_traversal).

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?

Provides clear contextual guidance: 'Perfect for understanding how to use code without loading it all' defines the efficiency use case. The 'WITHOUT reading the full body' phrase implicitly indicates when not to use it (when you need implementation details), though it doesn't explicitly name the alternative tool for that case.

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

list_restore_pointsA

List all shadow restore points created by propose_commit. Each point captures the file state before the AI made changes. Use this to find a restore point ID for undoing a bad change.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, description carries full burden. It successfully explains domain semantics ('captures file state before AI made changes', 'shadow restore points') and provenance. However, lacks operational details like retention policies, pagination behavior, or performance characteristics expected for a zero-annotation 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?

Three sentences with zero waste. First states action, second explains entity semantics, third states intent/use-case. Front-loaded structure puts the operation first. Every sentence earns its place in conveying tool purpose.

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 zero-parameter list tool without output schema, description adequately covers the conceptual model (what restore points are, their origin, their purpose). Minor gap: could explicitly mention that it returns a collection of IDs/objects, though 'find a restore point ID' implies this.

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?

Zero parameters present (baseline 4 per rubric). Description compensates by explaining implicit filtering scope ('all shadow restore points created by propose_commit'), clarifying that the listing is not global but filtered to AI-generated shadow points.

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?

Description uses specific verb 'List' with clear resource 'shadow restore points'. It explicitly links to sibling tool 'propose_commit' (creator) and implies connection to 'undo_change' workflow ('undoing a bad change'), clearly distinguishing this listing capability from other traversal/search siblings.

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?

Explicitly states when to use: 'to find a restore point ID for undoing a bad change', providing clear workflow context (use after bad change, before undoing). However, lacks explicit 'when not to use' elements (e.g., if no commits exist) or named alternatives.

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

propose_commitA

The ONLY way to write code. Validates the code against strict rules before saving: 2-line header comments, no inline comments, max nesting depth, max file length. Creates a shadow restore point before writing. REJECTS code that violates formatting rules.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesWhere to save the file (relative to project root).
new_contentYesThe complete file content to save.

TDQS

A4.4/5.0
Behavior5/5

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

No annotations provided, so description carries full burden. Excellent disclosure: lists specific validation constraints (2-line headers, no inline comments, max nesting/length), discloses automatic side effect (creates shadow restore point), and specifies failure mode (rejects violations). Rich safety and 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?

Four dense sentences with zero waste. Opens with strong positional claim ('The ONLY way'), efficiently lists validation constraints, discloses restore point creation, and states rejection policy. Every sentence earns its place.

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 2-parameter write tool with complex side effects (validation, restore points), description adequately covers the validation rules, backup behavior, and failure modes. No output schema exists, but the description provides sufficient behavioral coverage for agent to understand consequences of invocation.

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 has 100% description coverage, establishing baseline of 3. Description mentions validation rules that apply to new_content (no inline comments, etc.) adding some semantic context, but does not add usage syntax, format details, or specific mappings beyond what the schema already provides for file_path and new_content.

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?

Description explicitly states this is the code writing tool ('The ONLY way to write code') and distinguishes from siblings (mostly search/read tools like search_memory_graph, get_context_tree) by claiming exclusivity for write operations and mentioning validation/restore behaviors unique to this tool.

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 'ONLY way to write code' provides clear usage priority. Explicitly states rejection criteria ('REJECTS code that violates formatting rules'). Mentions restore point creation, implying relationship to undo_change sibling, though could explicitly reference that tool for reverting.

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

retrieve_with_traversalA

Start from a specific memory node and traverse the graph outward. Returns the starting node plus all reachable neighbors within the depth limit, scored by edge weight decay and depth penalty. Use after search_memory_graph to explore a specific node's neighborhood.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_node_idYesID of the memory node to start traversal from.
max_depthNoMaximum traversal depth from start node. Default: 2.
edge_filterNoOnly traverse edges of these types. Omit for all.

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, description carries full disclosure burden. It valuably explains the scoring algorithm ('edge weight decay and depth penalty') and return composition ('starting node plus all reachable neighbors'). However, it does not explicitly confirm read-only safety, state error handling for invalid node IDs, or mention 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?

Three well-structured sentences with zero waste: action definition, return value explanation with behavioral detail, and usage context. Information is front-loaded with the core operation, followed by mechanics, then workflow positioning.

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 3-parameter traversal tool with no output schema, the description adequately explains the return structure conceptually (nodes with scoring) and establishes sibling relationships. Minor gap in explicit safety/assertion documentation given lack of annotations.

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 100%, so baseline score applies. Description reinforces parameter semantics by referencing 'depth limit' (max_depth) and 'edge weight' (edge_filter context), but does not add syntax details, format examples, or constraints beyond the schema definitions.

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?

Excellent specificity with 'traverse the graph outward' and clear resource identification (memory node). Explicitly distinguishes from sibling search_memory_graph by positioning it as the follow-up step ('Use after search_memory_graph'), establishing clear workflow boundaries.

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?

Provides explicit temporal guidance ('Use after search_memory_graph') clarifying when to invoke this tool in the workflow. However, lacks explicit 'when not to use' guidance or comparison to similar traversal siblings like get_context_tree or get_blast_radius.

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

run_static_analysisA

Run the project's native linter/compiler to find unused variables, dead code, type errors, and syntax issues. Delegates detection to deterministic tools instead of LLM guessing. Supports TypeScript, Python, Rust, Go.

ParametersJSON Schema
NameRequiredDescriptionDefault
target_pathNoSpecific file or folder to lint (relative to root). Omit for full project.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, description carries full disclosure burden. It clarifies the delegation pattern (deterministic tools vs. LLM) and identifies specific defect types detected. However, it omits critical execution details: whether the tool is read-only or potentially destructive (some linters auto-fix), output format expectations, and dependency requirements.

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?

Three tightly crafted sentences: first establishes core functionality, second differentiates approach (deterministic vs. LLM), third specifies language support. Every sentence earns its place; no redundancy or boilerplate. Front-loaded with action verb.

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?

Adequate for tool selection given the simple single-parameter schema. Covers primary use case and scope. However, for a tool executing external linters/compilers, the absence of output schema makes the lack of return value description or execution safety notes (read-only vs. mutating) a modest gap.

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 has 100% coverage with clear target_path description. The tool description adds valuable semantic context by listing supported languages, which helps constrain valid target_path values to appropriate file types. While it doesn't detail syntax further, the combination of complete schema and language context provides solid parameter guidance.

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?

Excellent specificity with 'Run the project's native linter/compiler' (verb + resource) and enumerates exact findings (unused variables, dead code, type errors, syntax issues). Clearly distinguishes from semantic search siblings by focusing on deterministic static analysis.

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?

Provides implied guidance via 'Delegates detection to deterministic tools instead of LLM guessing,' suggesting preference over heuristic analysis. Lists supported languages (TypeScript, Python, Rust, Go) indicating applicability. However, lacks explicit when-to-use vs. siblings like semantic_code_search or prerequisites (e.g., needing config files).

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

search_memory_graphA

Search the memory graph by meaning with graph traversal. First finds direct matches via embedding similarity, then traverses 1st/2nd-degree neighbors to discover linked context. Returns both direct hits and graph-connected neighbors with relevance scores.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesNatural language query to search the memory graph.
max_depthNoHow many hops to traverse from direct matches. Default: 1.
top_kNoNumber of direct matches to return. Default: 5.
edge_filterNoOnly traverse edges of these types. Omit for all types.

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It effectively discloses the two-phase algorithmic behavior (embedding search followed by 1st/2nd-degree traversal) and return structure (direct hits + neighbors with scores), though it omits explicit safety/side-effect declarations (implied read-only by 'Search').

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?

Three sentences with zero waste: sentence 1 states purpose, sentence 2 explains mechanism, sentence 3 specifies returns. Front-loaded and appropriately sized for the complexity.

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

Completeness5/5

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

Given no output schema, the description compensates by specifying return composition ('direct hits and graph-connected neighbors with relevance scores'). With 100% schema parameter coverage and no annotations to repeat, the description provides sufficient context for tool selection.

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 100%, establishing baseline 3. Description adds conceptual context beyond the schema: 'embedding similarity' explains the query mechanism, and '1st/2nd-degree neighbors' explains max_depth semantics, elevating it above baseline.

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?

Specific verb ('Search') with resource ('memory graph') and distinct methodology ('by meaning with graph traversal'). The two-phase mechanism description (embedding similarity + neighbor traversal) clearly distinguishes this from sibling semantic_search tools and pure traversal tools like retrieve_with_traversal.

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?

Describes the mechanism (embedding similarity then graph traversal) which implies when to use it, but lacks explicit when-to-use/when-not guidance or named alternatives among siblings like semantic_code_search or semantic_navigate.

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

semantic_navigateA

Browse the codebase by MEANING, not directory structure. Uses spectral clustering on Ollama embeddings to group semantically related files into labeled clusters. Inspired by Gabriella Gonzalez's semantic navigator. Requires Ollama running with an embedding model and a chat model for labeling.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_depthNoMaximum nesting depth of clusters. Default: 3.
max_clustersNoMaximum sub-clusters per level. Default: 20.

TDQS

A3.9/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It successfully discloses the algorithm (spectral clustering on Ollama embeddings), output structure (labeled clusters), and critical external dependency (requires Ollama with specific models). Lacks explicit read-only safety declaration or error handling details, but covers the essential behavioral traits.

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?

Four well-structured sentences: value proposition, technical mechanism, attribution, and requirements. Each earns its place, though the Gabriella Gonzalez reference adds conceptual rather than operational value. No redundancy or wasted words.

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?

Strong coverage for a complex ML-based tool: explains the 'why' (meaning over structure), 'how' (spectral clustering), and prerequisites (Ollama). Absence of output schema is partially mitigated by describing 'labeled clusters', though specific return format details would strengthen it further.

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 100%, so parameters are fully documented in the schema. The description adds no parameter-specific guidance, but with complete schema documentation, baseline 3 is appropriate—the schema carries the weight.

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?

Excellent specificity: 'Browse the codebase by MEANING' establishes the verb and resource, while 'not directory structure' explicitly contrasts with structural navigation. The spectral clustering mechanism further clarifies the semantic approach, clearly distinguishing it from keyword search or file-tree traversal.

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?

Provides implicit context ('by MEANING, not directory structure') suggesting when to use it, but fails to explicitly contrast with semantic siblings like 'semantic_code_search' or 'semantic_identifier_search'. No explicit 'when not to use' guidance or prerequisites beyond Ollama runtime.

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

undo_changeA

Restore files to their state before a specific AI change. Uses the shadow restore point system. Does NOT affect git history. Call list_restore_points first to find the point ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
point_idYesThe restore point ID (format: rp-timestamp-hash). Get from list_restore_points.

TDQS

A4.6/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. Discloses implementation ('shadow restore point system') and critical safety boundary ('Does NOT affect git history'). Could strengthen by clarifying if current uncommitted changes are preserved or overwritten, but mechanism disclosure is solid.

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?

Four sentences with zero waste: purpose, mechanism, safety constraint, prerequisite. Front-loaded with core action, structured logically. Every sentence earns its place.

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?

Comprehensive for a single-parameter tool. Covers purpose, mechanism, safety guardrails, and prerequisites. No output schema exists; description appropriately doesn't speculate on return values.

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 100%, establishing baseline 3. Description adds crucial workflow context for point_id ('Get from list_restore_points') that explains the parameter's semantic relationship to sibling tools and data flow.

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?

Exceptionally clear: 'Restore files to their state before a specific AI change' provides specific verb (restore), resource (files), and scope constraint (AI change, not manual changes). Distinguishes mechanism via 'shadow restore point system' and explicitly contrasts with git-based recovery.

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

Usage Guidelines5/5

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

Explicit workflow guidance: 'Call list_restore_points first to find the point ID' provides clear prerequisite. 'Does NOT affect git history' establishes sibling differentiation from version control tools like propose_commit.

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

upsert_memory_nodeA

Create or update a memory node in the linking graph. Nodes represent concepts, files, symbols, or notes with auto-generated embeddings. If a node with the same label and type exists, it updates content and increments access count. Returns the node ID for use in create_relation.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesNode type: concept (abstract ideas), file (source files), symbol (functions/classes), note (free-form).
labelYesShort identifier for the node. Used for deduplication with type.
contentYesDetailed content for the node. Used for embedding generation.
metadataNoOptional key-value metadata pairs.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries full behavioral disclosure burden. It effectively explains the upsert logic (create vs update), deduplication key (label+type), auto-generated embeddings, and access count incrementing. Minor gap: lacks explicit mention of whether updates are destructive or if old versions persist.

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?

Four tightly constructed sentences: (1) operation+resource, (2) node semantics+embeddings, (3) deduplication/update logic, (4) return value+workflow. Every sentence adds distinct value (purpose, behavior, mechanics, integration). No redundancy with schema definitions.

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 upsert complexity and lack of output schema, the description comprehensively covers the operational contract: input requirements, uniqueness semantics, mutation behavior, and output intent. Only minor gaps remain around error conditions and content size constraints.

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?

With 100% schema coverage (baseline 3), the description adds critical semantic context: it explains that label+type combination drives deduplication, content drives embeddings, and elaborates on the state change behavior (incrementing access count) that the schema doesn't convey.

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 specific verbs 'Create or update' with clear resource 'memory node in the linking graph'. It distinguishes from siblings by defining nodes as representing specific concepts (files, symbols, notes) and explicitly mentioning the return value is 'for use in create_relation', delineating it from retrieval tools like search_memory_graph.

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 provides clear workflow guidance by stating the return value (node ID) is intended 'for use in create_relation', establishing prerequisite relationships. However, it lacks explicit 'when not to use' guidance contrasting with retrieval siblings like retrieve_with_traversal or search_memory_graph.

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. Dates show when Glama detected each change.

  1. 17 tool updatesv1.0.8
    • First observedadd_interlinked_context
    • First observedcreate_relation
    • First observedget_blast_radius
    • First observedget_context_tree
    • First observedget_feature_hub
    • First observedget_file_skeleton
    • First observedlist_restore_points
    • First observedpropose_commit
    • First observedprune_stale_links
    • First observedretrieve_with_traversal
    • First observedrun_static_analysis
    • First observedsearch_memory_graph
    • First observedsemantic_code_search
    • First observedsemantic_identifier_search
    • First observedsemantic_navigate
    • First observedundo_change
    • First observedupsert_memory_node

TDQS

A4/5.0
Disambiguation3/5

Most tools have distinct purposes, but there is some overlap that could cause confusion. For example, search_memory_graph, semantic_code_search, and semantic_identifier_search all involve semantic search with embeddings, differing mainly in scope (graph vs. codebase vs. identifiers), which might lead to misselection. Similarly, get_context_tree and get_file_skeleton both provide structural insights into code, with one focusing on project-wide hierarchy and the other on file-level details, potentially blurring boundaries.

Naming Consistency4/5

Tool names follow a consistent verb_noun pattern throughout, such as add_interlinked_context, create_relation, and get_blast_radius, which aids predictability. However, there are minor deviations like semantic_navigate (adjective_verb) and upsert_memory_node (verb_noun_noun), slightly breaking the pattern but remaining readable and understandable.

Tool Count4/5

With 17 tools, the count is slightly high but reasonable for the server's purpose of context management and code analysis, as it covers diverse areas like memory graphs, code search, and project navigation. It might feel heavy, but each tool appears to serve a specific function, avoiding redundancy, though some trimming could improve focus.

Completeness4/5

The tool set offers comprehensive coverage for context management and codebase interaction, including CRUD-like operations for memory nodes (e.g., upsert_memory_node, create_relation, prune_stale_links), search capabilities, and project analysis tools. Minor gaps exist, such as no direct tool for deleting memory nodes or managing graph nodes beyond pruning, but agents can likely work around these with existing tools.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A graph-powered code intelligence engine that indexes codebases into a structural knowledge graph to provide AI agents with deep context on function calls, types, and execution flows. It offers local, zero-dependency tools for hybrid search, impact analysis, and dead code detection across Python, JavaScript, and TypeScript projects.
    808
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    An MCP server and CLI tool that transforms codebases into AI-ready context through semantic search, call graph analysis, and incremental indexing. It enables AI assistants to perform hybrid vector and keyword searches to understand complex repository structures and cross-file relationships.
    5
    28
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Code graph context engine that parses codebases with tree-sitter (170+ languages), builds structural dependency graphs, and provides 24 MCP tools for code intelligence. One prepare_context call gives your AI agent the right files for any task. Includes focus, blast radius, hotspots, dead code detection, and hybrid search.
    24
    1
    AGPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Context Bridge is a lightweight MCP server that builds a persistent semantic knowledge graph of your codebase, enabling AI assistants to query complex codebases with sub-millisecond latency without re-reading files every session.
    6
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/forloopcodes/contextplus'

If you have feedback or need assistance with the MCP directory API, please join our Discord server