Skip to main content
Glama
duysolo

codebaxing

by duysolo

Codebaxing

npm version License: MIT

English | Tiếng Việt

MCP server for semantic code search. Index your codebase once, then search using natural language.

How It Works

Your Code → Tree-sitter Parser → Symbols → Embedding Model → Vectors → ChromaDB
                                                                           ↓
"find auth logic" → Embedding → Query Vector → Similarity Search → Results

Traditional search matches exact text. Codebaxing understands meaning:

Query

Finds (even without exact match)

"authentication"

login(), validateCredentials(), authMiddleware()

"database connection"

connectDB(), prismaClient, repository.query()

Related MCP server: code-context-mcp

Quick Start

1. Start ChromaDB

docker run -d -p 8000:8000 --name chromadb chromadb/chroma

2. Index Your Codebase (CLI)

npx codebaxing@latest index /path/to/your/project

This creates a .codebaxing/ folder with the index. Only needs to be done once per project.

Performance note: Local embedding is slow (~4 min for ~4,000 files). For faster indexing, use Gemini embedding (free) — see Cloud Embedding below.

3. Install MCP Server for AI Editors

npx codebaxing install              # Claude Desktop
npx codebaxing install --cursor     # Cursor
npx codebaxing install --windsurf   # Windsurf
npx codebaxing install --all        # All editors

Restart your editor. Now you can ask: "Find the authentication logic"

CLI Commands

Command

Description

npx codebaxing@latest index <path>

Index a codebase (required first)

npx codebaxing search <query>

Search indexed code

npx codebaxing stats [path]

Show index statistics

npx codebaxing clean [path]

Remove index (reset)

npx codebaxing install [--editor]

Install MCP server

npx codebaxing uninstall [--editor]

Uninstall MCP server

Tip: Use @latest for index to ensure you have the newest version.

Search Options

npx codebaxing search "auth middleware" --path ./src --limit 10
  • --path, -p - Codebase path (default: current directory)

  • --limit, -n - Number of results (default: 5)

MCP Tools (for AI Agents)

After installing, AI agents can use these tools:

Tool

Description

search

Semantic code search

stats

Index statistics

languages

Supported file extensions

remember

Store project memory

recall

Retrieve memories

forget

Delete memories

Note: The index tool is disabled for AI agents. Use CLI: npx codebaxing@latest index <path>

Configuration

Cloud Embedding (Fastest)

Local embedding runs on CPU and can be slow for large codebases (~4 min for ~4,000 files). Cloud embedding is ~25x faster and recommended for any project with 1,000+ files.

# Gemini (FREE - recommended, 1500 RPM free tier)
CODEBAXING_EMBEDDING_PROVIDER=gemini GEMINI_API_KEY=... npx codebaxing@latest index /path

# OpenAI (text-embedding-3-small, 384 dims)
CODEBAXING_EMBEDDING_PROVIDER=openai OPENAI_API_KEY=sk-... npx codebaxing@latest index /path

# Voyage (voyage-code-3, 1024 dims, code-optimized)
CODEBAXING_EMBEDDING_PROVIDER=voyage VOYAGE_API_KEY=va-... npx codebaxing@latest index /path

Provider

Model

Speed

Cost

Gemini

text-embedding-004 (768 dims)

~10,000 texts/sec

Free (1500 RPM)

OpenAI

text-embedding-3-small (384 dims)

~10,000 texts/sec

~$0.02 / 1M tokens

Voyage

voyage-code-3 (1024 dims)

~10,000 texts/sec

~$0.06 / 1M tokens

Local

all-MiniLM-L6-v2 (384 dims)

~200 texts/sec

Free (CPU)

Note: Switching between providers requires full re-index (npx codebaxing@latest index <path>) due to dimension differences.

Environment Variables

Variable

Description

Default

CHROMADB_URL

ChromaDB server URL

http://localhost:8000

CODEBAXING_EMBEDDING_PROVIDER

Embedding backend: local, gemini, openai, voyage

local

CODEBAXING_DEVICE

Compute device (local only): cpu, cuda

cpu

CODEBAXING_DTYPE

Model quantization (local only): fp32, fp16, q8, q4

q8

CODEBAXING_WORKERS

Worker threads for parallel embedding (local only, 0=off)

2

CODEBAXING_MAX_FILE_SIZE

Max file size in MB

1

CODEBAXING_MAX_CHUNKS

Max chunks to index

500000

CODEBAXING_FILES_PER_BATCH

Files per batch (lower = less RAM)

100

CODEBAXING_PARALLEL_BATCHES

Concurrent batches

3

CODEBAXING_METADATA_SAVE_INTERVAL

Save progress every N batches

10

CODEBAXING_MODEL_CACHE

Model cache directory (local only)

~/.cache/codebaxing/models

CODEBAXING_OPENAI_API_KEY

OpenAI API key (or use OPENAI_API_KEY)

-

CODEBAXING_VOYAGE_API_KEY

Voyage API key (or use VOYAGE_API_KEY)

-

CODEBAXING_GEMINI_API_KEY

Gemini API key (or use GEMINI_API_KEY)

-

CODEBAXING_EMBEDDING_MODEL

Override embedding model name

per-provider default

CODEBAXING_EMBEDDING_DIMENSIONS

Override embedding dimensions

per-provider default

CODEBAXING_EMBEDDING_BASE_URL

Custom API endpoint for cloud providers

provider default

Manual Editor Config

~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "codebaxing": {
      "command": "npx",
      "args": ["-y", "codebaxing"],
      "env": { "CHROMADB_URL": "http://localhost:8000" }
    }
  }
}

~/.cursor/mcp.json

{
  "mcpServers": {
    "codebaxing": {
      "command": "npx",
      "args": ["-y", "codebaxing"],
      "env": { "CHROMADB_URL": "http://localhost:8000" }
    }
  }
}

Windsurf: ~/.codeium/windsurf/mcp_config.json Zed: ~/.config/zed/settings.json (use context_servers key) VS Code + Continue: ~/.continue/config.json

Supported Languages

Python, JavaScript, TypeScript, Go, Rust, Java, C/C++, C#, Ruby, PHP, Kotlin, Swift, Scala, Lua, Dart, Elixir, Haskell, OCaml, Zig, Perl, Bash, HTML, CSS, Vue, JSON, YAML, TOML, Makefile

Requirements

  • Node.js >= 20.0.0

  • Docker (for ChromaDB)

  • ~500MB disk space (embedding model)

Technical Details

Component

Technology

Local Embedding

all-MiniLM-L6-v2 (384 dims, ONNX, q8 quantized)

Cloud Embedding

Gemini text-embedding-004 (free), OpenAI, or Voyage

Model Cache

~/.cache/codebaxing/models/ (local only, downloaded once)

Vector Database

ChromaDB

Code Parser

Tree-sitter (28 languages)

MCP SDK

@modelcontextprotocol/sdk

Local mode: The embedding model is downloaded from HuggingFace on first run and cached at ~/.cache/codebaxing/models/. Uses q8 quantization (~3x faster than fp32). No network access after initial download.

Cloud mode: Sends code chunks to OpenAI/Voyage API for embedding. ~25x faster than local CPU. Requires API key.

License

MIT

Available Tools

9 tools
cleanA
DestructiveIdempotent

Clean all indexed data for a codebase. Deletes ChromaDB collection and .codebaxing/ data. Preserves user config (ignore.json). Use this to fix corrupted indexes or start fresh.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute path to the codebase directory to clean

TDQS

A4.2/5.0
Behavior4/5

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

The description adds behavioral context beyond the annotations: it specifies exactly what is deleted (ChromaDB collection, .codebaxing/ data) and what is preserved (ignore.json). The annotations already declare destructiveHint=true and idempotentHint=true, and the description is consistent with those, adding useful detail about the scope of destruction.

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 three sentences, front-loaded with the core purpose, followed by specific details, then a use case. Every sentence adds value, and there is no unnecessary information. It is 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?

For a simple tool with one parameter and no output schema, the description covers the main aspects: what it does, what it deletes/preserves, and when to use it. It does not mention the return value, but for a destructive cleanup operation, a return value is less critical. Slight gap in not describing the response format, but overall sufficient.

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 input schema has 100% coverage for the single parameter 'path' with a clear description. The tool description does not add any additional parameter semantics beyond what the schema already provides. According to the guidelines, baseline 3 is appropriate when schema coverage is high.

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

Purpose5/5

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

