Skip to main content
Glama

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

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 claude

Cursor

npx -y @smithery/cli@latest run @jason-tan-swe/railway-mcp --config "{\"railwayApiToken\":\"token\"}"
  1. Head to your cursor settings and find the MCP section

  2. Click 'Add new MCP server'

  3. Name it however, you like, we recommend railway-mcp for better clarity

  4. Paste this command into the 'Command' section, where is your accounts Railway token:

npx -y @jasontanswe/railway-mcp <RAILWAY_API_TOKEN>
  1. Create or edit your Claude for Desktop config file:

    • macOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

  2. 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"
      }
    }
  }
}
  1. Restart Claude for Desktop

  2. You can now start using Railway tools directly in Claude. For example:

Please list all my Railway projects
  1. Alternatively, 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.

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:

  1. 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 configure tool directly in Claude if the environment token isn't working

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

  3. 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 account

  • project-info - Get detailed information about a specific project

  • project-create - Create a new project with optional team ID

  • project-delete - Delete a project

  • project-environments - List all environments in a project

Services

  • service-list - List all services in a specific project

  • service-info - Get detailed information about a specific service

  • service-create-from-repo - Create a new service from a GitHub repository

  • service-create-from-image - Create a new service from a Docker image

  • service-delete - Delete a service from a project

  • service-restart - Restart a service in a specific environment

  • service-update - Update service configuration (build command, start command, etc.) | 🚧 Needs Testing

Deployments

  • deployment-list - List recent deployments for a service

  • deployment-trigger - Trigger a new deployment for a service

  • deployment-logs - Get logs for a specific deployment

  • deployment-health-check - Check the health/status of a deployment

Variables

  • variable-list - List variables for a service or environment

  • variable-set - Create or update a variable

  • variable-delete - Delete a variable

  • variable-bulk-set - Bulk update variables for a service | 🚧 Needs Testing

  • variable-copy - Copy variables between environments | 🚧 Needs Testing

Databases

  • database-list-types - List all available database types that can be deployed

  • database-deploy - Deploy a new database service

Setting up a new service

  1. List projects to get the project ID

  2. Create a new service from a template

  3. Add environment variables

  4. View the service deployment

Managing environment variables

  1. List projects to find your project ID

  2. List variables to see what's currently set

  3. Create or update variables as needed

  4. Delete any obsolete variables

Available Tools

