Skip to main content
Glama

Opentrons MCP Server

A Model Context Protocol (MCP) server for Opentrons robot automation and API documentation. This tool provides both comprehensive API documentation and direct robot control capabilities for Opentrons Flex and OT-2 robots.

Features

API Documentation Tools

  • Search Endpoints: Find API endpoints by functionality, method, or keyword

  • Endpoint Details: Get comprehensive information about specific API endpoints

  • Category Browsing: List endpoints by functional category

  • API Overview: High-level overview of the entire Opentrons HTTP API

Robot Automation Tools

  • Protocol Management: Upload, list, and manage protocol files

  • Run Control: Create runs, start/stop execution, monitor progress

  • Robot Health: Check connectivity and system status

  • Hardware Control: Home robot, control lights, and basic operations

Related MCP server: Swagger/Postman MCP Server

Installation

npm install -g opentrons-mcp

From source

git clone https://github.com/yerbymatey/opentrons-mcp.git
cd opentrons-mcp
npm install

Configuration

Add to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "opentrons": {
      "command": "opentrons-mcp",
      "args": []
    }
  }
}

If installed from source:

{
  "mcpServers": {
    "opentrons": {
      "command": "node",
      "args": ["/path/to/opentrons-mcp/index.js"]
    }
  }
}

Available Tools

Documentation Tools

search_endpoints

Search Opentrons HTTP API endpoints by functionality, method, path, or keyword.

  • query (required): Search term

  • method (optional): Filter by HTTP method (GET, POST, PUT, DELETE, PATCH)

  • tag (optional): Filter by API category

  • include_deprecated (optional): Include deprecated endpoints

get_endpoint_details

Get comprehensive details about a specific API endpoint.

  • method (required): HTTP method

  • path (required): API endpoint path

list_by_category

List all endpoints in a specific functional category.

  • category (required): API category (Health, Control, Protocol Management, etc.)

get_api_overview

Get high-level overview of the Opentrons HTTP API structure and capabilities.

Automation Tools

upload_protocol

Upload a protocol file to an Opentrons robot.

  • robot_ip (required): Robot IP address

  • file_path (required): Path to protocol file (.py or .json)

  • protocol_kind (optional): "standard" or "quick-transfer" (default: "standard")

  • key (optional): Client tracking key

  • run_time_parameters (optional): Runtime parameter values

get_protocols

List all protocols stored on the robot.

  • robot_ip (required): Robot IP address

  • protocol_kind (optional): Filter by protocol type

create_run

Create a new protocol run on the robot.

  • robot_ip (required): Robot IP address

  • protocol_id (required): ID of protocol to run

  • run_time_parameters (optional): Runtime parameter values

control_run

Control run execution (play, pause, stop, resume).

  • robot_ip (required): Robot IP address

  • run_id (required): Run ID to control

  • action (required): "play", "pause", "stop", or "resume-from-recovery"

get_runs

List all runs on the robot.

  • robot_ip (required): Robot IP address

get_run_status

Get detailed status of a specific run.

  • robot_ip (required): Robot IP address

  • run_id (required): Run ID to check

robot_health

Check robot health and connectivity.

  • robot_ip (required): Robot IP address

control_lights

Turn robot lights on or off.

  • robot_ip (required): Robot IP address

  • on (required): true to turn lights on, false to turn off

home_robot

Home robot axes or specific pipette.

  • robot_ip (required): Robot IP address

  • target (optional): "robot" for all axes, "pipette" for specific mount

  • mount (optional): "left" or "right" (required if target is "pipette")

Usage Examples

With Claude Desktop

Opentrons MCP in action Screenshot showing the Opentrons MCP server in action with Claude Desktop after asking for current protocols with opentrons for the Flex, give it the robot ip!

Once configured, you can use natural language to control your robot:

Upload a protocol:

Upload the protocol file at /path/to/my_protocol.py to my robot at 192.168.1.100

Check robot status:

Check if my robot at 192.168.1.100 is healthy and ready

Run a protocol:

List all protocols on my robot, then create and start a run for the latest one

Monitor progress:

Show me the status of run abc123 on my robot

Programmatic Usage

import { Client } from "@modelcontextprotocol/sdk/client/index.js";

// Connect to MCP server
const client = new Client(/* transport */);

// Upload protocol
await client.request({
  method: "tools/call",
  params: {
    name: "upload_protocol",
    arguments: {
      robot_ip: "192.168.1.100",
      file_path: "/path/to/protocol.py",
      protocol_kind: "standard"
    }
  }
});

Requirements

  • Node.js 18+

  • Opentrons robot with HTTP API enabled (port 31950)

  • Network connectivity between client and robot

Robot Setup

Ensure your Opentrons robot is:

  1. Connected to the same network as your client

  2. Running robot software version 7.0.0+

  3. Accessible on port 31950 (default for HTTP API)

You can verify connectivity by visiting http://your-robot-ip:31950/health in a browser.

API Reference

This tool provides access to the complete Opentrons HTTP API, including:

  • Protocol Management: Upload, analyze, and manage protocol files

  • Run Management: Create, control, and monitor protocol runs

  • Hardware Control: Robot movement, homing, lighting, and calibration

  • System Management: Health monitoring, settings, and diagnostics

  • Module Control: Temperature modules, magnetic modules, thermocyclers

  • Data Management: CSV files for runtime parameters

For detailed API documentation, use the search and documentation tools provided by this MCP server.

Troubleshooting

Cannot connect to robot

  • Verify robot IP address is correct

  • Ensure robot is powered on and connected to network

  • Check that port 31950 is accessible

  • Confirm robot software is running

Protocol upload fails

  • Verify file path exists and is readable

  • Ensure protocol file is valid Python (.py) or JSON format

  • Check available disk space on robot

  • Confirm protocol is compatible with robot type (OT-2 vs Flex)

Run execution issues

  • Verify all required labware and modules are attached

  • Check robot calibration status

  • Ensure protocol analysis completed successfully

  • Confirm no hardware errors or conflicts

Contributing

Contributions are welcome! Please feel free to submit issues and pull requests.

License

No license go brazy

Available Tools

14 tools
control_lightsC

Turn robot lights on or off

ParametersJSON Schema
NameRequiredDescriptionDefault
robot_ipYesRobot IP address
onYesTrue to turn lights on, false to turn off

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states the action ('turn') but does not disclose behavioral traits such as required permissions, whether the change is immediate or reversible, error handling, or effects on robot operation. For a mutation tool with zero annotation coverage, this is a significant gap.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It is appropriately sized and front-loaded, directly stating the tool's purpose without unnecessary elaboration.

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

Completeness2/5

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

Given the complexity (a mutation tool controlling hardware), lack of annotations, and no output schema, the description is incomplete. It does not address return values, error conditions, or operational constraints, leaving gaps for safe and effective use by an AI agent.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters ('robot_ip' and 'on') with clear descriptions. The description adds no additional meaning beyond what the schema provides, such as format details or usage examples. Baseline 3 is appropriate when schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action ('turn') and resource ('robot lights') with the specific states ('on or off'). It distinguishes from most siblings (e.g., 'control_run', 'home_robot') but not explicitly from 'robot_health' which might involve light status. The purpose is specific but lacks differentiation from potential overlapping tools.

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 is provided. The description does not mention prerequisites (e.g., robot connectivity), exclusions, or related tools like 'robot_health' that might check light status. Usage is implied by the action but without explicit context.

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

control_runC

Control run execution (play, pause, stop, resume)

ParametersJSON Schema
NameRequiredDescriptionDefault
robot_ipYesRobot IP address
run_idYesRun ID to control
actionYesAction to perform

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but lacks behavioral details. It doesn't disclose whether actions are destructive (e.g., 'stop' might terminate a run irreversibly), authentication needs, rate limits, or response behavior. The description only lists actions without operational context.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose ('control run execution') and lists key actions. Every word earns its place with no redundancy or unnecessary elaboration.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits (e.g., what 'stop' does to the run), error scenarios, or return values. Given the complexity of controlling execution, more context is needed beyond the basic action list.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents parameters. The description adds no additional meaning beyond implying the action parameter controls execution states, which is already clear from the enum. Baseline score of 3 is appropriate as the schema handles parameter documentation.

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 'control' and the resource 'run execution', with specific actions listed (play, pause, stop, resume). It distinguishes from siblings like 'create_run' (creation vs. control) and 'get_runs' (retrieval vs. control), though it doesn't explicitly mention these distinctions.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing run from 'create_run'), exclusions, or contextual cues like error handling. The description only lists actions without usage context.

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

create_runC

Create a new protocol run on the robot

ParametersJSON Schema
NameRequiredDescriptionDefault
robot_ipYesRobot IP address
protocol_idYesID of protocol to run
run_time_parametersNoOptional runtime parameter values

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool creates a run but doesn't explain what that entails—e.g., whether it starts execution immediately, requires specific robot states, has side effects like resource locking, or returns a run ID. This is a significant gap for a mutation tool with zero annotation coverage.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without any fluff or redundancy. It's appropriately sized and front-loaded, making it easy to parse quickly.

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

Completeness2/5

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

Given the complexity of creating a robot protocol run (a mutation operation with no annotations and no output schema), the description is incomplete. It lacks details on behavioral traits, return values, error conditions, or how it fits with sibling tools, leaving critical gaps for an AI agent to use it effectively.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters (robot_ip, protocol_id, run_time_parameters) with clear descriptions. The description adds no additional meaning beyond what the schema provides, such as format examples or usage context, resulting in a baseline score.

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

Purpose4/5

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

The description clearly states the action ('create') and resource ('new protocol run on the robot'), making the purpose immediately understandable. However, it doesn't distinguish this tool from sibling tools like 'control_run' or 'upload_protocol', which might have overlapping or related functionality in the robot protocol ecosystem.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an uploaded protocol first), exclusions, or how it relates to sibling tools like 'control_run' or 'upload_protocol', leaving the agent to infer usage context.

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

get_api_overviewB

Get high-level overview of the Opentrons HTTP API structure and capabilities

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves an 'overview' but doesn't clarify what that entails—such as whether it returns a summary, documentation links, or structured data. It also omits details like response format, potential rate limits, or authentication requirements, leaving significant gaps in understanding its behavior.

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

Conciseness5/5

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

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

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

Completeness3/5

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

Given the tool's simplicity (no parameters, no output schema, no annotations), the description is adequate but has clear gaps. It explains the purpose but lacks details on the output format or behavioral traits, which could be important for an AI agent to use it effectively. The absence of an output schema means the description should ideally hint at what is returned, but it doesn't.

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

Parameters4/5

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

The tool has zero parameters, and the schema description coverage is 100%, meaning there are no parameters to document. The description doesn't need to add parameter semantics, so it meets the baseline expectation for such cases, though it doesn't provide extra context beyond the schema's completeness.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('high-level overview of the Opentrons HTTP API structure and capabilities'), making it easy to understand what it does. However, it doesn't explicitly differentiate from sibling tools like 'get_endpoint_details' or 'search_endpoints', which might provide more specific API information.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when this overview is appropriate compared to more detailed tools like 'get_endpoint_details' or 'search_endpoints', nor does it specify any prerequisites or contextual cues for its use.

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

get_endpoint_detailsC

Get comprehensive details about a specific API endpoint

ParametersJSON Schema
NameRequiredDescriptionDefault
methodYesHTTP method (GET, POST, etc.)
pathYesAPI endpoint path

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves details but doesn't specify what 'comprehensive details' include (e.g., response format, rate limits, authentication needs, or whether it's a read-only operation). This lack of detail makes it inadequate for a tool with potential behavioral implications.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core action ('Get comprehensive details') without any wasted words. It's appropriately sized for a straightforward tool, making it easy for an agent to parse quickly.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete for a tool that presumably returns detailed endpoint information. It doesn't explain what 'comprehensive details' entail (e.g., parameters, response codes, examples), leaving significant gaps in understanding the tool's full behavior and output.

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

Parameters3/5

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

The input schema has 100% description coverage, clearly documenting both parameters ('method' and 'path') with their types and purposes. The description adds no additional semantic context beyond implying these parameters identify a specific endpoint, so it meets the baseline for high schema coverage without compensating value.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('comprehensive details about a specific API endpoint'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_api_overview' or 'search_endpoints', which might offer broader or different endpoint information.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context for use, or comparisons to siblings like 'get_api_overview' (which might give a high-level view) or 'search_endpoints' (which could list multiple endpoints), leaving the agent to infer usage scenarios.

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

get_protocolsC

List all protocols stored on the robot

ParametersJSON Schema
NameRequiredDescriptionDefault
robot_ipYesRobot IP address
protocol_kindNoFilter by protocol type (optional)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions listing protocols but doesn't specify whether this is a read-only operation, if it requires authentication, what the output format is, or any rate limits. This leaves significant gaps in understanding the tool's behavior.

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

Conciseness5/5

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

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

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It doesn't cover behavioral aspects like safety, permissions, or output format, which are crucial for a tool that interacts with a robot. The description alone is insufficient for full contextual 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?

The input schema has 100% description coverage, clearly documenting both parameters. The description adds no additional meaning beyond the schema, such as explaining the optionality of 'protocol_kind' or providing examples. Since the schema does the heavy lifting, the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the verb ('List') and resource ('protocols stored on the robot'), making the tool's function immediately understandable. However, it doesn't differentiate from sibling tools like 'list_by_category' or 'get_runs', which might also involve listing operations, so it doesn't fully distinguish itself from alternatives.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as 'list_by_category' or 'get_runs', nor does it mention any prerequisites or exclusions. It simply states what the tool does without context for selection.

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

get_runsB

List all runs on the robot

ParametersJSON Schema
NameRequiredDescriptionDefault
robot_ipYesRobot IP address

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states it 'List all runs' but doesn't describe what a 'run' entails, whether this is a read-only operation, if it requires specific permissions, or how results are returned (e.g., pagination, format). For a tool with no annotations, this is a significant gap in transparency.

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

Conciseness5/5

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

The description is a single, efficient sentence ('List all runs on the robot') that is front-loaded with the core purpose. There is zero waste or redundancy, making it appropriately sized and structured for clarity.

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

Completeness3/5

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

Given the tool's low complexity (one parameter, no output schema, no annotations), the description is minimally adequate but incomplete. It covers the basic purpose but lacks details on behavioral traits, usage context, or output format, which are needed for full understanding in the absence of annotations and output schema.

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

Parameters3/5

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

The input schema has 100% description coverage, with the single parameter 'robot_ip' clearly documented as 'Robot IP address'. The description doesn't add any meaning beyond this, such as explaining why the IP is needed or format examples. With high schema coverage, the baseline score of 3 is appropriate as the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action ('List all runs') and the resource ('on the robot'), providing a specific verb+resource combination. However, it doesn't distinguish this tool from sibling tools like 'get_run_status' or 'control_run', which also involve runs, so it doesn't fully differentiate from alternatives.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'get_run_status' (for status of a specific run) or 'create_run' (to start a new run). It lacks explicit when/when-not instructions or named alternatives, leaving usage context implied at best.

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

get_run_statusC

Get detailed status of a specific run

ParametersJSON Schema
NameRequiredDescriptionDefault
robot_ipYesRobot IP address
run_idYesRun ID to check

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves status but doesn't describe what 'detailed status' includes (e.g., progress, errors, timestamps), whether it's a read-only operation, potential rate limits, or authentication needs. This leaves significant gaps for a tool that likely interacts with robot runs.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it easy to parse quickly.

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

Completeness2/5

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

Given the complexity of interacting with robot runs and the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'detailed status' entails, potential error cases, or the return format, which are crucial for an AI agent to use this tool effectively in a robotics context.

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

Parameters3/5

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

The input schema has 100% description coverage, clearly documenting both parameters ('robot_ip' and 'run_id'). The description adds no additional meaning beyond the schema, such as format examples or constraints. With high schema coverage, the baseline score of 3 is appropriate as the schema handles the parameter documentation adequately.

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

Purpose4/5

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

The description clearly states the verb 'Get' and the resource 'detailed status of a specific run', making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_runs' (which likely lists multiple runs) or 'robot_health' (which might provide health status rather than run status), so it lacks explicit sibling differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid run ID), exclusions (e.g., not for general robot status), or comparisons to siblings like 'get_runs' for listing runs or 'control_run' for managing runs, leaving usage context unclear.

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

home_robotC

Home robot axes or specific pipette

ParametersJSON Schema
NameRequiredDescriptionDefault
robot_ipYesRobot IP address
targetNoWhat to homerobot
mountNoWhich mount (required if target is 'pipette')

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden but provides minimal behavioral context. It mentions 'home' which suggests a physical movement/reset operation, but doesn't disclose safety implications, required robot state, time duration, or what happens during homing. This is inadequate for a tool that likely involves hardware control.

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

Conciseness5/5

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

The description is extremely concise at just 5 words, front-loading the core purpose with zero wasted words. Every word earns its place by specifying the tool's scope (robot/pipette homing).

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 hardware control tool with no annotations and no output schema, the description is insufficient. It doesn't explain what 'homing' entails, what state changes occur, potential risks, or return values. Given the complexity of robot operations and lack of structured safety hints, more context is needed.

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

Parameters4/5

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

Schema description coverage is 100%, so parameters are well-documented in the schema itself. The description adds no additional parameter semantics beyond what's in the schema, but with complete schema coverage and only 3 parameters, this meets the baseline expectation without needing compensation.

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

Purpose3/5

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

The description 'Home robot axes or specific pipette' states a general purpose (homing operation) but is vague about what 'home' means in this context. It distinguishes from siblings by focusing on robot/pipette homing rather than lights control, run management, or protocol operations, but lacks specificity about the action's effect.

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 is provided. The description implies usage for homing operations, but there's no mention of prerequisites, error conditions, or comparison to other robot control tools like 'control_run' or 'robot_health'.

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

list_by_categoryC

List all endpoints in a specific functional category

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesAPI category/tag to filter by

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool lists endpoints but doesn't describe what 'list' entails (e.g., pagination, format, sorting, or error handling). For a tool with zero annotation coverage, this is a significant gap in transparency about its behavior and limitations.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and every part of the sentence contributes to understanding the tool's function, making it highly concise and well-structured.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the output looks like (e.g., list format, data structure) or address potential behavioral aspects like error cases or performance. For a tool with no structured data beyond the input schema, more context is needed to fully understand its operation.

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

Parameters3/5

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

The input schema has 100% description coverage, with a clear enum for the 'category' parameter. The description adds no additional meaning beyond what the schema provides, such as explaining the purpose of categories or how they relate to endpoints. With high schema coverage, the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action ('List all endpoints') and the resource ('in a specific functional category'), providing a specific verb+resource combination. However, it doesn't explicitly distinguish this tool from sibling tools like 'search_endpoints' or 'get_api_overview', which might offer similar or overlapping functionality.

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_endpoints' or 'get_api_overview'. It lacks context about prerequisites, exclusions, or specific scenarios where this tool is preferred, leaving the agent to infer usage based solely on the tool name and description.

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

poll_error_endpoint_and_fixC

Fetch specific JSON error report and automatically fix protocols

ParametersJSON Schema
NameRequiredDescriptionDefault
json_filenameNoName of JSON file to fetcherror_report_20250622_124746.json
original_protocol_pathNoPath to original protocol file/Users/gene/Developer/failed-protocol-5.py

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions 'automatically fix protocols,' implying a mutation/write operation, but doesn't disclose critical behavioral traits: what 'fix' entails (e.g., modifies files, restarts processes), potential side effects, required permissions, error handling, or rate limits. This is inadequate for a tool with implied destructive behavior.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It's appropriately sized and front-loaded, directly stating the tool's core function without unnecessary elaboration.

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

Completeness2/5

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

Given the tool's complexity (involving fetching and fixing), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'fix' means behaviorally, what the tool returns, or error conditions. For a mutation tool with zero annotation coverage, this leaves significant gaps for an AI agent.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters fully. The description adds no additional meaning beyond what the schema provides (e.g., how parameters relate to the fetch-and-fix process). Baseline 3 is appropriate as the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the tool's purpose with specific verbs ('fetch' and 'fix') and resources ('JSON error report' and 'protocols'). It distinguishes this as an error-handling tool among siblings that are mostly about control, creation, and retrieval operations. However, it doesn't explicitly differentiate from potential error-related siblings (none listed).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., when an error report exists), exclusions, or comparisons to other tools like 'get_protocols' or 'upload_protocol' for protocol management. Usage is implied only by the tool's name and description.

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

robot_healthC

Check robot health and connectivity

ParametersJSON Schema
NameRequiredDescriptionDefault
robot_ipYesRobot IP address

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Check' implies a read-only operation, it doesn't specify whether this requires authentication, what the response format looks like, if there are rate limits, or what 'health and connectivity' entails (e.g., metrics, status codes). This leaves significant gaps for an agent to understand the tool's behavior.

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

Conciseness5/5

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

The description is extremely concise at just four words, with zero wasted language. It's front-loaded with the core action ('Check') and resource, making it easy to parse quickly. Every word earns its place by directly contributing to understanding the tool's purpose.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete for a tool that presumably returns health status information. It doesn't explain what 'health and connectivity' means in practice, what values are returned, or how to interpret results. For a diagnostic tool, this leaves too much ambiguity for effective agent use.

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

Parameters3/5

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

The input schema has 100% description coverage, with the single parameter 'robot_ip' clearly documented as 'Robot IP address'. The description doesn't add any meaningful semantic context beyond this, such as format requirements (e.g., IPv4) or examples. With high schema coverage, the baseline score of 3 is appropriate as the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Check') and resource ('robot health and connectivity'), making it immediately understandable. However, it doesn't explicitly differentiate this health-checking function from similar sibling tools like 'get_run_status' or 'poll_error_endpoint_and_fix', which might also provide status information.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'get_run_status' and 'poll_error_endpoint_and_fix' that might overlap in functionality, there's no indication of when this health check is preferred, what prerequisites exist, or any exclusions for its use.

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

search_endpointsC

Search Opentrons HTTP API endpoints by functionality, method, path, or any keyword

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query - searches across endpoint names, descriptions, paths, and tags
methodNoHTTP method filter (GET, POST, PUT, DELETE, PATCH)
tagNoFilter by API category/tag
include_deprecatedNoInclude deprecated endpoints in results

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states what the tool does ('search'), not behavioral traits. It doesn't disclose whether this is a read-only operation, if it requires authentication, rate limits, pagination behavior, or what the output format looks like. For a search tool with 4 parameters and no output schema, this is a significant gap in behavioral context.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose ('search Opentrons HTTP API endpoints') followed by search criteria. Every word earns its place with zero waste or redundancy.

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

Completeness2/5

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

Given 4 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain the tool's behavior, output format, or usage context relative to siblings. For a search tool in this environment, more guidance on results format and when to use it would be needed for adequate completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all 4 parameters. The description mentions search criteria ('functionality, method, path, or any keyword') which aligns with the 'query' parameter but doesn't add meaning beyond what the schema provides for other parameters. Baseline 3 is appropriate when schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action ('search') and resource ('Opentrons HTTP API endpoints') with specific search criteria (functionality, method, path, keyword). It distinguishes from siblings like 'get_endpoint_details' or 'get_api_overview' by focusing on search functionality rather than retrieval of specific resources. However, it doesn't explicitly differentiate from 'list_by_category' which might also list endpoints.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'get_endpoint_details' for specific endpoint information or 'list_by_category' for categorized listings. It mentions search criteria but doesn't explain when searching is preferable to direct retrieval methods available among siblings.

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

upload_protocolC

Upload a protocol file to an Opentrons robot

ParametersJSON Schema
NameRequiredDescriptionDefault
robot_ipYesRobot IP address (e.g., '192.168.1.100')
file_pathYesPath to protocol file (.py or .json)
protocol_kindNostandard
keyNoOptional client tracking key (~100 chars)
run_time_parametersNoOptional runtime parameter values

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Upload') but doesn't describe what happens after upload (e.g., whether it triggers execution, requires confirmation, or has side effects like overwriting existing protocols). It also omits details on authentication needs, rate limits, or error handling, leaving significant gaps for a mutation tool.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, with every word earning its place in conveying the core functionality.

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

Completeness2/5

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

For a mutation tool with 5 parameters, no annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects like side effects, success/failure responses, or integration with sibling tools (e.g., what happens after upload relative to 'control_run'). The lack of output schema increases the need for more context, which isn't provided.

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 80%, providing a strong baseline. The description adds no parameter-specific information beyond what the schema already documents (e.g., file types, robot IP format, optional keys). It doesn't explain interactions between parameters like 'protocol_kind' and 'run_time_parameters', so it meets but doesn't exceed the baseline expectation.

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

Purpose4/5

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

The description clearly states the action ('Upload') and resource ('a protocol file to an Opentrons robot'), providing a specific verb+resource combination. It distinguishes from siblings like 'get_protocols' (read) and 'create_run' (different action), though it doesn't explicitly mention these distinctions in the description 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 provides no guidance on when to use this tool versus alternatives like 'create_run' or 'control_run', nor does it mention prerequisites such as robot connectivity or file format requirements. It lacks explicit when/when-not instructions or named alternatives.

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

TDQS

B3.2/5.0
Disambiguation3/5

Most tools have distinct purposes, but there is some overlap between get_endpoint_details, list_by_category, and search_endpoints, which all relate to API endpoint discovery and could cause confusion. Additionally, poll_error_endpoint_and_fix combines error fetching and fixing in one tool, which might overlap with general run control functions.

Naming Consistency4/5

The naming follows a consistent verb_noun pattern (e.g., control_lights, create_run, get_protocols) with only minor deviations like poll_error_endpoint_and_fix being more descriptive and robot_health as a noun phrase. Overall, it's readable and mostly predictable.

Tool Count5/5

With 14 tools, this is well-scoped for managing an Opentrons robot, covering protocol handling, run control, robot operations, and API exploration. Each tool appears to serve a specific function without being excessive.

Completeness4/5

The tool set covers core robot operations (lights, homing, health), protocol lifecycle (upload, list, create runs), and run management (control, status). A minor gap is the lack of a tool for deleting or modifying protocols, but agents can likely work around this.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yerbymatey/opentrons-mcp'

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