Skip to main content
Glama

Xdebug MCP Server

npm version License: MIT

An MCP (Model Context Protocol) server that provides PHP debugging capabilities through Xdebug's DBGp protocol. This allows AI assistants like Claude to directly debug PHP applications.

Features

Core Debugging

  • Full Debug Control: Step into, step over, step out, continue, stop

  • Breakpoints: Line breakpoints, conditional breakpoints, exception breakpoints, function call breakpoints

  • Variable Inspection: View all variables, get specific variables, set variable values

  • Expression Evaluation: Evaluate PHP expressions in the current context

  • Stack Traces: View the full call stack

  • Multiple Sessions: Debug multiple PHP scripts simultaneously

  • Docker Support: Works with PHP running in Docker containers

Advanced Features

  • Watch Expressions: Persistent watches that auto-evaluate on each break with change detection

  • Logpoints: Log messages without stopping execution using {$var} placeholders

  • Memory Profiling: Track memory usage and execution time between breakpoints

  • Code Coverage: Track which lines were executed during debugging

  • Request Context: Capture $_GET, $_POST, $_SESSION, $_COOKIE, headers automatically

  • Step Filters: Skip vendor/library code during stepping

  • Debug Profiles: Save and restore breakpoint configurations

  • Session Export: Export debug sessions as JSON or HTML reports

Related MCP server: MCP Debugger

Installation

npm install -g xdebug-mcp

From Source

git clone https://github.com/kpanuragh/xdebug-mcp.git
cd xdebug-mcp
npm install
npm run build

MCP Server Configuration

For Claude Code

Add the xdebug-mcp server to your MCP configuration (.mcp.json or Claude settings):

Using npm global install:

{
  "mcpServers": {
    "xdebug": {
      "command": "xdebug-mcp",
      "env": {
        "XDEBUG_PORT": "9003",
        "LOG_LEVEL": "info"
      }
    }
  }
}

Using npx:

{
  "mcpServers": {
    "xdebug": {
      "command": "npx",
      "args": ["-y", "xdebug-mcp"],
      "env": {
        "XDEBUG_PORT": "9003",
        "LOG_LEVEL": "info"
      }
    }
  }
}

With Path Mappings (for Docker)

When debugging PHP in Docker containers, you need path mappings to translate container paths to host paths:

{
  "mcpServers": {
    "xdebug": {
      "command": "xdebug-mcp",
      "env": {
        "XDEBUG_PORT": "9003",
        "PATH_MAPPINGS": "{\"/var/www/html\": \"/home/user/projects/myapp\"}",
        "LOG_LEVEL": "info"
      }
    }
  }
}

With DBGp Proxy Registration

If you already use a DBGp proxy, keep mcp-config.example.json as the default direct-listener example and start from mcp-config.proxy.example.json for proxy registration.

Proxy mode requires:

  • TCP listener mode for xdebug-mcp (not XDEBUG_SOCKET_PATH)

  • a unique callback port such as 9006, 9007, or 9008 for XDEBUG_PORT

  • DBGP_PROXY_HOST, DBGP_PROXY_PORT, and DBGP_IDEKEY

See the DBGp Proxy Registration Guide for the full setup, multi-agent examples, and PHP/Xdebug proxy configuration.

PHP/Xdebug Configuration

php.ini (or xdebug.ini)

[xdebug]
zend_extension=xdebug

; Enable step debugging
xdebug.mode=debug

; Start debugging on every request
xdebug.start_with_request=yes

; Host where MCP server is running
; For Docker: use host.docker.internal
; For local PHP: use 127.0.0.1
xdebug.client_host=host.docker.internal

; Port where MCP server listens
xdebug.client_port=9003

; IDE key (optional, for filtering)
xdebug.idekey=mcp

Docker Compose

version: '3.8'

services:
  php:
    image: php:8.2-apache
    volumes:
      - ./src:/var/www/html
      - ./xdebug.ini:/usr/local/etc/php/conf.d/99-xdebug.ini
    extra_hosts:
      - "host.docker.internal:host-gateway"  # Required for Linux
    environment:
      - XDEBUG_MODE=debug
      - XDEBUG_CONFIG=client_host=host.docker.internal client_port=9003

Using Unix Domain Sockets

For improved performance and simplified setup on local systems, you can use Unix domain sockets instead of TCP. Unix sockets eliminate network stack overhead and are ideal for debugging on the same machine.

Benefits:

  • ⚡ Lower latency (no TCP/IP stack overhead)

  • 🔒 Better security (file permissions instead of port binding)

  • 📦 Simpler setup (no port management)

  • 🚀 Faster communication for local debugging

MCP Configuration (Unix Socket):

{
  "mcpServers": {
    "xdebug": {
      "command": "xdebug-mcp",
      "env": {
        "XDEBUG_SOCKET_PATH": "/tmp/xdebug.sock",
        "LOG_LEVEL": "info"
      }
    }
  }
}

PHP/Xdebug Configuration:

[xdebug]
zend_extension=xdebug
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=unix:///tmp/xdebug.sock

Socket File Permissions:

The socket file is created with default permissions. To restrict access, you can:

# After MCP server starts
chmod 600 /tmp/xdebug.sock

# Or use a secure directory
mkdir -p ~/.xdebug && chmod 700 ~/.xdebug
# Then set XDEBUG_SOCKET_PATH=$HOME/.xdebug/xdebug.sock

Automatic Cleanup:

When XDEBUG_SOCKET_PATH is set, the server will:

  • Listen on the specified Unix socket instead of TCP port

  • Automatically clean up stale socket files on startup (prevents "address in use" errors)

  • Automatically clean up socket files on shutdown

  • Use the same debugging tools and features as TCP mode

When to Use Unix Sockets:

  • ✅ Local PHP development (best performance)

  • ✅ Same-machine debugging

  • ✅ High-frequency breakpoint hits

  • ❌ Remote debugging (use TCP instead)

Unix socket support requested in Issue #1 by @dkd-kaehm

Available MCP Tools (41 Total)

Session Management

Tool

Description

list_sessions

List all active debug sessions

get_session_state

Get detailed state of a session

set_active_session

Set which session is active

close_session

Close a debug session

Breakpoints

Tool

Description

set_breakpoint

Set a line or conditional breakpoint (supports pending breakpoints)

set_exception_breakpoint

Break on exceptions (supports pending breakpoints)

set_call_breakpoint

Break on function calls (supports pending breakpoints)

remove_breakpoint

Remove a breakpoint (works with pending breakpoints)

update_breakpoint

Enable/disable or modify a breakpoint

list_breakpoints

List all breakpoints including pending

Pending Breakpoints: You can set breakpoints before a debug session starts. These are stored as "pending breakpoints" and automatically applied when a PHP script connects with Xdebug. This is useful for setting up breakpoints before triggering a page load or script execution.

Execution Control

Tool

Description

continue

Continue to next breakpoint

step_into

Step into function calls

step_over

Step over (skip function internals)

step_out

Step out of current function

stop

Stop debugging

detach

Detach and let script continue

Inspection

Tool

Description

get_stack_trace

Get the call stack

get_contexts

Get available variable contexts

get_variables

Get all variables in scope

get_variable

Get a specific variable

set_variable

Set a variable's value

evaluate

Evaluate a PHP expression

get_source

Get source code

Watch Expressions

Tool

Description

add_watch

Add a persistent watch expression

remove_watch

Remove a watch expression

evaluate_watches

Evaluate all watches and detect changes

list_watches

List all active watches

Logpoints

Tool

Description

add_logpoint

Add a logpoint with message template

remove_logpoint

Remove a logpoint

get_logpoint_history

View log output and hit statistics

Profiling

Tool

Description

start_profiling

Start memory/time profiling

stop_profiling

Stop profiling and get results

get_profile_stats

Get current profiling statistics

get_memory_timeline

View memory usage over time

Code Coverage

Tool

Description

start_coverage

Start tracking code coverage

stop_coverage

Stop and get coverage report

get_coverage_report

View coverage statistics

Debug Profiles

Tool

Description

save_debug_profile

Save current configuration as a profile

load_debug_profile

Load a saved debug profile

list_debug_profiles

List all saved profiles

Additional Tools

Tool

Description

capture_request_context

Capture HTTP request context

add_step_filter

Add filter to skip files during stepping

list_step_filters

List step filter rules

get_function_history

View function call history

export_session

Export session as JSON/HTML report

capture_snapshot

Capture debug state snapshot

Usage Examples

Setting a Breakpoint

Use set_breakpoint with file="/var/www/html/index.php" and line=25

Conditional Breakpoint

Use set_breakpoint with file="/var/www/html/api.php", line=42, condition="$userId > 100"

Watch Expression

Use add_watch with expression="$user->email"
Use add_watch with expression="count($items)"

Logpoint

Use add_logpoint with file="/var/www/html/api.php", line=50, message="User {$userId} accessed {$endpoint}"

Inspecting Variables

Use get_variables to see all local variables
Use get_variable with name="$user" to inspect a specific variable
Use evaluate with expression="count($items)" to evaluate an expression

Capture Request Context

Use capture_request_context to see $_GET, $_POST, $_SESSION, cookies, and headers

Environment Variables

Variable

Default

Description

XDEBUG_PORT

9003

Port to listen for Xdebug connections (TCP mode)

XDEBUG_HOST

0.0.0.0

Host to bind (TCP mode)

XDEBUG_SOCKET_PATH

-

Unix domain socket path (e.g., /tmp/xdebug.sock). When set, uses Unix socket instead of TCP

COMMAND_TIMEOUT

30000

Command timeout in milliseconds

PATH_MAPPINGS

-

JSON object mapping container to host paths

MAX_DEPTH

3

Max depth for variable inspection

MAX_CHILDREN

128

Max children to return for arrays/objects

MAX_DATA

2048

Max data size per variable

LOG_LEVEL

info

Log level: debug, info, warn, error

Connection Modes: TCP vs Unix Socket