The description clearly states the tool's purpose as cleaning all indexed data for a codebase, specifying what gets deleted (ChromaDB collection, .codebaxing/ data) and what is preserved (user config). This is a specific verb+resource combination that distinguishes it from sibling tools like 'index' (which creates indexes) and 'search' (which queries).

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 says when to use the tool: 'Use this to fix corrupted indexes or start fresh.' This provides clear context for appropriate usage. However, it does not explicitly state when not to use it or list alternatives, though the context strongly implies it is for cleanup scenarios.

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

forgetA
DestructiveIdempotent

DESTRUCTIVE: Remove memories matching specified criteria.

Delete by: memory_id, memory_type, tags, older_than (1d, 7d, 30d, 1y)

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoCodebase path for auto-loading
tagsNoDelete memories with these tags
memory_idNoSpecific memory ID to delete
older_thanNoDelete older than: 1d, 7d, 30d, 1y
memory_typeNoDelete all of this type

TDQS

A4.2/5.0
Behavior4/5

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

The description declares 'DESTRUCTIVE' and lists the deletion criteria, which aligns with the annotations (destructiveHint=true, readOnlyHint=false, idempotentHint=true). It adds value by explaining what gets deleted (memories matching criteria) and provides examples of the older_than format. The idempotentHint is slightly contradicted by the fact that repeated calls with different criteria could delete different sets, but the description's criteria listing partially mitigates this.

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: a clear purpose statement and a concise list of criteria. Every word is meaningful, and the critical warning 'DESTRUCTIVE' is front-loaded. No waste.

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 has 5 parameters, all documented in the schema, and no output schema, the description covers the essential delete-by criteria and the destructive nature. It could be improved by noting that all parameters are optional and might combine (e.g., AND logic), but the completeness is high for a deletion 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 100%, so the baseline is 3. The description adds value by listing the delete-by options and providing the 'older_than' format examples (1d, 7d, 30d, 1y), which the schema also describes. It does not add new meaning beyond the 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 verb 'remove' and the resource 'memories', and lists the specific criteria for deletion. The 'DESTRUCTIVE' prefix and the list of delete-by options distinguish it from sibling tools like 'recall' (retrieval) and 'search' (non-destructive filtering).

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 lists the criteria for deletion (memory_id, memory_type, tags, older_than), which guides when to use each parameter. It lacks explicit guidance on when not to use this tool (e.g., preferring 'clean' for cleanup), but the list of criteria and the destructive warning provide clear usage context.

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

indexA
Idempotent

Index a codebase for semantic search. REQUIRED FIRST STEP.

Modes:

  • auto (default): Smart detection. If index exists, updates incrementally.

  • full: Force complete re-index.

  • load-only: Just load existing index without any indexing.

Creates a .codebaxing/ folder in the codebase directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoIndexing modeauto
pathYesAbsolute path to the codebase directory to index
embedding_modelNoEmbedding modelall-MiniLM-L6-v2
file_extensionsNoFile extensions to include

TDQS

A4.2/5.0
Behavior4/5

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

Annotations provide idempotentHint=true, readOnlyHint=false, destructiveHint=false. The description adds behavioral context: it creates a .codebaxing/ folder, describes mode-specific behaviors (incremental vs full vs load-only), and implies file system modifications. No contradiction with annotations.

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

Conciseness5/5

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

The description is extremely concise: two short sentences plus a three-line bullet list for modes. Every sentence adds distinct value (purpose, required status, mode variants, side effect). Front-loaded with the core 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?

Given 4 parameters (all documented in schema), no output schema, and moderate complexity (tool changes filesystem), the description covers the critical aspects: purpose, required-first-step context, mode options, and a key side effect (folder creation). It does not describe return values or error conditions, but for a setup/indexing tool this is acceptable. A perfect score would require mention of typical output or behavior on failure.

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 4 parameters. The description expands on the 'mode' parameter by explaining each enum value's purpose, which adds value beyond the schema's terse 'Indexing mode'. However, it does not add any new information for path, embedding_model, or file_extensions (their schema descriptions already clear). Baseline 3 is appropriate.

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 clearly states 'Index a codebase for semantic search' and identifies it as 'REQUIRED FIRST STEP', which strongly distinguishes it from sibling tools like search, stats, and clean. The verb 'index' and resource 'codebase' are precise.

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 says 'REQUIRED FIRST STEP', indicating it must be run before dependent operations. It details three modes (auto, full, load-only) and when each is appropriate. However, it does not explicitly state when NOT to use the tool or list alternatives, though context implies alternatives are the other sibling tools.

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

languagesA
Read-onlyIdempotent

List all supported programming languages and file extensions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description does not need to detail safety. It adds value by specifying the output is a list of 'languages and extensions,' which is beyond what annotations provide. No contradictions are present.

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, clear sentence that conveys exactly what the tool does with no unnecessary words. It is perfectly concise and front-loaded.

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 the tool has zero parameters, no output schema, and simple behavior (listing static data), the description fully specifies the tool's purpose. No additional information is needed for an agent to use it correctly.

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

Parameters4/5

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

The input schema has zero parameters and 100% coverage, so the description's job is minimal. It adds clarity by stating what the tool returns (languages and file extensions), which is helpful beyond the empty 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 uses the verb 'list' clearly indicating the action, and specifies the resource as 'supported programming languages and file extensions.' This uniquely identifies what the tool does and distinguishes it from siblings like 'search' or 'index.'

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

Usage Guidelines4/5

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

The description implies the tool is for retrieving a static list of supported languages and extensions, which is clear context. However, it does not explicitly state when not to use it or mention alternatives, though given the simplicity and absence of parameters, this is a minor omission.

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

memory-statsA
Read-onlyIdempotent

Get statistics about stored memories for the current project.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoCodebase path for auto-loading

TDQS

A3.5/5.0
Behavior4/5

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

Annotations provide readOnlyHint=true, idempotentHint=true, and no destructive hint, so the tool is clearly safe and non-mutating. The description adds is scoped to 'current project', clarifying it doesn't access global memory stats. No contradiction with annotations—the description aligns with the read-only, idempotent nature. Score is high because annotations do most of the work and the description complements without contradicting.

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?

A single 9-word sentence delivers the core purpose, which is front-loaded and concise. No extraneous information. However, it could be slightly more structured by hinting at return format or usage conditions, but given the tool's simplicity, it earns a 4 for efficiency.

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?

Given the tool has 1 optional parameter, no output schema, and good annotations, the description is fairly complete for a simple stats tool. It specifies scope (current project) and purpose (statistics), but lacks details on what statistics are returned (e.g., counts, sizes, timestamps) or how the optional path parameter affects results. With 9 sibling tools including a `stats` tool, more completeness would help disambiguate.

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 description coverage is 100%, so the single `path` parameter is fully documented in the schema. The description doesn't add semantics beyond what the schema provides, but with full coverage, baseline 3 applies. Score raised to 4 because the description implies parameter optionality (no required parameters listed) and integrates it into the 'current project' goal, slightly contextualizing its use.

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

Purpose4/5

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

The description 'Get statistics about stored memories for the current project' uses a specific verb ('Get', 'statistics') and resource ('stored memories') with a context qualifier ('current project'), making the purpose clear. It distinguishes from siblings like `search` (finding specific memories) and `index` (indexing operations), though it doesn't explicitly differentiate from the sibling `stats`, which could be a similar statistics tool.

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 when-to-use, when-not-to-use, or alternative tool guidance is provided. The description implies it's for retrieving memory statistics, but there's no context on when to prefer this over siblings like `search` or `remember`. The sibling `stats` could be redundant, but no differentiation is offered.

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

recallA
Read-onlyIdempotent

Retrieve memories using semantic search.

Filters: memory_type, tags, time_range (today, week, month, all)

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoCodebase path for auto-loading
tagsNoFilter by tags
queryYesNatural language search query
n_resultsNoNumber of results
time_rangeNoTime filter
memory_typeNoFilter by type

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already mark the tool as readOnlyHint=true and idempotentHint=true, so the description adds only the phrase 'semantic search' to indicate the retrieval method. This is a minor behavioral clarification beyond the annotations, but it does not disclose other aspects like result ordering or pagination.

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 extremely concise: two sentences (19 words) that front-load the primary action and then list filters. No wasted text; 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?

Given the tool's simplicity (6 parameters, no output schema, clear annotations), the description covers the core purpose and key filter options. However, it omits explanation of the 'path' parameter (auto-loading) and the structure of returned results, which would be helpful for complete agent comprehension.

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 description coverage is 100%, earning a baseline of 3. The description adds value by specifying valid values for the 'time_range' parameter ('today, week, month, all'), which the schema only describes as 'Time filter'. This extra detail aids the agent in constructing correct queries.

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

Purpose4/5

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