38 tools
configure_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

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenYesRailway API token (create one at https://railway.app/account/tokens)

TDQS

A4.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It states the tool configures a token for authentication but does not disclose side effects (e.g., overwriting existing token, persistence, validation). For a simple setter, the purpose is clear but behavioral details are missing, making it adequate but not comprehensive.

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

Conciseness5/5

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

The description is concise and well-structured, using emojis, checkmarks, and cross marks to denote best uses and exclusions. It is front-loaded with the purpose and includes next steps and related tools. Every sentence adds value with no redundancy.

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

Completeness4/5

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

Given the tool's simplicity (one parameter, no output schema, no annotations), the description is fairly complete. It covers purpose, usage scenarios, and exclusions. However, it lacks details on response or error handling, but for a configuration tool, the level of detail is appropriate. Slightly more could be said about behavioral side effects.

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

Parameters4/5

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

The input schema already describes the token parameter with a URL to create one. The description adds value by noting it is only needed if not set in environment variables, which provides context beyond the schema. With 100% schema coverage, the description enhances usability.

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

Purpose5/5

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

The description clearly states the tool configures the Railway API token for authentication, and distinguishes it from project, service, and environment variable configuration. It uses specific verbs and resources, and the 'Best for' and 'Not for' sections 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.

Usage Guidelines5/5

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

The description explicitly says it is only needed if the token is not set in environment variables, and provides best-use cases (initial setup, token updates, authentication configuration) and exclusions (project configuration, service settings, environment variables). It also suggests next steps and related tools, giving clear guidance on when to use.

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

The description accurately states that the tool queries and lists database types, which is a read-only operation. It does not mention any side effects or restrictions beyond the scope. Since no annotations are provided, the description carries the full burden and meets it well, though it could add info about potential pagination or caching.

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

Conciseness5/5

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

The description is well-structured with clear sections, bullet points, and emojis, making it visually scannable. Every sentence serves a purpose: stating the query, listing best uses, exclusions, and next steps. No superfluous text.

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

Completeness5/5

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

Given the tool has no parameters, no output schema, and is a simple listing operation, the description provides complete context. It explains what the tool does, when to use it, and how it relates to other tools, enabling an AI agent to correctly select and invoke it.

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

Parameters4/5

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

The input schema has no parameters, so the description correctly implies no parameters are needed. Schema description coverage is 100% (vacuous), and the description adds context about what the query returns, which is sufficient for a parameterless tool.

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

Purpose5/5

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

The description uses a specific verb and resource, 'List all available database types,' clearly indicating the tool's function. It distinguishes itself from sibling tools by explicitly stating its scope (official templates) and contrasting with related tools in the 'Not for' section.

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

Usage Guidelines5/5

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

The description explicitly lists when to use ('Best for'), when not to use ('Not for'), and provides alternatives ('Alternative: service_create_from_image') and next steps ('Next steps: database_deploy'), giving clear guidance on selection among siblings.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoOptional: Maximum number of deployments to return (default: 10)
projectIdYesID of the project containing the service
serviceIdYesID of the service to list deployments for
environmentIdYesID of the environment to list deployments from (usually obtained from service_list)

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided. Description does not disclose ordering, pagination, or default limit behavior beyond 'recent deployments'. For a list tool with a limit parameter, additional behavioral context would be helpful.

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

Conciseness5/5

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

Extremely concise with structured sections (Best for, Prerequisites, Next steps, Related). Every sentence adds value with no redundancy.

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

Completeness4/5

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

Given 4 parameters and no output schema, the description covers prerequisites, related tools, and usage context well. It does not describe the response format, but that is acceptable without an output schema.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. Description adds minimal extra meaning, only noting that environmentId is 'usually obtained from service_list'. No further parameter elaboration.

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

Purpose5/5

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

Description clearly states 'list recent deployments for a service in a specific environment' with specific verb and resource. The tool is distinct from siblings like deployment_logs, deployment_status, and deployment_trigger.

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

Usage Guidelines5/5

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

Includes explicit 'Best for' usage scenarios, prerequisites (service_list), next steps (deployment_logs, deployment_trigger), and related tools, providing clear guidance on when and how to use.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of log entries to fetch
deploymentIdYesID of the deployment to get logs for

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, so description carries the burden. It does not disclose behavioral traits like rate limits, pagination, or authentication requirements. For a simple log retrieval, basic transparency is sufficient but could be improved by noting that logs are for deployment builds, not runtime.

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

Conciseness5/5

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

Well-structured with bullet points for best uses, not-for, prerequisites, next steps, and related tools. Every sentence adds value, and it is very concise.

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

Completeness4/5

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

Given no output schema, the description could explain the content or format of logs, but it does not. However, it provides context about usage and related tools, and the tool is simple. Almost complete for its complexity.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both parameters (deploymentId and limit). The description does not add further meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Get logs for a specific deployment' with a specific verb and resource. It distinguishes from siblings like service_info (runtime logs) and deployment_trigger (triggering deployment).

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

Usage Guidelines5/5

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

Explicitly lists use cases (debugging, monitoring, checking build output) and non-use cases (service runtime logs, database logs). Also mentions prerequisite (deployment_list) and next step (deployment_status), providing clear 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.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
deploymentIdYesID of the deployment to check status for

TDQS

A4.3/5.0
Behavior3/5

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

No annotations provided. The description does not disclose behavioral traits beyond the obvious status check, such as read-only nature or potential side effects. While adequate for a simple query, it could explicitly state that it does not modify state.

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

Conciseness5/5

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

The description is highly concise with a well-organized structure using bullet points and symbols. It front-loads the purpose and efficiently uses sections, making it easy for an AI agent to parse.

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

Completeness5/5

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

Given the low complexity (one parameter, no output schema), the description is complete. It covers prerequisites, next steps, and related tools, and provides usage categories. No gaps identified for this tool.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter (deploymentId), which has a clear description. The tool description does not add additional meaning beyond the schema, so baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states 'Check the current status of a deployment' and lists specific use cases like monitoring progress and verifying successes, distinguishing it from sibling tools such as deployment_logs and service_info.

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

Usage Guidelines5/5

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

Provides explicit 'Best for' and 'Not for' sections, plus lists prerequisites (deployment_list, deployment_trigger) and next steps (deployment_logs), giving comprehensive guidance on when and how to use the tool.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
commitShaYesSpecific commit SHA from the Git repository
projectIdYesID of the project
serviceIdYesID of the service
environmentIdYesID of the environment

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It mentions 'API' but does not disclose behavioral traits like idempotency, rate limits, or whether the deployment is synchronous. It does note prerequisites, but lacks depth on what happens on trigger.

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

Conciseness5/5

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

Description is extremely concise and well-structured using bullet points, emojis, and clear section headers. Every sentence adds value, making it easy for an AI agent to parse quickly.

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

Completeness4/5

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

Given no output schema and no annotations, the description provides substantial context: purpose, usage, alternatives, prerequisites, next steps. However, it lacks details on return values or potential side effects, leaving minor gaps in completeness for a mutation tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description does not add additional meaning beyond the schema's parameter descriptions. Baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states the action 'Trigger a new deployment for a service' and lists specific use cases (deploying code, config updates, rollbacks). It distinguishes from siblings by explicitly stating what it is not for, e.g., 'Restarting services (use service_restart)'.

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

Usage Guidelines5/5

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

Provides explicit 'Best for' and 'Not for' sections with alternative tool names. Also includes prerequisites ('service_list') and next steps ('deployment_logs, deployment_status'), giving clear guidance on when and how to use the tool.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesDomain name to check availability for

TDQS

A4.5/5.0
Behavior4/5

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

The description labels it as an '[API]' call, implying a network operation, but doesn't detail side effects or authentication requirements. However, for a simple check tool, this is sufficient. Without annotations, it carries the burden but still scores high as no contradictions.

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

Conciseness5/5

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

Extremely concise: two sentences plus bullet points. Front-loaded with '[API]'. Every sentence is useful and earns its place.

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

Completeness5/5

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

Given the tool's simplicity (one required param, no output schema, no annotations), the description fully covers its purpose, use cases, and related tools. No gaps remain.

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

Parameters3/5

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

Schema coverage is 100% (the 'domain' parameter is described). The description reinforces the parameter's purpose but adds minimal additional meaning beyond 'Domain name to check availability for'. Baseline of 3 applies.

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

Purpose5/5

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

The description clearly states 'Check if a domain is available for use' with a specific verb and resource. The 'Best for' section further clarifies its purpose and distinguishes it from siblings like domain_create and domain_list.

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

Usage Guidelines5/5

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

Provides explicit guidance on when to use ('Validating domain availability, Pre-deployment checks, Domain planning') and what to do next ('Next steps: domain_create'). Also lists a related tool (domain_list), giving clear context for 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

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoCustom 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.)
suffixNoSuffix for the domain (optional, railway will generate one for you and is generally better to leave it up to railway to generate one.)
serviceIdYesID of the service
targetPortNoTarget port for the domain (optional, as railway will use the default port for the service and detect it automatically.)
environmentIdYesID of the environment

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description must stand alone. It only states 'Create a new domain' without disclosing side effects, authorization requirements, idempotency, or limits. For a creation tool, this is insufficient behavioral detail.

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

Conciseness4/5

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

Description is well-structured with bullet points and clear sections (Best for, Not for, Prerequisites, etc.). It is concise but informative. Minor noise from '[API]' prefix and emojis, but overall efficient.

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

Completeness3/5

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

While the description includes prerequisites and next steps, it lacks context about the return value or success behavior (no output schema). For a tool with 5 parameters and no annotations, more detail about expected results or side effects would improve completeness.

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

Parameters3/5

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

Schema coverage is 100%, so the description does not need to repeat parameter details. The description adds no extra meaning beyond what schema already provides; thus, baseline of 3 is appropriate.

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

Purpose5/5

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

Clearly states 'Create a new domain for a service' with specific use cases (custom domains, service endpoints, HTTPS). Distinguishes from siblings like tcp_proxy_create by explicitly listing 'Not for' items.

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

Usage Guidelines5/5

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

Provides explicit best-for/not-for sections, prerequisites (service_list, domain_check), alternatives (tcp_proxy_create), and next steps (domain_update). Guides when to use and when not.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the domain to delete

TDQS

A4/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It only states 'delete' which implies destructiveness but provides no details on irreversibility, authorization, rate limits, or side effects. The description adds minimal behavioral context beyond the tool name.

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

Conciseness5/5

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

The description is highly concise, uses structured sections with emojis and bullet points for clarity, and front-loads the core action. Every sentence and symbol adds value without redundancy.

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

Completeness4/5

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

For a simple delete operation with one parameter and no output schema, the description covers the essentials: purpose, usage scenarios, alternatives, and prerequisites. It does not explain return values, but that is acceptable given the action's triviality.

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

Parameters3/5

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

