Skip to main content
Glama
j0hanz
by j0hanz

Code Lens MCP Server

npm version License: MIT

Install in VS Code Install in VS Code Insiders Install in Visual Studio

Add to LM Studio Install in Cursor Install in Goose

Gemini-powered MCP server for automated code review, analysis, and documentation.

Overview

Code Lens is a Model Context Protocol server that uses Google Gemini to analyze diffs, review pull requests, detect code smells, generate documentation, and verify logic. It exposes 13 tools, 7 resources, and 5 prompts over stdio transport.

Related MCP server: Gemini Code Assist MCP

Key Features

  • PR review pipeline — generate diffs, assess impact, detect breaking API changes, and produce review summaries with merge recommendations

  • File analysis — load any source file for refactoring suggestions, code smell detection, documentation generation, and natural-language Q&A

  • Logic verification — verify algorithms using Gemini's code execution sandbox

  • Structured outputs — all tools return validated JSON via Zod v4 output schemas

  • Web search — Google Search with Grounding for up-to-date information retrieval

  • Task lifecycle support — every tool except load_file can run via MCP tasks with polling, cancellation, and progress updates

Requirements

Quick Start

{
  "mcpServers": {
    "code-lens": {
      "command": "npx",
      "args": ["-y", "@j0hanz/code-lens-mcp@latest"],
      "env": {
        "GEMINI_API_KEY": "your-api-key"
      }
    }
  }
}

Docker

docker run -i --rm -e GEMINI_API_KEY="your-api-key" ghcr.io/j0hanz/code-lens

Or with Docker Compose:

GEMINI_API_KEY=your-api-key docker compose up

Client Configuration

Install in VS Code

Add to .vscode/mcp.json:

{
  "servers": {
    "code-lens": {
      "command": "npx",
      "args": ["-y", "@j0hanz/code-lens-mcp@latest"],
      "env": {
        "GEMINI_API_KEY": "your-api-key"
      }
    }
  }
}

Or install via CLI:

code --add-mcp '{"name":"code-lens","command":"npx","args":["-y","@j0hanz/code-lens-mcp@latest"]}'

For more info, see VS Code MCP docs.

Install in VS Code Insiders

Add to .vscode/mcp.json:

{
  "servers": {
    "code-lens": {
      "command": "npx",
      "args": ["-y", "@j0hanz/code-lens-mcp@latest"],
      "env": {
        "GEMINI_API_KEY": "your-api-key"
      }
    }
  }
}

Or install via CLI:

code-insiders --add-mcp '{"name":"code-lens","command":"npx","args":["-y","@j0hanz/code-lens-mcp@latest"]}'

For more info, see VS Code Insiders MCP docs.

Install in Cursor

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "code-lens": {
      "command": "npx",
      "args": ["-y", "@j0hanz/code-lens-mcp@latest"],
      "env": {
        "GEMINI_API_KEY": "your-api-key"
      }
    }
  }
}

For more info, see Cursor MCP docs.

Install in Visual Studio

Add to mcp.json:

{
  "mcpServers": {
    "code-lens": {
      "command": "npx",
      "args": ["-y", "@j0hanz/code-lens-mcp@latest"],
      "env": {
        "GEMINI_API_KEY": "your-api-key"
      }
    }
  }
}

For more info, see Visual Studio MCP docs.

Install in Goose

{
  "mcpServers": {
    "code-lens": {
      "command": "npx",
      "args": ["-y", "@j0hanz/code-lens-mcp@latest"],
      "env": {
        "GEMINI_API_KEY": "your-api-key"
      }
    }
  }
}

For more info, see Goose MCP docs.

Add to LM Studio

{
  "mcpServers": {
    "code-lens": {
      "command": "npx",
      "args": ["-y", "@j0hanz/code-lens-mcp@latest"],
      "env": {
        "GEMINI_API_KEY": "your-api-key"
      }
    }
  }
}

For more info, see LM Studio MCP docs.

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "code-lens": {
      "command": "npx",
      "args": ["-y", "@j0hanz/code-lens-mcp@latest"],
      "env": {
        "GEMINI_API_KEY": "your-api-key"
      }
    }
  }
}

For more info, see Claude Desktop MCP docs.

claude mcp add code-lens -- npx -y @j0hanz/code-lens-mcp@latest

Or add to config:

