Skip to main content
Glama
mumez

smalltalk-interop-mcp-server

by mumez

smalltalk-interop-mcp-server

CI

A local MCP server to communicate with a local Smalltalk image (Pharo or Squeak). It supports:

  • Code Evaluation: Execute Smalltalk expressions and return results

  • Code Introspection: Retrieve source code, comments, and metadata for classes and methods

  • Search & Discovery: Find classes, traits, methods, references, and implementors

  • Package Management: Export and import packages in Tonel format

  • Project Installation: Install projects using Metacello

  • Test Execution: Run test suites at package or class level

  • UI Debugging: Capture screenshots and inspect UI structure for World morphs, and (Pharo only) Spec presenters and Roassal visualizations

  • Server Configuration: Retrieve and modify server settings dynamically

Prerequisites

Related MCP server: MCP Server Demo

Installation

Quick Start (using uvx)

The easiest way to run the server without cloning the repository:

uvx --from git+https://github.com/mumez/smalltalk-interop-mcp-server.git smalltalk-interop-mcp-server

Development Installation

To set up for development:

  1. Clone the repository:

git clone https://github.com/mumez/smalltalk-interop-mcp-server.git
  1. Install dependencies using uv:

cd smalltalk-interop-mcp-server
uv sync --dev

Usage

Running the MCP Server

Using uvx (no installation required):

uvx --from git+https://github.com/mumez/smalltalk-interop-mcp-server.git smalltalk-interop-mcp-server

Using uv (after cloning the repository):

uv run smalltalk-interop-mcp-server

Environment Variables

You can configure the server using environment variables:

  • SIS_PORT: Port number for the Smalltalk Interop Server (default: 8086)

Examples:

Using uvx:

SIS_PORT=8086 uvx --from git+https://github.com/mumez/smalltalk-interop-mcp-server.git smalltalk-interop-mcp-server

Using uv:

SIS_PORT=9999 uv run smalltalk-interop-mcp-server

Cursor MCP settings

Using uvx (recommended):

{
  "mcpServers": {
    "smalltalk-interop": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/mumez/smalltalk-interop-mcp-server.git",
        "smalltalk-interop-mcp-server"
      ],
      "env": {
        "SIS_PORT": "8086"
      }
    }
  }
}

Using uv (after cloning):

{
  "mcpServers": {
    "smalltalk-interop": {
      "command": "uv",
      "args": [
        "--directory",
        "/your-path/to/smalltalk-interop-mcp-server",
        "run",
        "smalltalk-interop-mcp-server"
      ],
      "env": {
        "SIS_PORT": "8086"
      }
    }
  }
}

Note: The env section is optional and can be used to set environment variables for the MCP server.

Claude Code Configuration

Using uvx (recommended):

claude mcp add -s user smalltalk-interop -- uvx --from git+https://github.com/mumez/smalltalk-interop-mcp-server.git smalltalk-interop-mcp-server

Using uv (after cloning):

claude mcp add -s user smalltalk-interop -- uv --directory /path/to/smalltalk-interop-mcp-server run smalltalk-interop-mcp-server

MCP Tools Available

This server provides 22 MCP tools that map to the Smalltalk Interop Server API, shared by both PharoSmalltalkInteropServer and SqueakSmalltalkInteropServer:

Code Evaluation

  • eval: Execute Smalltalk expressions and return results

Code Introspection

  • get_class_source: Retrieve source code of a class

  • get_method_source: Retrieve source code of a specific method

  • get_class_comment: Retrieve comment/documentation of a class

Search & Discovery

  • search_classes_like: Find classes matching a pattern

  • search_methods_like: Find methods matching a pattern

  • search_traits_like: Find traits matching a pattern

  • search_implementors: Find all implementors of a method selector

  • search_references: Find all references to a method selector

  • search_references_to_class: Find all references to a class

Package Management

  • list_packages: List all packages in the image

  • list_classes: List classes in a specific package

  • list_extended_classes: List extended classes in a package

  • list_methods: List methods in a package

  • export_package: Export a package in Tonel format

  • import_package: Import a package from specified path

Project Installation

  • install_project: Install a project using Metacello with optional load groups

Test Execution

  • run_package_test: Run test suites for a package

  • run_class_test: Run test suites for a specific class

UI Debugging

  • read_screen: UI screen reader for debugging Smalltalk interfaces with screenshot and structure extraction

Server Configuration

  • get_settings: Retrieve current server configuration

  • apply_settings: Modify server configuration dynamically

read_screen Tool

The read_screen tool captures screenshots and extracts UI structure for debugging Smalltalk UI issues.

Parameters:

  • target_type (string, default: 'world'): UI type to inspect ('world' for morphs — Pharo and Squeak, 'spec' for windows — Pharo only, 'roassal' for visualizations — Pharo only)

  • capture_screenshot (boolean, default: true): Include PNG screenshot in response

Returns: UI structure with screenshot and human-readable summary

Usage Examples:

# Inspect all morphs in World
read_screen(target_type='world')

# Inspect Spec presenter windows (Pharo only)
read_screen(target_type='spec', capture_screenshot=false)

# Inspect Roassal visualizations without screenshot (Pharo only, faster)
read_screen(target_type='roassal', capture_screenshot=false)

Extracted Data Includes:

World (morphs):

  • Class name and type identification

  • Bounds (x, y, width, height coordinates)

  • Visibility state

  • Background color

  • Owner class

  • Submorph count

  • Text content (if available)

Example output:

{
  "totalMorphs": 12,
  "displayedMorphCount": 1,
  "morphs": [
    {
      "class": "MenubarMorph",
      "visible": true,
      "bounds": {"x": 0, "y": 0, "width": 976, "height": 18},
      "backgroundColor": "(Color r: 0.883... alpha: 0.8)",
      "owner": "WorldMorph",
      "submorphCount": 8
    }
  ]
}

Spec (presenters, Pharo only):

  • Window title and class name

  • Geometry (extent, position)

  • Window state (maximized, minimized, resizable)

  • Decorations (menu, toolbar, statusbar presence)

  • Presenter hierarchy (recursive with max depth of 3 levels)

  • Presenter class name, child count, and content properties (label, text, value, etc.)

  • Enablement and visibility state

Example output:

{
  "windowCount": 1,
  "presenters": [
    {
      "class": "SpWindowPresenter",
      "title": "Welcome",
      "extent": "(700@550)",
      "hasMenu": false,
      "presenter": {
        "class": "StWelcomeBrowser",
        "childCount": 2,
        "isVisible": true,
        "children": []
      }
    }
  ]
}

Roassal (visualizations, Pharo only):

  • Canvas bounds and visibility state

  • Canvas class identification

  • Background color and zoom level

  • Shape details (color, position, extent, label, text)

  • Edge details (source, target, color, label)

  • Node and edge counts

Example output:

{
  "canvasCount": 1,
  "canvases": [
    {
      "class": "RSAthensMorph",
      "canvasClass": "RSCanvas",
      "bounds": {"x": 203, "y": 145, "width": 490, "height": 467},
      "backgroundColor": "Color blue",
      "zoomLevel": "1.0",
      "shapeCount": 5,
      "shapes": [
        {
          "class": "RSCircle",
          "color": "(Color r: 1.0 g: 0.0 b: 0.0 alpha: 0.2)",
          "position": "(0.0@0.0)",
          "extent": "(5.0@5.0)"
        }
      ],
      "edgeCount": 0,
      "edges": [],
      "nodeCount": 0
    }
  ]
}

Server Configuration Tools

The get_settings and apply_settings tools provide dynamic server configuration management.

get_settings

Retrieve the current server configuration.

Parameters: None

Returns: Dictionary containing current server settings

Usage Example:

# Get current settings
get_settings()
# Returns: {"stackSize": 100, "customKey": "customValue"}

Response Format:

{
  "success": true,
  "result": {
    "stackSize": 100,
    "customKey": "customValue"
  }
}

apply_settings

Modify server configuration dynamically. Settings take effect immediately during the current session.

Parameters:

  • settings (dict): Dictionary containing settings to modify

Returns: Success confirmation message

Usage Example:

# Apply new settings
apply_settings(settings={"stackSize": 200, "customKey": "customValue"})
# Returns: "Settings applied successfully"

Common Settings:

Setting

Type

Default

Description

stackSize

integer

100

Maximum stack trace depth for error reporting

Note: The server accepts arbitrary key-value pairs beyond documented settings, allowing custom configuration options.

Development

Running Tests

The project includes comprehensive unit tests with mock-based testing to avoid requiring a live Pharo or Squeak instance:

# Run all tests
uv run pytest

# Run tests with verbose output
uv run pytest -v

# Run specific test file
uv run pytest tests/test_core.py -v

Code Quality

# Run linting
uv run ruff check

# Run formatting
uv run ruff format

# Run all pre-commit hooks
uv run pre-commit run --all-files

Project Structure

smalltalk-interop-mcp-server/
├── smalltalk_interop_mcp_server/
│   ├── __init__.py
│   ├── core.py          # HTTP client and core functions
│   └── server.py        # FastMCP server with tool definitions
├── tests/
│   ├── __init__.py
│   ├── test_core.py     # Tests for core HTTP client functionality
│   └── test_server.py   # Tests for MCP server integration
├── pyproject.toml       # Project configuration
├── pytest.ini          # Test configuration
└── README.md

Testing Strategy

The test suite uses mock-based testing to ensure:

  • No external dependencies: Tests run without requiring a live Pharo or Squeak instance

  • Comprehensive coverage: All 22 endpoints and error scenarios are tested

  • Fast execution: Tests complete in under 1 second

  • Reliable results: Tests are deterministic and don't depend on external state

Test coverage includes:

  • HTTP client functionality (SmalltalkInteropClient class)

  • All 22 Smalltalk interop operations

  • Error handling (connection errors, HTTP errors, JSON parsing errors)

  • MCP server initialization and tool registration

  • Integration between core functions and MCP tools

Available Tools

22 tools
apply_settingsApply SettingsB
Idempotent

Modify server configuration dynamically.

ParametersJSON Schema
NameRequiredDescriptionDefault
settingsYesSettings dictionary to apply to the server

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

The description says settings are applied 'dynamically,' hinting at immediate runtime effect, but does not disclose whether the change is persistent, requires a reload, or what side effects may occur. Annotations provide idempotentHint=true and destructiveHint=false, which add some safety context, but the description itself carries the burden for behavioral nuance and leaves significant unknowns for a configuration-changing operation.

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 a single, efficient sentence that front-loads the core action. No words are wasted, though the brevity leaves behavioral aspects unaddressed — which is a trade-off with the score for behavioral transparency.

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?