Schema coverage is 100% and the schema already describes the 'id' parameter as 'ID of the domain to delete'. The description does not add any additional meaning or constraints beyond that baseline, so it merits a standard score of 3.

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

Purpose5/5

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

The description explicitly states 'Delete a domain from a service' and lists specific best use cases like removing unused domains and cleaning up configurations. It distinguishes from sibling tools by noting it is not for temporary disabling or port updates, which are covered by domain_update.

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

Usage Guidelines5/5

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

The description provides clear when-to-use and when-not-to-use guidelines, mentions prerequisites (domain_list), alternatives (domain_update), and related tools (service_update). This fully informs the agent about context and selection.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesID of the project containing the service
serviceIdYesID of the service to list domains for
environmentIdYesID of the environment that the service is in to list domains from (usually obtained from service_list)

TDQS

A3.7/5.0
Behavior3/5

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

No annotations provided, so description carries burden. Implies read-only via 'Viewing' but does not explicitly state auth, rate limits, or side effects. For a list tool, this is adequate but not thorough.

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

Conciseness4/5

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

Fairly concise with bullet points and emojis for organization. Front-loaded purpose. Could trim '[API]' but overall efficient.

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

Completeness2/5

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

No output schema exists, and description does not explain return format or fields. Missing info on pagination/filtering. Incomplete for a listing tool.

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

Parameters3/5

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

Schema coverage is 100% with descriptions, so baseline 3. Description adds no additional parameter details beyond schema.

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

Purpose5/5

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

Clearly states 'List all domains (both service and custom) for a service', specifying verb and resource. Distinguishes from siblings like domain_create, domain_check. Best-for section adds clarity.

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

Usage Guidelines4/5

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

Provides prerequisites (service_list), next steps (domain_create, domain_update), and related tools, giving workflow context. Does not explicitly exclude alternatives but offers good guidance.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the domain to update
targetPortYesNew port number to route traffic to

TDQS

A4/5.0
Behavior3/5

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

Without annotations, the description bears full burden but only states it updates configuration. It does not disclose side effects, reversibility, or potential impacts like downtime or deployment triggers, leaving some behavioral ambiguity.

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

Conciseness5/5

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

The description is highly concise and well-structured with emojis and bullet points, front-loading the purpose. Every sentence serves a distinct role (purpose, best-for, not-for, prerequisites, next steps, related) without redundancy.

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

Completeness4/5

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

For a simple update tool with two required parameters and no output schema, the description covers the core use case, prerequisites, and next steps. It lacks details on return values or effect confirmation but is adequate given the tool's simplicity.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for both id and targetPort. The description adds minimal extra meaning beyond restating that targetPort is for routing traffic from the best-for list, so it does not significantly enhance parameter understanding.

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

Purpose5/5

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

The description clearly states 'Update a domain's configuration' with specific actions like changing target ports, updating settings, and reconfiguring endpoints. It effectively distinguishes from sibling tools like domain_create, domain_delete, and service_update through its 'Not for' section and related tool mention.

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

Usage Guidelines4/5

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

The 'Not for' section explicitly excludes changing domain names (recommending delete/recreate) and TCP proxy configuration, providing clear alternatives. Prerequisites and next steps (domain_list) give flow guidance, though a broader comparison with all siblings is missing.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesID of the project containing the service
serviceIdNoOptional: ID of the service to list variables for, if not provided, shared variables across all services will be listed
environmentIdYesID of the environment to list variables from (usually obtained from service_list)

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description should explicitly mention read-only behavior and response format. The word 'List' implies no side effects, but it does not explicitly state safety or absence of destructive actions. It also omits details about pagination, rate limits, or auth requirements. While it adds value with prerequisites and next steps, behavioral transparency is only moderate.

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

Conciseness5/5

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

The description is very concise, uses structured bullet points with clear sections (Best for, Prerequisites, Next steps, Related), and front-loads the key action. Every sentence serves a purpose, and there is no fluff.

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

Completeness3/5

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

Given no annotations and no output schema, the description could provide more complete context. It does not describe the response format (e.g., array of variable objects), potential for large response, or any pagination behavior. It covers prerequisites and related tools well but leaves gaps in operational details.

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

Parameters3/5

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

Input schema coverage is 100%, so the baseline is 3. The description does not elaborate on parameters beyond what the schema already provides (e.g., the meaning of optional serviceId). No additional semantics are added, so the score remains at the baseline.

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

Purpose5/5

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

The description clearly states 'List all environment variables for a service', providing a specific verb and resource. The 'Best for' bullet points further refine use cases (viewing config, auditing, checking connection strings), and the related tools clearly distinguish it from siblings like variable_set and variable_delete.

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

Usage Guidelines4/5

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

The description includes prerequisites ('service_list'), next steps ('variable_set, variable_delete'), and related tools, offering a clear usage flow. However, it lacks explicit guidance on when not to use this tool (e.g., if you need to filter variables by name), which would enhance the guidelines. Still, the provided context is strong.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the new project
teamIdNoOptional team ID to create the project under

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility. It only states creation but omits details on permissions, idempotency, error behavior (e.g., duplicate name handling), or side effects.

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

Conciseness4/5

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

The description is well-structured with emojis and bullets, but includes some redundancy (e.g., both 'Next steps' and 'Related' sections could be merged). Still efficient overall.

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

Completeness3/5

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

Provides use case context via 'Best for' but lacks explanation of return values or side effects. With no output schema and no annotations, more detail is needed for full completeness.

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

Parameters3/5

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

Input schema has 100% description coverage, so baseline is 3. The description adds no additional meaning beyond the schema (e.g., name format, teamId usage).

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

Purpose5/5

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

The description clearly states the action (create) and resource (project), and distinguishes from siblings like project_delete and project_update. The 'Best for' bullets further clarify its purpose.

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

Usage Guidelines5/5

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

Explicit 'Best for' and 'Not for' sections provide clear guidance on when to use the tool, and next steps suggest related tools for subsequent actions, 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_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

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesID of the project to delete

TDQS

A4.7/5.0
Behavior4/5

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

Without annotations, the description indicates destructiveness by stating it deletes the project and all resources. It clarifies permanent deletion by noting 'not for temporary deactivation.' However, it does not explicitly state irreversibility or potential consequences like cascading deletions.

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

Conciseness5/5

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

The description is compact, uses clear section headers and bullet points with emojis, and every sentence adds value. No redundant information.

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

Completeness5/5

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

For a simple destructive tool with one parameter and no output schema, the description covers purpose, usage context, alternatives, and prerequisites comprehensively. Could mention irreversibility explicitly, but overall it is complete.

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

Parameters4/5

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

Schema coverage is 100% with a single parameter (projectId) already described. The description adds no additional parameter detail but provides context by listing prerequisites and related tools, helping the agent understand how to obtain the projectId.

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