Feature

TCP

Unix Socket

Setup

Easy (default)

Simple (one env var)

Performance

Good

Excellent (lower latency)

Security

Port accessible to network

File-based permissions

Remote Debugging

✅ Supported

❌ Local only

Docker

✅ Works with host.docker.internal

❌ Requires volume mount

Stale Socket

Manual port cleanup

Auto-cleanup

Default

XDEBUG_PORT=9003

Disabled (use TCP)

Quick Decision Guide:

  • 🏠 Local development? → Use Unix socket for best performance

  • 🐳 Docker on same machine? → Use Unix socket with volume mount

  • 🌐 Remote server? → Use TCP

  • 🚀 Maximum speed? → Use Unix socket

  • 📝 Don't know? → Start with TCP (default), switch to Unix socket if needed

How It Works

  1. MCP Server starts and listens for Xdebug connections (TCP port 9003 or Unix socket)

  2. PHP script runs with Xdebug enabled

  3. Xdebug connects to the MCP server via DBGp protocol

  4. AI uses MCP tools to control debugging (set breakpoints, step, inspect)

  5. DBGp commands are sent to Xdebug, responses parsed and returned

┌─────────────┐     MCP/stdio      ┌─────────────┐   DBGp/TCP or    ┌─────────────┐
│   Claude    │ ◄────────────────► │  xdebug-mcp │ ◄─ Unix Socket ──► │   Xdebug    │
│  (AI Agent) │                    │   Server    │                   │  (in PHP)   │
└─────────────┘                    └─────────────┘                   └─────────────┘

Connection Options:

  • TCP (Default): xdebug.client_host=127.0.0.1 + XDEBUG_PORT=9003

  • Unix Socket: xdebug.client_host=unix:///tmp/xdebug.sock + XDEBUG_SOCKET_PATH=/tmp/xdebug.sock

Troubleshooting

No debug sessions appearing

  1. Check that Xdebug is installed: php -v should show Xdebug

  2. Verify Xdebug config: php -i | grep xdebug

  3. Ensure xdebug.client_host points to the MCP server

  4. For TCP: Check firewall allows connections on port 9003

  5. For Unix socket: Verify socket path exists and has correct permissions: ls -la /tmp/xdebug.sock

  6. Check MCP server logs: LOG_LEVEL=debug for verbose output

Connection issues with Docker

  1. For Linux, add extra_hosts: ["host.docker.internal:host-gateway"]

  2. Verify container can reach host: curl host.docker.internal:9003

  3. Check xdebug logs in container: docker logs <container-id> | grep xdebug

Unix socket issues

  1. "Address already in use": Socket file wasn't cleaned up

    • Remove manually: rm -f /tmp/xdebug.sock

    • MCP server will clean up automatically on next start

  2. "Permission denied": Check socket file permissions

    • List socket: ls -la /tmp/xdebug.sock

    • Run as same user as PHP: ps aux | grep php

  3. Socket path in php.ini:

    • Correct: xdebug.client_host=unix:///tmp/xdebug.sock

    • Wrong: xdebug.client_host=unix:/tmp/xdebug.sock (missing one /)

Breakpoints not hitting

  1. Ensure file paths match exactly (use container paths for Docker)

  2. Check breakpoint is resolved: list_breakpoints

  3. Verify script execution reaches that line

  4. Check that xdebug.start_with_request=yes is set

  5. Try a simple file to verify basic setup works

Performance issues

  1. If experiencing slow stepping, increase COMMAND_TIMEOUT:

    • Default: 30000ms (30 seconds)

    • Try: COMMAND_TIMEOUT=60000 for slower systems

  2. For Unix sockets, verify socket is on fast filesystem (not network mount)

  3. Check system load: top - excessive context switching slows debugging

Server won't start

  1. Port in use (TCP):

    • Find process: lsof -i :9003

    • Kill it: kill -9 <pid>

  2. Bad config:

    • Validate environment variables: echo $XDEBUG_SOCKET_PATH

    • Check for typos in path names

  3. Permission denied:

    • For Unix socket, ensure write permission to parent directory

    • Example: mkdir -p ~/.xdebug && chmod 700 ~/.xdebug

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT

Available Tools

46 tools
add_logpointC

Add a logpoint that logs messages without stopping execution. Use {varName} placeholders for variables.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesFile path
lineYesLine number
messageYesMessage template with {var} placeholders (e.g., 'User {$userId} logged in')
conditionNoOptional condition

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states that execution isn't stopped. It lacks details on permissions needed, whether logpoints persist across sessions, rate limits, or what happens when added (e.g., immediate activation). This is inadequate for a mutation tool with zero annotation coverage.

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 concise sentences with zero waste: the first states the purpose and key behavior, the second provides a critical usage tip for placeholders. It's front-loaded and efficiently structured.

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?

For a mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what 'add' entails (e.g., success/failure response, logpoint ID returned), prerequisites, or error conditions. Given the complexity of debugging operations and rich sibling tools, more context is needed.

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 schema fully documents all parameters. The description adds minimal value by mentioning placeholder syntax for the 'message' parameter, but doesn't clarify semantics beyond what the schema provides. Baseline 3 is appropriate when schema does the heavy lifting.

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 ('Add a logpoint') and its function ('logs messages without stopping execution'), distinguishing it from breakpoints that halt execution. However, it doesn't explicitly differentiate from sibling tools like 'set_breakpoint' or 'set_exception_breakpoint' beyond the non-stopping behavior.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'set_breakpoint' (which stops execution) or 'add_watch' (which monitors variables). It mentions the placeholder syntax but offers no context for tool selection among the many debugging siblings.

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

add_step_filterB

Add a step filter to skip certain files/directories during stepping (e.g., vendor code)

ParametersJSON Schema
NameRequiredDescriptionDefault
patternYesPattern to match (e.g., '/vendor/', '*.min.js', '/regex/')
typeYesinclude = step into, exclude = skip
descriptionNoDescription of the filter

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions the tool's effect ('skip certain files/directories') but lacks details on behavioral traits such as persistence (e.g., whether filters apply across sessions), permissions needed, error conditions, or rate limits. The example ('vendor code') adds some context but is insufficient for a mutation tool.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose and includes a helpful example. There is no wasted verbiage or redundancy, making it easy to parse quickly.

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?

For a mutation tool with no annotations and no output schema, the description is adequate but incomplete. It covers the basic purpose and parameters (via schema), but lacks details on behavioral aspects like side effects, return values, or error handling. Given the complexity of debugging tools, more context would be beneficial.

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 schema already documents all parameters (pattern, type, description) thoroughly. The description adds minimal value beyond the schema by hinting at use cases ('skip certain files/directories') but doesn't provide additional syntax, format details, or constraints. Baseline 3 is appropriate given high schema coverage.

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 ('Add a step filter') and purpose ('to skip certain files/directories during stepping'), with a concrete example ('vendor code'). It distinguishes from siblings like 'list_step_filters' by specifying creation rather than listing. However, it doesn't explicitly differentiate from other filter-related tools if any existed.

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

Usage Guidelines3/5

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

The description implies usage during stepping operations (e.g., debugging) to manage file/directory inclusion or exclusion, but doesn't explicitly state when to use this tool versus alternatives like 'set_breakpoint' or 'step_into'. No specific exclusions or prerequisites are mentioned.

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

add_watchA

Add a watch expression that will be evaluated on each break. Watch expressions persist across steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
expressionYesPHP expression to watch (e.g., '$user->id', 'count($items)')

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses key behavioral traits: the watch expression is evaluated on each break and persists across steps. However, it doesn't mention permission requirements, rate limits, error conditions, or what happens when multiple watches exist.

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

Conciseness5/5

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

The description is a single, well-structured sentence that efficiently conveys the essential information. Every word earns its place with no redundancy or unnecessary elaboration.

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?

For a single-parameter tool with no annotations and no output schema, the description provides adequate but minimal context. It explains what the tool does and key persistence behavior, but doesn't cover return values, error cases, or interaction with other debugging operations.

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% (the single parameter 'expression' is fully documented in the schema). The description adds no additional parameter information beyond what the schema provides, so 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 the tool's purpose with specific verb ('add') and resource ('watch expression'), and distinguishes it from siblings by specifying it persists across steps. It explicitly mentions 'on each break' which clarifies the triggering condition.

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

Usage Guidelines3/5

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

The description implies usage context ('on each break') but doesn't explicitly state when to use this tool versus alternatives like 'add_logpoint' or 'evaluate_watches'. No guidance on prerequisites or exclusions is provided.

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

capture_request_contextC

Capture the current HTTP request context ($_GET, $_POST, $_SESSION, $_COOKIE, headers)

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoSession ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states what data is captured but doesn't describe how the data is returned (e.g., format, structure), whether it's read-only or modifies state, potential side effects, or error conditions. This leaves significant gaps for a tool that interacts with session and request data.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part of the sentence directly contributes to understanding what the tool does, making it appropriately sized and well-structured.

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

Completeness2/5

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

Given the complexity of capturing HTTP request data and the lack of annotations and output schema, the description is incomplete. It doesn't explain the return format, how session_id relates to the capture, or behavioral aspects like permissions or data sensitivity. For a tool with no structured support, more detail is needed to be fully helpful.

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 1 parameter with 100% description coverage ('Session ID'), and the tool description adds no additional parameter information. Since schema coverage is high, the baseline score is 3. The description doesn't compensate or provide extra context about the parameter's role in capturing request context.

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 ('capture') and the resource ('current HTTP request context'), specifying exactly what data is collected ($_GET, $_POST, $_SESSION, $_COOKIE, headers). It distinguishes itself from siblings by focusing on HTTP request data rather than debugging operations like breakpoints or variable inspection, though it doesn't explicitly name alternatives.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an active session), exclusions, or related tools like 'get_contexts' or 'capture_snapshot' that might overlap in functionality. Usage is implied only by the tool's name and description.

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