While the schema and annotations fill gaps (one parameter, idempotent, non-destructive), a tool that modifies server configuration dynamically needs more context for safe invocation: persistence semantics, whether changes take effect immediately or after restart, and potential side effects. The output schema exists but does little to clarify life-cycle behavior. The description alone is not complete enough for confident 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 documents the 'settings' parameter at 100% coverage, so the description need not restate it. However, the description adds no detail about the expected structure or semantics of the settings dictionary (e.g., keys, value types, nesting), which is a gap given 'additionalProperties: true' makes the schema flexible and less self-explanatory. The baseline of 3 is appropriate because the schema does most of the work.

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 uses a clear verb-resource pair ('Modify server configuration dynamically'), which conveys the core action precisely. It is distinguishable from the sibling tools, which are all read-only or analytic tools (eval, get_class_source, search_*), so the mutation intent is evident. A more specific scope or effect would push it higher, but it is far from vague.

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 when to use the tool — when server configuration needs to be changed — but does not explicitly state when not to use it or whether alternatives exist. For a mutation tool, guidance on safety or preconditions (e.g., 'use only when a restart is acceptable') would improve it, but the basic context is clear.

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

evalEvaluate SmalltalkB
Destructive

Evaluate a Smalltalk expression via the Smalltalk Interop Server.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesThe Smalltalk code to evaluate

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

The annotations mark destructiveHint as true, but the description adds no behavioral context beyond 'via the Smalltalk Interop Server'. It does not disclose that evaluating arbitrary Smalltalk can mutate image state, trigger side effects, or have irreversible consequences.

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 no filler. It conveys the core action and the execution medium efficiently.

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 execution tool, the description omits critical safety context such as potential side effects, irreversibility, and preference for safer, more targeted sibling tools. Although an output schema exists, the missing guidance around a destructive operation leaves the definition incomplete.

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

Parameters3/5

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

Schema coverage is 100%, so the code parameter is already documented as 'The Smalltalk code to evaluate'. The description adds no additional parameter-level detail such as expected syntax, expression format, or limitations.

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 evaluates a Smalltalk expression, which is a specific verb and resource. It is distinct from sibling tools like get_method_source or run_package_test, which perform narrower operations; this tool is the general-purpose execution entry point.

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 given on when to use this tool versus alternatives. There is no mention that specialized sibling tools should be preferred for specific tasks, nor any warning that this tool is for ad-hoc evaluation only.

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

export_packageExport PackageA
Idempotent

Export a package in Tonel format.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoThe path where to export the package/tmp
package_nameYesThe name of the package to export

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate idempotence, and the description adds the useful detail that output uses Tonel format. However, it does not disclose potential filesystem side effects such as writing to the provided path, overwriting existing files, or requiring the directory to 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, front-loaded sentence that conveys the operation and format with no filler, repetition, or unnecessary detail. It is appropriately sized for a simple two-parameter tool.

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

Completeness4/5

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

The tool is simple, all parameters are documented in the schema, and an output schema exists, so an agent has enough information to call it correctly. The main gaps are the lack of usage guidance and filesystem behavior details, but these are minor given the low complexity and rich schema.

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

Parameters3/5

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

Schema coverage is 100%, with both parameters described and a default for path, so the baseline score applies. The description adds no parameter-specific meaning beyond what is already in the input schema.

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

Purpose5/5

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

The description states a precise action ('Export a package') and the specific output format ('Tonel format'), clearly distinguishing it from sibling tools such as import_package or list_packages. An agent can immediately understand what this tool does without needing to inspect the schema.

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 gives no guidance on when to use this tool versus alternatives like import_package or list_packages. No prerequisites, exclusions, or context are provided; usage must be inferred entirely from the brief one-line purpose.

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

get_class_commentGet Class CommentA
Read-only

Get the comment of a Smalltalk class.

ParametersJSON Schema
NameRequiredDescriptionDefault
class_nameYesThe name of the class to retrieve comment for

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds no further behavioral detail beyond the basic retrieval action, but for a simple read operation this is not a major 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 clear sentence with no wasted words. It front-loads the verb and noun phrase, making the tool's purpose immediately understandable.

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

Completeness5/5

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

For a one-parameter read-only tool with an output schema and readOnlyHint annotation, the description is sufficient. An agent can determine the operation, the required input, and the expected safety profile without additional 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%: the single parameter class_name is already described as 'The name of the class to retrieve comment for'. The description does not add additional parameter-level meaning, but none is necessary given the full 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 states a specific verb ('Get') and a specific resource ('the comment of a Smalltalk class'), which clearly identifies the operation. It differentiates this tool from sibling tools like get_class_source by focusing on comments rather than source code.

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 when to use the tool: whenever a class comment is needed. However, it does not explicitly state when not to use it or mention alternatives such as get_class_source or get_method_source, so the routing guidance is only implicit.

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

get_class_sourceGet Class SourceB
Read-only

Get the source code of a Smalltalk class.

ParametersJSON Schema
NameRequiredDescriptionDefault
class_nameYesThe name of the class to retrieve source for

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

The description adds no behavioral context beyond what the readOnlyHint annotation already conveys. It does not mention return shape nuances, error behavior, or whether the source includes comments; the output schema would cover return format, but the description itself contributes no extra 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?

A single, direct sentence that front-loads the core purpose with no filler words. It is appropriately sized for a simple one-parameter tool.

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 read-only, one-parameter tool with a complete input schema and an output schema, the description is mostly sufficient for correct invocation. It falls slightly short only because it omits usage guidance to disambiguate from closely related class/method source 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%, and the single parameter class_name is already described in the schema as 'The name of the class to retrieve source for.' The tool description repeats the same concept without adding detail about formatting, case sensitivity, or fully qualified names.

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

Purpose5/5

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

The description states a specific action ('get') on a specific resource ('source code of a Smalltalk class'), clearly distinguishing it from siblings like get_method_source and get_class_comment. The class scope is unambiguous.

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 given on when to use this tool versus siblings such as get_method_source, get_class_comment, or search_classes_like. There are no explicit context cues or exclusions; an agent must 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.

get_method_sourceGet Method SourceB
Read-only

Get the source code of a specific method in a class.

ParametersJSON Schema
NameRequiredDescriptionDefault
class_nameYesThe name of the class containing the method
method_nameYesThe name of the method to retrieve source for
is_class_methodNoSet to True for class-side methods, False for instance methods (default: False)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

The readOnlyHint annotation already signals that this is a safe read operation, and the description's 'Get' is consistent with that. The description adds little extra behavioral context, such as whether a missing method produces an error or whether a loaded project is required, but since the annotations already cover the safety profile, a mid score is appropriate.

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 a single, front-loaded sentence with no filler or redundant clauses. However, it largely restates the tool's name and title without adding meaningful scoping or contextual detail, so while efficient, it is not an outstanding example of structural value.

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

Completeness4/5

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

For a simple read-only retrieval tool, the description plus full parameter schema, output schema, and readOnlyHint is mostly sufficient. The main missing elements are explicit usage guidance and a precise definition of class_name format, but these are minor given the tool's low complexity.

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

Parameters3/5

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

Schema coverage is 100%, so the parameter descriptions already document class_name, method_name, and is_class_method. The tool description adds no additional meaning about parameter formats, defaults, or how is_class_method affects behavior, so it does not go beyond the baseline set by 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 states a clear verb ('Get') and a specific resource ('source code of a specific method in a class'), which makes the core purpose understandable. It does not explicitly differentiate from sibling tools like get_class_source or list_methods, so some inference is still required, but the scoping to 'method' rather than 'class' is reasonably clear.

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?

There is no guidance about when to use this tool versus alternatives such as get_class_source or list_methods, no stated prerequisites, and no mention of class-side versus instance-side method selection. The only implied usage is the generic purpose statement, which is not enough to guide an agent toward or away from this tool in context.

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

get_settingsGet SettingsA
Read-only

Retrieve current server configuration.

Returns: dict: API response with success/error and result - Success: {"success": True, "result": dict} - result contains current server settings - Error: {"success": False, "error": str} - error contains error message

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, and the description does not contradict them. It adds value by documenting the exact return envelope (success/error shapes) and clarifying the result is a dict of current server settings. For a read-only tool with no destructive behavior, this is sufficient 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.

Conciseness4/5

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

The description is compact: one clear summary sentence followed by a structured return-value block. The return block adds necessary detail without excessive prose. It is slightly longer than strictly needed because output schema exists, but it remains efficient.

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

Completeness4/5

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

For a zero-parameter read-only tool with annotations and an output schema, the description covers purpose and return format well. It does not describe what specific settings are contained in the result, but that is typically discoverable from the response itself. The main missing piece is explicit usage guidance relative to siblings.

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, so the baseline is 4 per the rubric. The input schema is empty and the description correctly indicates no inputs are needed. Nothing additional is required.

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?

Description clearly states the verb and resource: 'Retrieve current server configuration.' This distinguishes it from the sibling apply_settings, which is a write operation. However, it does not explicitly contrast itself with any siblings.

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

Usage Guidelines3/5

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

The description implies use when the agent needs current server configuration, but it gives no explicit guidance about when to choose this tool over alternatives like apply_settings or other inspection tools. There are no exclusions or when-not-to-use conditions.

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

import_packageImport PackageB
Destructive

Import a package from specified path.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoThe path to the package file to import/tmp
package_nameYesThe name of the package to import

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

The annotations already flag destructiveHint=true, but the description adds no behavioral detail about what importing does—whether it overwrites existing packages, installs dependencies, or modifies the project. For a destructive operation, this lack of consequence disclosure 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 one short sentence with no wasted words, and the primary action is immediately stated. It earns its place as a concise definition, even though more explanatory content could have been added elsewhere.

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

Completeness3/5

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

The output schema and fully described parameters cover the mechanical invocation details, so the agent knows what inputs to provide. However, the semantics and consequences of 'import' are under-specified, and there is no differentiation from related tools, making this only minimally complete.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3; both package_name and path already have descriptions in the schema. The description only reinforces the path concept without adding format, restrictions, or edge-case meaning.

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

Purpose4/5

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

The description states a specific verb ('import'), a resource ('package'), and a source ('specified path'), which makes the core action identifiable. It is distinct from obvious siblings like export_package, though it does not clarify what 'import' means in this environment.

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?

There is no guidance about when to use this tool instead of alternatives such as install_project, export_package, or list_packages. An agent must infer the appropriate usage purely from the name and sibling context.

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