Purpose5/5

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

The description clearly states the action ('Delete a Railway project and all its resources') with specific verb and resource. It distinguishes from sibling tools by noting exclusions (temporary deactivation, service-level cleanup).

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

Usage Guidelines5/5

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

Provides explicit best-for cases (removing unused, cleaning up test), not-for cases (temporary deactivation, service-level cleanup), alternative tool (service_delete), and prerequisites (project_list, project_info).

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

project_environmentsC

List all environments in a project

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesID of the project

TDQS

C2.9/5.0
Behavior1/5

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

Description provides no behavioral traits: not stating it is read-only (though likely), no mention of permissions, rate limits, or side effects. Annotations are missing entirely, placing full burden on description, which fails.

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

Conciseness4/5

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

Description is extremely concise (one sentence) with no wasteful words. However, it may be too brief for a tool with no output schema or annotations, slightly reducing score.

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

Completeness2/5

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

Given low complexity (1 param, no output schema, no annotations), description should provide richer context like expected return format, pagination, or filters. It lacks any such detail, making it incomplete.

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

Parameters3/5

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

Schema coverage is 100% as the sole parameter 'projectId' is described as 'ID of the project'. Description adds no extra meaning beyond the schema, so baseline score of 3 is appropriate.

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

Purpose5/5

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

Description clearly states the action ('List') and resource ('environments') with scope ('in a project'), using a specific verb and noun. It distinguishes from sibling tools like project_list or deployment_list, which target different resources.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives, no prerequisites or exclusions. The agent is left to infer usage from context alone.

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

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

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesID of the project to get information about

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description must convey behavioral traits. The word 'get' and the listed best uses (all read operations) strongly imply a non-destructive, read-only operation. However, it does not explicitly state 'read-only' or mention potential pitfalls like authentication or missing project, but for a simple get tool this is adequate.

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

Conciseness5/5

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

The description is concise and well-structured: a one-line purpose followed by bullet points for best uses, prerequisites, next steps, and related tools. Every sentence provides value with no wasted words.

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

Completeness4/5

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

For a simple retrieval tool with one parameter and no output schema, the description covers purpose, usage context, dependencies, and related tools. It gives a good sense of what is returned ('detailed information', 'environments and services', 'project configuration review'). Could be more explicit about error conditions, but overall sufficiently complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add any extra meaning for the parameter beyond what the schema provides. It mentions project_list as a prerequisite, which indirectly helps but is not parameter-specific.

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

Purpose5/5

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

The description clearly states 'Get detailed information about a specific Railway project' with a strong verb and resource. It lists specific best uses (viewing project details, checking environments/services, project configuration review) that distinguish it from sibling tools like project_update 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.

Usage Guidelines5/5

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

Explicitly lists prerequisites (project_list), next steps (service_list, variable_list), and related tools (project_update, project_delete). This provides clear when-to-use and when-not-to-use guidance, fully meeting the dimension criteria.

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

No annotations provided; description implies read-only list operation. For a simple tool with no parameters, it is transparent enough, though it doesn't mention potential limitations like pagination (likely not applicable).

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

Conciseness5/5

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

Extremely concise: one sentence for purpose, bullet list for usage, arrows for related tools. Front-loaded with key information, no superfluous content.

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

Completeness5/5

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

Fully adequate for a simple list tool with no parameters or output schema. Covers purpose, usage context, and next steps. No missing elements given the tool's simplicity.

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

Parameters4/5

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

Input schema has zero parameters, so schema coverage is effectively 100%. Description correctly adds no parameter info as none exist, meeting the baseline expectation for no-parameter tools.

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

Purpose5/5

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

Description clearly states 'List all projects in your Railway account', specifying the verb (list) and resource (projects). Provides 'Best for' bullets explicitly distinguishing use cases from siblings like project_info and project_create/delete.

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

Usage Guidelines5/5

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

Includes explicit 'Best for' context (overview, finding IDs, discovery) and next steps (project_info, service_list) and related tools (project_create, project_delete), guiding when to use and 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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional custom name for the service
imageYesDocker image to use (e.g., 'postgres:13-alpine')
projectIdYesID of the project to create the service in

TDQS

A3.9/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits like authorization needs, side effects, or cancellation behavior. It only states it creates a service, omitting important details such as idempotency, required permissions, or implications of image availability.

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

Conciseness5/5

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

Well-structured with emojis, bullet points, and clear sections. Every sentence adds value; no fluff. Front-loaded with the core action.

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

Completeness3/5

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

Covers purpose, usage guidelines, prerequisites, and next steps. However, lacks return value description (no output schema) and behavioral details, which are needed given no annotations.

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

Parameters3/5

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

Input schema has 100% description coverage, so baseline is 3. The description adds no extra parameter meaning beyond the schema; it repeats 'Docker image' but does not clarify format or validation rules.

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

Purpose5/5

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

The description clearly states 'Create a new service from a Docker image' and distinguishes from siblings by listing excluded use cases and alternative tools (database_deploy, service_create_from_repo).

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

Usage Guidelines5/5

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

Provides explicit 'Best for' and 'Not for' sections, lists prerequisites (project_list), alternatives, next steps, and related tools, giving comprehensive when-to-use and when-not-to-use guidance.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional custom name for the service
repoYesGitHub repository URL or name (e.g., 'owner/repo')
projectIdYesID of the project to create the service in

TDQS

A4.3/5.0
Behavior4/5

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

Description mentions it's an API call and requires prerequisite project_list, but doesn't detail potential side effects (e.g., costs, permissions, rebuild times). No annotations provided to compensate.

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

Conciseness4/5

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

Well-structured with sections, emojis, and arrows for clarity. Some redundancy in arrows, but overall efficient and front-loaded.

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

Completeness4/5

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

Covers prerequisites, alternatives, and next steps. Missing output schema and error handling, but for a creation tool it's fairly complete.

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

Parameters3/5

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

Schema covers 100% of parameters with descriptions. Description adds no extra parameter-level detail beyond what schema already provides.

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

Purpose5/5

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

The description clearly states 'Create a new service from a GitHub repository', specifying the action (create), resource (service), and source (GitHub repo). It distinguishes from siblings like service_create_from_image and database_deploy.

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

Usage Guidelines5/5

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

Explicit sections for 'Best for', 'Not for', prerequisites, alternatives, next steps, and related tools provide comprehensive guidance on when to use and avoid this tool.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesID of the project containing the service
serviceIdYesID of the service to delete

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It clearly indicates destruction via 'Delete', which implies irreversibility. However, it lacks details on cascading effects or safety concerns. The prerequisites hint at required prior steps, but could be more explicit about the destructive nature. Still above average for clarity.

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