capture_snapshotC

Capture a snapshot of the current debug state for the export report

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoSession ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions capturing a snapshot but fails to explain what this entails—e.g., whether it's a read-only operation, if it affects the debug session, what the output format is, or any side effects. This leaves significant gaps for an agent to understand the tool's behavior.

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 directly states the tool's purpose without unnecessary words. It is front-loaded and efficient, making it easy for an agent to parse quickly.

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?

For a tool with no annotations and no output schema, the description is incomplete. It does not explain what the snapshot contains, how it relates to 'export report', or the expected return values, leaving the agent with insufficient information to use the tool effectively in a complex debugging environment.

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% description coverage, with the single parameter 'session_id' documented as 'Session ID'. The description does not add any meaning beyond this, such as clarifying the session's context or format. Given the high schema coverage, a baseline score of 3 is appropriate, as the schema handles the parameter documentation adequately.

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 ('capture a snapshot') and the target ('current debug state for the export report'), which is specific and actionable. However, it does not explicitly differentiate from sibling tools like 'export_session' or 'get_session_state', which might have overlapping purposes in debugging contexts, so it falls short of a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as 'export_session' or 'get_session_state', nor does it mention prerequisites or exclusions. It lacks context for decision-making in a server with many debugging-related tools.

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

close_sessionC

Close and terminate a debug session

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoSession ID to close (uses active session if not specified)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. 'Close and terminate' implies a destructive operation that ends a session, but it doesn't specify whether this is reversible, what happens to session data, or if permissions are required. This leaves significant behavioral gaps for a mutation tool.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action and resource, making it immediately scannable and appropriately sized for a simple tool.

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?

For a destructive tool with no annotations and no output schema, the description is insufficient. It doesn't cover behavioral aspects like side effects, return values, or error conditions. Given the complexity of debug session management and rich sibling tools, more context is needed for safe and effective 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 description coverage is 100%, so the schema fully documents the optional 'session_id' parameter. The description adds no additional parameter context beyond what's in the schema, such as explaining what an 'active session' means or format requirements. This meets the baseline for high schema coverage.

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 ('close and terminate') and resource ('a debug session'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'detach' or 'stop' which might have similar session-related functions, preventing a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'detach' or 'stop' from the sibling list. It doesn't mention prerequisites, consequences, or typical scenarios for closing a session, leaving the agent with minimal contextual direction.

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

continueB

Continue script execution until the next breakpoint or end of script

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoSession ID

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions execution until a breakpoint or script end, but lacks details on permissions, side effects, error handling, or what happens if no breakpoints exist. For a tool that controls script execution, this is a significant gap in transparency.

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 with no wasted words, efficiently conveying the core functionality. It is appropriately sized and front-loaded, making it easy to understand at a glance.

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

Completeness2/5

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

Given the complexity of a debugging tool with no annotations and no output schema, the description is insufficient. It doesn't explain return values, error conditions, or behavioral nuances like interaction with breakpoints, leaving the agent with incomplete context for safe and effective 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?

The input schema has 100% description coverage, with the single parameter 'session_id' documented in the schema. The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline of 3 without compensating for any gaps.

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 ('Continue script execution') and the scope ('until the next breakpoint or end of script'), which is specific and distinguishes it from stepping tools like step_into or step_over. However, it doesn't explicitly differentiate from sibling tools like 'stop' or 'detach' in terms of execution flow, keeping it at a 4 rather than a 5.

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

Usage Guidelines3/5

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

The description implies usage during debugging sessions to resume execution, but it doesn't provide explicit guidance on when to use this versus alternatives like stepping tools or stopping. No prerequisites or exclusions are mentioned, leaving usage context somewhat vague.

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

detachB

Detach from the debug session and let the script continue running without debugging

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoSession ID

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool detaches from the debug session and lets the script continue, implying it's a non-destructive operation that doesn't terminate the session entirely. However, it lacks details on permissions, side effects, or what happens to the session after detachment, leaving gaps for a mutation tool.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It is front-loaded with the core action and outcome, making it easy to understand quickly.

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 parameter with full schema coverage and no output schema, the description is minimal but covers the basic purpose. However, as a mutation tool with no annotations, it should provide more behavioral context (e.g., effects on the session, error conditions) to be fully complete for agent use.

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 1 parameter with 100% description coverage ('session_id' is documented), so the baseline is 3. The description doesn't add specific parameter details beyond the schema, but it implies the tool operates on a debug session, which aligns with the parameter. Since there's only one parameter, the description adequately supports it without redundancy.

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 ('detach') and the resource ('debug session'), specifying that it allows the script to continue running without debugging. However, it doesn't explicitly differentiate from sibling tools like 'close_session' or 'stop', which might have overlapping purposes in ending debugging sessions.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as 'close_session' or 'stop', nor does it mention prerequisites like needing an active debug session. It only describes what the tool does, not when it should be applied.

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

evaluateA

Evaluate a PHP expression in the current context. Returns the result of the expression. Use for calculations, method calls, or inspecting computed values.

ParametersJSON Schema
NameRequiredDescriptionDefault
expressionYesPHP expression to evaluate (e.g., '$x + $y', 'count($array)', '$user->getName()', 'array_keys($data)')
stack_depthNoStack frame depth
session_idNoSession ID

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions the tool 'returns the result', it lacks critical details: whether this is a read-only operation (though implied by 'evaluate'), what happens with errors (e.g., syntax errors in expression), security implications of evaluating arbitrary PHP code, or performance characteristics. The description provides basic intent but insufficient operational context.

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

Conciseness5/5

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

The description is perfectly concise with three sentences that each earn their place: first states the core action, second specifies the return, third provides usage guidance. No wasted words, and the most important information ('evaluate a PHP expression') comes first.

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?

For a tool with 3 parameters, no annotations, and no output schema, the description is adequate but incomplete. It covers the basic purpose and usage but lacks important behavioral context (error handling, security implications, performance). Given the complexity of evaluating arbitrary PHP code, more disclosure about limitations or risks would be beneficial.

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 schema already fully documents all three parameters. The description adds no additional parameter information beyond what's in the schema (e.g., it doesn't explain the practical meaning of 'stack_depth' or 'session_id' in the evaluation context). This meets the baseline expectation when schema coverage is complete.

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

Purpose5/5

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

The description clearly states the specific action ('evaluate a PHP expression'), resource ('in the current context'), and outcome ('returns the result'). It distinguishes from siblings like 'get_variable' (which retrieves specific variables) or 'set_variable' (which modifies variables) by focusing on dynamic expression evaluation.

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 provides clear context for when to use this tool ('for calculations, method calls, or inspecting computed values'), which helps differentiate it from tools like 'get_variable' (for direct variable access). However, it doesn't explicitly state when NOT to use it or mention specific alternatives by name.

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

evaluate_watchesC

Evaluate all watch expressions and return their current values

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoSession ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states the basic action without disclosing behavioral traits. It doesn't cover whether this is read-only, if it requires specific permissions, potential side effects, or how it interacts with session state, which is critical for a debugging tool.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core action and outcome with zero wasted words, making it easy to parse and understand quickly.

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

Completeness2/5

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

Given the complexity of debugging tools and lack of annotations or output schema, the description is insufficient. It doesn't explain what 'watch expressions' are, how results are returned, or error conditions, leaving gaps for an agent to operate effectively in this context.

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

Parameters3/5

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

The schema description coverage is 100%, with the single parameter 'session_id' documented in the schema. The description adds no additional meaning beyond implying evaluation occurs within a session context, so it meets the baseline for high schema coverage without compensating further.

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 ('evaluate') and resource ('all watch expressions'), specifying it returns their current values. It distinguishes from siblings like 'add_watch' or 'remove_watch' by focusing on evaluation rather than modification, though it doesn't explicitly differentiate from 'evaluate' (a sibling tool) which might handle broader expressions.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites like needing an active session or how it relates to siblings such as 'evaluate' or 'list_watches', leaving the agent to infer usage from context alone.

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

export_sessionC

Export the current debug session as a report

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoExport formatjson
session_idNoSession ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Export') but doesn't clarify if this is a read-only operation, what permissions are required, whether it modifies the session, or details about the output (e.g., file generation, format specifics). This leaves significant gaps for a tool that likely creates files or data.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's front-loaded and wastes no space, making it highly concise and well-structured.

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

Completeness2/5

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

Given the complexity of an export operation with no annotations and no output schema, the description is incomplete. It doesn't explain what the exported report contains, how it's delivered (e.g., file download, data return), or behavioral aspects like side effects. This is inadequate for a tool that likely produces significant 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 input schema has 100% description coverage, clearly documenting both parameters with enums and defaults. The description adds no additional semantic context beyond implying 'session_id' refers to the current session, but this is minimal value. Baseline 3 is appropriate as the schema does the heavy lifting.

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 ('Export') and resource ('current debug session as a report'), making the purpose evident. However, it doesn't explicitly differentiate from sibling tools like 'get_coverage_report' or 'get_profile_stats', which might also produce reports, so it lacks sibling differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as other report-generating siblings. It doesn't mention prerequisites like needing an active session or specify contexts where exporting is appropriate, leaving usage unclear.

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

get_contextsB

Get available variable contexts (Local, Superglobals, User-defined constants) at the current position

ParametersJSON Schema
NameRequiredDescriptionDefault
stack_depthNoStack frame depth (0 = current frame)
session_idNoSession ID

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions 'at the current position' which adds some context about scope, but fails to disclose critical behavioral traits like whether this is a read-only operation, if it requires an active debugging session, what the output format looks like, or any rate limits. For a tool with no annotation coverage, this is insufficient.

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, efficient sentence that front-loads the core purpose without unnecessary words. Every part earns its place by specifying what is retrieved and the scope, making it easy to parse quickly.

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

Completeness2/5

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

Given the complexity of debugging tools and no annotations or output schema, the description is incomplete. It lacks details on behavioral aspects like permissions, session requirements, return format, and error handling. For a tool in this context, more information is needed to ensure proper agent usage.

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 schema already documents both parameters (stack_depth and session_id) with descriptions. The description doesn't add any parameter-specific information beyond what's in the schema, such as explaining how 'current position' relates to stack_depth or session_id. Baseline 3 is appropriate when schema does the heavy lifting.

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 verb 'Get' and the resource 'available variable contexts', specifying three types: Local, Superglobals, and User-defined constants. It distinguishes from siblings like get_variable (single variable) and get_variables (multiple variables) by focusing on contexts at the current position, though it doesn't explicitly name these alternatives.

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

Usage Guidelines3/5

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

The description implies usage when needing variable contexts at the current position, such as during debugging sessions. However, it doesn't provide explicit guidance on when to use this tool versus alternatives like get_variable or get_variables, nor does it mention prerequisites or exclusions.

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

get_coverage_reportB

Get the current code coverage report

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it 'gets' a report, implying a read operation, but doesn't specify what the report contains, its format, whether it's real-time or cached, or any error conditions. This is a significant gap for a tool with zero annotation coverage.

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, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the coverage report includes, how it's structured, or potential limitations. For a tool in a complex debugging context, this leaves too much unspecified for effective use.

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 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter information, but that's appropriate here. A baseline of 4 is applied since the schema fully handles parameters, and the description doesn't need to compensate.

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 verb 'Get' and the resource 'current code coverage report', making the purpose understandable. However, it doesn't distinguish this tool from siblings like 'start_coverage' or 'stop_coverage' that also relate to coverage functionality, so it falls short of a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. In a server with many debugging tools, there's no indication of prerequisites (e.g., whether coverage must be started first) or how it differs from other coverage-related tools, leaving usage unclear.

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

get_function_historyC

Get the history of function calls made during debugging

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum entries
searchNoSearch query to filter

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states what the tool does without behavioral details. It doesn't disclose if this is read-only, has side effects, rate limits, authentication needs, or return format (e.g., list structure, timestamps). For a tool with zero annotation coverage, this is insufficient transparency.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and appropriately sized for its function, with no wasted content.

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

Completeness2/5

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

Given no annotations, no output schema, and a debugging context with many sibling tools, the description is incomplete. It doesn't explain return values, error conditions, or how it fits into debugging workflows, leaving significant gaps for an AI agent to understand its full 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 description coverage is 100%, so the schema fully documents the 'limit' and 'search' parameters. The description adds no parameter-specific information beyond implying historical data retrieval, which doesn't enhance the schema's details. Baseline 3 is appropriate as the schema handles parameter semantics adequately.

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') and resource ('history of function calls made during debugging'), making the purpose understandable. However, it doesn't differentiate from sibling tools like get_logpoint_history or get_contexts, which also retrieve historical debugging data, so it doesn't reach the highest clarity level.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like get_logpoint_history or get_contexts. It lacks context about debugging scenarios where function call history is needed, prerequisites, or exclusions, offering minimal usage direction.

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

get_logpoint_historyC

Get the log output history from logpoints

ParametersJSON Schema
NameRequiredDescriptionDefault
logpoint_idNoSpecific logpoint ID (all if not specified)
limitNoMaximum entries to return

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states it retrieves history but doesn't mention whether this requires specific permissions, what format the output takes, if there are rate limits, or how the 'limit' parameter interacts with pagination. For a read operation with zero annotation coverage, this leaves significant gaps.

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, efficient sentence that directly states the tool's purpose without any wasted words. It's appropriately sized and front-loaded, making it easy to parse quickly.

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

Completeness2/5

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

Given the tool has no annotations, no output schema, and operates in a complex debugging context with many sibling tools, the description is insufficient. It doesn't explain what 'log output history' entails, how results are structured, or provide any behavioral context needed for effective use in this environment.

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% description coverage, with clear documentation for both parameters ('logpoint_id' and 'limit'). The description adds no additional parameter semantics beyond what's already in the schema, so it meets the baseline of 3 for high schema coverage without compensating value.

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') and resource ('log output history from logpoints'), making the purpose immediately understandable. However, it doesn't differentiate from potential sibling tools like 'get_function_history' or 'get_contexts' that also retrieve history data, so it lacks explicit sibling distinction.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With many sibling tools available (like 'get_function_history' or 'get_contexts'), there's no indication of when this specific history retrieval is appropriate, nor any mention of prerequisites or exclusions.

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

get_memory_timelineB

Get memory usage timeline from profiling

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states it 'gets' data, implying a read operation, but doesn't disclose behavioral traits like whether it requires an active profiling session, has rate limits, returns real-time or historical data, or what format the timeline is in. This is inadequate for a tool with no annotation coverage.

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, efficient sentence with no wasted words. It's appropriately sized and front-loaded, clearly stating the core purpose without unnecessary elaboration.

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

Completeness2/5

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

Given no annotations, no output schema, and a simple input schema, the description is incomplete. It doesn't explain what the memory usage timeline includes (e.g., time range, metrics), how it's formatted, or prerequisites like needing profiling to be active. For a tool in a debugging/profiling context, this leaves significant gaps.

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 tool has 0 parameters, and schema description coverage is 100%, so there's no need for parameter details in the description. The baseline for 0 parameters is 4, as the description doesn't need to compensate for any gaps, but it doesn't add extra value beyond the schema.

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 verb 'Get' and resource 'memory usage timeline from profiling', making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_profile_stats' or 'get_function_history', which also retrieve profiling-related data, so it lacks sibling distinction.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. With siblings like 'get_profile_stats' and 'get_function_history', the description doesn't explain what makes this tool unique or when it's appropriate, leaving usage unclear.

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

get_profile_statsC

Get current profiling statistics

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states this is a 'get' operation, implying read-only behavior, but doesn't disclose any behavioral traits such as whether it requires an active profiling session, what format the statistics are returned in, or if there are any rate limits. This leaves significant gaps for a tool that likely interacts with profiling state.

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, efficient sentence with no wasted words. It's front-loaded with the core purpose ('Get current profiling statistics'), making it easy to parse. Every word earns its place by conveying essential information without redundancy.

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

Completeness2/5

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

Given the complexity implied by profiling tools and the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'profiling statistics' entail, how they relate to other tools like 'start_profiling', or what the return format is. For a tool in a debugging/profiling context with many siblings, this minimal description leaves too much unspecified.

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 0 parameters with 100% coverage, so there are no parameters to document. The description doesn't need to add parameter semantics, and it correctly doesn't mention any. A baseline of 4 is appropriate as it avoids misleading parameter information.

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

Purpose3/5

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

The description 'Get current profiling statistics' clearly states the action (get) and resource (profiling statistics), but it's vague about what specific statistics are retrieved and doesn't differentiate from sibling tools like 'get_coverage_report' or 'get_function_history' which also retrieve profiling-related data. It's better than a tautology but lacks specificity.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_coverage_report' and 'get_function_history' that might overlap in profiling contexts, there's no indication of when this tool is appropriate or what distinguishes it from other data-retrieval tools in the set.

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

get_session_stateC

Get detailed state of a specific debug session including current position and status

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoSession ID (uses active session if not specified)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions retrieving 'detailed state' but doesn't disclose behavioral traits such as whether this requires active session permissions, if it's read-only (implied by 'Get'), what happens if the session_id is invalid, or if there are rate limits. For a debug tool with potential side effects, this is insufficient transparency.

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, efficient sentence that front-loads the core purpose ('Get detailed state of a specific debug session') and adds clarifying details ('including current position and status'). There's no wasted verbiage, making it highly concise and well-structured for quick understanding.

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

Completeness2/5

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

Given the complexity of debug sessions and the lack of annotations or output schema, the description is incomplete. It doesn't explain what 'detailed state' entails, how it differs from other get_* tools, or what the return format looks like. For a tool in a rich debug environment with many siblings, more context is needed to guide effective 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 description coverage is 100%, with the parameter 'session_id' documented as optional and defaulting to the active session. The description adds minimal value beyond the schema by implying the tool fetches 'detailed state', but doesn't elaborate on parameter semantics like format or constraints. Baseline 3 is appropriate given high schema coverage.

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 verb ('Get') and resource ('detailed state of a specific debug session'), specifying the scope includes 'current position and status'. It distinguishes from siblings like 'list_sessions' (which lists sessions) or 'get_stack_trace' (which focuses on stack), but doesn't explicitly differentiate from all similar tools like 'get_contexts' or 'get_variables', keeping it at 4 rather than 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With many sibling tools like 'get_contexts', 'get_stack_trace', and 'get_variables' that retrieve specific debug session data, there's no indication of when 'get_session_state' is preferred or what unique information it provides compared to others. This lack of context leaves usage unclear.

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

get_sourceC

Get the source code of a file or a specific line range

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesFile path to get source from
begin_lineNoStarting line number
end_lineNoEnding line number
session_idNoSession ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Get' implies a read operation, the description doesn't specify whether this requires an active debugging session, what permissions are needed, whether it can retrieve source from remote files, or what happens with invalid file paths. For a tool with 4 parameters and no annotation coverage, this is insufficient.

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 at just 10 words, front-loaded with the core purpose, and contains zero wasted words. Every element of the description contributes directly to understanding the tool's function.

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?

For a tool with 4 parameters, no annotations, no output schema, and operating in a complex debugging context with many sibling tools, the description is inadequate. It doesn't explain the relationship to sessions, what format the source code returns in, error conditions, or how it integrates with the debugging workflow represented by sibling tools.

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 schema already documents all parameters. The description mentions 'file' and 'specific line range' which aligns with the 'file', 'begin_line', and 'end_line' parameters, but doesn't add meaningful semantics beyond what the schema provides. The 'session_id' parameter's purpose remains unclear from both schema and description.

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 with a specific verb ('Get') and resource ('source code of a file or a specific line range'). It distinguishes from many sibling tools that perform debugging operations like breakpoints or profiling, but doesn't explicitly differentiate from potential similar read operations like 'get_variable' or 'get_contexts'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With many sibling tools available for debugging operations, there's no indication of whether this is for source code inspection during debugging, for standalone file reading, or how it relates to tools like 'get_variables' or 'get_contexts'.

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