{
  "mcpServers": {
    "code-lens": {
      "command": "npx",
      "args": ["-y", "@j0hanz/code-lens-mcp@latest"],
      "env": {
        "GEMINI_API_KEY": "your-api-key"
      }
    }
  }
}

For more info, see Claude Code MCP docs.

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "code-lens": {
      "command": "npx",
      "args": ["-y", "@j0hanz/code-lens-mcp@latest"],
      "env": {
        "GEMINI_API_KEY": "your-api-key"
      }
    }
  }
}

For more info, see Windsurf MCP docs.

amp mcp add code-lens -- npx -y @j0hanz/code-lens-mcp@latest

Or add to config:

{
  "mcpServers": {
    "code-lens": {
      "command": "npx",
      "args": ["-y", "@j0hanz/code-lens-mcp@latest"],
      "env": {
        "GEMINI_API_KEY": "your-api-key"
      }
    }
  }
}

For more info, see Amp MCP docs.

Add to cline_mcp_settings.json:

{
  "mcpServers": {
    "code-lens": {
      "command": "npx",
      "args": ["-y", "@j0hanz/code-lens-mcp@latest"],
      "env": {
        "GEMINI_API_KEY": "your-api-key"
      }
    }
  }
}

For more info, see Cline MCP docs.

Add to ~/.codex/config.yaml:

{
  "mcpServers": {
    "code-lens": {
      "command": "npx",
      "args": ["-y", "@j0hanz/code-lens-mcp@latest"],
      "env": {
        "GEMINI_API_KEY": "your-api-key"
      }
    }
  }
}

For more info, see Codex CLI MCP docs.

Add to .vscode/mcp.json:

{
  "servers": {
    "code-lens": {
      "command": "npx",
      "args": ["-y", "@j0hanz/code-lens-mcp@latest"],
      "env": {
        "GEMINI_API_KEY": "your-api-key"
      }
    }
  }
}

For more info, see GitHub Copilot MCP docs.

{
  "mcpServers": {
    "code-lens": {
      "command": "npx",
      "args": ["-y", "@j0hanz/code-lens-mcp@latest"],
      "env": {
        "GEMINI_API_KEY": "your-api-key"
      }
    }
  }
}

For more info, see Warp MCP docs.

Add to .kiro/settings/mcp.json:

{
  "mcpServers": {
    "code-lens": {
      "command": "npx",
      "args": ["-y", "@j0hanz/code-lens-mcp@latest"],
      "env": {
        "GEMINI_API_KEY": "your-api-key"
      }
    }
  }
}

For more info, see Kiro MCP docs.

Add to ~/.gemini/settings.json:

{
  "mcpServers": {
    "code-lens": {
      "command": "npx",
      "args": ["-y", "@j0hanz/code-lens-mcp@latest"],
      "env": {
        "GEMINI_API_KEY": "your-api-key"
      }
    }
  }
}

For more info, see Gemini CLI MCP docs.

Add to ~/.config/zed/settings.json:

{
  "context_servers": {
    "code-lens": {
      "settings": {
        "command": "npx",
        "args": ["-y", "@j0hanz/code-lens-mcp@latest"]
      }
    }
  }
}

For more info, see Zed MCP docs.

Add to your VS Code settings.json under augment.advanced:

{
  "augment.advanced": {
    "mcpServers": [
      {
        "id": "code-lens",
        "command": "npx",
        "args": ["-y", "@j0hanz/code-lens-mcp@latest"],
        "env": {
          "GEMINI_API_KEY": "your-api-key"
        }
      }
    ]
  }
}

For more info, see Augment MCP docs.

{
  "mcpServers": {
    "code-lens": {
      "command": "npx",
      "args": ["-y", "@j0hanz/code-lens-mcp@latest"],
      "env": {
        "GEMINI_API_KEY": "your-api-key"
      }
    }
  }
}

For more info, see Roo Code MCP docs.

{
  "mcpServers": {
    "code-lens": {
      "command": "npx",
      "args": ["-y", "@j0hanz/code-lens-mcp@latest"],
      "env": {
        "GEMINI_API_KEY": "your-api-key"
      }
    }
  }
}

For more info, see Kilo Code MCP docs.

Use Cases

PR Review Pipeline

  1. Call generate_diff to capture unstaged or staged changes

  2. Run analyze_pr_impact to assess severity and breaking changes

  3. Run generate_review_summary for a risk rating and merge recommendation

  4. Run detect_api_breaking_changes to check for public API breakage

  5. Run generate_test_plan to produce prioritized test cases