Conciseness5/5

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

Extremely concise and well-structured with emojis and clear sections (Best for, Not for, Prerequisites, Alternatives, Related). Every sentence earns its place with no redundancy.

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

Completeness4/5

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

Given the simplicity of a delete operation and no output schema, the description covers purpose, usage guidelines, and prerequisites. It could optionally mention return value or confirmation, but overall it is sufficiently complete for an agent to use correctly.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents both parameters (projectId, serviceId). Description adds no extra meaning beyond the schema, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description explicitly states the action ('Delete a service') and resource ('from a project'). It distinguishes from siblings by listing what it's best for (removing unused services, test cleanup) and what it's not for (temporary stoppage, updating config), making it unambiguous.

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

Usage Guidelines5/5

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

Provides clear when-to-use (removing unused services, test cleanup, project reorganization) and when-not-to-use (temporary stoppage, updating config). Lists prerequisites and an alternative (service_restart), giving the agent explicit decision support.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesID of the project containing the service
serviceIdYesID of the service to get information about
environmentIdYesID of the environment to check (usually obtained from service_list)

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It clearly indicates a read-only operation ('Get detailed information'), which is transparent about non-mutative behavior. It could additionally mention idempotency or lack of side effects, but the current description is sufficient for a read tool.

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

Conciseness5/5

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

The description is concise and well-structured: a clear heading followed by bullet points for 'Best for', 'Prerequisites', 'Next steps', and 'Related'. Every sentence adds value, and the format is easy to parse.

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

Completeness4/5

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

Given the absence of output schema and annotations, the description provides a fairly complete picture: it lists the kinds of information returned (configuration, status, deployment details, health) and includes usage context with prerequisites and next steps. It lacks mention of error conditions or authorization, but for a simple read tool, it is sufficient.

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

Parameters3/5

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

Input schema has 100% description coverage, so the baseline is 3. The description adds minor value by hinting that environmentId is typically obtained from service_list, but does not provide additional detail beyond the schema. Thus, a score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool retrieves detailed information about a specific service, with explicit use cases like viewing configuration, status, deployment details, and health monitoring. This distinguishes it from sibling tools like service_list (listing) and service_update (mutation).

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

Usage Guidelines5/5

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

Excellent guidance: mentions 'Prerequisites: service_list', 'Next steps: deployment_list, variable_list', and 'Related: service_update, deployment_trigger'. This tells the agent when to use this tool and suggests relevant alternatives, making the usage context very clear.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesID of the project to list services from

TDQS

A4/5.0
Behavior3/5

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

No annotations present, so description must carry transparency. The description implies a read-only list operation, but lacks disclosure on authentication, scoping, or potential pagination. Adequate for a simple list but could be more explicit.

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

Conciseness4/5

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

Description is concise and well-structured with bullet points and emojis for readability. However, the emojis are not strictly necessary and add slight noise.

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

Completeness3/5

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

No output schema exists, and the description does not explain return values, error conditions, or pagination (if any). For a list tool, this is a gap, but the prerequisites and next steps partially compensate.

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

Parameters3/5

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

Schema covers projectId with built-in description. The description echoes the schema's meaning without adding new semantic details, so baseline 3 is appropriate.

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

Purpose5/5

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

Clearly states 'List all services in a specific Railway project' with a specific verb and resource, distinguishing it from siblings like service_info (single service) and service_create (creation).

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

Usage Guidelines5/5

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

Provides explicit best-for use cases, prerequisites, next steps, and related tools, helping agents decide 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_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

ParametersJSON Schema
NameRequiredDescriptionDefault
serviceIdYesID of the service to restart
environmentIdYesID of the environment where the service should be restarted (usually obtained from service_info)

TDQS

A4/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It mentions 'Restart' which implies a state change but does not specify whether it's destructive, required permissions, impact on connected clients, or rollback capabilities. It only describes high-level purpose without 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.

Conciseness5/5

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

The description is concise and well-structured using emojis and clear sections (Best for, Not for, Prerequisites, Alternatives, Related). Every sentence adds value without redundancy.

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

Completeness4/5

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

For a simple restart tool with two parameters and no output schema, the description covers purpose, usage guidelines, and context well. It could benefit from behavioral details like idempotency or side effects, but given the tool's simplicity, it is fairly complete.

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

Parameters3/5

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

Schema coverage is 100% with both parameters described. The description adds no additional meaning beyond the schema for these parameters. Baseline 3 is appropriate as the schema already documents them adequately.

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

Purpose5/5

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

The description clearly states the tool restarts a service in a specific environment. It distinguishes from siblings by providing explicit use cases and exclusions (e.g., not for deploying new code, use deployment_trigger instead).

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

Usage Guidelines5/5

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

The description provides explicit when-to-use (applying config changes, clearing state, resolving runtime issues) and when-not-to-use (deploying code, updating config, long-term stoppage). It also lists prerequisites (service_list), alternatives (deployment_trigger), and related tools (service_info, deployment_logs).

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

ParametersJSON Schema
NameRequiredDescriptionDefault
regionNoOptional: Region to deploy the service in
projectIdYesID of the project containing the service
serviceIdYesID of the service to update
numReplicasNoOptional: Number of service replicas to run
buildCommandNoOptional: Command to build the service
startCommandNoOptional: Command to start the service
environmentIdYesID of the environment to update (usually obtained from service_info)
rootDirectoryNoOptional: Root directory containing the service code
healthcheckPathNoOptional: Path for health checks
sleepApplicationNoOptional: Whether to enable sleep mode

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description bears full responsibility. It does not detail behavioral traits such as whether the operation is destructive, what permissions are needed, or side effects (e.g., does it trigger a restart?). It only implies mutation, but lacks specifics beyond 'update'.

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

Conciseness5/5

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

Concise and well-structured: uses emojis, bullet points, clear sections, and front-loads the purpose. Every sentence adds value, and there is no unnecessary repetition.

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

Completeness4/5

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

The description is fairly complete given the 10 parameters (3 required) and no output schema. It includes prerequisites, next steps, and related tools. However, it does not cover return values or potential error conditions, which slightly reduces completeness.

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

Parameters3/5

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

The input schema has 100% description coverage, so the schema already explains each parameter. The description adds no additional meaning per parameter beyond listing categories (e.g., 'resource limits'), which is already implied. Given the high coverage, baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Update a service's configuration' and lists specific use cases like changing settings, updating resource limits, and modifying deployment configuration. This distinguishes it well from siblings like service_restart and variable_set.

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

Usage Guidelines5/5

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