get_stack_traceC

Get the current call stack showing all function calls leading to the current position

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoSession ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions what the tool does but lacks behavioral details like whether it requires an active debugging session, how it handles errors, or the format of the returned stack trace. This is a significant gap for a tool with potential runtime implications.

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, efficient sentence that front-loads the core purpose without unnecessary words. Every part earns its place by specifying the action and resource clearly, making it easy to parse quickly.

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

Completeness2/5

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

Given the complexity of debugging tools and lack of annotations or output schema, the description is incomplete. It doesn't explain return values, error conditions, or dependencies like needing an active session, leaving gaps for the agent to operate effectively in this context.

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%, with the single parameter 'session_id' documented in the schema. The description adds no additional parameter information beyond implying context about 'current position', which doesn't clarify the parameter's role. Baseline 3 is appropriate as the schema handles parameter documentation adequately.

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 with a specific verb ('Get') and resource ('current call stack'), explaining it shows function calls leading to the current position. It distinguishes from siblings like get_function_history or get_session_state by focusing on immediate stack trace, though not explicitly contrasting 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 alternatives such as get_function_history or get_contexts. The description implies usage during debugging but lacks explicit context, prerequisites, or exclusions, leaving the agent to infer based on tool name alone.

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

get_variableC

Get a specific variable by name, including nested properties. Use PHP syntax for nested access (e.g., '$user->name', '$array[0]', '$obj->items[2]->value')

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesVariable name with $ prefix (e.g., '$user', '$data["key"]', '$obj->property')
context_idNoContext ID
stack_depthNoStack frame depth
max_depthNoMaximum depth for nested properties
session_idNoSession ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions 'including nested properties' and PHP syntax, which adds some behavioral context, but fails to disclose critical traits: it doesn't specify if this is a read-only operation, what permissions are required, how errors are handled (e.g., if the variable doesn't exist), or the return format. For a tool with 5 parameters and no annotation coverage, this is a significant gap.

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 concise and front-loaded, stating the core purpose in the first clause. The second sentence provides necessary technical detail (PHP syntax) without redundancy. It avoids fluff and wastes no words, though it could be slightly more structured by separating usage notes from syntax examples.

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

Completeness2/5

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

Given the complexity (5 parameters, no annotations, no output schema), the description is incomplete. It lacks information on behavioral aspects like error handling, return values, and interaction with sibling tools. While the schema covers parameters well, the description doesn't compensate for missing annotation and output schema context, making it inadequate for a tool in a debugging environment.

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 schema already documents all parameters thoroughly. The description adds minimal value beyond the schema: it implies the 'name' parameter supports PHP syntax for nested access, which is partially covered in the schema's description ('Variable name with $ prefix...'). However, it doesn't explain the semantics of other parameters like 'context_id' or 'stack_depth', leaving the schema to do the heavy lifting.

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: 'Get a specific variable by name, including nested properties.' It specifies the verb 'Get' and resource 'variable', and distinguishes it from sibling tools like 'get_variables' (plural) by focusing on a single variable. However, it doesn't explicitly differentiate from other variable-related tools like 'evaluate' or 'set_variable' beyond the 'get' action.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It mentions PHP syntax for nested access, which is a technical detail, but doesn't indicate scenarios where this tool is preferred over siblings like 'get_variables' (for listing) or 'evaluate' (for evaluating expressions). There's no mention of prerequisites, such as needing an active debugging session.

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

get_variablesB

Get all variables at the current execution point. Use context_id to switch between local variables, superglobals, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
context_idNoContext ID: 0=Local variables, 1=Superglobals, 2=User constants
stack_depthNoStack frame depth (0 = current frame)
session_idNoSession ID

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions the tool retrieves variables but doesn't disclose behavioral traits such as whether it's read-only, what permissions are needed, how it handles errors, or the format of the returned data. The description adds minimal context beyond the basic action.

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 concise sentences that are front-loaded with the main purpose and followed by parameter guidance. Every sentence earns its place with no wasted words, making it efficient and easy to parse.

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 no annotations and no output schema, the description is incomplete for a tool with 3 parameters that likely returns complex variable data. It covers the basic action and parameter hints but lacks details on return values, error handling, or operational constraints, which are important for a debugging-related tool in this sibling set.

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 schema fully documents the parameters (context_id, stack_depth, session_id). The description adds some meaning by explaining context_id usage ('to switch between local variables, superglobals, etc.'), but doesn't provide additional semantics beyond what the schema already covers. Baseline 3 is appropriate given high schema coverage.

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 all variables') and the scope ('at the current execution point'), which is specific and actionable. However, it doesn't explicitly differentiate from its sibling 'get_variable' (singular), which appears to retrieve a specific variable rather than all variables.

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 some usage context by mentioning 'Use context_id to switch between local variables, superglobals, etc.', which implies when to adjust parameters. However, it lacks explicit guidance on when to use this tool versus alternatives like 'get_variable' or 'get_contexts', and doesn't mention prerequisites or exclusions.

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

list_breakpointsB

List all breakpoints including both active session breakpoints and pending breakpoints

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoSession ID
include_pendingNoInclude pending breakpoints in the list

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions the scope of breakpoints (active and pending) but doesn't disclose behavioral traits such as permissions needed, rate limits, pagination, or response format. For a read operation with no annotation coverage, this is a significant gap.

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, efficient sentence with zero waste. It's front-loaded with the core purpose and includes necessary scope details without redundancy.

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 no annotations, no output schema, and 2 parameters with full schema coverage, the description is minimally adequate. It covers the tool's purpose but lacks behavioral context and usage guidance, making it incomplete for optimal agent operation.

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 schema already documents both parameters. The description implies filtering by session (via 'active session breakpoints') and inclusion of pending breakpoints, but doesn't add syntax or format details beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.

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 verb 'List' and resource 'breakpoints', specifying it includes both 'active session breakpoints and pending breakpoints'. It distinguishes from siblings like 'list_sessions' or 'list_watches' by focusing on breakpoints, though it doesn't explicitly contrast with similar tools like 'get_session_state' or 'get_stack_trace'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites, timing, or comparison to other breakpoint-related tools like 'set_breakpoint', 'update_breakpoint', or 'remove_breakpoint', leaving usage context implied.

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

list_debug_profilesB

List all saved debug profiles

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states it's a list operation, implying read-only behavior, but doesn't disclose any behavioral traits such as pagination, sorting, error conditions, or what 'saved' means in context. This leaves significant gaps for an agent.

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 with no wasted words. It's front-loaded with the core action and resource, making it efficient and easy to parse.

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's low complexity (0 parameters, no output schema) and lack of annotations, the description is minimally adequate. It states what the tool does but lacks details on behavior, output format, or context, which could be improved for completeness.

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

Parameters4/5

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

With 0 parameters and 100% schema description coverage, the baseline is high. The description doesn't need to add parameter details, and it correctly implies no inputs are required, which aligns with the schema.

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 ('List') and resource ('all saved debug profiles'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'list_breakpoints' or 'list_sessions' beyond the resource name, so it's not fully distinctive.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. For example, it doesn't mention if this is for retrieving stored profiles versus active ones, or how it relates to 'load_debug_profile' or 'save_debug_profile'.

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

list_sessionsA

List all active PHP debug sessions with their current state

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions 'active' sessions and 'current state', but lacks details on permissions, rate limits, response format, or whether it's real-time vs cached. For a tool with zero annotation coverage, this is insufficient behavioral disclosure.

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

Conciseness5/5

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

Single sentence, front-loaded with the core purpose, zero wasted words. Every word earns its place by specifying resource type, state, and scope.

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

Completeness3/5

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

Given 0 parameters and no output schema, the description adequately covers the basic purpose. However, for a tool with no annotations, it should provide more behavioral context (e.g., response format, permissions). The complexity is low, but completeness is moderate.

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

Parameters4/5

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

With 0 parameters and 100% schema coverage, the baseline is 4. The description adds no parameter information, which is appropriate since there are no parameters to document.

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 ('List') and resource ('all active PHP debug sessions'), specifying the scope with 'active' and 'with their current state'. It distinguishes from siblings like 'get_session_state' (single session) and 'list_debug_profiles' (different resource).

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

Usage Guidelines3/5

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

The description implies usage for viewing active sessions, but provides no explicit guidance on when to use this versus alternatives like 'get_session_state' or 'list_debug_profiles'. No exclusions or prerequisites are mentioned.

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

list_step_filtersB

List all step filter rules

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. 'List all step filter rules' implies a read-only operation but doesn't specify whether this requires active sessions, returns paginated results, or has any side effects. For a tool with zero annotation coverage, this leaves significant behavioral gaps.

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, efficient sentence that states exactly what the tool does with zero wasted words. It's appropriately sized for a simple listing tool and front-loads the essential information.

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's simplicity (zero parameters, no output schema, no annotations), the description is minimally adequate. However, it doesn't explain what 'step filter rules' are in this debugging context or what format the listing returns, leaving some contextual gaps that could help an agent 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 tool has zero parameters, and schema description coverage is 100% (though trivial since there are no parameters). The description appropriately doesn't discuss parameters since none exist, earning a baseline 4 for parameter semantics in this case.

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 verb ('List') and resource ('step filter rules') with the qualifier 'all', providing a specific purpose. However, it doesn't distinguish this tool from other list_* siblings like list_breakpoints or list_watches, which would require explicit differentiation to earn a 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With siblings like list_breakpoints and list_watches that likely serve similar listing functions in different contexts, the absence of any comparative context leaves the agent without usage direction.

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

list_watchesB

List all active watch expressions

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions 'active watch expressions' but doesn't clarify what 'active' means, whether this is a read-only operation, if it requires a session context, or what the output format might be. This leaves significant behavioral gaps for a tool in a debugging environment.

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, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly.

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

Completeness2/5

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

Given the complexity of debugging tools and the lack of annotations or output schema, the description is insufficient. It doesn't explain what 'active' entails, how results are returned, or dependencies on session state, leaving the agent with incomplete context for proper use.

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

Parameters4/5

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

With 0 parameters and 100% schema description coverage, the baseline is 4. The description doesn't need to explain parameters, and it appropriately doesn't mention any, which is correct for this tool.

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 verb 'List' and the resource 'all active watch expressions', making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'evaluate_watches' or 'get_variables', which might have overlapping functionality in a debugging context.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'evaluate_watches' or 'get_variables'. The description only states what it does, not when it's appropriate or what prerequisites might exist.

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

load_debug_profileC

Load a saved debug profile

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProfile name to load

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states the action ('Load') but doesn't disclose behavioral traits such as what 'loading' does (e.g., applies settings, activates a session, requires specific permissions), whether it's read-only or mutative, or what happens on success/failure. This leaves critical operational details unclear.

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, efficient sentence with zero wasted words. It's front-loaded and appropriately sized for the tool's apparent simplicity, making it easy to parse quickly.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'loading' entails behaviorally, what the tool returns, or how it interacts with the debugging context (e.g., sessions, profiles). For a tool in a complex debugging environment with many siblings, this lacks necessary context.

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%, with the single parameter 'name' documented as 'Profile name to load'. The description doesn't add any meaning beyond this, such as format examples or constraints. With high schema coverage, the baseline is 3, as the schema adequately handles parameter documentation.

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

Purpose3/5

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

The description 'Load a saved debug profile' clearly states the verb ('Load') and resource ('saved debug profile'), but it's somewhat vague about what 'loading' entails operationally. It distinguishes from obvious siblings like 'save_debug_profile' but doesn't clarify differences from other session/profile tools like 'get_session_state' or 'list_debug_profiles'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing saved profile), exclusions, or relationships to sibling tools like 'list_debug_profiles' (which might be needed first) or 'save_debug_profile' (which creates profiles).

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

remove_breakpointA

Remove a breakpoint by its ID. Works for both active session breakpoints and pending breakpoints.

ParametersJSON Schema
NameRequiredDescriptionDefault
breakpoint_idYesThe breakpoint ID to remove (session breakpoint ID or pending_* ID)
session_idNoSession ID

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states the tool removes breakpoints, implying a destructive mutation, but does not disclose behavioral traits such as permissions required, whether removal is reversible, error handling, or side effects. This is a significant gap for a mutation tool with zero annotation coverage.

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 with zero waste: the first states the core action, and the second adds crucial scope information. It is front-loaded and appropriately sized, with every sentence earning its place by enhancing clarity without redundancy.

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's complexity (a mutation with 2 parameters), lack of annotations, and no output schema, the description is incomplete. It covers purpose and scope well but misses behavioral details like effects, errors, or return values, leaving gaps for safe and effective use by an AI agent.

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 schema already documents both parameters ('breakpoint_id' and 'session_id') fully. The description adds no additional meaning beyond what the schema provides, such as clarifying parameter interactions or usage examples, meeting the baseline for high schema coverage.

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 specific action ('Remove') and target resource ('breakpoint by its ID'), distinguishing it from sibling tools like 'list_breakpoints' or 'update_breakpoint'. It also specifies scope ('both active session breakpoints and pending breakpoints'), making the purpose unambiguous and differentiated.

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

Usage Guidelines3/5

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

The description implies usage when a breakpoint needs removal, but provides no explicit guidance on when to use this tool versus alternatives like 'remove_logpoint' or 'remove_watch', nor does it mention prerequisites or exclusions. The context is clear but lacks comparative or conditional advice.

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

remove_logpointC

Remove a logpoint

ParametersJSON Schema
NameRequiredDescriptionDefault
logpoint_idYesLogpoint ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Remove' implies a destructive mutation, but the description doesn't specify whether this requires specific permissions, if the removal is reversible, what happens to associated data, or any side effects. It lacks details on error conditions, rate limits, or response format.

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, efficient sentence with no wasted words. It's front-loaded and appropriately sized for a simple tool, making it easy to parse quickly.

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

Completeness2/5

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

Given the complexity of a destructive operation with no annotations and no output schema, the description is incomplete. It fails to explain what a logpoint is, the consequences of removal, or what the tool returns, leaving significant gaps for an AI agent to understand and use it correctly in context with sibling tools.

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 1 parameter with 100% description coverage ('Logpoint ID'), so the schema fully documents the parameter. The description doesn't add any parameter-specific information beyond implying a logpoint_id is needed, which aligns with the schema. With 0 parameters, this would score 4, but here it's slightly lower as the description doesn't enhance the schema's details.

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

Purpose3/5

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

The description 'Remove a logpoint' states the action (remove) and resource (logpoint), providing a basic purpose. However, it's vague about what a logpoint is and doesn't differentiate from sibling tools like 'remove_breakpoint' or 'remove_watch', which perform similar removal operations on different debugging entities.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing logpoint), exclusions, or contextual cues for selection among sibling removal tools like 'remove_breakpoint' or 'remove_watch'.

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

remove_watchC

Remove a watch expression

ParametersJSON Schema
NameRequiredDescriptionDefault
watch_idYesWatch ID to remove

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Remove' implies a destructive mutation, but the description doesn't specify whether this action is reversible, what permissions are required, or what happens to associated resources. It also doesn't describe the response format or error conditions, leaving significant behavioral gaps.

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, efficient sentence with zero wasted words. It's front-loaded with the core action and resource, making it immediately scannable. Every word earns its place, achieving optimal conciseness for a simple tool.

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

Completeness2/5

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

Given that this is a destructive mutation tool with no annotations and no output schema, the description is incomplete. It doesn't address behavioral aspects like side effects, error handling, or response format. While the purpose is clear, the lack of context for a mutation operation creates significant gaps for an AI agent.

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%, with the single parameter 'watch_id' clearly documented in the schema. The description adds no additional parameter semantics beyond what's already in the schema. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no parameter info in the description.

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 'Remove a watch expression' clearly states the action (remove) and resource (watch expression), making the tool's purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'remove_breakpoint' or 'remove_logpoint', but the specificity of 'watch expression' provides inherent distinction. This is clear but lacks explicit sibling differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing watch), exclusions, or relationships with sibling tools like 'list_watches' or 'add_watch'. The agent must infer usage from the tool name alone, which is insufficient for optimal selection.

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

save_debug_profileA

Save the current debug configuration (breakpoints, watches, filters) as a named profile

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProfile name
descriptionNoProfile description

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose whether this operation requires specific permissions, if it overwrites existing profiles, what happens on failure, or any rate limits. For a mutation tool with zero annotation coverage, this leaves significant behavioral gaps.

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?

Single sentence with zero waste - every word contributes to understanding the tool's purpose. Front-loaded with the core action ('Save'), followed by what's being saved and the outcome. No redundant or verbose phrasing.

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?

For a mutation tool with no annotations and no output schema, the description is minimally adequate but incomplete. It covers the basic purpose well but lacks behavioral context about permissions, side effects, error conditions, or what constitutes 'current' configuration. The 100% schema coverage helps, but doesn't compensate for missing behavioral transparency.

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 schema already documents both parameters ('name' and 'description'). The description doesn't add any parameter-specific context beyond what's in the schema, such as naming constraints or description formatting. Baseline 3 is appropriate when schema does the heavy lifting.

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 specific action ('Save') and resource ('current debug configuration') with precise scope ('breakpoints, watches, filters') and outcome ('as a named profile'). It distinguishes itself from sibling tools like 'load_debug_profile' and 'list_debug_profiles' by focusing on creation rather than retrieval or listing.

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

Usage Guidelines3/5

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

The description implies usage when needing to persist debug settings, but lacks explicit guidance on when to use this versus alternatives like 'export_session' or 'capture_snapshot'. No exclusions or prerequisites are mentioned, leaving the agent to infer context from tool naming alone.

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

set_active_sessionA

Set which debug session should be the active/default session for subsequent commands

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesSession ID to set as active

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states the tool sets an active session but doesn't disclose behavioral traits like whether this requires specific permissions, if changes are reversible, what happens if the session_id is invalid, or if there are rate limits. For a mutation tool with zero annotation coverage, this is a significant gap.

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, efficient sentence that front-loads the core purpose ('Set which debug session should be the active/default session') and adds necessary context ('for subsequent commands'). There is zero waste, making it highly concise and well-structured.

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

Completeness3/5

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

Given the tool's moderate complexity (a mutation operation with no annotations or output schema), the description is minimally adequate. It explains what the tool does but lacks details on behavioral aspects, error handling, or return values. With no output schema, the description should ideally hint at what to expect after invocation, but it doesn't.

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 100% description coverage, with the single parameter 'session_id' clearly documented. The description adds no additional parameter semantics beyond what the schema provides, but with high schema coverage and only one parameter, the baseline is appropriately high. No compensation is needed.

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 specific action ('Set') and the target resource ('which debug session should be the active/default session'), distinguishing it from sibling tools like 'list_sessions' or 'close_session'. It precisely defines the tool's function without being tautological.

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

Usage Guidelines3/5

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

The description implies usage context by mentioning 'subsequent commands', suggesting this tool sets a default for follow-up operations. However, it lacks explicit guidance on when to use it versus alternatives (e.g., 'list_sessions' to see available sessions) or prerequisites (e.g., requiring an existing session).

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

set_breakpointA

Set a breakpoint in PHP code. Supports line breakpoints and conditional breakpoints with hit counts. Can be set before a debug session starts - breakpoints will be applied when a session connects.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileYesFull file path (use container path for Docker, e.g., /var/www/html/index.php)
lineYesLine number for the breakpoint
conditionNoOptional PHP condition expression (e.g., '$x > 10' or '$user !== null')
hit_valueNoHit count value - break after this many hits
hit_conditionNoHit condition: >= (break when hits >= value), == (break on exact hit), % (break every N hits)
session_idNoSession ID (uses active session if not specified)

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses that breakpoints can be set preemptively before sessions start, which is useful behavioral context. However, it lacks details on permissions needed, error conditions, or what happens if a breakpoint already exists at that location.

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 with zero waste: the first sentence states purpose and supported types, the second provides crucial timing context. Every word earns its place, and key information is front-loaded.

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 mutation tool with no annotations and no output schema, the description is reasonably complete—it explains what the tool does, when to use it, and behavioral timing. However, it could better address error cases or interaction with sibling tools like 'list_breakpoints' or 'remove_breakpoint'.

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 schema already documents all 6 parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema, meeting the baseline of 3 for high schema coverage.

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 specific action ('Set a breakpoint'), target resource ('in PHP code'), and scope ('line breakpoints and conditional breakpoints with hit counts'), distinguishing it from sibling tools like 'set_call_breakpoint' or 'set_exception_breakpoint' by focusing on line-based breakpoints.

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 provides clear context about when to use it ('Can be set before a debug session starts - breakpoints will be applied when a session connects'), but does not explicitly mention when not to use it or name alternatives like 'update_breakpoint' for modifying existing breakpoints.

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

set_call_breakpointB

Set a breakpoint that triggers when a specific function is called. Can be set before a debug session starts.

ParametersJSON Schema
NameRequiredDescriptionDefault
function_nameYesFunction name to break on (e.g., 'myFunction' or 'MyClass::myMethod')
session_idNoSession ID

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions the tool sets a breakpoint that triggers on function calls and can be set pre-session, but fails to disclose critical behavioral traits such as whether this requires debug permissions, if breakpoints persist across sessions, what happens on duplicate settings, or any rate limits. This leaves significant gaps for a mutation tool.

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

Conciseness5/5

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

The description is highly concise and front-loaded, consisting of two clear sentences that directly state the tool's action and a key usage note. There is no wasted verbiage, making it efficient and easy to parse.

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

Completeness2/5

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

Given the complexity of a mutation tool (setting breakpoints) with no annotations and no output schema, the description is incomplete. It lacks details on behavioral aspects like permissions, persistence, error handling, or return values, which are crucial for effective use in a debugging context.

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%, with clear parameter descriptions in the schema (e.g., 'function_name' as the function to break on, 'session_id' as the session ID). The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline of 3 without compensating value.

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 with a specific verb ('Set a breakpoint') and resource ('when a specific function is called'), distinguishing it from general breakpoint tools like 'set_breakpoint' by focusing on function calls. However, it doesn't explicitly differentiate from 'set_exception_breakpoint' or other sibling tools beyond the function-call scope.

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 some context by mentioning 'Can be set before a debug session starts,' which implies timing guidance. However, it lacks explicit when-to-use vs. alternatives (e.g., compared to 'set_breakpoint' or 'set_exception_breakpoint'), no prerequisites are stated, and it doesn't clarify if this is for active sessions only or other scenarios.

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

set_exception_breakpointA

Set a breakpoint that triggers when a specific exception is thrown. Can be set before a debug session starts.

ParametersJSON Schema
NameRequiredDescriptionDefault
exceptionNoException class name to break on (use '*' for all exceptions, or specific like 'RuntimeException')*
session_idNoSession ID

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the action ('set a breakpoint that triggers') and timing constraint ('before a debug session starts'), but does not cover aspects like permissions needed, whether it's reversible, error handling, or response format. It adds some context but leaves gaps for a mutation tool.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose and followed by a timing constraint. Every word earns its place with no redundancy or fluff, making it highly efficient and well-structured.

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 no annotations, no output schema, and a mutation tool with 2 parameters, the description is adequate but incomplete. It covers the what and when, but lacks details on behavioral traits like side effects, error cases, or return values, leaving gaps for an agent to use it correctly in complex scenarios.

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 schema already documents both parameters fully. The description does not add any parameter details beyond what the schema provides (e.g., it doesn't explain 'exception' or 'session_id' further). Baseline score of 3 is appropriate as the schema does the heavy lifting.

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 'set' and resource 'breakpoint' with specific functionality 'when a specific exception is thrown', distinguishing it from sibling tools like 'set_breakpoint' or 'set_call_breakpoint' by focusing on exceptions. It explicitly mentions the breakpoint triggers on exceptions, making the purpose specific and well-differentiated.

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 provides clear context for when to use it ('when a specific exception is thrown') and timing ('before a debug session starts'), but does not explicitly state when not to use it or name alternatives like 'set_breakpoint' for non-exception breakpoints. This gives good guidance but lacks explicit exclusions or sibling comparisons.

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

set_variableC

Set the value of a variable in the current scope

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesVariable name (e.g., $x, $user->name)
valueYesNew value as a PHP literal (e.g., 42, "hello", true, null)
context_idNoContext ID
stack_depthNoStack frame depth
session_idNoSession ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states the tool sets a variable value but doesn't disclose critical behavioral traits: whether this requires specific permissions, if changes are persistent, what happens on errors, or if it affects debugging state. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

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, efficient sentence that states the core purpose without waste. It's appropriately sized for a tool with a clear primary function and doesn't bury key information. Every word earns its place.

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

Completeness2/5

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

Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what happens after setting the variable (e.g., success confirmation, error handling), how it interacts with debugging context, or implications for sibling tools. For a 5-parameter tool in a debugging environment, more context is needed.

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 schema already documents all 5 parameters thoroughly. The description adds no additional meaning about parameters beyond implying 'name' and 'value' are required (matching the schema). With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but also doesn't detract.

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 ('Set') and resource ('value of a variable in the current scope'), making the purpose immediately understandable. It distinguishes from sibling tools like 'get_variable' or 'get_variables' by specifying a write operation. However, it doesn't explicitly differentiate from other variable-related tools beyond the basic verb distinction.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an active session), when not to use it, or how it relates to sibling tools like 'add_watch' or 'evaluate'. The agent must infer usage from the name and description alone.

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

start_coverageB

Start tracking code coverage during debugging

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the action without disclosing behavioral traits. It doesn't mention side effects (e.g., performance impact), permissions needed, or what 'tracking' entails (e.g., real-time vs. batch). This is inadequate for a mutation tool.

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

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words, clearly front-loading the core action. It's appropriately sized for a simple tool with no parameters.

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

Completeness2/5

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

Given the complexity of a debugging tool that likely mutates state (starting coverage tracking), the description is incomplete. With no annotations, no output schema, and minimal behavioral disclosure, it fails to provide enough context for safe and effective use in a debugging environment.

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 tool has 0 parameters with 100% schema description coverage, so no parameter information is needed. The description doesn't add param details, but this is acceptable given the baseline, earning a score slightly above the 3 baseline for zero-param tools.

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 ('start tracking') and resource ('code coverage during debugging'), making the purpose understandable. However, it doesn't explicitly differentiate from its sibling 'stop_coverage' or other debugging tools, which would be needed for a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'stop_coverage' or other debugging operations. It lacks context about prerequisites (e.g., needing an active debugging session) or typical workflows, leaving usage unclear.

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

start_profilingB

Start profiling to track memory usage and execution time

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions tracking memory usage and execution time, but fails to describe key behaviors like whether profiling persists across sessions, if it impacts performance, what permissions are needed, or what the expected output is. This leaves significant gaps for an agent to understand the tool's effects.

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, efficient sentence that directly states the tool's purpose without any fluff or redundancy. It is front-loaded and every word contributes to understanding, making it highly concise and well-structured.

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

Completeness2/5

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

Given the complexity of a profiling tool (which likely involves state changes and performance impacts), the description is insufficient. With no annotations and no output schema, it doesn't explain what happens after starting profiling, how to access results, or any side effects. This leaves critical context missing for proper tool usage.

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 tool has 0 parameters, and the schema description coverage is 100%, so no parameter documentation is needed. The description appropriately avoids discussing parameters, focusing instead on the tool's purpose. A baseline of 4 is applied since no parameters exist, and the description doesn't add unnecessary 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 with a specific verb ('Start profiling') and resource ('memory usage and execution time'), making it understandable. However, it doesn't explicitly differentiate from sibling tools like 'stop_profiling' or 'get_profile_stats', which would be needed for a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'stop_profiling' or 'get_profile_stats', nor does it mention prerequisites such as requiring an active session or context. It only states what the tool does, not when it should be invoked.

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

step_intoA

Step into the next function call, or to the next line if not a function call. This follows execution into called functions.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoSession ID

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It describes the core behavior (stepping into functions or to next line), but does not disclose important traits such as whether it requires an active debugging session, what happens if no session exists, if it modifies state, or any error conditions. For a debugging tool with zero annotation coverage, this leaves significant gaps in understanding its operational context.

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

Conciseness5/5

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

The description is two sentences with zero waste: the first sentence defines the action and scope, and the second explains the effect. It is front-loaded with the core purpose and efficiently structured, making it easy to parse and understand quickly.

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's complexity (debugging step operation), lack of annotations, and no output schema, the description is minimally adequate. It explains what the tool does but lacks details on behavioral context (e.g., session requirements, side effects) and return values. For a tool in a debugging suite with many siblings, more completeness would be beneficial to guide proper use.

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 1 parameter with 100% description coverage, providing a baseline of 3. The description does not mention parameters at all, but since there is only one parameter ('session_id') and schema coverage is complete, the description's focus on tool behavior without parameter details is acceptable. It loses a point for not reinforcing the parameter's role in the context of stepping.

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 specific action ('Step into') with precise scope ('next function call, or to the next line if not a function call') and explains what it does ('follows execution into called functions'). It distinguishes from siblings like 'step_over' (which steps over functions) and 'step_out' (which steps out of functions) by emphasizing entry into function calls.

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

Usage Guidelines3/5

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

The description implies usage during debugging to trace execution flow, but does not explicitly state when to use this tool versus alternatives like 'step_over' or 'step_out'. It provides context about following into functions, which helps differentiate from 'step_over', but lacks explicit guidance on scenarios or prerequisites for use.

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

step_outA

Step out of the current function. Execution continues until the current function returns.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoSession ID

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It describes the basic behavior but lacks details on permissions, side effects, error conditions, or what happens if no function is active. For a debugging tool with zero annotation coverage, this is insufficient.

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 efficiently conveys the tool's purpose without unnecessary words, making it easy to understand at a glance.

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

Completeness2/5

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

Given the complexity of debugging operations and the lack of annotations or output schema, the description is too minimal. It does not cover return values, error handling, or dependencies on other tools (e.g., requiring an active session), leaving gaps for an AI agent to use it correctly.

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%, with the single parameter 'session_id' documented in the schema. The description does not add any parameter-specific information beyond what the schema provides, so it meets the baseline for high schema coverage.

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 specific action ('step out') and its effect ('execution continues until the current function returns'), distinguishing it from sibling tools like 'step_into' or 'step_over' by focusing on exiting the current function rather than navigating within it.

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 usage during debugging when you want to exit the current function, but it does not explicitly state when to use this tool versus alternatives like 'continue' or 'step_over', nor does it mention prerequisites such as requiring an active debugging session.

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

step_overA

Step over to the next line in the current scope. Function calls are executed but not stepped into.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoSession ID

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the key behavioral trait of executing function calls without stepping into them, which is essential for debugging. However, it lacks details on prerequisites (e.g., requires an active debug session), side effects, or error conditions.

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 that are front-loaded and zero-waste. Every word contributes to understanding the tool's purpose and behavior, making it highly efficient and well-structured.

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 complexity of a debugging tool with no annotations and no output schema, the description is minimal but covers the core action. It lacks information on return values, error handling, and session requirements, leaving gaps that could hinder an agent's effective use.

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 1 parameter with 100% coverage, so the description does not need to add parameter details. It appropriately focuses on tool behavior rather than repeating schema information, maintaining a baseline of 3 but earning a 4 due to efficient omission of redundant details.

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 specific action ('step over to the next line') and distinguishes it from sibling tools like 'step_into' and 'step_out' by explaining that function calls are executed but not stepped into. It precisely defines the verb and scope without being tautological.

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 when to use this tool by contrasting it with 'step_into' (function calls are not stepped into), but it does not explicitly mention alternatives or exclusions. It provides clear context for its use in debugging scenarios without naming specific sibling tools.

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

stopA

Stop the debug session and terminate script execution immediately

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoSession ID

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden. It mentions 'terminate script execution immediately', which hints at destructive behavior, but lacks details on permissions needed, irreversible effects, error conditions, or what happens to session data. For a potentially destructive tool, this is insufficient.

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, front-loaded sentence with zero wasted words. Every element ('stop', 'debug session', 'terminate script execution immediately') contributes directly to understanding the tool's core function.

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 no annotations, no output schema, and a potentially destructive operation, the description is minimally adequate. It covers the basic action but lacks critical context like side effects, return values, or error handling. The 100% schema coverage helps, but overall completeness is limited.

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

Parameters4/5

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

The schema has 100% description coverage for its single parameter ('session_id'), so the baseline is 3. The description doesn't add parameter details beyond the schema, but since there's only one parameter and the tool's purpose is straightforward, this is adequate for a slightly above-baseline score.

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 action ('stop') and the target ('debug session'), with the verb 'terminate' providing specific behavioral context. It distinguishes from siblings like 'close_session' by emphasizing immediate termination of script execution, not just session closure.

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

Usage Guidelines3/5

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

The description implies usage context ('debug session') but doesn't explicitly state when to use this tool versus alternatives like 'close_session' or 'detach'. It provides no guidance on prerequisites, exclusions, or comparison with sibling tools.

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

stop_coverageB

Stop tracking code coverage and get the report

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool stops tracking and gets a report, but doesn't clarify if this is a read-only operation, if it modifies state, what the report format is, or any side effects (e.g., whether it clears coverage data). For a tool with potential state changes, this is insufficient.

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—a single sentence with two clear actions. It's front-loaded with the primary purpose and includes no redundant information. Every word earns its place, making it easy for an agent to parse quickly.

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

Completeness2/5

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

Given the tool's complexity (involving stopping a process and retrieving a report), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what the report contains, how it's formatted, or any behavioral nuances (e.g., if coverage data is preserved after stopping). This leaves significant gaps for an agent to understand the tool fully.

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 tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate, but it could have mentioned if any implicit parameters exist (e.g., session context). Baseline is 4 for zero parameters with full schema coverage.

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 with a specific verb ('stop tracking') and resource ('code coverage'), and indicates it also retrieves a report. However, it doesn't explicitly differentiate from sibling tools like 'stop_profiling' or 'stop', which might have similar stopping semantics but for different resources.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., that coverage tracking must be active via 'start_coverage'), nor does it specify when not to use it or what happens if coverage isn't running. This leaves the agent without contextual usage cues.

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

stop_profilingC

Stop profiling and get the results

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions stopping profiling and retrieving results, but lacks details on permissions, side effects (e.g., whether it terminates a session), rate limits, or what the results entail (e.g., format, timing). This is inadequate for a tool that likely interacts with active processes.

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 ('Stop profiling and get the results')—a single, front-loaded sentence with no wasted words. It efficiently communicates the core action and outcome without unnecessary elaboration.

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

Completeness2/5

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

Given the complexity implied by sibling tools (e.g., 'start_profiling', 'get_profile_stats'), the description is incomplete. With no annotations and no output schema, it fails to explain critical aspects like what 'results' include, how profiling is defined, or interaction with related tools, leaving significant gaps for the agent.

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 tool has 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description doesn't need to compensate for any gaps, earning a baseline score of 4 for not introducing confusion or redundancy.

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

Purpose3/5

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

The description states the tool's purpose ('Stop profiling and get the results'), which is clear but vague. It specifies the action ('stop profiling') and outcome ('get the results'), but doesn't distinguish it from sibling tools like 'stop' or 'stop_coverage', nor does it clarify what 'profiling' entails in this context.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., that profiling must be active), exclusions, or how it differs from similar tools like 'stop' or 'stop_coverage', leaving the agent to infer usage from the name alone.

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

update_breakpointB

Update a breakpoint (enable/disable or change hit conditions). Works for both active session and pending breakpoints.

ParametersJSON Schema
NameRequiredDescriptionDefault
breakpoint_idYesThe breakpoint ID to update
stateNoEnable or disable the breakpoint
hit_valueNoNew hit count value
hit_conditionNoNew hit condition
session_idNoSession ID

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that the tool updates breakpoints for active and pending sessions, but doesn't specify required permissions, whether changes are reversible, error conditions, or what happens to unspecified parameters. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

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 highly concise and front-loaded: a single sentence that directly states the tool's purpose and scope. Every word earns its place, with no redundant or vague phrasing.

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

Completeness2/5

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

Given that this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns, error handling, side effects, or dependencies on other tools like 'list_breakpoints'. For a tool with 5 parameters and complex behavior, more contextual information is needed.

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 schema already documents all parameters thoroughly. The description adds minimal value by implying that 'hit conditions' relate to 'hit_value' and 'hit_condition' parameters, but doesn't provide additional semantics beyond what's in the schema. Baseline 3 is appropriate when the schema does the heavy lifting.

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: 'Update a breakpoint (enable/disable or change hit conditions).' It specifies the verb ('update') and resource ('breakpoint') with concrete actions. However, it doesn't explicitly differentiate from sibling tools like 'set_breakpoint' or 'remove_breakpoint' beyond mentioning it works for both active and pending breakpoints.

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 some usage context by stating 'Works for both active session and pending breakpoints,' which implies when this tool is applicable. However, it doesn't explicitly state when to use this versus alternatives like 'set_breakpoint' (for creation) or 'remove_breakpoint' (for deletion), nor does it mention prerequisites or exclusions.

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

TDQS

B3.3/5.0
Disambiguation4/5

Most tools have distinct purposes with clear boundaries, such as step_into vs. step_over for stepping actions, and set_breakpoint vs. set_call_breakpoint for different breakpoint types. However, some tools like evaluate and get_variable have overlapping functionality in inspecting values, which could cause minor confusion for agents.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, such as add_logpoint, remove_breakpoint, and start_profiling. There are no deviations in naming conventions, making the set predictable and easy to parse.

Tool Count2/5

With 46 tools, the count is excessive for a debug server, leading to potential overwhelm and redundancy. While the domain is complex, many tools could be consolidated (e.g., separate start/stop for coverage and profiling) without losing functionality, making the set feel heavy and less scoped.

Completeness5/5

The tool set provides comprehensive coverage for PHP debugging, including session management, breakpoints, stepping, variable inspection, profiling, and coverage. There are no obvious gaps; all essential CRUD and lifecycle operations for the domain are well-represented, ensuring agents can handle full debugging workflows.

Maintenance

ActivitySlowing
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

  • A
    license
    C
    quality
    A
    maintenance
    Enables AI agents to perform step-through debugging of Python, JavaScript/Node.js, and Rust programs using the Debug Adapter Protocol, with support for breakpoints, variable inspection, and stack traces.
    21
    160
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to debug JavaScript and TypeScript applications by connecting to Chrome DevTools Protocol-compatible debuggers, allowing them to set breakpoints, step through code, inspect variables, and evaluate expressions with full source map support.
    18
    15
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to debug code inside VS Code by setting breakpoints, stepping through execution, inspecting variables, and evaluating expressions across multiple languages.
    482
    MIT

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kpanuragh/xdebug-mcp'

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