Single-File Analysis

  1. Call load_file to cache a source file

  2. Run refactor_code for structural improvement suggestions

  3. Run detect_code_smells for Fowler-taxonomy anti-patterns

  4. Run generate_documentation to generate JSDoc/TSDoc stubs

  5. Use ask_about_code for natural-language Q&A about the file

  6. Use verify_logic to verify algorithms with code execution

Performance Audit

  1. Call generate_diff on a performance-sensitive change

  2. Run analyze_time_space_complexity to detect Big-O degradation

Research

  • Use web_search for up-to-date documentation or API references via Google Search with Grounding

Architecture

[MCP Client]
    │
    │ Transport: stdio
    ▼
[MCP Server: code-lens]
    │ Entry: src/index.ts → src/server.ts
    │
    ├── initialize / initialized (lifecycle handshake)
    │
    ├── tools/call ──────────────────────────────────────────────
    │   │
    │   │ Diff-based tools (require generate_diff first):
    │   ├── [generate_diff]              Sync — capture git diff
    │   ├── [analyze_pr_impact]          Flash — severity & impact
    │   ├── [generate_review_summary]    Flash — risk & merge rec
    │   ├── [generate_test_plan]         Flash — test cases
    │   ├── [analyze_time_space_complexity] Flash — Big-O analysis
    │   ├── [detect_api_breaking_changes]  Flash — API breakage
    │   │
    │   │ File-based tools (require load_file first):
    │   ├── [load_file]                  Sync — cache source file
    │   ├── [refactor_code]              Flash — refactoring
    │   ├── [detect_code_smells]         Flash — smell detection
    │   ├── [generate_documentation]     Flash — doc stubs
    │   ├── [ask_about_code]             Flash — Q&A
    │   ├── [verify_logic]               Flash — code execution
    │   │
    │   │ Standalone:
    │   └── [web_search]                 Flash — Google Search
    │
    ├── resources/read ──────────────────────────────────────────
    │   ├── [internal://instructions]        Server usage guide
    │   ├── [internal://tool-catalog]        Tool reference
    │   ├── [internal://workflows]           Workflow sequences
    │   ├── [internal://server-config]       Runtime config
    │   ├── [internal://tool-info/{name}]    Per-tool details
    │   ├── [internal://diff/current]        Cached diff (text/x-patch)
    │   └── [internal://file/current]        Cached source file
    │
    ├── prompts/get ─────────────────────────────────────────────
    │   ├── [get-help]           Full server instructions
    │   ├── [review-guide]       Tool + focus area workflow
    │   ├── [select-workflow]    Pipeline by change type
    │   ├── [analyze-file]       File analysis pipeline
    │   └── [tool-chain]         Tool prerequisite chain
    │
    └── Capabilities: structured output, tool annotations, notifications

Request Lifecycle

[Client] -- initialize {protocolVersion, capabilities} --> [Server]
[Server] -- {protocolVersion, capabilities, serverInfo} --> [Client]
[Client] -- notifications/initialized --> [Server]
[Client] -- tools/call {name, arguments} --> [Server]
[Server] -- notifications/progress {token, progress, total} --> [Client]
[Server] -- {content, structuredContent, isError?} --> [Client]

Task Lifecycle

  • generate_diff and load_file are sync-only. All other tools advertise taskSupport: optional.

  • Requestors may supply a task TTL. The server uses that value up to MAX_TASK_TTL_MS, or falls back to TASK_TTL_MS when omitted.

  • Cancelled tasks remain terminal as cancelled, and tasks/result returns a cancellation-shaped tool result.

MCP Surface

Tools

Tool

Description

Prerequisite

Model

generate_diff

Capture git diff (unstaged/staged) and cache server-side

Sync

analyze_pr_impact

Assess severity, categories, breaking changes, rollback complexity

generate_diff

Flash

generate_review_summary

PR summary, risk rating, merge recommendation

generate_diff

Flash

generate_test_plan

Prioritized test cases and coverage guidance

generate_diff

Flash

analyze_time_space_complexity

Big-O complexity analysis and degradation detection

generate_diff

Flash

detect_api_breaking_changes

Detect breaking API/interface changes

generate_diff

Flash

load_file

Cache a source file for analysis tools

Sync

refactor_code

Complexity, duplication, naming, grouping suggestions

load_file

Flash

detect_code_smells

Structural code smells (Fowler taxonomy)

load_file

Flash

generate_documentation

JSDoc/TSDoc/docstring stubs for public exports

load_file

Flash

ask_about_code

Natural-language Q&A about a cached file

load_file

Flash

verify_logic

Verify algorithms via Gemini code execution sandbox

load_file

Flash

web_search

Google Search with Grounding

Flash

Resources

URI

Description

MIME

internal://instructions

Complete server usage instructions

text/markdown

internal://tool-catalog

Tool reference: models, params, outputs, data flow

text/markdown

internal://workflows

Recommended workflows and tool sequences

text/markdown

internal://server-config

Runtime configuration and limits

text/markdown

internal://tool-info/{toolName}

Per-tool details (parameterized)

text/markdown

internal://diff/current

Most recently generated diff

text/x-patch

internal://file/current

Most recently loaded source file

text/plain

Prompts

Prompt

Description

get-help

Full server instructions: capabilities, tools, resources, constraints

review-guide

Workflow guide for a specific tool and focus area

select-workflow

Recommended tool pipeline based on change type

analyze-file

Goal-based tool pipeline for single-file analysis

tool-chain

Full prerequisite chain for a given tool

MCP Capabilities

Tool Annotations

All tools expose MCP tool annotations:

Annotation

Used

readOnlyHint

Yes

destructiveHint

Yes

idempotentHint

Yes

openWorldHint

Yes

Structured Output

All Gemini-powered tools return validated structuredContent alongside text content, using Zod v4 output schemas.

Configuration

Variable

Default

Description

GEMINI_API_KEY

Required. Gemini API key. Falls back to GOOGLE_API_KEY.

GEMINI_MODEL

gemini-3-flash-preview

Override the default Gemini model for all tools.

MAX_DIFF_CHARS

120000

Maximum diff size in characters.

MAX_CONCURRENT_CALLS

10

Maximum concurrent Gemini API calls.

MAX_CONCURRENT_BATCH_CALLS

2

Maximum concurrent batch Gemini calls.

MAX_CONCURRENT_CALLS_WAIT_MS

2000

Wait timeout for concurrency semaphore.

TASK_TTL_MS

300000

Default task result retention in milliseconds when the request does not specify task.ttl.

MAX_TASK_TTL_MS

3600000

Upper bound for request-provided task TTL. Set to 0 to remove the cap.

GEMINI_BATCH_MODE

off

Enable Gemini batch mode.

GEMINI_HARM_BLOCK_THRESHOLD

BLOCK_NONE

Safety filter threshold (BLOCK_NONE, BLOCK_ONLY_HIGH, BLOCK_MEDIUM_AND_ABOVE, BLOCK_LOW_AND_ABOVE).

GEMINI_DIFF_CACHE_ENABLED

false

Enable Gemini context caching for large diffs.

GEMINI_DIFF_CACHE_TTL_S

3600

Cache TTL in seconds (when caching is enabled).

CLI Flags

npx @j0hanz/code-lens-mcp@latest --model gemini-2.5-flash --max-diff-chars 200000

Flag

Env Equivalent

--model, -m

GEMINI_MODEL

--max-diff-chars

MAX_DIFF_CHARS

Security

Control

Status

Input validation

Zod v4 schema validation on all tool inputs

Path safety

load_file restricts paths to workspace root

Stdout safety

Logs to stderr; stdout reserved for MCP protocol

Non-root container

Docker runs as dedicated mcp user

Development

npm install          # Install dependencies
npm run build        # Compile TypeScript
npm run dev          # Watch mode
npm run dev:run      # Run with --watch and .env
npm run start        # Run compiled server
npm run type-check   # Type-check src + tests
npm run lint         # ESLint
npm run test         # Run test suite
npm run format       # Prettier
npm run inspector    # MCP Inspector
npm run knip         # Dead code detection

Build and Release

  • CI: .github/workflows/release.yml

  • Docker: Multi-stage build (Dockerfile) with node:24-alpine

  • Docker Compose: docker-compose.yml

  • npm: Published as @j0hanz/code-lens-mcp

Troubleshooting

  • Missing API key: Set GEMINI_API_KEY or GOOGLE_API_KEY in your environment or client config env block.

  • "E_NO_DIFF" errors: Call generate_diff before running any diff-based review tool.

  • "E_NO_FILE" errors: Call load_file before running any file analysis tool.

  • Large diffs truncated: Increase MAX_DIFF_CHARS (default: 120,000 characters).

  • Stdout noise: Ensure no other processes write to stdout; the server uses stdio transport.

Credits

Contributing and License

MIT License. See LICENSE for details.

Contributions welcome via pull requests.

Available Tools

13 tools
analyze_pr_impactAnalyze PR ImpactA
Read-onlyIdempotent

Assess impact and risk from cached diff. Prerequisite: generate_diff. Auto-infer repo/language.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoPrimary language (e.g. TypeScript, Python, JavaScript, Go, Rust, Java). Auto-infer from files.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool completed successfully.
resultNoSuccessful result payload.
errorNoError payload when ok is false.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate safe read operations; description adds that it uses cached diff and auto-infers repo/language, providing useful behavioral context beyond 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?

Two concise sentences: first states purpose and data source, second covers prerequisite and auto-inference. Efficient with no 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?

Adequate for a tool with output schema and clear annotations. Could elaborate on what the assessment includes, but not necessary given output schema.

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 parameter description; description adds 'Auto-infer repo/language', reinforcing the concept but not significantly new information.

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?

Clearly states 'Assess impact and risk from cached diff', specifying verb and resource. Distinguishes from siblings like 'generate_diff' (prerequisite) and other analysis tools.

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

Usage Guidelines4/5

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

Specifies prerequisite 'generate_diff', guiding the agent on required prior steps. Lacks explicit when-not-to-use or comparison with alternatives.

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

analyze_time_space_complexityAnalyze Time & Space ComplexityA
Read-onlyIdempotent

Analyze Big-O complexity. Prerequisite: generate_diff. Auto-infer language.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoPrimary language (e.g. TypeScript, Python, JavaScript, Go, Rust, Java). Auto-infer from files.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool completed successfully.
resultNoSuccessful result payload.
errorNoError payload when ok is false.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint. Description adds valuable behavioral context: prerequisite and auto-infer language, which are not in 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?

Two sentences, no filler. Every sentence adds value: purpose and usage context.

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 output schema present, return info not needed. Covers prerequisite and language handling. Could mention analysis scope (e.g., worst-case) but acceptable.

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%; description repeats auto-infer language already in schema. No additional 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?

Clearly states 'Analyze Big-O complexity', a specific verb and resource. Distinct from sibling tools like detect_code_smells or analyze_pr_impact.

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?

Mentions prerequisite: generate_diff, giving clear context for when to use. Does not explicitly list alternatives, but the prerequisite guides usage.

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

ask_about_codeAsk About CodeA
Read-onlyIdempotent

Answer questions about a cached file. Prerequisite: load_file. Auto-infer language.

ParametersJSON Schema
NameRequiredDescriptionDefault
questionYesQuestion about the loaded file.
languageNoPrimary language (e.g. TypeScript, Python, JavaScript, Go, Rust, Java). Auto-infer from files.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool completed successfully.
resultNoSuccessful result payload.
errorNoError payload when ok is false.

TDQS

A4/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 risk profile is clear. The description adds valuable behavioral context: a prerequisite (load_file) and auto-inference of language. However, caching scope could be more explicit.

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?

Extremely concise: a single sentence and a note. Every element (prerequisite, auto-inference) has purpose. No 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?

Given the presence of an output schema and comprehensive annotations, the description is mostly complete. It covers prerequisite and auto-inference, but could mention that questions are answerable only after file loading. Still, it meets the bar for a focused 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% and already describes both parameters adequately. The description adds 'Auto-infer language' which reinforces schema but does not significantly expand on it. With high schema coverage, 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?

The description clearly states 'Answer questions about a cached file' with a specific verb and resource. It distinguishes from sibling tools (e.g., analyze_pr_impact, generate_documentation) by focusing on Q&A over a pre-loaded file.

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?

It mentions 'Prerequisite: load_file' implying when to use, but does not explicitly state when not to use it or contrast with alternatives. The usage context is implied rather than fully explicit.

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

detect_api_breaking_changesDetect API Breaking ChangesA
Read-onlyIdempotent

Detect breaking API changes. Prerequisite: generate_diff. Auto-infer language.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoPrimary language (e.g. TypeScript, Python, JavaScript, Go, Rust, Java). Auto-infer from files.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool completed successfully.
resultNoSuccessful result payload.
errorNoError payload when ok is false.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds 'Auto-infer language' and a prerequisite, which are useful but not extensive 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?

Two sentences, front-loaded with the core purpose, and zero wasted words. 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?

With an output schema and annotations, the description covers the prerequisite and auto-infer behavior. It is adequate for a simple tool but could mention what the output contains.

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 the baseline is 3. The description echoes the auto-infer language behavior already in the schema's description, adding no new parameter-specific meaning.

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 'Detect breaking API changes', which is a specific verb and resource. However, it does not differentiate from sibling tools like analyze_pr_impact, which may also involve breaking change detection.

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 mentions 'Prerequisite: generate_diff', providing some usage context. However, it lacks explicit when-not-to-use guidance or alternatives, relying on implied context.

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

detect_code_smellsDetect Code SmellsA
Read-onlyIdempotent

Detect structural code smells in a cached file. Prerequisite: load_file. Auto-infer language.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoPrimary language (e.g. TypeScript, Python, JavaScript, Go, Rust, Java). Auto-infer from files.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool completed successfully.
resultNoSuccessful result payload.
errorNoError payload when ok is false.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare read-only, non-destructive, idempotent behavior. The description adds valuable context: the tool operates on a cached file, requires a prerequisite, and auto-infers language, which goes beyond 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?

Two sentences, front-loaded with purpose, no wasted words. Every sentence earns its place.

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's simplicity, rich annotations, and output schema, the description covers prerequisite, auto-inference, and purpose. No gaps for an agent to misuse.

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% with a good description for the 'language' parameter. The tool description adds the auto-infer hint, reinforcing that the parameter is optional. This adds value over the schema alone.

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 detects structural code smells in a cached file, with a specific verb and resource. It distinguishes from siblings like analyze_pr_impact or detect_api_breaking_changes by focusing on code smells.

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 prerequisite (load_file) and mentions auto-infer language, giving clear context for when to use. Does not explicitly state when not to use, but purpose is distinct enough.

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

generate_diffGenerate DiffA
Read-onlyIdempotent

Generate a diff of the current branch working changes and cache it for all review tools. You MUST call this tool before calling any other review tool. Use "unstaged" for working-tree changes not yet staged, or "staged" for changes already added with git add.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo"unstaged": working-tree changes not yet staged. "staged": changes added to the index with git add. Default: unstaged.unstaged

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool completed successfully.
resultNoSuccessful result payload.
errorNoError payload when ok is false.

TDQS

A4.7/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint, idempotentHint), the description discloses caching behavior and the prerequisite ordering, which are critical for correct use. No contradictions 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?

Two sentences, no fluff. First sentence covers purpose and caching. Second sentence covers prerequisite and parameter usage. Front-loaded and efficient.

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?

For a simple tool with one parameter, high schema coverage, and existing output schema, the description is complete. It covers purpose, usage constraints, caching side-effect, and parameter options.

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% and already explains the mode parameter in full. The description only reiterates the same information, adding no new meaning. 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?

Clearly states it generates a diff of current branch working changes and caches it for review tools. Verb is specific ('generate diff'), resource is clear ('current branch working changes'), and it distinguishes itself from siblings as a prerequisite.

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?

Explicitly says 'You MUST call this tool before calling any other review tool', providing clear when-to-use guidance. Also explains the two mode options with their contexts ('unstaged' vs 'staged'), giving no ambiguity.

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

generate_documentationGenerate DocumentationA
Read-onlyIdempotent

Generate documentation stubs for all public exports in a cached file. Prerequisite: load_file. Auto-infer language.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoPrimary language (e.g. TypeScript, Python, JavaScript, Go, Rust, Java). Auto-infer from files.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool completed successfully.
resultNoSuccessful result payload.
errorNoError payload when ok is false.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare non-destructive, idempotent, read-only behavior. The description adds 'Auto-infer language' and 'Prerequisite: load_file', which are beyond the annotations and useful.

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

Conciseness5/5

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

Two concise sentences: first defines purpose, second adds prerequisite and auto-infer detail. No wasted words, front-loaded with core action.

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?

With only one optional parameter, clear annotations, and an output schema present, the description fully covers what the tool does, its prerequisite, and parameter behavior.

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%, with parameter 'language' already well-described. The description adds 'Auto-infer from files' context, enhancing agent understanding.

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 specifies the action ('Generate documentation stubs') and the resource ('all public exports in a cached file'), distinguishing it from siblings like 'generate_diff' and 'generate_review_summary'.

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 prerequisite ('load_file'), providing clear context for when to use. Lacks explicit 'when not to use' or alternatives, but the context is sufficient.

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

generate_review_summaryGenerate Review SummaryA
Read-onlyIdempotent

Summarize diff and risk level. Prerequisite: generate_diff. Auto-infer repo/language.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoPrimary language (e.g. TypeScript, Python, JavaScript, Go, Rust, Java). Auto-infer from files.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool completed successfully.
resultNoSuccessful result payload.
errorNoError payload when ok is false.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint; description adds auto-inference behavior and prerequisite, but does not clarify risk level generation or potential side effects beyond 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?

Two sentences, front-loaded with key action, prerequisite, and auto-inference; no wasted words.

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 a single optional parameter and presence of output schema, the description covers prerequisite and auto-inference adequately; no gaps for agent 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?

Single parameter 'language' has full schema description coverage; description redundantly mentions auto-inference, offering no additional 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 tool summarizes a diff and risk level, with a prerequisite of generate_diff, distinguishing it from sibling tools like analyze_pr_impact which may have a broader 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?

Explicitly states prerequisite (generate_diff), but does not provide guidance on when not to use it or differentiate from alternatives like analyze_pr_impact.

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

generate_test_planGenerate Test PlanA
Read-onlyIdempotent

Generate test cases. Prerequisite: generate_diff. Auto-infer repo/language/framework.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoPrimary language (e.g. TypeScript, Python, JavaScript, Go, Rust, Java). Auto-infer from files.
testFrameworkNoTest framework (jest, pytest, etc). Auto-infer.
maxTestCasesNoMax test cases (1-30). Default: 15.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool completed successfully.
resultNoSuccessful result payload.
errorNoError payload when ok is false.

TDQS

A3.5/5.0
Behavior1/5

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

Description says 'Generate test cases' implying creation, but annotations declare readOnlyHint: true. This is a direct contradiction. Other behavioral traits are not disclosed beyond 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?

Two sentences, no extraneous words. Efficiently communicates core purpose and prerequisite.

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?

Has output schema, so return values are covered. Description mentions prerequisite and auto-inference but lacks detail on how inference works or what assumptions are made. Contradiction reduces completeness.

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%; description adds 'Auto-infer' which is already in schema descriptions. No additional meaning beyond 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?

Clearly states the verb 'generate' and resource 'test cases'. Prerequisite and auto-inference differentiate from siblings like generate_diff.

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 prerequisite generate_diff, implying a sequence. Does not mention when to avoid or alternative tools, but context is clear.

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

load_fileLoad FileA
Read-onlyIdempotent

Cache a single file for analysis tools (refactor_code, ask_about_code, verify_logic). Overwrites previous cache. Path is relative to server working directory (e.g. src/index.ts) or absolute (e.g. /home/user/project/src/index.ts).

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesFile path relative to workspace root (e.g. src/index.ts) or absolute. Must be within workspace.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool completed successfully.
resultNoSuccessful result payload.
errorNoError payload when ok is false.

TDQS

A4.1/5.0
Behavior4/5

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

Adds value beyond annotations by disclosing that it overwrites previous cache and explaining path format. Annotations already indicate idempotency and read-only behavior, and the description aligns with these while providing additional 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?

Two concise sentences pack all essential information: purpose, target tools, cache behavior, and path format. No redundant words.

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?

For a simple caching tool with one parameter and an output schema, the description is fully adequate. It covers usage context, path constraints (relative/absolute, workspace), and cache override behavior. No gaps.

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 the parameter description in the schema is already detailed. The tool description merely repeats the path format examples, adding minimal new information beyond what the schema provides.

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?

Clearly states it caches a file for analysis tools, distinguishing it as a preparatory step. Names specific sibling tools that consume the cache, which helps an agent understand its role in a workflow.

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 the tool is for caching files before using refactor_code, ask_about_code, and verify_logic. This gives clear context for when to invoke it, though it does not explicitly list when not to use it or alternatives.

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

refactor_codeRefactor CodeA
Read-onlyIdempotent

Analyze cached file for complexity, duplication, naming, and grouping improvements. Prerequisite: load_file. Set maxSuggestions to cap output (default 10).

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoPrimary language (e.g. TypeScript, Python, JavaScript, Go, Rust, Java). Auto-infer from files.
maxSuggestionsNoMax suggestions (1-15). Default: 10.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool completed successfully.
resultNoSuccessful result payload.
errorNoError payload when ok is false.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate read-only and idempotent behavior. The description adds that it analyzes a cached file and caps suggestions, providing extra context beyond annotations. No contradictions.

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: first states purpose, second provides guidelines. Every word earns its place – no redundancy or filler.

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

Completeness4/5

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

Given the presence of output schema and annotations, the description covers purpose, prerequisite, and parameter control. It could briefly mention the output nature (suggestions list), but overall is sufficiently complete for effective tool use.

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 descriptions for both parameters. The description adds a small extra detail about maxSuggestions default, but does not significantly enhance understanding 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 it analyzes a cached file for specific improvements (complexity, duplication, naming, grouping). The verb 'Analyze' and resource 'cached file' are precise, and it distinguishes from siblings like 'generate_documentation' or 'detect_code_smells' by requiring a loaded file.

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 explicitly mentions the prerequisite 'load_file' and how to control output via 'maxSuggestions'. It provides clear context for when to use this tool, though it does not mention alternatives or when not to use it.

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

verify_logicVerify LogicA
Read-onlyIdempotent

Verify algorithms and logic in a cached file using Gemini code execution sandbox. Prerequisite: load_file. Auto-infer language.

ParametersJSON Schema
NameRequiredDescriptionDefault
questionYesWhat to verify in the loaded file (e.g. algorithm correctness, edge cases).
languageNoPrimary language (e.g. TypeScript, Python, JavaScript, Go, Rust, Java). Auto-infer from files.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYesWhether the tool completed successfully.
resultNoSuccessful result payload.
errorNoError payload when ok is false.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, which tell the agent it's a safe, read-only operation. The description adds valuable context: it uses a 'Gemini code execution sandbox' (explaining the mechanism) and 'Auto-infer language' (an important behavioral detail). This combination of annotations and description provides good transparency without contradiction.

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

Conciseness5/5

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

The description is extremely concise: two sentences totaling 15 words. It front-loads the primary action ('Verify algorithms and logic') and efficiently adds the prerequisite and auto-inference. Every word contributes meaningful information 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 the existence of an output schema (not shown but indicated), the description does not need to detail return values. The description covers the core purpose, prerequisite, and auto-inference. However, for a tool that uses a code execution sandbox, it might be helpful to mention any security considerations or that the file is executed in a sandbox. But overall, it provides sufficient context for a simple verification tool with good annotation coverage.

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%, so both parameters (question, language) are already described in the schema. The description adds meaning beyond schema: it connects 'question' to the loaded file ('What to verify in the loaded file') and explains 'language' auto-inference ('Auto-infer from files'). This helps the agent understand the parameter context better, though it doesn't add syntax or format details.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Verify algorithms and logic in a cached file using Gemini code execution sandbox'. It mentions a prerequisite (load_file) and auto-inference of language, making the purpose specific and actionable. However, it does not explicitly differentiate from sibling tools like analyze_time_space_complexity or detect_code_smells, which are similar analysis tools, so it misses a small opportunity for distinction.

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 specifies a prerequisite ('Prerequisite: load_file'), which guides the agent to use load_file first. It also mentions 'Auto-infer language' as an optional behavior. However, it does not provide explicit guidance on when to use this tool versus alternatives (e.g., when to use analyze_time_space_complexity instead) or when not to use it. The absence of exclusions or alternative recommendations limits its utility for decision-making.

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. 13 tool updatesv0.12.0
    • First observedanalyze_pr_impact
    • First observedanalyze_time_space_complexity
    • First observedask_about_code
    • First observeddetect_api_breaking_changes
    • First observeddetect_code_smells
    • First observedgenerate_diff
    • First observedgenerate_documentation
    • First observedgenerate_review_summary
    • First observedgenerate_test_plan
    • First observedload_file
    • First observedrefactor_code
    • First observedverify_logic
    • First observedweb_search

TDQS

A4.2/5.0
Disambiguation5/5

All tools have distinct purposes, clearly separated into diff-based and file-based categories. No overlapping functionality.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case, making it easy to predict tool names.

Tool Count5/5

13 tools is well-scoped for a code analysis server, covering both diff review and file analysis without being excessive.

Completeness4/5

Covers major code review aspects (diff, smells, complexity, breaking changes, test plan, docs, refactoring, verification). Could include linting or style checks but overall comprehensive.

Maintenance

ActivityInactive
ResponsivenessNo issues

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/j0hanz/code-lens'

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