Excellent guidelines: 'Best for' and 'Not for' sections explicitly list when to use and when not to, with alternatives (e.g., variable_set, service_restart, deployment_trigger). Also includes prerequisites and next steps, providing clear context for the AI agent.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
serviceIdYesID of the service
environmentIdYesID of the environment (usually obtained from service_info)
applicationPortYesPort of application/service to proxy, usually based off of the service's Dockerfile or designated running port.

TDQS

A4.4/5.0
Behavior4/5

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

The description does not contradict the lack of annotations (none provided). It clearly indicates that creation is for TCP proxies, which is a non-destructive mutation. However, it does not detail what happens upon success (e.g., returns a proxy ID) or any potential side effects. Still, the behavioral intent is well-communicated, earning a 4.

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

Conciseness5/5

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

The description is concise, structured with headings and bullet points using emojis. Every sentence provides value without redundancy. It front-loads the purpose and then organizes additional guidance logically.

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

Completeness4/5

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

Given the tool's simplicity (3 params, no output schema), the description covers purpose, usage guidelines, and prerequisites well. The missing explanation of the return value or outcome is a minor gap, but the context is largely complete for a creation tool.

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

Parameters3/5

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

Input schema has 100% coverage with a baseline of 3. The description adds minimal extra meaning beyond the schema: it mentions that environmentId is 'usually obtained from service_info'. This is helpful but not substantial. The parameters are already well-documented in the schema.

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

Purpose5/5

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

The description clearly states 'Create a new TCP proxy for a service' with specific use cases (database access, external connections, TCP services) and explicitly distinguishes from HTTP/HTTPS endpoints (domain_create) and internal service communication. It provides a clear verb-resource definition and differentiates from sibling tools like domain_create and tcp_proxy_list.

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

Usage Guidelines5/5

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' categories, prerequisites (service_list), alternatives (domain_create), next steps (tcp_proxy_list), and related tools. This provides comprehensive guidance on when and how to use this tool, including what to avoid.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
proxyIdYesID of the TCP proxy to delete

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so description carries burden. Indicates permanent deletion via 'Not for: Temporary proxy disabling', but lacks details on reversibility, cascading effects, or confirmation. Still sufficient.

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

Conciseness5/5

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

Description is concise with bullet points and emojis, front-loads purpose, and uses clear sections. Every sentence adds value.

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

Completeness5/5

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

Given one required parameter, no output schema, and straightforward behavior, the description covers key aspects: purpose, usage guidelines, prerequisites, and related tool.

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

Parameters3/5

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

Schema description coverage is 100% and already describes proxyId as 'ID of the TCP proxy to delete'. Description adds no extra semantics beyond that. Baseline 3 applies.

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

Purpose5/5

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

Description clearly states 'Delete a TCP proxy' with specific verb and resource. Best for section reinforces purpose and distinguishes from siblings like tcp_proxy_create and tcp_proxy_list.

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

Usage Guidelines5/5

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

Explicitly lists when to use (Removing unused proxies, Security management, Endpoint cleanup) and when not (Temporary proxy disabling, Port updates). Also mentions prerequisites (tcp_proxy_list) and related tool (service_update).

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

ParametersJSON Schema
NameRequiredDescriptionDefault
serviceIdYesID of the service to list TCP proxies for
environmentIdYesID of the environment containing the service

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description is the sole source of behavioral info. It only states that it lists TCP proxies without mentioning any constraints, side effects, pagination, or authentication requirements. The behavioral trait is minimally implied as read-only, but no details are given.

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

Conciseness5/5

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

The description is concise, starting with a clear one-liner, followed by well-structured bullet points for best uses, prerequisites, next steps, and related tools. Every sentence adds value with no redundancy.

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

Completeness4/5

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

For a simple list tool with two required parameters and no output schema, the description provides adequate context: purpose, use cases, prerequisites, and follow-up actions. It lacks behavioral details but is otherwise complete.

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

Parameters3/5

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

Input schema has 100% coverage with descriptions for both parameters. The description does not add additional parameter meaning beyond the schema, but it does imply that serviceId comes from a prior service_list call. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'List' and resource 'TCP proxies for a service in a specific environment'. It distinguishes itself from siblings like tcp_proxy_create by focusing on listing, and the 'Best for' section reinforces its use cases.

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

Usage Guidelines4/5

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

The description provides explicit usage context with 'Best for' checkmarks, prerequisites (service_list), next steps (tcp_proxy_create), and related tools (domain_list, service_info). It is only missing explicit when-not conditions, but the guidance is strong.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
teamIdNoID of the team to create the service in (if not provided, will use the default team)
projectIdYesID of the project to create the service in
templateIdYesID of the template to use
environmentIdYesID of the environment to deploy to

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries burden. It labels the tool as '[WORKFLOW]' and mentions prerequisites/alternatives, but does not disclose side effects, authorization needs, rate limits, or what gets created/destroyed. Lacks behavioral depth expected for a workflow tool.

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

Conciseness4/5

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

Well-structured with bullet points and clear sections, front-loading the main purpose. Slightly verbose due to multiple sections, but every sentence adds value and the structure aids readability.

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

Completeness3/5

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

Provides good contextual clues (prerequisites, alternatives, next steps) but omits details about the return value (e.g., deployment ID or status) and does not explain parameter relationships. Given no output schema, this is a notable gap.

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

Parameters3/5

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

Schema coverage is 100% with descriptive parameter names and descriptions in the schema. The description adds no extra meaning beyond the workflow context, so baseline 3 is appropriate.

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

Purpose5/5

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

The description states 'Deploy a new service from a template' (specific verb+resource) and distinguishes from siblings like service_create_from_repo and database_deploy via explicit 'Not for' and 'Alternatives' sections.

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

Usage Guidelines5/5

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

Provides explicit 'Best for' and 'Not for' sections, prerequisites (template_list), alternatives (service_create_from_repo, etc.), next steps, and related tools, giving comprehensive when-to-use and when-not-to-use guidance.

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

template_get_workflow_statusA