The description states 'Retrieve memories using semantic search,' which clearly identifies the verb and resource. However, it does not differentiate from the sibling tool 'search,' which could cause confusion for an agent deciding between them.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus its siblings (e.g., 'search', 'remember', 'index'). There is no mention of context, prerequisites, or exclusions, leaving the agent without direction for appropriate selection.

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

rememberB

Store a memory for later retrieval.

Memory types: conversation, status, decision, preference, doc, note TTL options: session (24h), day, week, month, permanent (default)

ParametersJSON Schema
NameRequiredDescriptionDefault
ttlNoTime-to-livepermanent
pathNoCodebase path for auto-loading
tagsNoOptional tags
contentYesThe memory content to store
memory_typeYesMemory type

TDQS

B3.4/5.0
Behavior3/5

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

Annotations are all false (no readOnly, no idempotent, etc.), so the description must document side effects. It correctly implies persistence (creating a stored memory) but does not disclose limits (e.g., max memory size, if overwrites occur for same tags). With zero annotation support, it could be more explicit about what gets created or modified.

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 two short paragraphs: a one-line purpose statement followed by a line each for memory types and TTL options. It is front-loaded and efficient. No unnecessary words, but the bullet-like structure in prose could be tighter.

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

Completeness3/5

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

The description covers core function (store), memory types, and TTL, which suffices for a simple storage tool. However, with no output schema and 5 parameters, it misses retrieval context (e.g., how to later fetch by type/tag) and any limits (e.g., character max for content). This leaves an agent partially informed.

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%, so the baseline is 3. The description enumerates memory types and TTL options, duplicating the schema's enum values but not adding deeper meaning (e.g., what 'doc' vs 'note' means semantically). It provides no examples or format rules beyond what the schema declares.

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

Purpose4/5

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

The description states 'Store a memory for later retrieval' with a clear verb-resource pair. It distinguishes from siblings like 'recall' (reading memories) and 'forget' (deleting) by focusing on write operations. However, it could more explicitly contrast with siblings.

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 provides memory types and TTL options, which imply scenarios (e.g., decisions need month TTL). However, it does not explicitly say when to use this tool vs 'index' or when not to. It lacks guidance on prerequisites or alternatives.

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

statsB
Read-onlyIdempotent

Get statistics about the currently loaded codebase index.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoCodebase path for auto-loading

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true, idempotentHint=true, and openWorldHint=false, which cover safety and behavior. The description adds no additional behavioral traits beyond restating the purpose, so it meets the baseline but does not exceed.

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 with no fluff. Every word adds value, making it highly concise.

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

Completeness2/5

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

The description is too vague given no output schema. It does not explain what statistics are returned (e.g., file count, size, language breakdown), leaving the agent guessing about the tool's output.

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 only parameter 'path' is fully described in the input schema (100% coverage). The description adds no extra meaning beyond what the schema already provides, so baseline 3 applies.

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

Purpose4/5

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

The description clearly states the action ('Get statistics') and the resource ('the currently loaded codebase index'). It distinguishes from siblings like 'memory-stats' by specifying 'codebase index', though it doesn't explicitly contrast them.

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 on when to use this tool vs. alternatives (e.g., 'memory-stats', 'search'). The description only states what it does, not the context or exclusions.

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. 9 tool updatesv1.0.5
    • First observedclean
    • First observedforget
    • First observedindex
    • First observedlanguages
    • First observedmemory-stats
    • First observedrecall
    • First observedremember
    • First observedsearch
    • First observedstats

TDQS

A4/5.0
Disambiguation5/5

Each tool has a distinct purpose: index, search, stats, languages, memory-stats, clean, remember, recall, forget. No overlapping or ambiguous tools; even stats and memory-stats are clearly scoped to different domains.

Naming Consistency5/5

All tool names are single-word lowercase verbs or nouns that clearly indicate their action (e.g., index, search, remember, forget). This is consistent and predictable, though not verb_noun, the pattern is uniform and intuitive.

Tool Count5/5

With 9 tools, the server is well-scoped, covering indexing, searching, memory management, and cleanup. Each tool is necessary for the core workflows, and the count is within the ideal range (3-15).

Completeness4/5

The toolset covers the full lifecycle: index creation/update, search, stats, memory CRUD (create, read, delete), and cleanup. A minor gap is the lack of a tool to list all memories or update a specific memory, but the core functionality is well covered.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

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

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/duysolo/codebaxing'

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