Railway MCP Server
Enables creation of Railway services from Docker images as part of the Railway deployment workflow.
Supports creating Railway services from GitHub repositories and integrates with GitHub-based deployment workflows.
Provides comprehensive management of Railway.app infrastructure including project management, service deployment from GitHub repositories or Docker images, environment variable configuration, deployment monitoring and logs, database provisioning, and volume management.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Railway MCP Serverlist my recent deployments for the ecommerce project"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Railway MCP Server
A Model Context Protocol (MCP) server for integrating with the Railway.app platform.
Table of Contents
Related MCP server: Railway MCP Server
Features
Status | Meaning |
ā | Complete |
š§šØā³ | Being Built or Needs Testing |
ā | Not Built at the moment |
ā Authentication with Railway API tokens
ā Project management (list, info, delete)
ā Deployment management (list, restart)
ā Service management (create from GitHub repo or Docker image, list)
ā Variable management (list, create/update, delete)
ā Service Network management
ā Volume management
ā Full support for all templates
š§šØā³ Database template support
Automatic database and networking workflows
š§šØā³ Most commonly used workflows
ā Automatic GitHub repository linking for services
Installation
Prerequisites
Node.js 18+ (for built-in fetch API support)
An active Railway account
A Railway API token (create one at https://railway.app/account/tokens)
Quick Start
This MCP server is designed to work with MCP Clients like:
Claude for Desktop | ā Battle-Tested
Cursor | ā Needs Testing
Cline | š§šØā³ Needs Testing
Windsurf | š§šØā³ Needs Testing
Other MCP Clients | š§šØā³ Needs Testing
Installing via Smithery
To install railway-mcp automatically, we recommend using Smithery
Claude Desktop
npx -y @smithery/cli install @jason-tan-swe/railway-mcp --client claudeCursor
npx -y @smithery/cli@latest run @jason-tan-swe/railway-mcp --config "{\"railwayApiToken\":\"token\"}"Head to your cursor settings and find the MCP section
Click 'Add new MCP server'
Name it however, you like, we recommend
railway-mcpfor better clarityPaste this command into the 'Command' section, where is your accounts Railway token:
npx -y @jasontanswe/railway-mcp <RAILWAY_API_TOKEN>Create or edit your Claude for Desktop config file:
macOS:
~/Library/Application\ Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Add the railway-mcp server to your configuration with your API token:
"railway": {
"command": "npx",
"args": ["-y", "@jasontanswe/railway-mcp"],
"env": {
"RAILWAY_API_TOKEN": "your-railway-api-token-here"
}
}When you have multiple MCP servers, your config file might look like this:
{
"mcpServers": {
// ... All of your existing MCP servers ...
// Add the railway-mcp server to your configuration with your API token
"railway": {
"command": "npx",
"args": ["-y", "@jasontanswe/railway-mcp"],
"env": {
"RAILWAY_API_TOKEN": "your-railway-api-token-here"
}
}
}
}Restart Claude for Desktop
You can now start using Railway tools directly in Claude. For example:
Please list all my Railway projectsAlternatively, if you don't want to add your token to the configuration file, you can configure it within Claude using:
Please configure the Railway API with my token: {YOUR_API_TOKEN_HERE}Recommendations and Other Information
This server best combines with MCP-clients that have access to terminal or with Git (Cursor, Windsurf). Using this MCP with others is recommended as railway-mcp orchestrates containers and streamlines your deployment process seamlessly.
Recommended MCP servers to combine with
Git || Official Link
For Claude
Out of the box, Claude does not have terminal access, so it cannot trigger deployments as it will not be able to get the latest commit.
Spinning up different services and monitoring them are the best use case with Claude.
For Cursor
Use with GitHub MCP or have the repository already setup on GitHub and cloned locally on your machine to leverage full integration with railway-mcp.
When Cursor makes a change, it may forget to push it's changes to GitHub causing it to try and deploy a commit that Railway cannot pull.
SOLUTION: Always ask or include somewhere in your prompt:
Have you pushed our changes to GitHub yet?
Security Considerations
Railway API tokens provide full access to your account. Keep them secure.
When using the environment variable method, your token is stored in the Claude Desktop configuration file.
Sensitive variable values are automatically masked when displayed.
All API calls use HTTPS for secure communication.
The server's memory-only token storage means your token is never written to disk outside of the configuration file.
Troubleshooting
If you encounter issues:
Token Authentication Issues
Ensure your API token is valid and has the necessary permissions
If using the environment variable method, check that the token is correctly formatted in the config file
Try using the
configuretool directly in Claude if the environment token isn't working
Server Connection Issues
Check that you've installed the latest version of the server
Verify that Node.js version 18 or higher is installed
Restart Claude for Desktop after making changes to the configuration
API Errors
Verify that you're using correct project, environment, and service IDs
Check Railway's status page for any service disruptions
Railway API has rate limits - avoid making too many requests in a short period
Contributing
We welcome contributions from the community! Please see our Contributing Guidelines for details on how to get started, development guidelines, and debugging information.
Available Tools
Authentication
configure- Set your Railway API token (only needed if not provided in environment variables)
Projects
project-list- List all projects in your accountproject-info- Get detailed information about a specific projectproject-create- Create a new project with optional team IDproject-delete- Delete a projectproject-environments- List all environments in a project
Services
service-list- List all services in a specific projectservice-info- Get detailed information about a specific serviceservice-create-from-repo- Create a new service from a GitHub repositoryservice-create-from-image- Create a new service from a Docker imageservice-delete- Delete a service from a projectservice-restart- Restart a service in a specific environmentservice-update- Update service configuration (build command, start command, etc.) | š§ Needs Testing
Deployments
deployment-list- List recent deployments for a servicedeployment-trigger- Trigger a new deployment for a servicedeployment-logs- Get logs for a specific deploymentdeployment-health-check- Check the health/status of a deployment
Variables
variable-list- List variables for a service or environmentvariable-set- Create or update a variablevariable-delete- Delete a variablevariable-bulk-set- Bulk update variables for a service | š§ Needs Testingvariable-copy- Copy variables between environments | š§ Needs Testing
Databases
database-list-types- List all available database types that can be deployeddatabase-deploy- Deploy a new database service
Setting up a new service
List projects to get the project ID
Create a new service from a template
Add environment variables
View the service deployment
Managing environment variables
List projects to find your project ID
List variables to see what's currently set
Create or update variables as needed
Delete any obsolete variables
Available Tools
38 toolsconfigure_api_tokenA
[UTILITY] Configure the Railway API token for authentication (only needed if not set in environment variables)
ā”ļø Best for: ā Initial setup ā Token updates ā Authentication configuration
ā ļø Not for: Ć Project configuration Ć Service settings Ć Environment variables
ā Next steps: project_list, service_list
ā Related: project_create
| Name | Required | Description | Default |
|---|---|---|---|
| token | Yes | Railway API token (create one at https://railway.app/account/tokens) |
TDQS
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 is for authentication configuration and mentions it's 'only needed if not set in environment variables', adding useful context about prerequisites. However, it lacks details on behavioral traits like whether this is a one-time setup, if it persists across sessions, error handling, or rate limits, leaving gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and appropriately sized, using bullet points (ā and Ć) and arrows (ā) for clarity. It is front-loaded with the core purpose, followed by best uses, exclusions, and related tools, with every sentence adding value and no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (single parameter, no output schema, no annotations), the description is mostly complete. It covers purpose, usage, and exclusions well. However, as a mutation tool with no annotations, it could benefit from more behavioral details (e.g., side effects, error cases), slightly reducing completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the schema fully documenting the single 'token' parameter. The description does not add any parameter-specific semantics beyond what's in the schema (e.g., no extra details on token format or validation). According to the rules, with high schema coverage, the baseline is 3 even without param info in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Configure the Railway API token for authentication' with the specific verb 'configure' and resource 'API token'. It distinguishes from siblings by explicitly stating what it's not for (project configuration, service settings, environment variables), making it distinct from tools like project_create, service_list, or variable_set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use it ('Initial setup', 'Token updates', 'Authentication configuration') and when not to use it ('Not for: Project configuration, Service settings, Environment variables'). It also suggests next steps (project_list, service_list) and related tools (project_create), offering clear alternatives and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
database_list_typesA
[QUERY] List all available database types that can be deployed using Railway's official templates
ā”ļø Best for: ā Discovering supported database types ā Planning database deployments ā Checking template availability
ā ļø Not for: Ć Listing existing databases Ć Getting database connection details
ā Alternatives: service_create_from_image
ā Next steps: database_deploy
ā Related: database_deploy, service_create_from_image
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 implies a read-only operation by focusing on listing available types, but doesn't explicitly state permissions, rate limits, or response format. The description adds context about what the tool does (list deployable types) and doesn't do (list existing databases), but lacks details on behavioral traits like error handling or output structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose in the first sentence. Each subsequent section ('Best for', 'Not for', 'Alternatives', etc.) adds value without redundancy. The use of symbols (ā, Ć, ā) enhances readability, and all content is directly relevant to helping an agent understand and use the tool effectively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no annotations, no output schema), the description is largely complete. It covers purpose, usage guidelines, and related tools. However, without an output schema, it doesn't describe the return format (e.g., list structure, data fields), which is a minor gap. For a read-only list tool, this is still highly informative but not fully exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the inputs. The description doesn't need to add parameter information, as there are none to explain. It appropriately focuses on the tool's purpose and usage without redundant parameter details, earning a baseline score of 4 for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('List all available database types') and resources ('database types that can be deployed using Railway's official templates'). It distinguishes itself from siblings by specifying what it does (listing available types) versus what it doesn't do (listing existing databases or getting connection details), making it highly specific and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidelines with 'Best for' and 'Not for' sections, clearly indicating when to use this tool (e.g., discovering supported types, planning deployments) and when not to use it (e.g., listing existing databases). It also names alternatives ('service_create_from_image') and suggests next steps ('database_deploy'), offering comprehensive guidance for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deployment_listA
[API] List recent deployments for a service in a specific environment
ā”ļø Best for: ā Viewing deployment history ā Monitoring service updates
ā Prerequisites: service_list
ā Next steps: deployment_logs, deployment_trigger
ā Related: service_info, service_restart
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project containing the service | |
| serviceId | Yes | ID of the service to list deployments for | |
| environmentId | Yes | ID of the environment to list deployments from (usually obtained from service_list) | |
| limit | No | Optional: Maximum number of deployments to return (default: 10) |
TDQS
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 implies a read-only operation through 'List' and 'Viewing deployment history', but doesn't explicitly state whether it requires authentication, has rate limits, or what format the output takes. It adds some context about 'recent' deployments and the default limit, but lacks comprehensive behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with clear sections (purpose, best for, prerequisites, next steps, related tools) using bullet points and symbols. Every sentence earns its place by providing distinct value without repetition or fluff. The information is front-loaded with the core purpose first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with 4 parameters and 100% schema coverage but no output schema, the description provides good contextual completeness. It covers purpose, usage scenarios, prerequisites, and related tools. The main gap is the lack of output format description, which would be helpful since there's no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 4 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema, such as explaining how environmentId relates to service_list or providing examples of valid IDs. It meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('List recent deployments') with the target resource ('for a service in a specific environment'). It distinguishes itself from sibling tools like deployment_logs (which shows logs) and deployment_trigger (which initiates deployments), establishing a unique read-only history function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance with 'Best for' scenarios (viewing deployment history, monitoring service updates), prerequisites (service_list), next steps (deployment_logs, deployment_trigger), and related tools (service_info, service_restart). This gives clear context for when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deployment_logsA
[API] Get logs for a specific deployment
ā”ļø Best for: ā Debugging deployment issues ā Monitoring deployment progress ā Checking build output
ā ļø Not for: Ć Service runtime logs Ć Database logs
ā Prerequisites: deployment_list
ā Next steps: deployment_status
ā Related: service_info, deployment_trigger
| Name | Required | Description | Default |
|---|---|---|---|
| deploymentId | Yes | ID of the deployment to get logs for | |
| limit | No | Maximum number of log entries to fetch |
TDQS
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 implies a read-only operation ('Get logs') but doesn't explicitly state permissions, rate limits, or pagination behavior. It adds some context about log types (not for service/database logs) but lacks details on output format or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bullet points and icons, front-loading the core purpose. Every sentence adds value: the main action, usage scenarios, exclusions, and related tools. No wasted words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description does well by covering purpose, usage, and exclusions. However, it lacks details on behavioral aspects like permissions or output format, which would be helpful for a tool with no structured output. It's mostly complete but has minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 (deploymentId and limit). The description doesn't add any parameter-specific details beyond what's in the schema, such as format examples or constraints. Baseline 3 is appropriate when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get logs') and resource ('for a specific deployment'), distinguishing it from siblings like deployment_status (status vs. logs) and service_info (service vs. deployment). It specifies the exact scope of logs (deployment-related) rather than being generic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit guidance with 'Best for' (debugging, monitoring, checking build output) and 'Not for' (service runtime logs, database logs), plus prerequisites (deployment_list), next steps (deployment_status), and related tools (service_info, deployment_trigger). This clearly defines when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deployment_statusA
[API] Check the current status of a deployment
ā”ļø Best for: ā Monitoring deployment progress ā Verifying successful deployments ā Checking for deployment failures
ā ļø Not for: Ć Service runtime logs Ć Database logs
ā Prerequisites: deployment_list, deployment_trigger
ā Next steps: deployment_logs
ā Related: service_info, service_restart, deployment_wait
| Name | Required | Description | Default |
|---|---|---|---|
| deploymentId | Yes | ID of the deployment to check status for |
TDQS
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 implies a read-only operation ('Check', 'Monitoring', 'Verifying') but doesn't explicitly state whether this requires authentication, has rate limits, or what the response format looks like. The description adds some behavioral context (e.g., it's for status checking, not logs), but lacks details on error handling, permissions, or output structure, leaving gaps for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by organized sections (Best for, Not for, Prerequisites, etc.). It's appropriately sized for the tool's complexity, with each sentence adding value (e.g., distinguishing from logs, guiding usage). Minor points are deducted for some redundancy (e.g., 'Check' in the first line and 'Monitoring' in Best for), but overall it's efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (1 parameter, no output schema, no annotations), the description is mostly complete. It covers purpose, usage guidelines, and relationships with other tools. However, it lacks details on behavioral aspects like authentication needs or response format, which would be helpful since no annotations or output schema are provided. This gap prevents a perfect score, but it's sufficient for basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the parameter 'deploymentId' documented as 'ID of the deployment to check status for'. The description doesn't add any additional parameter semantics beyond what the schema provides, such as format examples or constraints. With high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't need to given the schema's completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('status of a deployment'), distinguishing it from siblings like deployment_list (which lists deployments) and deployment_logs (which provides logs). The title-like first line '[API] Check the current status of a deployment' directly communicates the core function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance with 'Best for' and 'Not for' sections, naming specific use cases (monitoring progress, verifying success, checking failures) and exclusions (service runtime logs, database logs). It also lists prerequisites (deployment_list, deployment_trigger), next steps (deployment_logs), and related tools (service_info, service_restart, deployment_wait), offering comprehensive context for when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deployment_triggerA
[API] Trigger a new deployment for a service
ā”ļø Best for: ā Deploying code changes ā Applying configuration updates ā Rolling back to previous states
ā ļø Not for: Ć Restarting services (use service_restart) Ć Updating service config (use service_update) Ć Database changes
ā Prerequisites: service_list
ā Alternatives: service_restart
ā Next steps: deployment_logs, deployment_status
ā Related: variable_set, service_update
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project | |
| serviceId | Yes | ID of the service | |
| environmentId | Yes | ID of the environment | |
| commitSha | Yes | Specific commit SHA from the Git repository |
TDQS
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 effectively communicates that this is a deployment-triggering action (implying a write/mutation operation) and provides context about what it's designed for (deploying code changes, applying config updates, rolling back). However, it doesn't explicitly mention potential side effects like service downtime, authentication requirements, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and efficiently organized with clear sections (purpose, best for, not for, prerequisites, alternatives, next steps, related). Every sentence earns its place by providing valuable guidance without redundancy. The information is front-loaded with the core purpose immediately stated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 provides substantial context about usage scenarios, exclusions, prerequisites, and related tools. However, it doesn't describe what happens after triggering (e.g., deployment process initiation, return values, or error conditions), leaving some behavioral aspects unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 four parameters (projectId, serviceId, environmentId, commitSha) with clear descriptions. The description doesn't add any additional parameter semantics beyond what's in the schema, making the baseline score of 3 appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('Trigger') and resource ('new deployment for a service'), distinguishing it from siblings like service_restart and service_update. The title line '[API] Trigger a new deployment for a service' provides immediate clarity about the core function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance with 'Best for' and 'Not for' sections, naming specific alternatives (service_restart, service_update) and exclusions (restarting services, updating service config, database changes). It also includes prerequisites (service_list) and related tools, offering comprehensive usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain_checkA
[API] Check if a domain is available for use
ā”ļø Best for: ā Validating domain availability ā Pre-deployment checks ā Domain planning
ā Next steps: domain_create
ā Related: domain_list
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain name to check availability for |
TDQS
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 checks domain availability, implying a read-only operation, but does not disclose details like rate limits, authentication needs, error handling, or what 'available for use' entails (e.g., registration status). The description adds basic context but lacks depth for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by bullet points for usage guidelines and related tools. Every sentence earns its place by providing actionable information without redundancy, making it efficient and easy to parse for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is complete enough for basic use. It covers purpose, usage scenarios, and next steps, but lacks details on behavioral aspects like response format or error conditions. For a simple read operation, this is largely sufficient, though minor gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'domain' parameter documented as 'Domain name to check availability for.' The description does not add any parameter-specific information beyond what the schema provides, such as format examples or constraints. Given the high schema coverage, a baseline score of 3 is appropriate as the schema handles the parameter documentation adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose as 'Check if a domain is available for use,' which is a specific verb ('Check') and resource ('domain') combination. It clearly distinguishes this tool from its siblings like domain_create, domain_list, domain_update, and domain_delete by focusing solely on availability checking rather than creation, listing, updating, or deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidelines with a 'Best for' section listing specific scenarios (validating domain availability, pre-deployment checks, domain planning) and includes 'Next steps: domain_create' and 'Related: domain_list' to guide the agent on when to use this tool versus alternatives. This offers clear context and direction for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain_createA
[API] Create a new domain for a service
ā”ļø Best for: ā Setting up custom domains ā Configuring service endpoints ā Adding HTTPS endpoints
ā ļø Not for: Ć TCP proxy setup (use tcp_proxy_create) Ć Internal service communication
ā Prerequisites: service_list, domain_check
ā Alternatives: tcp_proxy_create
ā Next steps: domain_update
ā Related: service_info, domain_list
| Name | Required | Description | Default |
|---|---|---|---|
| environmentId | Yes | ID of the environment | |
| serviceId | Yes | ID of the service | |
| domain | No | Custom domain name (optional, as railway will generate one for you and is generally better to leave it up to railway to generate one. There's usually no need to specify this and there are no use cases for overriding it.) | |
| suffix | No | Suffix for the domain (optional, railway will generate one for you and is generally better to leave it up to railway to generate one.) | |
| targetPort | No | Target port for the domain (optional, as railway will use the default port for the service and detect it automatically.) |
TDQS
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 effectively communicates that this is a creation/mutation tool (implied by 'Create'), mentions prerequisites that suggest authorization needs, and provides context about what gets created (custom domains, HTTPS endpoints). However, it doesn't explicitly mention rate limits or detailed error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (API purpose, Best for, Not for, Prerequisites, Alternatives, Next steps, Related). Every sentence earns its place by providing distinct value, and the information is front-loaded with the core purpose stated first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with no annotations and no output schema, the description provides substantial context about usage, alternatives, and relationships. It covers the tool's purpose, when to use it, and what to expect next. The main gap is the lack of information about return values or error conditions, which would be helpful given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 5 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema, which is acceptable given the comprehensive schema coverage. The baseline score of 3 reflects adequate parameter documentation through the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Create a new domain for a service') and distinguishes it from sibling tools by explicitly mentioning what it's not for (TCP proxy setup, internal service communication). It provides a verb+resource combination that is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance with 'Best for' and 'Not for' sections, names specific alternatives (tcp_proxy_create), lists prerequisites (service_list, domain_check), and suggests next steps (domain_update). This gives comprehensive context for when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain_deleteA
[API] Delete a domain from a service
ā”ļø Best for: ā Removing unused domains ā Cleaning up configurations ā Domain management
ā ļø Not for: Ć Temporary domain disabling Ć Port updates (use domain_update)
ā Prerequisites: domain_list
ā Alternatives: domain_update
ā Related: service_update
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the domain to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It implies a destructive action ('Delete') but doesn't specify if deletion is permanent, requires specific permissions, or has rate limits. It adds some context (e.g., not for temporary disabling) but lacks details on behavioral traits like error handling or confirmation prompts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bullet points (ā”ļø Best for, ā ļø Not for) and arrows for prerequisites/alternatives, making it front-loaded and efficient. Every sentence adds value without redundancy, fitting the tool's complexity appropriately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description does well by covering purpose, usage guidelines, and context. However, it lacks details on return values or error cases, which could be important for deletion operations. Given the tool's complexity, it's mostly complete but has minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage (parameter 'id' is documented), so the baseline is 3. The description adds value by implicitly clarifying that 'id' refers to a domain ID (from context like 'domain_list'), though it doesn't explicitly explain parameter semantics beyond the schema. Given the single parameter and high schema coverage, a score of 4 reflects adequate compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Delete a domain from a service') with the resource ('domain'), distinguishing it from siblings like domain_update (for updates) and domain_list (for listing). It avoids tautology by not just restating the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit guidance with 'Best for' (removing unused domains, cleaning up configurations) and 'Not for' (temporary domain disabling, port updates), plus mentions prerequisites (domain_list) and alternatives (domain_update), clearly defining when to use this tool versus others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain_listA
[API] List all domains (both service and custom) for a service
ā”ļø Best for: ā Viewing service endpoints ā Managing domain configurations ā Auditing domain settings
ā Prerequisites: service_list
ā Next steps: domain_create, domain_update
ā Related: service_info, tcp_proxy_list
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project containing the service | |
| environmentId | Yes | ID of the environment that the service is in to list domains from (usually obtained from service_list) | |
| serviceId | Yes | ID of the service to list domains for |
TDQS
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 describes the tool as a list operation, implying it's read-only and non-destructive, which is helpful. However, it lacks details on behavioral traits like pagination, rate limits, authentication needs, or error handling. The description adds some context (e.g., it lists 'both service and custom' domains) but doesn't fully compensate for the absence of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and appropriately sized, using bullet points and icons for clarity. It front-loads the core purpose in the first sentence, followed by organized sections (Best for, Prerequisites, Next steps, Related) that add value without redundancy. Every sentence earns its place by providing actionable guidance, making it efficient and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 required parameters, no output schema, no annotations), the description is largely complete. It covers purpose, usage guidelines, and context well. However, it lacks details on output format or behavioral aspects like error handling, which would be beneficial since there's no output schema. The description compensates somewhat with rich contextual guidance but has minor gaps in behavioral transparency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all three parameters (projectId, environmentId, serviceId) documented in the schema. The description doesn't add any parameter-specific information beyond what the schema provides, such as explaining relationships between parameters or usage examples. Given the high schema coverage, the baseline score of 3 is appropriate, as the description doesn't enhance parameter understanding but relies on the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List all domains (both service and custom) for a service.' It specifies the verb ('List'), resource ('domains'), and scope ('for a service'), distinguishing it from sibling tools like domain_check, domain_create, or domain_update. The mention of 'both service and custom' adds specificity about what types of domains are included.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance with dedicated sections: 'Best for' lists three specific use cases (viewing endpoints, managing configurations, auditing settings), 'Prerequisites' names service_list as a required step, 'Next steps' suggests domain_create and domain_update as follow-ups, and 'Related' mentions service_info and tcp_proxy_list as alternatives. This comprehensively addresses when and how to use the tool versus other options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain_updateA
[API] Update a domain's configuration
ā”ļø Best for: ā Changing target ports ā Updating domain settings ā Reconfiguring endpoints
ā ļø Not for: Ć Changing domain names (delete and recreate instead) Ć TCP proxy configuration
ā Prerequisites: domain_list
ā Next steps: domain_list
ā Related: service_update
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the domain to update | |
| targetPort | Yes | New port number to route traffic to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by indicating this is a configuration update operation (implying mutation), mentioning specific constraints (cannot change domain names, not for TCP proxy), and providing prerequisite/next step context. It doesn't mention permissions, rate limits, or error conditions, but provides solid 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly structured with clear sections (API label, Best for, Not for, Prerequisites, Next steps, Related). Every sentence earns its place, and information is front-loaded with the core purpose first. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 does very well by providing clear purpose, usage guidelines, constraints, and contextual relationships. It could mention what the update returns or error conditions, but given the good structure and guidance, it's mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both parameters. The description doesn't add any parameter-specific information beyond what's in the schema (id and targetPort are clearly documented there). 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.
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 ('Update a domain's configuration') and distinguishes it from siblings by mentioning what it's not for (changing domain names, TCP proxy configuration). It explicitly differentiates from domain_delete/recreate and tcp_proxy_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides excellent usage guidance with explicit 'Best for' and 'Not for' sections, naming specific alternatives (delete and recreate for domain name changes). It also includes prerequisite and next step references to domain_list, and mentions related service_update.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_service_variablesA
[API] List all environment variables for a service
ā”ļø Best for: ā Viewing service configuration ā Auditing environment variables ā Checking connection strings
ā Prerequisites: service_list
ā Next steps: variable_set, variable_delete
ā Related: service_info, variable_bulk_set
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project containing the service | |
| environmentId | Yes | ID of the environment to list variables from (usually obtained from service_list) | |
| serviceId | No | Optional: ID of the service to list variables for, if not provided, shared variables across all services will be listed |
TDQS
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 implies a read-only operation by using 'List' and 'Viewing', but does not explicitly state whether it's safe, requires authentication, or has rate limits. The description adds some context about listing shared variables if serviceId is omitted, but lacks details on output format or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bullet points and icons, making it easy to scan. Every sentence serves a clear purposeāstating the action, providing usage scenarios, and linking to related toolsāwith no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, no output schema, no annotations), the description is largely complete. It covers purpose, usage, and parameter nuances, but could improve by addressing behavioral aspects like authentication or output format, which are missing due to the lack of annotations and output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all parameters. The description adds value by clarifying that serviceId is optional and explaining the behavior when omitted (lists shared variables across all services), which enhances understanding beyond the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('all environment variables for a service'), making the purpose specific and unambiguous. It distinguishes itself from sibling tools like service_info or variable_bulk_set by focusing exclusively on listing variables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance with 'Best for' scenarios (viewing configuration, auditing, checking connection strings), prerequisites (service_list), next steps (variable_set, variable_delete), and related tools (service_info, variable_bulk_set). This comprehensively informs when and how to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_createA
[API] Create a new Railway project
ā”ļø Best for: ā Starting new applications ā Setting up development environments ā Creating project spaces
ā ļø Not for: Ć Duplicating existing projects
ā Next steps: service_create_from_repo, service_create_from_image, database_deploy
ā Related: project_delete, project_update
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the new project | |
| teamId | No | Optional team ID to create the project under |
TDQS
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 effectively communicates that this is a creation operation (implies mutation/write), mentions what it's best for and what it's not for, and provides next steps. However, it doesn't explicitly mention permissions, rate limits, or error conditions that might be relevant for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, best for, not for, next steps, related tools). Every sentence earns its place by providing specific guidance without unnecessary verbiage. The use of symbols (ā”ļø, ā ļø, ā) enhances readability while maintaining conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with no annotations and no output schema, the description provides strong contextual guidance about when to use it, what it's not for, and next steps. However, it doesn't describe what the tool returns or potential error conditions, which would be helpful given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both parameters (name and teamId). The description doesn't add any additional parameter information beyond what's in the schema, so it meets the baseline of 3 for high schema coverage without adding extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Create a new Railway project' which is a specific verb+resource action. It clearly distinguishes this from sibling tools like project_delete, project_update, and project_list by focusing on creation rather than modification or deletion operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance with 'Best for' and 'Not for' sections, clearly indicating when to use this tool (starting new applications, setting up development environments) and when not to use it (duplicating existing projects). It also lists next steps and related tools, providing clear alternatives and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_deleteA
[API] Delete a Railway project and all its resources
ā”ļø Best for: ā Removing unused projects ā Cleaning up test projects
ā ļø Not for: Ć Temporary project deactivation Ć Service-level cleanup (use service_delete)
ā Prerequisites: project_list, project_info
ā Alternatives: service_delete
ā Related: project_create
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project to delete |
TDQS
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 effectively communicates that this is a destructive operation ('Delete a Railway project and all its resources'), warns against misuse for temporary deactivation, and implies irreversible deletion. However, it lacks details on permissions, rate limits, or confirmation steps, which would be helpful for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core action, followed by bullet-pointed best practices, warnings, prerequisites, and alternatives. Each section adds value without redundancy, and the use of symbols (ā”ļø, ā ļø, ā) enhances readability while keeping the text efficient and focused.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's destructive nature, no annotations, and no output schema, the description does a good job of covering key aspects: purpose, usage guidelines, and behavioral warnings. It could improve by mentioning error handling or return values, but for a single-parameter tool with clear schema coverage, it provides sufficient context for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the single parameter 'projectId' fully documented in the schema. The description does not add any additional semantic context beyond what the schema provides (e.g., format examples or sourcing guidance), so it meets the baseline score of 3 where the schema handles parameter documentation adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Delete a Railway project and all its resources') with the verb 'Delete' and resource 'Railway project', distinguishing it from siblings like service_delete which handles service-level cleanup. It explicitly mentions the scope ('all its resources'), making the purpose unambiguous and distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool ('Best for: Removing unused projects, Cleaning up test projects') and when not to use it ('Not for: Temporary project deactivation, Service-level cleanup'), with named alternatives (service_delete). It also lists prerequisites (project_list, project_info) and related tools (project_create), offering comprehensive usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_environmentsB
List all environments in a project
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a list operation, implying read-only behavior, but doesn't specify whether it returns paginated results, error conditions, or any side effects. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (single parameter, list operation) and high schema coverage, the description is minimally adequate. However, with no annotations and no output schema, it fails to address behavioral aspects like return format or error handling, which could be important for an agent's decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the single parameter 'projectId' fully documented in the schema. The description adds no additional meaning beyond implying the parameter is required to scope the listing, which is already clear from the schema. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List all') and resource ('environments in a project'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'project_list' or 'domain_list' which also list resources, missing the opportunity to clarify its specific scope within the project context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 project ID), exclusions, or how it relates to siblings like 'project_info' or 'deployment_list', 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.
project_infoA
[API] Get detailed information about a specific Railway project
ā”ļø Best for: ā Viewing project details and status ā Checking environments and services ā Project configuration review
ā Prerequisites: project_list
ā Next steps: service_list, variable_list
ā Related: project_update, project_delete
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project to get information about |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states this is a read operation ('Get detailed information'), which implies non-destructive behavior, but doesn't explicitly mention safety, permissions, rate limits, or response format. The description adds some context about prerequisites and related tools, but lacks detailed behavioral disclosure for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by organized sections (Best for, Prerequisites, Next steps, Related). Every sentence earns its place by providing actionable guidance without redundancy. The use of symbols (ā”ļø, ā, ā) enhances readability without adding fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (single parameter, read-only operation), no annotations, and no output schema, the description does a good job of covering purpose, usage, and relationships. However, it lacks details on behavioral aspects like error handling or response structure, which would be helpful for a tool with no structured output documentation. The completeness is strong but not perfect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the schema fully documents the single parameter (projectId). The description doesn't add any parameter-specific information beyond what's in the schema, but with only one parameter and high schema coverage, this is acceptable. The baseline for high coverage is 3, but the description compensates by providing excellent usage context, warranting a slightly higher score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get detailed information') and resource ('about a specific Railway project'), distinguishing it from siblings like project_list (which lists projects) and project_update/project_delete (which modify projects). The title is null, so the description fully defines the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance with 'Best for' examples (viewing details, checking environments, configuration review), prerequisites ('project_list'), next steps ('service_list, variable_list'), and related tools ('project_update, project_delete'). This clearly indicates when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_listA
[API] List all projects in your Railway account
ā”ļø Best for: ā Getting an overview of all projects ā Finding project IDs ā Project discovery and management
ā Next steps: project_info, service_list
ā Related: project_create, project_delete
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It indicates this is a read operation (list) but doesn't disclose behavioral traits like pagination, rate limits, authentication requirements, or error handling. The description adds some context about use cases but lacks operational details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by bullet points for use cases and clear next steps. Every sentence adds value without redundancy, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is complete enough for a list operation. It explains purpose, usage, and related tools, though it could benefit from mentioning output format or limitations (e.g., no filtering).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage. The description doesn't need to explain parameters, and it appropriately doesn't mention any. Baseline is 4 for zero parameters, as it avoids unnecessary information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verb ('List') and resource ('projects in your Railway account'). It distinguishes from siblings by specifying it lists 'all projects' rather than filtering or managing individual projects, unlike project_info, project_create, or project_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool ('Best for: Getting an overview of all projects, Finding project IDs, Project discovery and management') and suggests next steps (project_info, service_list) and related tools (project_create, project_delete), clearly differentiating from alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
service_create_from_imageA
[API] Create a new service from a Docker image
ā”ļø Best for: ā Custom database deployments ā Pre-built container deployments ā Specific version requirements
ā ļø Not for: Ć Standard database deployments (use database_deploy) Ć GitHub repository deployments (use service_create_from_repo) Ć Services needing build process
ā Prerequisites: project_list
ā Alternatives: database_deploy, service_create_from_repo
ā Next steps: variable_set, service_update, tcp_proxy_create
ā Related: volume_create, deployment_trigger
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project to create the service in | |
| image | Yes | Docker image to use (e.g., 'postgres:13-alpine') | |
| name | No | Optional custom name for the service |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions 'Create' implying a write operation but lacks details on permissions, rate limits, or error handling. The 'Next steps' and 'Related' sections add some behavioral context (e.g., follow-up actions), but critical aspects like mutation effects or response format are missing, leaving gaps for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections like 'Best for', 'Not for', and bullet points for prerequisites and alternatives, making it easy to scan. It is front-loaded with the core purpose. However, some sections (e.g., 'Next steps', 'Related') could be trimmed as they are less critical, slightly reducing efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description does well by covering usage guidelines and distinguishing from siblings. It lacks details on behavioral traits (e.g., what 'Create' entails operationally) and output, but the structured sections compensate somewhat. For a mutation tool with 3 parameters, it is mostly complete but could improve on transparency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters (projectId, image, name). The description does not add any parameter-specific details beyond what the schema provides, such as format examples or constraints. With high schema coverage, the baseline score of 3 is appropriate as the description adds no extra semantic value for parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a new service from a Docker image, using specific verbs ('Create') and resources ('service', 'Docker image'). It distinguishes from siblings like service_create_from_repo and database_deploy by explicitly naming them in the 'Not for' section, making the purpose specific and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance with 'Best for' and 'Not for' sections, listing specific use cases (e.g., custom database deployments) and exclusions (e.g., not for standard database deployments). It names alternatives (database_deploy, service_create_from_repo) and prerequisites (project_list), offering comprehensive usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
service_create_from_repoA
[API] Create a new service from a GitHub repository
ā”ļø Best for: ā Deploying applications from source code ā Services that need build processes ā GitHub-hosted projects
ā ļø Not for: Ć Pre-built Docker images (use service_create_from_image) Ć Database deployments (use database_deploy) Ć Static file hosting
ā Prerequisites: project_list
ā Alternatives: service_create_from_image, database_deploy
ā Next steps: variable_set, service_update
ā Related: deployment_trigger, service_info
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project to create the service in | |
| repo | Yes | GitHub repository URL or name (e.g., 'owner/repo') | |
| name | No | Optional custom name for the service |
TDQS
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 effectively communicates that this is a creation/mutation tool (implied by 'Create'), specifies it's for GitHub repositories, and mentions build processes. However, it doesn't detail authentication needs, rate limits, or what happens on failure, leaving some behavioral aspects unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (API note, Best for, Not for, Prerequisites, Alternatives, Next steps, Related), using bullet points and symbols for readability. Every sentence earns its place by providing actionable guidance without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with no annotations and no output schema, the description does an excellent job covering usage context, alternatives, and prerequisites. However, it lacks details on return values or error handling, which would be helpful given the mutation nature and absence of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description doesn't add any additional parameter semantics beyond what's in the schema (e.g., format examples for 'repo' are in the schema). Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Create a new service') and resource ('from a GitHub repository'), distinguishing it from sibling tools like service_create_from_image. It explicitly mentions deploying applications from source code and GitHub-hosted projects, providing a precise purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'Best for' and 'Not for' sections with named alternatives (service_create_from_image, database_deploy), prerequisites (project_list), and related next steps (variable_set, service_update). This provides comprehensive guidance on when to use this tool versus others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
service_deleteA
[API] Delete a service from a project
ā”ļø Best for: ā Removing unused services ā Cleaning up test services ā Project reorganization
ā ļø Not for: Ć Temporary service stoppage (use service_restart) Ć Updating service configuration (use service_update)
ā Prerequisites: service_list, service_info
ā Alternatives: service_restart
ā Related: project_delete
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project containing the service | |
| serviceId | Yes | ID of the service to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It clearly indicates this is a destructive operation ('Delete'), implies permanent removal (contrasted with temporary alternatives), and mentions prerequisites that suggest authentication or access needs. However, it doesn't specify rate limits, confirmation prompts, or irreversible consequences beyond the contrast with service_restart.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (API label, purpose, best for/not for, prerequisites, alternatives, related). Every sentence earns its place by providing distinct guidance without redundancy. The information is front-loaded with the core purpose first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description provides strong contextual guidance about usage scenarios, alternatives, and prerequisites. However, it doesn't describe what happens after deletion (e.g., confirmation message, error handling, or cascading effects) which would be helpful given the tool's destructive nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing clear documentation for both parameters (projectId, serviceId). The description doesn't add any parameter-specific details beyond what the schema already states, so it meets the baseline of 3 where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Delete a service from a project') with the exact resource ('service'), distinguishing it from siblings like service_restart or service_update. It goes beyond just restating the tool name by specifying the target context (project).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides 'Best for' scenarios (removing unused services, cleaning up test services, project reorganization) and 'Not for' cases (temporary stoppage, configuration updates) with named alternatives (service_restart, service_update). Also lists prerequisites (service_list, service_info) and related tools (project_delete), giving comprehensive guidance on when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
service_infoA
[API] Get detailed information about a specific service
ā”ļø Best for: ā Viewing service configuration and status ā Checking deployment details ā Monitoring service health
ā Prerequisites: service_list
ā Next steps: deployment_list, variable_list
ā Related: service_update, deployment_trigger
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project containing the service | |
| serviceId | Yes | ID of the service to get information about | |
| environmentId | Yes | ID of the environment to check (usually obtained from service_list) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It effectively communicates this is a read-only operation ('Get detailed information'), suggests it's for monitoring/checking purposes, and implies it returns configuration/status/health data. However, it doesn't explicitly mention rate limits, authentication needs, or error behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with clear sections (purpose, best for, prerequisites, next steps, related tools). Every sentence earns its place, and information is front-loaded with the core purpose stated first. The bullet-point format enhances readability without unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with 3 parameters and 100% schema coverage, the description is quite complete. It provides purpose, usage context, and workflow relationships. The main gap is the lack of output schema, so the agent doesn't know the return format, but the description compensates somewhat by indicating what information will be returned (configuration, status, health, deployment details).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description doesn't add any parameter-specific information beyond what's in the schema. The baseline of 3 is appropriate when the schema does the heavy lifting for parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('Get detailed information') and resource ('about a specific service'). It distinguishes from siblings like service_list (which lists services) and service_update (which modifies services). The '[API]' prefix further clarifies this is an API operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance through the 'Best for' section listing three specific use cases, plus prerequisite ('service_list'), next steps ('deployment_list, variable_list'), and related tools ('service_update, deployment_trigger'). This gives clear context for when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
service_listA
[API] List all services in a specific Railway project
ā”ļø Best for: ā Getting an overview of a project's services ā Finding service IDs ā Checking service status
ā Prerequisites: project_list
ā Next steps: service_info, deployment_list
ā Related: project_info, variable_list
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project to list services from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the tool lists 'all services' and implies it's a read operation, but doesn't disclose behavioral traits like pagination, rate limits, error handling, or authentication needs. The description adds some context (e.g., it's for listing) but lacks depth on 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by bullet points for usage, prerequisites, and related tools. Every sentence earns its place, with no wasted words, making it efficient and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is fairly complete for a list operation. It covers purpose, usage, and workflow context. However, it lacks details on output format or behavioral aspects, which slightly limits completeness for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 the single parameter (projectId). The description adds no additional meaning beyond what's in the schema, such as format examples or constraints. 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.
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 ('List') and resource ('services in a specific Railway project'), distinguishing it from siblings like service_info (detailed info) or service_create (creation). It explicitly mentions what it returns: an overview, service IDs, and status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance with 'Best for' scenarios (overview, finding IDs, checking status), prerequisites (project_list), next steps (service_info, deployment_list), and related tools (project_info, variable_list). This clearly indicates when to use it versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
service_restartA
[API] Restart a service in a specific environment
ā”ļø Best for: ā Applying configuration changes ā Clearing service state ā Resolving runtime issues
ā ļø Not for: Ć Deploying new code (use deployment_trigger) Ć Updating service config (use service_update) Ć Long-term service stoppage (use service_delete)
ā Prerequisites: service_list
ā Alternatives: deployment_trigger
ā Related: service_info, deployment_logs
| Name | Required | Description | Default |
|---|---|---|---|
| serviceId | Yes | ID of the service to restart | |
| environmentId | Yes | ID of the environment where the service should be restarted (usually obtained from service_info) |
TDQS
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 effectively communicates that this is a mutation tool (implied by 'Restart'), specifies use cases and exclusions, and mentions prerequisites and alternatives. However, it lacks details on potential side effects (e.g., downtime, data loss) or response behavior, which would be helpful for a mutation tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by organized sections (Best for, Not for, Prerequisites, Alternatives, Related). Each sentence earns its place by providing actionable guidance without redundancy, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 does an excellent job covering usage context, exclusions, and relationships. It falls short only in not detailing behavioral aspects like potential impacts (e.g., service interruption) or response format, which would enhance completeness given the tool's complexity and lack of structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with clear documentation for both parameters (serviceId and environmentId). The description does not add any parameter-specific information beyond what the schema provides, such as format examples or sourcing details. Given the high schema coverage, a baseline score of 3 is appropriate, as the description does not compensate but also does not detract.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Restart a service') and resource ('in a specific environment'), using a precise verb. It distinguishes this tool from sibling tools like deployment_trigger, service_update, and service_delete by explicitly stating what it is not for, making the purpose unambiguous and well-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool ('Best for: Applying configuration changes, Clearing service state, Resolving runtime issues') and when not to use it ('Not for: Deploying new code, Updating service config, Long-term service stoppage'), with named alternatives for each exclusion. It also lists prerequisites (service_list) and related tools, offering comprehensive usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
service_updateA
[API] Update a service's configuration
ā”ļø Best for: ā Changing service settings ā Updating resource limits ā Modifying deployment configuration
ā ļø Not for: Ć Updating environment variables (use variable_set) Ć Restarting services (use service_restart) Ć Triggering new deployments (use deployment_trigger)
ā Prerequisites: service_list, service_info
ā Next steps: deployment_trigger
ā Related: service_restart, variable_set
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project containing the service | |
| serviceId | Yes | ID of the service to update | |
| environmentId | Yes | ID of the environment to update (usually obtained from service_info) | |
| region | No | Optional: Region to deploy the service in | |
| rootDirectory | No | Optional: Root directory containing the service code | |
| buildCommand | No | Optional: Command to build the service | |
| startCommand | No | Optional: Command to start the service | |
| numReplicas | No | Optional: Number of service replicas to run | |
| healthcheckPath | No | Optional: Path for health checks | |
| sleepApplication | No | Optional: Whether to enable sleep mode |
TDQS
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 implies mutation ('Update'), but doesn't specify permissions required, whether changes are reversible, or potential side effects (e.g., downtime). However, it adds some context by listing prerequisites and related tools, which helps infer workflow dependencies. Without annotations, more behavioral details (e.g., rate limits, auth needs) 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by clear sections (Best for, Not for, Prerequisites, Next steps, Related). Every sentence earns its place by providing actionable guidance without redundancy. It uses bullet points and symbols (ā, Ć, ā) for readability, making it efficient and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 parameters, mutation operation) and lack of annotations/output schema, the description does a good job of contextual completeness by covering usage guidelines, exclusions, prerequisites, and related tools. However, it could be more complete by including details on behavioral traits (e.g., what 'Update' entails operationally) or output expectations, which are missing despite no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 10 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema (e.g., no extra syntax or format details). According to the rules, with high schema coverage (>80%), the baseline is 3 even with no param info in the description, which applies here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('Update a service's configuration') and distinguishes it from sibling tools by listing what it's 'Not for' (e.g., not for updating environment variables, restarting services, or triggering deployments). It explicitly names alternative tools like variable_set, service_restart, and deployment_trigger, making its scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool ('Best for: Changing service settings, Updating resource limits, Modifying deployment configuration') and when not to use it ('Not for: Updating environment variables, Restarting services, Triggering new deployments'), with named alternatives for each exclusion. It also lists prerequisites (service_list, service_info) and next steps (deployment_trigger), offering comprehensive usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tcp_proxy_createA
[API] Create a new TCP proxy for a service
ā”ļø Best for: ā Setting up database access ā Configuring external connections ā Exposing TCP services
ā ļø Not for: Ć HTTP/HTTPS endpoints (use domain_create) Ć Internal service communication
ā Prerequisites: service_list
ā Alternatives: domain_create
ā Next steps: tcp_proxy_list
ā Related: service_info, service_update
| Name | Required | Description | Default |
|---|---|---|---|
| environmentId | Yes | ID of the environment (usually obtained from service_info) | |
| serviceId | Yes | ID of the service | |
| applicationPort | Yes | Port of application/service to proxy, usually based off of the service's Dockerfile or designated running port. |
TDQS
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 effectively communicates that this is a creation/mutation tool (implied by 'Create'), specifies use cases and exclusions, and mentions prerequisites and related tools. However, it doesn't explicitly address potential side effects, error conditions, or what happens after creation (e.g., whether the proxy is immediately active).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with clear sections (Best for, Not for, Prerequisites, Alternatives, Next steps, Related) using bullet points and icons. Every sentence earns its place by providing actionable guidance without redundancy. The information is front-loaded with the core purpose statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with 3 parameters, 100% schema coverage, but no annotations or output schema, the description provides excellent contextual guidance about when and how to use the tool. It covers prerequisites, alternatives, and related operations. The main gap is the lack of information about what the tool returns (since there's no output schema) or potential error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so all parameters are documented in the schema itself. The description doesn't add any additional parameter-specific information beyond what's in the schema (e.g., it doesn't explain parameter relationships or provide examples). This meets the baseline expectation when schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Create a new TCP proxy') and resource ('for a service'), distinguishing it from sibling tools like domain_create for HTTP/HTTPS endpoints. It provides concrete examples of use cases (database access, external connections, exposing TCP services) that clarify the tool's purpose beyond just the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('Best for: Setting up database access, Configuring external connections, Exposing TCP services') and when not to use it ('Not for: HTTP/HTTPS endpoints (use domain_create), Internal service communication'). It also lists prerequisites (service_list), alternatives (domain_create), and next/related steps, providing comprehensive guidance for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tcp_proxy_deleteA
[API] Delete a TCP proxy
ā”ļø Best for: ā Removing unused proxies ā Security management ā Endpoint cleanup
ā ļø Not for: Ć Temporary proxy disabling Ć Port updates
ā Prerequisites: tcp_proxy_list
ā Related: service_update
| Name | Required | Description | Default |
|---|---|---|---|
| proxyId | Yes | ID of the TCP proxy to delete |
TDQS
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 correctly identifies this as a destructive operation ('Delete'), which is appropriate. However, it doesn't mention important behavioral aspects like whether deletion is permanent/irreversible, what happens to associated resources, authentication requirements, or error conditions. The description adds some context about use cases but misses key operational details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely well-structured and concise, using bullet points, icons, and clear sections that make information easy to scan. Every sentence earns its place by providing specific guidance without redundancy. The information is front-loaded with the core purpose, followed by usage guidelines and related context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive operation with no annotations and no output schema, the description provides good contextual completeness. It covers purpose, usage scenarios, exclusions, prerequisites, and related tools. The main gap is the lack of information about the deletion consequences (permanence, side effects) and what the tool returns, but given the schema covers the parameter well and the description provides strong usage guidance, it's reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with the single parameter 'proxyId' well-documented in the schema. The description doesn't add any additional parameter information beyond what's already in the schema. According to the scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description, which applies here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and resource ('a TCP proxy'), making the purpose immediately understandable. It distinguishes from sibling tools like tcp_proxy_create and tcp_proxy_list by focusing on removal rather than creation or listing. However, it doesn't explicitly differentiate from other deletion tools like service_delete or volume_delete beyond the resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides excellent usage guidance with explicit 'Best for' and 'Not for' sections, clearly indicating when to use this tool (removing unused proxies, security management, endpoint cleanup) and when not to use it (temporary proxy disabling, port updates). It also mentions prerequisites (tcp_proxy_list) and related tools (service_update), offering comprehensive context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tcp_proxy_listA
[API] List all TCP proxies for a service in a specific environment
ā”ļø Best for: ā Viewing TCP proxy configurations ā Managing external access ā Auditing service endpoints
ā Prerequisites: service_list
ā Next steps: tcp_proxy_create
ā Related: domain_list, service_info
| Name | Required | Description | Default |
|---|---|---|---|
| environmentId | Yes | ID of the environment containing the service | |
| serviceId | Yes | ID of the service to list TCP proxies for |
TDQS
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 implies a read-only operation (listing proxies) and hints at configuration management, but does not disclose behavioral traits like pagination, rate limits, authentication needs, or error handling. The description adds some context (e.g., for auditing) but lacks detailed behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded: the first sentence states the core purpose, followed by bullet-point sections (Best for, Prerequisites, Next steps, Related) that efficiently provide additional context without redundancy. Every sentence earns its place, making it concise and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 required parameters, no output schema, no annotations), the description is mostly complete. It covers purpose, usage guidelines, and related tools, but lacks details on behavioral aspects (e.g., output format, error cases) and does not fully compensate for the absence of annotations. It is adequate but has minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents both parameters (environmentId and serviceId) with descriptions. The description does not add any parameter-specific semantics beyond what the schema provides, such as format examples or constraints. Baseline 3 is appropriate when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List all TCP proxies for a service in a specific environment.' It specifies the verb ('List'), resource ('TCP proxies'), and scope ('for a service in a specific environment'), distinguishing it from siblings like tcp_proxy_create (which creates proxies) and domain_list (which lists domains).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance with sections: 'Best for' lists use cases (viewing configurations, managing access, auditing endpoints), 'Prerequisites' specifies service_list as a required step, 'Next steps' suggests tcp_proxy_create, and 'Related' mentions domain_list and service_info as alternatives. This clearly indicates when to use this tool versus others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
template_deployA
[WORKFLOW] Deploy a new service from a template
ā”ļø Best for: ā Starting new services from templates ā Quick service deployment ā Using pre-configured templates
ā ļø Not for: Ć Custom service configurations Ć GitHub repository deployments (use service_create_from_repo)
ā Prerequisites: template_list
ā Alternatives: service_create_from_repo, service_create_from_image, database_deploy
ā Next steps: service_info, variable_list
ā Related: service_update, deployment_trigger
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project to create the service in | |
| templateId | Yes | ID of the template to use | |
| environmentId | Yes | ID of the environment to deploy to | |
| teamId | No | ID of the team to create the service in (if not provided, will use the default team) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It effectively communicates this is a deployment/mutation tool (implied by 'Deploy'), mentions prerequisites (template_list), and suggests related operations (service_update, deployment_trigger). However, it doesn't explicitly state permission requirements, rate limits, or what happens if deployment fails, leaving some behavioral aspects unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Best for, Not for, Prerequisites, Alternatives, Next steps, Related) using visual markers (ā, Ć, ā). Every sentence serves a distinct purpose with zero waste. The information is front-loaded with the core purpose stated first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a deployment tool with no annotations and no output schema, the description provides excellent contextual guidance about usage scenarios, alternatives, prerequisites, and next steps. It effectively compensates for the lack of structured behavioral annotations. The only minor gap is not explicitly describing the return value or deployment outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 4 parameters thoroughly. The description adds no additional parameter-specific information beyond what's in the schema. This meets the baseline expectation when schema coverage is complete, but doesn't enhance understanding of parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verb+resource: 'Deploy a new service from a template'. It distinguishes from siblings by explicitly mentioning what it's not for (custom configurations, GitHub deployments) and listing alternatives like service_create_from_repo. The [WORKFLOW] tag further clarifies its role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use ('Best for: Starting new services from templates, Quick service deployment') and when not to use ('Not for: Custom service configurations, GitHub repository deployments'). It names specific alternatives (service_create_from_repo, service_create_from_image, database_deploy) and lists prerequisites (template_list) and next steps (service_info, variable_list).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
template_get_workflow_statusB
[API] Get the status of a workflow
ā”ļø Best for: ā Checking workflow status
ā ļø Not for: Ć Creating new services
ā Next steps: service_info
ā Related: template_list, template_deploy
| Name | Required | Description | Default |
|---|---|---|---|
| workflowId | Yes | ID of the workflow to get the status of |
TDQS
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 is for getting status (implying a read operation) but doesn't mention any behavioral traits like whether it requires authentication, has rate limits, returns real-time or cached data, or what happens if the workflow ID is invalid. The description adds minimal context beyond the basic purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, starting with the core purpose. The use of emojis and bullet points ('ā”ļø Best for:', 'ā ļø Not for:', 'ā Next steps:', 'ā Related:') adds structure without unnecessary verbosity. However, the inclusion of 'Next steps: service_info' might be slightly extraneous as it doesn't directly relate to usage guidelines.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is somewhat complete but has gaps. It covers purpose and basic usage guidelines but lacks behavioral details like error handling or response format. Without annotations or an output schema, the agent might struggle with understanding the full context of the tool's operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'workflowId' parameter fully documented as 'ID of the workflow to get the status of.' The description doesn't add any additional meaning or context about the parameter beyond what the schema provides, such as format examples or constraints. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get the status of a workflow' with a specific verb ('Get') and resource ('workflow status'). It distinguishes from some siblings like 'template_deploy' or 'service_create_from_image' by focusing on status retrieval rather than creation or deployment. However, it doesn't explicitly differentiate from 'deployment_status' which might be a similar sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance with 'Best for: Checking workflow status' and 'Not for: Creating new services,' which helps the agent understand appropriate use cases. It also mentions 'Next steps: service_info' and 'Related: template_list, template_deploy' to suggest alternatives and context. However, it doesn't clarify when to use this versus 'deployment_status' or other status-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
template_listA
[API] List all available templates on Railway
ā”ļø Best for: ā Discovering available templates ā Planning service deployments ā Finding template IDs and sources
ā ļø Not for: Ć Listing existing services Ć Getting service details
ā Alternatives: service_create_from_repo, service_create_from_image
ā Next steps: service_create_from_template
ā Related: database_list_types
| Name | Required | Description | Default |
|---|---|---|---|
| searchQuery | No | Optional search query to filter templates by name and description |
TDQS
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 effectively communicates the tool's scope (listing all available templates) and hints at its read-only nature through the 'List' action, though it doesn't explicitly mention permissions, rate limits, or pagination. The 'Next steps' section adds useful context about subsequent actions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bullet points and icons for readability, front-loading the core purpose. Every sentence earns its place by providing clear guidance, exclusions, alternatives, and related tools without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and no output schema, the description is highly complete. It covers purpose, usage guidelines, and context thoroughly. The only minor gap is the lack of explicit mention of output format or pagination, but this is reasonable given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents the optional 'searchQuery' parameter. The description doesn't add any parameter-specific information beyond what's in the schema, but the baseline score of 3 is appropriate given the high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose as 'List all available templates on Railway' with a specific verb ('List') and resource ('templates'), clearly distinguishing it from sibling tools like service_list, database_list_types, or volume_list. The '[API]' prefix further clarifies it's an API operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance with 'Best for' and 'Not for' sections, naming specific use cases (discovering templates, planning deployments) and exclusions (listing existing services, getting service details). It also lists alternatives (service_create_from_repo, service_create_from_image) and related tools (database_list_types), offering comprehensive context for when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
variable_bulk_setA
[WORKFLOW] Create or update multiple environment variables at once
ā”ļø Best for: ā Migrating configuration between services ā Initial service setup ā Bulk configuration updates
ā ļø Not for: Ć Single variable updates (use variable_set) Ć Temporary configuration changes
ā Prerequisites: service_list
ā Alternatives: variable_set
ā Next steps: deployment_trigger, service_restart
ā Related: variable_list, service_update
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project containing the service | |
| environmentId | Yes | ID of the environment for the variables (usually obtained from service_list) | |
| variables | Yes | Object mapping variable names to values | |
| serviceId | No | Optional: ID of the service for the variables, if omitted updates shared variables) |
TDQS
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 effectively describes the tool's behavior by indicating it creates or updates variables, specifies bulk use cases, and notes prerequisites and related tools. However, it lacks details on permissions, rate limits, or error handling, which would enhance transparency further.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bullet points and icons, making it easy to scan. It is front-loaded with the core purpose and efficiently organized into sections like 'Best for' and 'Not for', with no wasted sentencesāeach part adds clear value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a bulk mutation tool with no annotations and no output schema, the description does a good job by covering purpose, usage, and related tools. However, it could improve by detailing output behavior or error cases, which would make it more complete for an agent's understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description does not add specific parameter semantics beyond what the schema provides, such as explaining 'variables' mapping or 'serviceId' optionality in more detail, resulting in a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Create or update') and resource ('multiple environment variables at once'), making the purpose specific. It distinguishes from sibling 'variable_set' by emphasizing bulk operations versus single updates, providing clear differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides usage guidelines with 'Best for' and 'Not for' sections, naming specific scenarios like migration and setup. It lists prerequisites ('service_list'), alternatives ('variable_set'), and next steps ('deployment_trigger'), offering comprehensive guidance on when to use this tool versus others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
variable_copyA
[WORKFLOW] Copy variables from one environment to another
ā”ļø Best for: ā Environment migration ā Configuration sharing ā Environment duplication
ā ļø Not for: Ć Single variable updates (use variable_set) Ć Temporary configuration changes
ā Prerequisites: service_list
ā Alternatives: variable_set
ā Next steps: deployment_trigger, service_restart
ā Related: variable_list, service_update
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project | |
| sourceEnvironmentId | Yes | ID of the source environment (usually obtained from project_info) | |
| targetEnvironmentId | Yes | ID of the target environment (usually obtained from project_info) | |
| serviceId | No | ID of the service (optional, if omitted copies shared variables) | |
| overwrite | No | Whether to overwrite existing variables in the target environment |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by explaining it's for copying variables between environments, mentioning optional service-specific copying, and implying it's a batch operation. However, it doesn't explicitly state whether this is a read-only or mutating operation, or discuss potential side effects like overwriting behavior (though the schema covers the overwrite parameter).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with clear sections (purpose, best for, not for, prerequisites, alternatives, next steps, related). Every sentence earns its place, and the information is front-loaded with the core purpose stated first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters, no annotations, and no output schema, the description provides good context about when to use it, alternatives, prerequisites, and related operations. It could be more complete by explicitly stating whether this is a mutating operation and what the expected output looks like, but it covers most essential usage aspects well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 5 parameters thoroughly. The description adds minimal parameter-specific information beyond what's in the schema (e.g., mentioning 'shared variables' for the optional serviceId). This meets the baseline expectation when schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verb ('Copy') and resource ('variables from one environment to another'), and distinguishes it from sibling tools like variable_set for single updates. The '[WORKFLOW]' label and context about environment migration/duplication further clarify its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance with 'Best for' and 'Not for' sections, naming specific alternatives (variable_set) and prerequisites (service_list). It also lists related tools and next steps, offering comprehensive usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
variable_deleteA
[API] Delete a variable for a service in a specific environment
ā”ļø Best for: ā Removing unused configuration ā Security cleanup ā Configuration management
ā ļø Not for: Ć Temporary variable disabling Ć Bulk variable removal
ā Prerequisites: service_list
ā Next steps: deployment_trigger, service_restart
ā Related: variable_list, variable_set
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project | |
| environmentId | Yes | ID of the environment to delete the variable from (usually obtained from service_list) | |
| name | Yes | Name of the variable to delete | |
| serviceId | No | ID of the service (optional, if omitted deletes a shared variable) |
TDQS
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 effectively communicates this is a destructive operation ('Delete', 'Security cleanup'), mentions prerequisites, and hints at side effects through 'Next steps' (suggesting deployments or restarts may be needed). However, it doesn't explicitly state permission requirements, rate limits, or whether deletion is permanent/reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, best for, not for, prerequisites, next steps, related tools) and uses bullet points/emojis for readability. While slightly longer than minimal, every section adds value. The core purpose is stated upfront, making it front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description provides good context: clear purpose, usage guidelines, prerequisites, and related tools. It adequately covers the mutation nature and hints at side effects. The main gap is lack of explicit information about return values or error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 4 parameters. The description adds minimal parameter-specific semantics beyond the schema - it mentions 'shared variable' context for the optional serviceId parameter, but doesn't provide additional format details, examples, or constraints. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete a variable'), specifies the resource ('for a service in a specific environment'), and distinguishes from siblings like 'variable_set' (create/update) and 'variable_list' (read). It provides specific context about configuration management rather than just restating the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'Best for' and 'Not for' sections with concrete use cases (removing unused configuration, security cleanup) and exclusions (temporary disabling, bulk removal). It also lists prerequisites ('service_list'), next steps ('deployment_trigger', 'service_restart'), and related tools ('variable_list', 'variable_set'), providing comprehensive guidance on when and how to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
variable_setA
[API] Create or update an environment variable
ā”ļø Best for: ā Setting configuration values ā Updating connection strings ā Managing service secrets
ā ļø Not for: Ć Bulk variable updates (use variable_bulk_set) Ć Temporary configuration changes
ā Prerequisites: service_list
ā Alternatives: variable_bulk_set
ā Next steps: deployment_trigger, service_restart
ā Related: variable_list, variable_delete
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project containing the service | |
| environmentId | Yes | ID of the environment for the variable (usually obtained from service_list) | |
| name | Yes | Name of the environment variable | |
| value | Yes | Value to set for the variable | |
| serviceId | No | Optional: ID of the service for the variable, if omitted creates/updates a shared variable |
TDQS
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 effectively describes the tool's behavior by indicating it can create or update variables, mentions prerequisites (service_list), and hints at next steps (deployment_trigger, service_restart). However, it lacks details on error handling, rate limits, or auth needs, which would be beneficial 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by organized sections (Best for, Not for, Prerequisites, etc.). Every sentence serves a clear purpose without redundancy, making it efficient and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (mutation with 5 parameters) and no annotations or output schema, the description does a good job by covering purpose, usage, prerequisites, and related tools. However, it could improve by mentioning the response format or error cases, which are missing despite the lack of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description does not add any parameter-specific details beyond what the schema provides, such as examples or constraints. This meets the baseline for high schema coverage, but no extra value is added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('Create or update') and resource ('environment variable'), distinguishing it from siblings like variable_bulk_set for bulk operations and variable_list for viewing. It directly answers what the tool does without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance with 'Best for' and 'Not for' sections, naming specific use cases (e.g., setting configuration values) and exclusions (e.g., not for bulk updates). It also lists prerequisites (service_list), alternatives (variable_bulk_set), and related tools, offering comprehensive context for when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
volume_createA
[API] Create a new persistent volume for a service
ā”ļø Best for: ā Setting up database storage ā Configuring persistent data ā Adding file storage
ā ļø Not for: Ć Temporary storage needs Ć Static file hosting Ć Memory caching
ā Prerequisites: service_list
ā Next steps: volume_list
ā Related: service_update, database_deploy
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project containing the service | |
| environmentId | Yes | ID of the environment for the volume (usually obtained from service_info) | |
| serviceId | Yes | ID of the service to attach volume to | |
| mountPath | Yes | Path where the volume should be mounted in the container |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that the volume is 'persistent' and for a 'service', which adds some context about the tool's behavior. However, it lacks details on permissions, error handling, or what the tool returns, leaving gaps in behavioral transparency for a creation tool with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by bullet-pointed sections for best uses, exclusions, prerequisites, next steps, and related tools. Each sentence or bullet point adds value without redundancy, making it efficient and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity as a creation operation with no annotations and no output schema, the description provides strong usage guidelines and related tool context. However, it lacks details on behavioral aspects like return values or error conditions, which slightly reduces completeness. The high schema coverage and clear structure compensate partially, but not fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the input schema already documents all four parameters (projectId, environmentId, serviceId, mountPath) with descriptions. The description does not add any parameter-specific details beyond what the schema provides, such as format examples or constraints, resulting in a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Create' and resource 'new persistent volume for a service', making the purpose specific and unambiguous. It distinguishes this tool from sibling tools like volume_list, volume_update, and volume_delete by focusing on creation rather than listing, updating, or deleting volumes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance with 'Best for' and 'Not for' sections, clearly indicating when to use this tool (e.g., for database storage, persistent data) and when not to use it (e.g., for temporary storage, static file hosting). It also lists prerequisites (service_list), next steps (volume_list), and related tools (service_update, database_deploy), offering comprehensive usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
volume_deleteA
[API] Delete a volume from a service
ā”ļø Best for: ā Removing unused storage ā Storage cleanup ā Resource management
ā ļø Not for: Ć Temporary data removal Ć Data backup (use volume_backup first)
ā Prerequisites: volume_list
ā Related: service_update
| Name | Required | Description | Default |
|---|---|---|---|
| volumeId | Yes | ID of the volume to delete |
TDQS
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 effectively communicates that this is a destructive operation ('Delete'), implies permanent removal ('Storage cleanup'), and mentions a prerequisite action ('volume_list'). However, it doesn't specify authentication requirements, rate limits, or error conditions, leaving some behavioral aspects uncovered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, best for, not for, prerequisites, related), uses bullet points and symbols for readability, and contains no redundant information. Every sentence serves a distinct purpose in guiding tool selection and usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description does an excellent job covering purpose, usage guidelines, and prerequisites. It could be more complete by mentioning potential side effects (e.g., data loss irreversibility) or output expectations, but it's largely sufficient given the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter 'volumeId', which is fully documented in the schema. The description doesn't add any parameter-specific information beyond what the schema provides, so it meets the baseline score of 3 for adequate coverage without extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Delete a volume from a service') with the resource ('volume'), distinguishing it from siblings like volume_create, volume_list, and volume_update. It provides a precise verb+resource combination that leaves no ambiguity about the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'Best for' and 'Not for' sections with specific use cases (e.g., 'Removing unused storage' vs. 'Temporary data removal'), mentions prerequisites ('volume_list'), and references alternatives ('use volume_backup first'). This provides comprehensive guidance on when to use this tool versus others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
volume_listA
[API] List all volumes in a project
ā”ļø Best for: ā Viewing persistent storage configurations ā Managing data volumes ā Auditing storage usage
ā Prerequisites: project_list
ā Next steps: volume_create
ā Related: service_info, database_deploy
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project to list volumes for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool is for listing volumes, which implies a read-only operation, but doesn't explicitly state whether it's safe, requires specific permissions, or details about rate limits or pagination. The description adds some context with the 'Best for' section, but lacks deeper behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and appropriately sized, using bullet points and arrows for clarity. Every sentence earns its place by providing purpose, usage guidelines, prerequisites, and related tools without unnecessary fluff. It's front-loaded with the core action and efficiently organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter, 100% schema coverage, no output schema), the description is mostly complete. It covers purpose, usage, and context well, but lacks details on behavioral aspects like permissions or output format, which would be helpful since no annotations or output schema are provided. This minor gap prevents a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'projectId' fully documented in the schema as 'ID of the project to list volumes for'. The description doesn't add any additional meaning or details about this parameter beyond what the schema provides, so it meets the baseline of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('List all volumes') and resource ('in a project'), distinguishing it from sibling tools like volume_create, volume_delete, and volume_update. The title 'volume_list' aligns perfectly with this purpose, making the tool's function immediately apparent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool ('Best for: Viewing persistent storage configurations, Managing data volumes, Auditing storage usage'), prerequisites ('Prerequisites: project_list'), next steps ('Next steps: volume_create'), and related tools ('Related: service_info, database_deploy'). This comprehensive guidance helps the agent choose this tool appropriately over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
volume_updateC
Update a volume's properties
| Name | Required | Description | Default |
|---|---|---|---|
| volumeId | Yes | ID of the volume to update | |
| name | Yes | New name for the volume |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states it's an update operation. It lacks critical behavioral details: whether this requires specific permissions, if changes are reversible, potential side effects, or error conditions. 'Update' implies mutation, but no further context is given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to scan and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a mutation operation with no annotations and no output schema), the description is insufficient. It doesn't explain what happens on success/failure, return values, or behavioral nuances, leaving significant gaps for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 both parameters (volumeId and name). The description adds no additional meaning beyond the schema's parameter descriptions, such as format examples or constraints, but doesn't contradict them either.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update') and resource ('a volume's properties'), making the purpose evident. However, it doesn't differentiate from sibling tools like 'volume_create' or 'volume_delete' beyond the verb, nor does it specify what 'properties' means beyond the schema's 'name' parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 volume), exclusions, or comparisons to siblings like 'volume_create' for new volumes or 'volume_list' for viewing properties.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Tools are well-differentiated with clear purposes, though some overlap exists (e.g., deployment_trigger vs service_restart, variable_set vs variable_bulk_set). Descriptions include 'Best for' and 'Not for' sections that effectively clarify boundaries, preventing most confusion.
All tools follow a consistent snake_case verb_noun pattern (e.g., project_list, service_create_from_repo, variable_delete). The naming is highly predictable and readable across all 38 tools, with no deviations in style.
With 38 tools, the count is excessive for a Railway server, making it overwhelming for agents to navigate. While the domain is broad (projects, services, deployments, variables, domains, volumes, templates, databases), many tools could be consolidated or omitted without losing functionality.
The tool set provides comprehensive coverage of Railway's domain, including full CRUD operations for projects, services, deployments, variables, domains, volumes, and templates. There are no obvious gaps, and tools support complete workflows from setup to management.
Maintenance
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
Develop, manage, and debug Railway projects, services, and deployments from within agents.
Deploy full-stack apps (Postgres, Redis, S3, workers, backups) from Claude or curl. 59 MCP tools.
Build, deploy and manage MaShop e-commerce projects from Claude, Cursor or any MCP client.
Build, validate, deploy ā HTTP APIs, cron jobs, webhooks and MCP tools ā from your AI client.
Related MCP Servers
AlicenseAqualityFmaintenanceEnables interaction with Railway cloud platform through the CLI to manage projects, services, deployments, and environments. Supports creating projects, deploying templates, managing environment variables, and monitoring logs through natural language commands.145,931192MIT- AlicenseAqualityDmaintenanceEnables management of Railway.app infrastructure through natural language, including deploying services from GitHub repos or Docker images, managing environment variables, monitoring deployments, and configuring networking and volumes.3658MIT
- AlicenseAqualityDmaintenanceEnables management of Railway.app infrastructure through natural language, including deploying services, managing environment variables, monitoring deployments, and controlling project resources.3658MIT
- AlicenseAqualityDmaintenanceEnables management of Railway.app infrastructure through natural language, including deploying services, managing environment variables, monitoring deployments, and handling databases and volumes.3658MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/epitaphe360/railway-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server