install_projectInstall ProjectB
Destructive

Install a project using Metacello.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoForce load ignoring conflicts, upgrades, and image changes
load_groupsNoComma-separated list of groups to load (optional)
project_nameYesThe name of the project to install
repository_urlYesThe repository URL for the project

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

The annotations already declare the operation as destructive and open-world, so the description does not need to repeat that. However, the description adds no behavioral context beyond the word 'Metacello'—it does not mention image mutation, conflict handling, or persistent 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, focused sentence with no filler or repetition of the title. It front-loads the action and object clearly, 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.

Completeness3/5

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

Given the full parameter schema, the annotations, and the presence of an output schema, the description is minimally adequate for invoking the tool correctly. It still lacks explicit when-to-use guidance and any warning about what 'install' changes in the environment, so it is not fully complete.

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

Parameters3/5

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

Schema coverage is 100%, and every parameter already has a description, so the tool description does not need to explain parameters. It also adds no extra semantic constraints or clarifications beyond the schema, matching the baseline for 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 states a specific action ('install'), a resource ('project'), and a mechanism ('Metacello'), making the tool's purpose reasonably clear. It does not explicitly distinguish it from sibling tools like import_package, but the Metacello reference narrows the intent.

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?

There is no guidance about when to use install_project instead of alternatives such as import_package, nor any prerequisites like repository access or expected environment. The only implied usage is 'when you need to install a project,' which is not enough to prevent misselection.

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

list_classesList ClassesA
Read-only

Get list of classes in a package.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe name of the package

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

The read-only behavior is consistent with the readOnlyHint annotation, and the description's 'Get list' aligns with that. It does not add context about ordering, errors on missing packages, or whether the listing is simple versus extended, but the annotations already cover the safety profile.

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?

A single, front-loaded sentence with no filler. It communicates the core operation efficiently and earns its place without unnecessary details.

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

Completeness4/5

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

For a simple list tool with readOnlyHint, a fully documented single parameter, and an output schema, the description is largely sufficient. The only notable gap is the lack of differentiation from list_extended_classes, which would make the context more complete.

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%; package_name is documented as 'The name of the package.' The description's 'in a package' merely echoes that without adding new meaning. Baseline 3 applies because the schema carries the parameter documentation burden.

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

Purpose4/5

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

The description states a specific verb and resource: 'Get list of classes in a package.' It clearly distinguishes from method- and package-level tools, but it does not differentiate from the closely related sibling list_extended_classes, leaving potential ambiguity.

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 wording 'in a package' implies the primary use case: retrieve classes belonging to a given package. However, there is no explicit guidance on when to prefer this tool over search_classes_like or list_extended_classes, and no exclusions are mentioned.

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

list_extended_classesList Extended ClassesA
Read-only

Get list of extended classes in a package.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe name of the package

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the read-only nature is covered, and the description's 'Get list' is consistent with that. The description adds little behavioral context beyond the annotations, such as package-load requirements or what qualifies as an extended class, but the annotation lowers the burden for this simple read-only operation.

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 one concise sentence, front-loaded with the action and object. There is no filler, repetition, or unnecessary qualification.

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

Completeness3/5

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

The tool is simple: one required parameter, an output schema, and read-only annotations. Still, the description leaves 'extended classes' undefined and does not explain how it differs from list_classes, which is material for correct tool selection among the many 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?

The input schema has 100% coverage for the single package_name parameter, so the schema fully documents it. The description does not add any extra parameter semantics, which matches the baseline 3 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 uses a specific verb-resource pair, 'Get list of extended classes', and scopes it to a package, which distinguishes it from sibling tools like list_classes by the word 'extended'. However, it never defines what 'extended classes' means, so an agent without domain knowledge could conflate it with a regular class 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 phrase 'in a package' gives some context, but there is no explicit statement about when to prefer this tool over list_classes or search_classes_like, nor any exclusions. The intended usage is only implied by the tool name and the qualifier 'extended'.

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

list_methodsList MethodsB
Read-only

Get list of methods in a package.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe name of the package

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true and openWorldHint=false, and the description's 'Get list' phrasing is consistent with those. The description adds no further behavioral context, such as whether inherited methods are included or how results are ordered, but it does not contradict the annotations.

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

Conciseness5/5

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

The description is a single short sentence with no filler. The verb, object, and scope are all present and front-loaded, making it easy to scan and understand quickly.

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

Completeness4/5

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

For a simple read-only enumeration with one required parameter and an available output schema, the description is mostly sufficient. Minor gaps include not clarifying whether the package must already be installed or how the result set relates to sibling source-retrieval 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?

The schema fully documents the only parameter with a description ('The name of the package'), so the description does not need to compensate. It adds no extra detail beyond the schema, which aligns with 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 names the operation ('Get list') and the resource ('methods in a package'), scoped by the package_name parameter. It is understandable on its own, though it does not explicitly differentiate from sibling tools like get_method_source or list_classes.

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 gives no guidance on when to use this tool versus alternatives such as get_method_source, search_methods_like, or list_classes. There are no stated exclusions, prerequisites, or contextual conditions, leaving the agent to infer when this is the right choice.

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

list_packagesList PackagesA
Read-only

Get list of all packages.

Returns: dict: API response with success/error and result - Success: {"success": True, "result": list[str]} - result contains list of all package names - Error: {"success": False, "error": str} - error contains error message

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds the success/error return shape, but since an output schema is present, this largely duplicates structured information. It does not disclose additional behavior such as ordering, pagination, auth requirements, or performance characteristics.

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

Conciseness4/5

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

The description is short and front-loaded with the core purpose. The Returns block is a bit verbose relative to the simple purpose, but it is clear and structured. No unnecessary filler beyond the redundant repetition of 'all packages' in the success case.

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

Completeness5/5

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

For a zero-parameter, read-only listing tool with an output schema and clear annotations, the description is fully adequate. An agent can invoke it without further clarification, and the result format is explicitly described.

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, so there is nothing for the description to explain. With 100% schema coverage and no parameters, the baseline of 4 is appropriate; the description does not need to compensate for missing parameter documentation.

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 operation: 'Get list of all packages.' It uses a specific verb and resource, and the Returns section confirms the output is package names. This distinguishes it from sibling tools like list_classes and list_methods.

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 first line gives clear context for when to use the tool: when a list of all packages is needed. It does not explicitly name alternatives or exclusions, but the tool's scope is unambiguous and no sibling tool offers the same 'all packages' behavior.

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

read_screenRead ScreenA
Read-only

Comprehensive UI screen reader for debugging Smalltalk interfaces.

Captures screenshot and extracts complete UI structure for World morphs (Pharo and Squeak), and Spec presenters and Roassal visualizations (Pharo only).

ParametersJSON Schema
NameRequiredDescriptionDefault
target_typeNoUI type to inspect: 'world' (morphs), 'spec' (windows, Pharo only), or 'roassal' (visualizations, Pharo only)world
capture_screenshotNoInclude PNG screenshot in response

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds meaningful behavioral detail beyond that: it captures a screenshot, extracts complete UI structure, and notes platform limitations (Pharo and Squeak for World morphs, Pharo only for Spec/Roassal). This is consistent with the annotations and adds useful 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 only two sentences, front-loads the tool's purpose, and each sentence adds necessary information. There is no filler or redundant restatement of the title.

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

Completeness5/5

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

Given that the tool has an output schema, read-only annotations, only two self-describing parameters, and a concise description covering supported UI types and platform constraints, nothing essential is missing for an agent to invoke 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?

The input schema already provides 100% coverage with clear descriptions for both parameters, including the target_type choices and their Pharo-only restrictions. The description reinforces these semantics but does not add substantial new parameter information beyond what the schema states.

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 states a specific verb and resource: it reads the UI screen by capturing a screenshot and extracting UI structure. It also enumerates the supported UI types (World morphs, Spec presenters, Roassal visualizations), making it clearly distinct from sibling source/package/eval tools.

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

Usage Guidelines4/5

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

The description clearly frames the tool as being 'for debugging Smalltalk interfaces', giving an agent a strong context for when to use it. It does not explicitly name alternatives or state when not to use it, but among siblings it is the only UI inspection tool, so the usage context is sufficient.

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

run_class_testRun Class TestA
Read-only

Run tests for a class.

ParametersJSON Schema
NameRequiredDescriptionDefault
class_nameYesThe class name to run tests for

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true and openWorldHint=false, so the description does not need to restate safety behavior. It adds the core action of executing tests, but it does not disclose potential execution side effects, prerequisites, or how results are returned; the output schema presumably covers return details.

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 filler or redundancy. It is front-loaded with the verb and object and is appropriately sized for a tool with only one required parameter.

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

Completeness4/5

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

Given the single required parameter, presence of an output schema, and safety annotations, the description is nearly sufficient for an agent to invoke the tool correctly. It could be enhanced with notes on class-name format or a brief contrast with package-level testing, but nothing critical is missing.

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 covers 100% of the parameters, with class_name described as 'The class name to run tests for'. The description adds no extra meaning beyond the schema, such as whether the class name must be fully qualified or whether it can include package paths, so it meets the baseline without exceeding it.

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

Purpose4/5

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

The description states a specific action ('Run tests') and a specific resource ('a class'), so it is clear what the tool does. It does not explicitly contrast with run_package_test, but the class-level scope is unambiguous and distinguishes it from package-level testing.

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 intended usage is implied: use this tool when you need to run tests for a particular class. However, there is no explicit guidance about when not to use it or when to prefer sibling tools like run_package_test or eval.

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

run_package_testRun Package TestB
Read-only

Run tests for a package.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe package name to run tests for

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, covering the basic safety profile. The description adds no extra behavioral context such as test runtime, side effects, or how results are returned. It merely restates the title and does not go beyond the annotations.

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?

One sentence, no filler, and the core action is front-loaded. However, it is so minimal that it borders on restating the title rather than adding informative detail. It is concise but contributes little structural value beyond basic clarity.

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

Completeness4/5

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

The tool is simple with one required parameter, full schema coverage, an output schema, and annotations covering read-only semantics. The description is arguably sufficient for basic invocation, though it omits usage context. Given the low complexity, the definition is reasonably complete.

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 already documents package_name as 'The package name to run tests for' with 100% coverage. The description adds no new meaning about accepted formats, validation, or how the package is resolved. A baseline of 3 is appropriate because the schema covers the parameter fully.

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 'Run tests for a package' names a specific verb and resource, clearly indicating that the tool executes tests for a package. It differentiates itself from the sibling run_class_test by specifying package rather than class. Though the title is redundant, the function is unambiguous.

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 about when to use this tool versus alternatives like run_class_test or eval. The description does not state any preconditions, exclusions, or intended scenarios. An agent must infer usage entirely from the tool name and the package_name parameter.

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

search_classes_likeSearch Classes LikeB
Read-only

Find classes matching a pattern.

ParametersJSON Schema
NameRequiredDescriptionDefault
class_name_queryYesThe pattern to search for in class names

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

The readOnlyHint annotation already signals that this is a safe read-only operation, and the description's 'Find' wording agrees with that. However, the description adds no behavioral detail beyond the annotation, such as pattern matching semantics, case sensitivity, or whether results are scoped to loaded code only.

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 concise sentence that front-loads the verb and resource. It contains no filler and is appropriately sized for a simple search tool.

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

Completeness3/5

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

The tool is simple, has one required parameter, an output schema, and a readOnlyHint annotation, so the description does not need to explain much. Still, the ambiguous meaning of 'pattern' is a notable gap because an agent cannot tell whether to pass a substring, wildcard expression, or exact name fragment.

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

Parameters3/5

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

Schema description coverage is 100%, and the input schema already documents class_name_query as 'The pattern to search for in class names.' The description merely restates the same idea without adding extra meaning about accepted pattern syntax, wildcards, or formatting.

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

Purpose4/5

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

The description states a clear verb and resource: 'Find classes matching a pattern.' It distinguishes itself from siblings like search_methods_like and search_traits_like by targeting classes specifically. However, it does not clarify what kind of pattern matching is used ('like' semantics, wildcards, regex), so it falls short of full clarity.

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 gives no guidance on when to use this tool versus alternatives such as list_classes, search_methods_like, or search_implementors. The intended use is implied by the name and the single parameter, but there are no explicit exclusions or alternative recommendations.

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

search_implementorsSearch ImplementorsA
Read-only

Get all implementors of a method selector.

ParametersJSON Schema
NameRequiredDescriptionDefault
method_nameYesThe method name to find implementors for

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

The readOnlyHint annotation already communicates that this is a safe read operation, and the description's 'Get all' aligns with that. The description adds no further behavioral details such as whether the match is exact, how results are ordered, or whether inherited/overridden methods are included, but it does not contradict the annotations.

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

Conciseness5/5

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

The description is a single focused sentence that immediately states the tool's purpose with no filler. Every word earns its place, and the core resource and action are 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 simple one-parameter read-only lookup with an output schema present, the description is largely sufficient. The only gap is the lack of explicit guidance on the expected format of the method selector (e.g., exact spelling, colons) and how 'implementors' is defined regarding inheritance, but the output schema and annotation help cover the rest.

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 already fully documents the single required parameter method_name with 100% coverage. The description adds only the term 'method selector', which is a useful synonym but does not significantly expand on the schema's 'method name to find implementors for'.

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 ('Get') and the resource ('all implementors of a method selector'), which is specific and distinct from sibling tools like search_methods_like or search_references. Even without naming alternatives, the concept of 'implementors' unambiguously identifies this tool's role.

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?

Usage is implied by the tool's name and description: an agent should call this when it needs all implementors of a method selector. However, the description does not explicitly state when to prefer this over search_methods_like or other related search tools, nor does it exclude fuzzy/substring matching scenarios.

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

search_methods_likeSearch Methods LikeC
Read-only

Find methods matching a pattern.

ParametersJSON Schema
NameRequiredDescriptionDefault
method_name_queryYesThe pattern to search for in method names

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With readOnlyHint=true, annotations already communicate that this is a safe read operation. The description adds little beyond that; it doesn't disclose pattern semantics (substring vs wildcard vs regex), case sensitivity, match limits, or error behavior, which are important for a search tool.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. It is concise, though so minimal that it omits useful details; still, structural efficiency is high.

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 one-parameter tool with an output schema and read-only annotation, the description is partially adequate. However, the meaning of 'pattern' is unspecified, and there is no guidance on how to formulate method_name_query, leaving a notable gap that could lead to incorrect 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 coverage for method_name_query is 100%, so the schema already documents the parameter. The description adds no additional meaning about pattern format or behavior, so the baseline score of 3 applies.

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

Purpose4/5

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

The description 'Find methods matching a pattern' states a clear verb and resource, and the resource 'methods' distinguishes it from sibling tools like search_classes_like and search_traits_like. However, it doesn't explicitly name or contrast those alternatives, so it stops short of fully differentiating itself.

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 gives no guidance on when to use this tool versus siblings or alternatives. There is no mention of context, exclusions, or which pattern syntax to use, so an agent must infer appropriate usage.

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

search_referencesSearch ReferencesB
Read-only

Get all references to a method selector or a symbol.

ParametersJSON Schema
NameRequiredDescriptionDefault
method_name_or_symbolYesThe method name or symbol to find references for

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already provide readOnlyHint=true and openWorldHint=false, covering the safety profile and closed-world scope. The description adds no additional behavioral context such as result grouping, ordering, search scope, or limitations beyond what the annotations already declare.

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?

A single declarative sentence that is front-loaded with the action and contains no filler, repetition, or irrelevant detail. It is appropriately sized for a simple one-parameter tool.

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 one-parameter read-only search tool with an output schema and annotations, the description is minimally sufficient. Some ambiguity remains about what counts as a 'symbol' and whether it could include class symbols, but the simplicity and structured metadata keep this from being a critical gap.

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

Parameters3/5

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

Schema description coverage is 100% and the parameter description already explains that the value is 'the method name or symbol to find references for'. The tool description adds no syntax details, examples, or further semantic clarification, so it does not exceed the baseline.

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 names a specific action ('Get all references') and a specific resource ('a method selector or a symbol'), which is clear and distinct from the class-focused sibling search_references_to_class. It stops short of an explicit contrast with related search tools, so it is not a full 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?

There is no guidance about when to use this tool versus alternatives such as search_references_to_class, search_methods_like, or search_implementors. The description only states the operation, leaving selection criteria entirely to inference.

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

search_references_to_classSearch References to ClassC
Read-only

Find references to a class.

ParametersJSON Schema
NameRequiredDescriptionDefault
class_nameYesThe name of the class to find references for

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is known. The description adds no behavioral context beyond that: it does not explain what counts as a 'reference', whether the search spans the whole project, or whether it includes test code. With no additional behavioral disclosure, the description carries little value beyond the annotations.

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 a single, active, front-loaded sentence with no wasted words. It is appropriately sized for the minimal amount of information it conveys, though it could include more useful context without becoming verbose.

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

Completeness3/5

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

The tool has only one fully documented parameter, an output schema, and read-only annotations, so the core invocation is straightforward. However, the description is not complete enough because it fails to clarify the scope of 'references' and does not differentiate the tool from the sibling 'search_references'. For a simple tool this is adequate, but there is a clear gap in selection guidance.

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

Parameters3/5

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

Schema description coverage is 100%, and the parameter 'class_name' is already documented as 'The name of the class to find references for'. The description does not add any extra meaning, examples, or edge-case guidance around the parameter, so the baseline score of 3 applies.

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

Purpose4/5

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

The description 'Find references to a class' clearly states the action and the target resource with a specific verb and object. It is not a tautology because it uses 'find' rather than repeating 'search'. However, it does not explicitly distinguish itself from the sibling 'search_references', which may have a broader scope, so it falls short of full 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 'search_references' or 'search_implementors'. It does not mention any exclusions, prerequisites, or conditions that would help an agent select this tool over its siblings. Usage context is left entirely to inference from the name and parameter.

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

search_traits_likeSearch Traits LikeB
Read-only

Find traits matching a pattern.

ParametersJSON Schema
NameRequiredDescriptionDefault
trait_name_queryYesThe pattern to search for in trait names

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

The description adds no behavioral detail beyond the read-only search operation. Annotations already declare readOnlyHint=true, and the description does not disclose pattern syntax, case sensitivity, result scoping, or any other behavioral characteristics.

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

Conciseness5/5

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

The description is a single efficient sentence with no filler. It front-loads the action and target, which is appropriate for a simple search tool.

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 one-parameter, read-only search tool with an output schema, the description is minimal but workable. It does not explain what traits are or whether the pattern follows a specific syntax, but the schema and annotations cover the most essential invocation details.

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

Parameters3/5

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

Schema coverage is 100% and the parameter description already explains that trait_name_query is the pattern to search for in trait names. The tool description merely echoes 'matching a pattern' without adding format, syntax, or examples.

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

Purpose4/5

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

The description states a specific verb and resource ('Find traits') and indicates the search mechanism ('matching a pattern'). It is clear from the resource term that this tool differs from siblings like search_classes_like or search_methods_like, though it does not explicitly name 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 search_classes_like or search_methods_like. The intended use is only implied by the tool name and the word 'traits', with no explicit conditions or exclusions.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 22 tool updatesv3.3.0
    • First observedapply_settings
    • First observedeval
    • First observedexport_package
    • First observedget_class_comment
    • First observedget_class_source
    • First observedget_method_source
    • First observedget_settings
    • First observedimport_package
    • First observedinstall_project
    • First observedlist_classes
    • First observedlist_extended_classes
    • First observedlist_methods
    • First observedlist_packages
    • First observedread_screen
    • First observedrun_class_test
    • First observedrun_package_test
    • First observedsearch_classes_like
    • First observedsearch_implementors
    • First observedsearch_methods_like
    • First observedsearch_references
    • First observedsearch_references_to_class
    • First observedsearch_traits_like

TDQS

B3.4/5.0

Scored across 22 tools

Disambiguation4/5

Most tools have a clear verb+resource pairing, and search/list operations are separated by target. However, search_references and search_references_to_class are easy to confuse, and list_classes/list_extended_classes have somewhat similar boundaries.

Naming Consistency5/5

All tools use snake_case verb_noun naming, with consistent prefixes such as get_, search_, list_, and run_. Multi-word targets like list_extended_classes and search_references_to_class still follow the same readable pattern.

Tool Count3/5

22 tools is on the heavy side for a single server, though the set covers several distinct subdomains: evaluation, source retrieval, search, package management, testing, UI inspection, and settings. A few peripheral tools could reasonably be split out, but the count is not unreasonable.

Completeness3/5

The server covers discovery, source access, package import/export, and test running, but has notable gaps such as no way to list methods for a specific class, no class hierarchy queries, and no single-test-method runner. Eval and import can cover some mutations indirectly, but the surface is unevenly complete.

Maintenance

ActivityMaintained
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