[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

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowIdYesID of the workflow to get the status of

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It does not disclose behavioral traits like read-only, authentication needs, or rate limits. The simple 'get' implies a read operation but is not explicit.

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

Conciseness4/5

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

The description is very concise, using bullet points and emojis for clarity. Every sentence adds value, with no wasted words. However, the best-for section slightly repeats the purpose.

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

Completeness3/5

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

Given the low complexity (one parameter, no output schema), the description is adequate for basic usage but could mention possible status values or if there are any side effects.

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

Parameters3/5

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

Schema coverage is 100% with a clear parameter description. The tool description adds no additional parameter information beyond what the schema provides, so score is baseline 3.

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

Purpose5/5

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

The description clearly states it gets the status of a workflow, and the best-for section reinforces this. It distinguishes itself from siblings like template_list and template_deploy by focusing on status retrieval.

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

Usage Guidelines5/5

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

The description explicitly says when to use (checking workflow status) and when not to (creating new services), and provides next steps and related tools, offering clear guidance.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
searchQueryNoOptional search query to filter templates by name and description

TDQS

A4.3/5.0
Behavior4/5

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

As no annotations are provided, the description must convey behavioral traits. It indicates a read operation ('List all available templates'), which is safe. However, it does not mention if the list is paginated or if there are any rate limits, though the simplicity of the tool reduces the need.

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

Conciseness4/5

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

The description is concise and well-structured with bullet points and icons. However, the use of emojis may not be parsed optimally by all agents. The main action is front-loaded and every sentence adds value.

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

Completeness4/5

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

For a simple list tool with no output schema, the description covers the key aspects: what it lists and how to use it (optional search). It mentions 'template IDs and sources' in the best-for section, which gives a hint about the return data. Could be more explicit about the return format, but adequate.

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

Parameters3/5

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

The input schema covers 100% of parameters with a clear description for 'searchQuery'. The tool description adds no extra meaning beyond 'filter templates by name and description', so it meets the baseline but does not exceed.

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

Purpose5/5

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

The description explicitly states 'List all available templates' and provides specific use cases like 'Discovering available templates' and 'Finding template IDs and sources', which precisely identifies the tool's function and distinguishes it from siblings.

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

Usage Guidelines5/5

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

Comprehensive guidelines with 'Best for', 'Not for', alternatives, next steps, and related tools. This gives clear context on when to use this tool versus others, such as 'service_create_from_repo'.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesID of the project containing the service
serviceIdNoOptional: ID of the service for the variables, if omitted updates shared variables)
variablesYesObject mapping variable names to values
environmentIdYesID of the environment for the variables (usually obtained from service_list)

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. While it states the operation is a bulk create/update, it does not detail important behaviors such as overwrite semantics, validation, limits, side effects (e.g., triggering restarts), or immediacy of changes. This lack of depth is a significant gap 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.

Conciseness4/5

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

The description is well-structured with clear sections, emojis, and bullet points that enhance readability. It is slightly lengthy but every part adds value, including workflow hints and related tools. Good balance of detail and conciseness.

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

Completeness4/5

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

Given the tool's complexity (4 params, bulk operation, no output schema), the description covers use cases, exclusions, alternatives, prerequisites, and next steps. It lacks details on error handling or return behavior, but overall provides sufficient context for an AI agent to use the tool appropriately.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add extra meaning beyond the schema; it repeats parameter names in context but does not elaborate on formatting, constraints, or usage nuances.

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

Purpose5/5

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

The description clearly states the action ('Create or update multiple environment variables at once'), specifies the resource ('environment variables'), and distinguishes it from sibling tools like variable_set by explicitly stating it is not for single variable updates.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use scenarios (migrating configuration, initial setup, bulk updates), when-not-to-use (single variable updates, temporary changes), and names alternatives (variable_set). It also lists prerequisites and next steps, offering comprehensive guidance.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
overwriteNoWhether to overwrite existing variables in the target environment
projectIdYesID of the project
serviceIdNoID of the service (optional, if omitted copies shared variables)
sourceEnvironmentIdYesID of the source environment (usually obtained from project_info)
targetEnvironmentIdYesID of the target environment (usually obtained from project_info)

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided, so description must carry burden. It describes the copy operation and overwrite flag but does not explicitly state that it modifies the target environment, potential destructive behavior, or permissions needed. Could be more transparent about mutation and risks.

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

Conciseness4/5

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

Well-structured with emojis, bullet points, and clear sections. Front-loaded purpose. Some verbosity due to multiple sections, but overall efficient and scannable.

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

Completeness2/5

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

No output schema, so description should cover return value. It does not describe what the tool returns (e.g., success message, count of copied variables). Provides prerequisites and next steps, but misses result explanation for a tool with 5 parameters.

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

Parameters3/5

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

Schema coverage is 100%, baseline 3. The description adds minimal extra meaning beyond schema: source/target environment IDs from project_info, serviceId optional for shared variables, overwrite flag. No further parameter context.

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

Purpose5/5

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

The description clearly states the tool copies variables from one environment to another, using specific verbs and resource. It distinguishes from sibling tools like variable_set (single variable updates) and variable_list.

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

Usage Guidelines5/5

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

Provides explicit sections: Best for (environment migration, sharing, duplication), Not for (single variable updates, temp changes), Prerequisites (service_list), Alternatives (variable_set), Next steps (deployment_trigger, service_restart), and Related tools. Excellent guidance on when to use and when not.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the variable to delete
projectIdYesID of the project
serviceIdNoID of the service (optional, if omitted deletes a shared variable)
environmentIdYesID of the environment to delete the variable from (usually obtained from service_list)

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It indicates deletion is permanent but does not detail consequences, irreversibility, permissions, or side effects. The optional serviceId nuance is covered in the schema but not emphasized in the description.

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

Conciseness5/5

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

The description is concise and well-structured with bullet points and emojis. Every line adds value, and there is no unnecessary repetition or fluff.

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

Completeness3/5

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

While it provides prerequisites and next steps, it lacks information about the return value or confirmation of deletion, and does not explain behavior when deleting shared vs. service-specific variables. For an irreversible action, more detail would be beneficial.

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

Parameters3/5

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

Schema coverage is 100%, so the input schema already describes all parameters well. The description does not add additional meaning or context beyond what is in the schema, hence meeting the baseline.

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

Purpose4/5

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

The description clearly states it deletes a variable for a service in a specific environment. It provides a specific verb and resource, and it distinguishes from related tools by excluding temporary disabling and bulk removal, though it does not explicitly contrast with variable_set or variable_bulk_set.

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

Usage Guidelines5/5

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 that guide when to use this tool. It also lists prerequisites, next steps, and related tools, providing 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_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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the environment variable
valueYesValue to set for the variable
projectIdYesID of the project containing the service
serviceIdNoOptional: ID of the service for the variable, if omitted creates/updates a shared variable
environmentIdYesID of the environment for the variable (usually obtained from service_list)

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It indicates a mutable operation (create/update) but does not detail whether the update is idempotent, if it overwrites existing values, or any permission/rate limit constraints. While not misleading, more behavioral context would be beneficial.

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

Conciseness4/5

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

The description is well-structured using bullet points and arrows, making it scannable. Every sentence adds value (best for, not for, prerequisites, etc.). It is slightly long but justified given the guidance it provides.

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

Completeness4/5

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

