Skip to main content
Glama
mumez

pharo-smalltalk-interop-mcp-server

by mumez

pharo-smalltalk-interop-mcp-server

CI

⚠️ This project has moved. Starting with v4.0.0, development has moved to smalltalk-interop-mcp-server, which adds support for Squeak's SIS server in addition to Pharo. Please use the new repository for the latest features and updates; this repository is kept for historical reference only.

A local MCP server to communicate local Pharo Smalltalk image. 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, Spec presenters, and Roassal visualizations

  • Server Configuration: Retrieve and modify server settings dynamically

Prerequisites

Related MCP server: mcp-server-code-runner

Installation

Quick Start (using uvx)

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

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

Development Installation

To set up for development:

  1. Clone the repository:

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

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

Usage

Running the MCP Server

Using uvx (no installation required):

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

Using uv (after cloning the repository):

uv run pharo-smalltalk-interop-mcp-server

Environment Variables

You can configure the server using environment variables:

  • PHARO_SIS_PORT: Port number for PharoSmalltalkInteropServer (default: 8086)

Examples:

Using uvx:

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

Using uv:

PHARO_SIS_PORT=9999 uv run pharo-smalltalk-interop-mcp-server

Cursor MCP settings

Using uvx (recommended):

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

Using uv (after cloning):