Given the 5 parameters, no output schema, and no annotations, the description provides good contextual completeness: it explains when to use vs not, prerequisites, and related tools. It does not cover return values but that is acceptable without an output schema. Some behavioral details are missing (e.g., overwrite behavior) but overall it's fairly complete.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description does not add parameter-level details beyond what the schema already provides. For example, it mentions 'serviceId' is optional but doesn't clarify when to use it over a shared variable.

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

Purpose5/5

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

The description clearly states 'Create or update an environment variable', providing a specific verb and resource. It also explicitly distinguishes from sibling tool 'variable_bulk_set' in the 'Not for' section, eliminating ambiguity.

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

Usage Guidelines5/5

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, a prerequisite ('service_list'), alternatives ('variable_bulk_set'), and even next steps ('deployment_trigger', 'service_restart'), giving clear guidance on when and how to use the 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

ParametersJSON Schema
NameRequiredDescriptionDefault
mountPathYesPath where the volume should be mounted in the container
projectIdYesID of the project containing the service
serviceIdYesID of the service to attach volume to
environmentIdYesID of the environment for the volume (usually obtained from service_info)

TDQS

A4/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only describes the action and prerequisites but does not mention permissions, rate limits, idempotency, error states, or whether the operation is destructive/reversible. This is a significant gap 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.

Conciseness5/5

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

The description is highly structured with emojis, bullet points, and clear sections. Every sentence adds value without redundancy. It is concise yet comprehensive for the information it conveys.

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

Completeness4/5

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

Given no output schema, the description does not need to detail return values, but it could hint at the response format (e.g., volume ID). However, it effectively supplies prerequisites, next steps, and context with sibling tools, making it largely complete for a creation tool.

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

Parameters3/5

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

Input schema covers all 4 parameters with descriptions, achieving 100% coverage. The description adds no additional meaning beyond the schema, so baseline 3 is appropriate. No extra context like formats or constraints is provided.

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

Purpose5/5

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

The description explicitly states 'Create a new persistent volume for a service' and lists specific use cases like database storage and persistent data. It distinguishes from sibling tools (volume_delete, volume_list, volume_update) with appropriate best-for/not-for categories.

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

Usage Guidelines5/5

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

The description provides clear when-to-use guidance with 'Best for' and 'Not for' sections, lists a prerequisite (service_list), next steps (volume_list), and related tools (service_update, database_deploy). This helps the agent decide when to invoke this tool vs alternatives.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
volumeIdYesID of the volume to delete

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It confirms deletion but lacks details on permissions, irreversibility, or side effects. Adequate but not rich.

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

Conciseness5/5

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

Concise, well-organized with bullet points and emojis. Every sentence adds value with no redundancy.

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

Completeness4/5

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

Covers prerequisites and related tools. For a simple delete action with one parameter, it is fairly complete, though lacks info on synchronous behavior or return value.

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

Parameters3/5

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

Only one parameter with schema covering its description fully. The description adds no extra semantic value beyond 'ID of the volume to delete'.

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

Purpose5/5

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

The description explicitly states 'Delete a volume from a service' with clear verb and resource. It distinguishes from related tools like volume_backup for data backup, making the purpose unambiguous.

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

Usage Guidelines5/5

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

Provides explicit best-for and not-for sections, lists prerequisites (volume_list) and related tool (service_update), giving clear guidance on when and when not to use.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesID of the project to list volumes for

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It states 'List all volumes' indicating a read operation with no destructive intent. However, it omits details such as pagination, authentication requirements, or any rate limits, which would be valuable for behavioral understanding.

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

Conciseness5/5

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

The description is extremely concise, using bullet points and arrows to organize information. It front-loads the core purpose and then provides structured guidance without any wasted words.

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

Completeness3/5

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

The tool has a single parameter and no output schema. The description explains the purpose well but does not describe the return format, fields, or any pagination behavior. Given the simplicity, it is adequate but lacks completeness regarding output details.

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

Parameters3/5

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

The input schema has 100% description coverage for the single parameter projectId. The description does not add any additional meaning or constraints beyond what the schema already provides, so 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.

Purpose5/5

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

The description clearly states 'List all volumes in a project' with specific verb and resource. It further clarifies use cases with bullet points for viewing configurations, managing data volumes, and auditing storage usage, which distinguishes it from sibling tools like volume_create, volume_delete, and volume_update.

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

Usage Guidelines4/5

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

The description provides explicit when-to-use guidance via the 'Best for' section and includes prerequisites (project_list) and next steps (volume_create). Although it does not explicitly state when not to use it, the context is sufficient for an agent to understand appropriate usage.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNew name for the volume
volumeIdYesID of the volume to update

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are present, so the description bears full responsibility for behavioral disclosure. It only states 'Update a volume's properties,' implying mutation, but lacks details on whether it is destructive, requires permissions, or affects other volume attributes.

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

Conciseness3/5

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

The description is a single sentence, making it concise, but it is overly brief and under-specified for a tool with two parameters. It could benefit from including more context without becoming verbose.

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

Completeness2/5

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

Given the tool's simplicity (two parameters, no output schema), the description is incomplete. It lacks usage guidelines and behavioral details, which are important 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.

Parameters3/5

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

The input schema covers both parameters with clear descriptions (volumeId and name). The description adds no additional meaning beyond what the schema already provides, so a baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action (update) and resource (volume), distinguishing it from sibling tools like volume_create, volume_delete, and volume_list. It is specific enough for a simple update tool.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites or contexts where a different tool (e.g., volume_create) would be appropriate.

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

TDQS

A3.6/5.0
Disambiguation4/5

Most tools have distinct purposes due to consistent naming, but there is some overlap among creation tools (e.g., service_create_from_image, service_create_from_repo, template_deploy) that could cause confusion. Descriptions help, but an agent might still misselect.

Naming Consistency4/5

The majority follow a verb_noun pattern (e.g., project_create, service_list). However, some deviate like database_list_types (noun_verb_noun) and configure_api_token (verb with underscore). Overall consistent but with minor exceptions.

Tool Count2/5

38 tools is excessive for typical MCP servers, which often have 10-20. While Railway is a broad platform, many tools are granular (e.g., separate tools for each CRUD operation on domains, TCP proxies, volumes) leading to an overwhelming surface.

Completeness4/5

The tool set covers most major operations for the Railway platform: projects, services, deployments, domains, variables, volumes, TCP proxies, templates. Minor gaps exist, such as no direct volume backup or database management beyond listing types and deployment.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables 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.
    36
    58
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables management of Railway.app infrastructure through natural language, allowing users to deploy services, manage environment variables, monitor deployments, and configure projects directly from MCP clients like Claude.
    38
    58
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    A team-wide, remote MCP server that lets Claude operate Railway projects through natural language, with safety guardrails to prevent irreversible actions without human approval.

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jason-tan-swe/railway-mcp'

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