{
  "mcpServers": {
    "smalltalk-interop": {
      "command": "uv",
      "args": [
        "--directory",
        "/your-path/to/pharo-smalltalk-interop-mcp-server",
        "run",
        "pharo-smalltalk-interop-mcp-server"
      ],
      "env": {
        "PHARO_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/pharo-smalltalk-interop-mcp-server.git pharo-smalltalk-interop-mcp-server

Using uv (after cloning):

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

MCP Tools Available

This server provides 22 MCP tools that map to all PharoSmalltalkInteropServer APIs:

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 Pharo 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 Pharo UI issues.

Parameters:

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

  • 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
read_screen(target_type='spec', capture_screenshot=false)

# Inspect Roassal visualizations without screenshot (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):

  • 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):

  • 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 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

pharo-smalltalk-interop-mcp-server/
├── pharo_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 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 (PharoClient class)

  • All 22 Pharo 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_settingsB

Modify server configuration dynamically.

Args: settings: Dictionary containing server settings to modify

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

ParametersJSON Schema
NameRequiredDescriptionDefault
settingsYesSettings dictionary to apply to the server

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?

No annotations are provided, so the description carries full burden. It details the return format (success/error dict), which is useful, but does not disclose potential side effects, permissions, or state changes beyond the mutation implied by 'Modify'.

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 short and to the point. The docstring with Args and Returns provides structured detail without unnecessary words. Every sentence adds 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?

Given the simple one-parameter input and presence of an output schema, the description adequately explains the operation and return values. However, it lacks guidance on valid settings keys or constraints, which could be important for correct 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% for the single parameter 'settings'. The description adds 'Dictionary containing server settings to modify', which closely mirrors the schema's 'Settings dictionary to apply to the server'. Little additional meaning beyond 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 'Modify server configuration dynamically' with a specific verb and resource. It distinguishes from read-only sibling 'get_settings' implicitly, but no explicit differentiation is provided.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'get_settings' or other sibling tools. No exclusions or prerequisites mentioned.

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

evalB

Evaluate a Pharo Smalltalk expression with PharoSmalltalkInteropServer.

Args: code: The Smalltalk code to evaluate

Returns: dict: API response with success/error and result - Success: {"success": True, "result": any} - result contains the evaluation result - Error: {"success": False, "error": str} - error contains error message

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?

No annotations are provided, so the description must fully disclose behavioral traits. It only describes the return format (success/error dict) but does not warn about potential side effects, risks of arbitrary code execution, or required permissions. This is a significant gap for an evaluation tool.

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

Conciseness3/5

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

The description is structured with 'Args' and 'Returns' sections, but includes redundant formatting (e.g., 'Returns:' block) that could be more concise. It is not overly long but could be streamlined.

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 an arbitrary code execution tool with no annotations, the description lacks crucial information about side effects, safety considerations, error behavior, and prerequisites. It mentions the return format but omits important context for safe 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 is 100% with a single 'code' parameter described. The description repeats the same text as the schema's description, adding no additional meaning beyond what is already in the input schema. Baseline score of 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 'Evaluate a Pharo Smalltalk expression' with a specific verb and resource. It distinguishes from sibling tools that perform different operations like export, import, reading, or searching.

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 purpose is implied by the tool name and description, but there is no explicit guidance on when to use this tool versus alternatives or any exclusions. Sibling tools cover different domains, but no when-not advice is provided.

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

export_packageB

Export a package in Tonel format.

Args: package_name: The name of the package to export path: The path where to export the package (default: /tmp)

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

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

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 description explains the return format but omits behavioral traits such as side effects (file creation), permissions needed, or error conditions beyond a generic error dict.

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 follows a clear docstring structure with Args and Returns sections, front-loading the purpose. It is concise but could be more succinct.

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?

Covers return values adequately with the output schema-like dict. However, lacks usage context and behavioral details, making it incomplete for a tool with no annotations.

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

Parameters3/5

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

Schema coverage is 100%. The description adds the default path value but otherwise restates parameter names. Baseline score of 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 action ('Export a package') and the format ('Tonel format'), distinguishing it from sibling 'import_package'.

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 explicit guidance on when to use this tool versus alternatives. No context about prerequisites or conditions for exporting.

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

get_class_commentA

Get the comment of a Smalltalk class.

Args: class_name: The name of the class to retrieve comment for

Returns: dict: API response with success/error and result - Success: {"success": True, "result": str} - result contains the class comment - Error: {"success": False, "error": str} - error contains error message

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

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/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 discloses the return format (dict with success/error keys and result string or error message). However, it does not explicitly state that this is a read-only operation with no side effects, though that is inferred from the name.

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 very concise and well-structured with Args and Returns sections. Every sentence adds value and is front-loaded.

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

Completeness5/5

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

Given the tool's simplicity (single parameter, no nested objects, output schema implied by return format description), the description is fully complete. It covers purpose, parameter, and return format without gaps.

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

Parameters3/5

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

Schema coverage is 100% and the description repeats the schema description verbatim ('The name of the class to retrieve comment for'). No additional meaning or constraints are added beyond the schema.

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

Purpose5/5

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

The description states 'Get the comment of a Smalltalk class' with a specific verb and resource. It clearly distinguishes from siblings like get_class_source (source code) and get_method_source (method source).

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 a class comment, but no explicit when-to-use or when-not-to-use guidance is provided, nor are alternatives mentioned.

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

get_class_sourceA

Get the source code of a Smalltalk class.

Args: class_name: The name of the class to retrieve source for

Returns: dict: API response with success/error and result - Success: {"success": True, "result": str} - result contains the class source code - Error: {"success": False, "error": str} - error contains error message

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

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are present, so the description carries the full burden. It discloses the return format (dict with success/error keys and string result), providing reasonable transparency for a read 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 concise and well-structured, with the main purpose stated upfront followed by clear parameter and return value sections. Every sentence adds value without redundancy.

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

Completeness5/5

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

Given the single parameter and the inclusion of a detailed return schema (dict with success/error structure), the description is complete. It fully informs the agent about input and output expectations.

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 description essentially restates the schema parameter description ('The name of the class to retrieve source for'), adding no new meaning beyond what the schema already provides.

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 'Get the source code of a Smalltalk class', specifying the verb and resource. It distinguishes from sibling tools like get_class_comment and get_method_source by focusing on source code retrieval.

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 retrieving class source code but lacks explicit guidance on when to use this tool versus alternatives. No when-not or situational context is provided.

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

get_method_sourceB

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

Args: class_name: The name of the class containing the method method_name: The name of the method to retrieve source for is_class_method: True for class-side methods, False for instance methods (default: False)

Returns: dict: API response with success/error and result - Success: {"success": True, "result": str} - result contains the method source code - Error: {"success": False, "error": str} - error contains error message

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.4/5.0
Behavior2/5

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

No annotations provided, and the description fails to disclose behavioral traits such as idempotency, authorization needs, or side effects. It only describes the return format, not operational behavior.

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?

Clear structure with Args/Returns sections and front-loaded purpose. However, it redundantly restates schema descriptions, which could be trimmed for conciseness.

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

Completeness5/5

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

For a simple retrieval tool with 3 parameters and an output schema described in text, the description fully covers what the tool does, its parameters, and return format, leaving no ambiguity.

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 description repeats parameter descriptions verbatim, adding no new meaning beyond what the schema already provides (e.g., defaults and types are already in 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 'Get the source code of a specific method in a class' uses a specific verb and resource, clearly distinguishing it from siblings like get_class_source (whole class) or list_methods (listing names).

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 explicit guidance on when to use this tool versus alternatives like get_class_source or list_methods. The description only lists parameters without contextual usage advice.

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

get_settingsA

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

A4.3/5.0
Behavior4/5

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

The description discloses the return format (success/error dictionary) and implies a read-only operation via 'retrieve'. With no annotations provided, this is adequate 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?

Extremely concise: one sentence defining the action followed by the return format. No wasted words, and the main point is front-loaded.

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

Completeness5/5

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

Given zero parameters and an output schema that likely details the return structure, the description is complete. It explains what the tool does and what it returns.

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?

No parameters exist, so the description adds value by explaining the tool's purpose and return format. Baseline for 0 parameters is 4, and the description meets that.

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 'Retrieve current server configuration.' with a specific verb and resource, distinguishing it from sibling tools like 'apply_settings' which modify settings.

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?

No explicit guidance on when to use or not use this tool. While its purpose is clear, it lacks context about alternatives or exclusions, such as recommending use before modifying settings.

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

import_packageA

Import a package from specified path.

Args: package_name: The name of the package to import path: The path to the package file to import (default: /tmp)

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

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

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?

Without annotations, the description provides basic behavioral info (imports package, returns success/error dict) but does not disclose side effects, permissions, or limitations (e.g., overwrite behavior).

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 structured with Args/Returns sections and is relatively concise, though it repeats schema information slightly, which could be trimmed.

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

Completeness3/5

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

The description covers the core functionality and return format, but for a state-modifying tool, it lacks details on edge cases (e.g., path requirements, existing package conflicts).

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 description restates parameter names and descriptions, adding minimal new semantic value beyond what the schema already provides.

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 'import' and the resource 'a package from specified path', distinguishing it from siblings like 'export_package' and 'list_packages'.

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 (when importing a package) but does not explicitly state when to use it over alternatives or any prerequisites. Lacks direct guidance.

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

install_projectA

Install a project using Metacello.

Args: project_name: The name of the project to install repository_url: The repository URL for the project load_groups: Comma-separated list of groups to load (optional)

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

ParametersJSON Schema
NameRequiredDescriptionDefault
project_nameYesThe name of the project to install
repository_urlYesThe repository URL for the project
load_groupsNo

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?

No annotations are provided, so the description carries the full burden. It discloses the return format and that the tool installs a project, but it does not mention potential side effects or requirements (e.g., network access, dependencies). Basic transparency is present but could be richer.

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 well-structured with 'Args' and 'Returns' sections. The first sentence clearly states the purpose. It is concise but could be slightly more compact without the docstring format.

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

Completeness4/5

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

Given the tool's moderate complexity (3 parameters, output schema present), the description is complete enough. It covers parameters and return values, though it could mention prerequisites like Metacello availability.

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 67%, and the description repeats the parameter semantics from the schema. It adds the return structure, which is helpful, but does not significantly enhance understanding of parameters beyond what the schema already provides.

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 'Install a project using Metacello.' with a specific verb and resource. No sibling tool has a similar purpose, so it is well distinguished.

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 a clear context for using the tool but does not explicitly state when not to use it or mention alternatives. However, the task is straightforward and the context is sufficient.

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

list_classesA

Get list of classes in a package.

Args: package_name: The name of the package

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

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe name of the package

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses that the tool returns a dictionary with success/error and a list of class names. However, it does not mention any behavioral traits like authentication requirements, rate limits, or side effects, which is acceptable for a simple read-only tool but not fully transparent.

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?

Description is concise, uses a clear docstring format with Args and Returns sections, and front-loads the main purpose. Every sentence adds value with no redundancy.

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

Completeness5/5

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

Given the tool's low complexity, high schema coverage, and presence of an output schema, the description is complete: it covers purpose, the single parameter, and return format in sufficient detail for an agent to use the tool 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?

Input schema has 100% description coverage for the single parameter 'package_name'. The description repeats this parameter with no added meaning beyond the schema, so baseline score of 3 is appropriate.

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

Purpose5/5

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

Description clearly states 'Get list of classes in a package' with a specific verb and resource. It distinguishes from sibling tools like 'list_extended_classes' by focusing on basic class listing within a package and requiring a package name.

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 explicit guidance on when to use this tool versus alternatives such as 'list_extended_classes', 'list_methods', or 'search_classes_like'. The description simply states the function without usage context.

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

list_extended_classesA

Get list of extended classes in a package.

Args: package_name: The name of the package

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

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?

No annotations provided, so description carries burden. It details return format (success/error dict) but does not mention side effects, permissions, or specific failure modes. Basic behavioral info is present.

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?

Description is well-structured with Args and Returns sections, no fluff. However, it redundantly describes package_name which is already in the schema. Still 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?

Given one parameter and an output schema described in text, the description covers essential aspects. It could be more complete with usage examples or comparisons to siblings, but it is adequate.

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 description repeats the parameter info from schema without adding additional meaning or context 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?

Description clearly states it 'Get list of extended classes in a package', specifying the action, resource, and scope, distinguishing from sibling like '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?

No guidance on when to use this tool vs alternatives (e.g., list_classes, search_classes_like). Only the parameter is described, but no usage context or exclusions.

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

list_methodsA

Get list of methods in a package.

Args: package_name: The name of the package

Returns: dict: API response with success/error and result - Success: {"success": True, "result": list[str]} - result contains list of method signatures Each method: "ClassName>>#methodName" - Error: {"success": False, "error": str} - error contains error message

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe name of the package

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses the return format (dict with success/error) and result structure (list of method signatures), including error behavior. However, it does not mention if the operation is read-only or any permissions needed.

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 well-structured with Args and Returns sections, but it is somewhat verbose (e.g., the full success/error structure). It front-loads the purpose and is efficient overall, though could be slightly more concise.

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 this simple one-parameter, list-returning tool, the description covers input, output format, error handling, and return value structure. No missing information given the 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% (one parameter with description). The description repeats the parameter name and purpose in an Args section but adds no additional meaning, format constraints, or examples beyond the schema. 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 it 'Get[s] list of methods in a package', using a specific verb and resource. It distinguishes from sibling tools like list_classes (classes) and list_packages (packages) by focusing on methods.

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 does not explicitly state when to use this tool over alternatives or when not to use it. Usage is implied by the name and purpose, but no exclusions or alternative tool names are mentioned, leaving an agent to infer context.

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

list_packagesA

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

A3.9/5.0
Behavior4/5

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

The description discloses the return format with success/error structure, covering read-only behavior. Without annotations, it provides good transparency by explicitly stating the output shape. However, it does not discuss potential side effects (none expected) or authentication requirements.

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

Conciseness5/5

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

The description is extremely concise with no extraneous text. It uses a clear docstring format with a Returns section, making it easy to parse. Every sentence provides value.

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

Completeness5/5

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

Given the simplicity (no parameters, output schema exists), the description fully covers the essential information: what the tool does and its return format. No additional details are needed for complete understanding.

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?

There are no parameters, and the input schema is fully covered (100%). The description adds no parameter-specific information but explains the return structure, which is beyond the schema. Baseline is 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 verb 'Get list' and the resource 'all packages', making the purpose unambiguous. It differentiates from sibling tools by focusing exclusively on package listing, which is distinct from other tools like 'export_package' 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?

No guidance is provided on when to use this tool versus alternatives such as 'export_package' or 'import_package'. The description lacks any context about prerequisites, limitations, or scenarios where this tool is preferable.

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

read_screenA

Comprehensive UI screen reader for debugging Pharo interfaces.

Captures screenshot and extracts complete UI structure for World morphs, Spec presenters, and Roassal visualizations.

Args: target_type: 'world' for morphs, 'spec' for Spec windows, 'roassal' for visualizations capture_screenshot: Include PNG screenshot in response (default: true)

Returns: dict: UI structure and metrics - screenshot: Path to PNG file in /tmp/ (if capture_screenshot=true) - target_type: Which UI type was inspected - structure: Complete UI hierarchy data - summary: Human-readable description

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

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description must cover behavior. It states that a screenshot and UI structure are captured, and optionally saves a PNG. However, it does not disclose potential side effects (e.g., whether it modifies the UI) or prerequisites (e.g., requires a running Pharo instance). This is adequate but not exhaustive.

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 well-structured with a purpose statement, parameter breakdown, and return fields. It is concise but could be slightly more streamlined. No unnecessary repetition.

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

Completeness4/5

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

Given the tool's simplicity (2 parameters, output schema present), the description covers inputs and outputs adequately. It lacks error handling or edge cases, but is sufficient for a debugging tool.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by mapping target_type values to specific UI elements (morphs, windows, visualizations) and clarifying the screenshot return behavior, exceeding the schema 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 identifies the tool as a 'comprehensive UI screen reader' for debugging Pharo interfaces, with specific target types (World morphs, Spec presenters, Roassal visualizations). This distinguishes it from sibling tools like eval or list_classes, which serve different purposes.

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 for UI debugging and lists three target types, giving clear context. However, it does not explicitly state when not to use this tool or provide alternatives, though no direct sibling overlaps exist.

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

run_class_testB

Run tests for a class.

Args: class_name: The class name to run tests for

Returns: dict: API response with success/error and result - Success: {"success": True, "result": str} - result contains test results summary - Error: {"success": False, "error": str} - error contains error message

ParametersJSON Schema
NameRequiredDescriptionDefault
class_nameYesThe class name to run tests for

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?

With no annotations, the description accurately describes the return format (success/error dict). However, it does not disclose potential side effects (e.g., test execution side effects), permission requirements, or other behavioral traits beyond the interface.

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 well-structured with Args/Returns sections, but it is slightly verbose for a simple one-parameter tool. Still efficiently communicates purpose and output.

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 parameter and the presence of an output schema in the description, the tool definition is fairly complete. It explains input and output clearly, though lacks error handling details and contextual cues for complex 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 is 100% for the single parameter, and the description repeats the same information from the schema ('The class name to run tests for'), adding no extra semantic 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 verb 'Run tests' and the resource 'for a class'. It is specific and distinguishable from the sibling 'run_package_test' by the class scope, though not explicitly differentiating 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 explicit guidance on when to use this tool versus alternatives like 'run_package_test'. No when-not conditions 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.

run_package_testB

Run tests for a package.

Args: package_name: The package name to run tests for

Returns: dict: API response with success/error and result - Success: {"success": True, "result": str} - result contains test results summary - Error: {"success": False, "error": str} - error contains error message

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesThe package name to run tests 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?

No annotations provided. Description only mentions success/error return format, omitting side effects, permissions, or safety implications.

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?

Brief structured doc with Args and Returns sections, no wasted content.

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?

Covers input/output but lacks behavioral context (e.g., side effects on environment). Adequate for a simple tool with annotations 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?

Schema coverage is 100%. Description repeats parameter info without adding extra meaning beyond the schema.

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

Purpose5/5

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

Description clearly states 'Run tests for a package.' Differentiates from sibling 'run_class_test' by specifying 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 Guidelines2/5

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

No guidance on when to use this tool versus alternatives like run_class_test. No prerequisites or context provided.

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

search_classes_likeA

Find classes matching a pattern.

Args: class_name_query: The pattern to search for in class names

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

ParametersJSON Schema
NameRequiredDescriptionDefault
class_name_queryYesThe pattern to search for in class names

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Without annotations, the description discloses the return format (success/error with list of strings) but does not mention safety (e.g., read-only nature), side effects, or prerequisites, which would improve transparency.

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 with a clear purpose and organized arg/return section, though the return documentation could be slightly more compact.

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

Completeness4/5

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

For a simple tool with one parameter and output schema, the description adequately explains purpose, parameter, and return format. Annotations are missing but the description covers essential 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% for the single parameter, and the description repeats the schema's description without adding new meaning, so baseline score of 3 applies.

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 'Find classes matching a pattern' clearly states the verb (Find), resource (classes), and pattern-matching aspect, distinguishing it from siblings like list_classes and search_methods_like.

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 pattern-based class search but does not explicitly state when to use this tool vs alternatives like list_classes or search_methods_like, nor when not to use it.

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

search_implementorsA

Get all implementors of a method selector.

Args: method_name: The method name to find implementors for

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

ParametersJSON Schema
NameRequiredDescriptionDefault
method_nameYesThe method name to find implementors for

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It explains the return format (success/error with result structure) and implies it's a read operation, but does not explicitly state side effects, authentication, or other behavioral traits beyond the basic query.

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 well-structured with a clear first sentence defining purpose, followed by a detailed Args/Returns section. While verbose due to the return structure details, it remains readable and front-loaded, earning its length.

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, single-parameter tool with no output schema, the description provides a complete explanation of both input and expected output, including error handling. It lacks examples or definition of 'method selector', but overall adequately covers the tool's behavior.

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

Parameters3/5

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

The input schema has 100% coverage for the single parameter, with a description matching the one in the tool description. The description adds no additional meaning or format details beyond the schema, so it meets but does not exceed the baseline.

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

Purpose5/5

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

The description clearly states the action ('Get all implementors') and the resource ('of a method selector'), making the tool's purpose immediately understandable. It is distinct from sibling tools like search_references which search for references, not implementations.

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 does not provide explicit guidance on when to use this tool versus alternatives like search_references or search_methods_like. While the purpose is clear, no when-not or preferred contexts are mentioned, leaving the agent to infer usage.

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

search_methods_likeA

Find methods matching a pattern.

Args: method_name_query: The pattern to search for in method names

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

ParametersJSON Schema
NameRequiredDescriptionDefault
method_name_queryYesThe pattern to search for in method names

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It describes the return format (dict with success/error/result) and indicates a read-only operation. However, it could disclose the pattern matching syntax (e.g., SQL LIKE or regex) for better transparency.

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 with the core purpose. The Args/Returns structure is clear but slightly verbose for a single parameter; it could be more streamlined.

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 search tool with one parameter and a detailed return format in the description, completeness is adequate. However, adding pattern syntax details would improve it.

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

Parameters3/5

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

Schema coverage is 100%, so the description repeats the parameter info with no added meaning. Baseline is 3. No examples or additional context for the parameter beyond the schema description.

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 'Find methods matching a pattern' clearly states the tool's action (find), resource (methods), and operation (matching a pattern). This distinguishes it from sibling tools like search_classes_like or search_traits_like.

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 does not provide explicit guidance on when to use this tool versus alternatives. Usage is implied by the purpose, but no exclusions or context are given for when not to use it.

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

search_referencesA

Get all references to a method selector or a symbol.

Args: method_name_or_symbol: The method name to find references for

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

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

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Despite no annotations, the description discloses the return format in detail (success/error structure with result list containing class, method, package). It does not mention side effects, but as a read-only operation this is acceptable.

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 concise with a one-line summary followed by structured Args and Returns sections. Every sentence is necessary and well-organized.

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 description covers the input, output, and purpose completely for a simple search tool. However, it lacks differentiation context from sibling tools, which could be included to enhance completeness.

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

Parameters3/5

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

The parameter description in the schema ('The method name or symbol to find references for') is identical to the Args in the description. Since schema coverage is 100%, the description adds no additional semantic value beyond what the schema already provides.

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 'Get all references to a method selector or a symbol', which is a specific verb and resource. It distinguishes from siblings like search_references_to_class which targets class references.

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 does not provide explicit guidance on when to use this tool versus alternatives like search_references_to_class or search_implementors. It only describes the function, leaving the agent to infer usage from context.

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

search_references_to_classA

Find references to a class.

Args: class_name: The name of the class to find references for

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

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

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

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

No annotations provided, but description explicitly details return format (success/error with nested structure). Implies a read-only operation; no contradictory hints. Missing potential rate limits or permission requirements.

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

Conciseness3/5

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

Structured Args/Returns format is clear but somewhat verbose; could be more concise. Each sentence contributes, but the return explanation is lengthy.

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 single parameter, full schema coverage, and presence of output schema (though not shown), description sufficiently covers purpose and output. Lacks only minor behavioral 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 description coverage is 100%, so description adds no new meaning beyond what schema already provides for the class_name parameter. Baseline score applies.

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

Purpose5/5

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

Description clearly states 'Find references to a class' with specific parameter and return details. Distinguishes from sibling tools like search_references (general) and search_implementors (finds implementors).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. Does not mention that broader search_references may be more appropriate for non-class references, or any prerequisites.

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

search_traits_likeA

Find traits matching a pattern.

Args: trait_name_query: The pattern to search for in trait names

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

ParametersJSON Schema
NameRequiredDescriptionDefault
trait_name_queryYesThe pattern to search for in trait names

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?

No annotations are provided, so the description carries the full burden. It discloses that the tool returns a dict with success/error and a list of matching traits, but does not mention side effects, authorization needs, or that it is read-only. The return format is described beyond the schema, which adds some value.

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 with a single sentence plus structured Args/Returns. No extraneous information, though it could be more tightly formatted.

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 description adequately covers the tool's operation, parameter, and return structure. However, it does not specify the pattern syntax (e.g., SQL LIKE vs regex), which is a minor 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 coverage is 100%, and the description's Args section simply restates the schema description without adding new meaning. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Find traits matching a pattern', which is a specific verb+resource combination. It distinguishes from sibling tools like search_classes_like and search_methods_like by specifying 'traits'.

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 search_classes_like or search_references. No when-not or explicit context is given.

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.0.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

A3.7/5.0

Scored across 22 tools

Disambiguation5/5

Each tool targets a distinct operation: settings management, code evaluation, package operations, code browsing, searching, testing, and UI reading. No two tools have overlapping purposes.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (e.g., get_class_source, list_packages, search_methods_like) with clear and predictable naming.

Tool Count4/5

22 tools is on the higher side but still reasonable for a comprehensive Smalltalk interop server covering many aspects; each tool serves a distinct purpose.

Completeness3/5

Covers many areas (evaluation, browsing, searching, testing, package management, UI reading) but lacks write operations for code (no create/update/delete for classes or methods), which is a notable gap for a development tool.

Maintenance

ActivitySlowing
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers