Skip to main content
Glama

volume_list

List all persistent storage volumes in a Railway project to view configurations, manage data storage, and audit usage.

Instructions

[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

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
projectIdYesID of the project to list volumes for

Implementation Reference

  • Handler function for the 'volume_list' MCP tool. Takes projectId and delegates to volumeService.listVolumes.
    async ({ projectId }) => {
      return volumeService.listVolumes(projectId);
    }
  • Input schema definition for the 'volume_list' tool using Zod.
      projectId: z.string().describe("ID of the project to list volumes for")
    },
    async ({ projectId }) => {
  • Registration of all tools to MCP server, including volumeTools which contains 'volume_list' (spread on line 27).
    export function registerAllTools(server: McpServer) {
      // Collect all tools
      const allTools = [
        ...databaseTools,
        ...deploymentTools,
        ...domainTools,
        ...projectTools,
        ...serviceTools,
        ...tcpProxyTools,
        ...variableTools,
        ...configTools,
        ...volumeTools,
        ...templateTools,
      ] as Tool[];
    
      // Register each tool with the server
      allTools.forEach((tool) => {
        server.tool(
          ...tool
        );
      });
    } 
  • The volumeService.listVolumes method providing the core logic for listing and formatting volumes, called by the tool handler.
      async listVolumes(projectId: string): Promise<CallToolResult> {
        try {
          const volumes = await this.client.volumes.listVolumes(projectId);
    
          if (volumes.length === 0) {
            return createSuccessResponse({
              text: "No volumes found in this project.",
              data: []
            });
          }
    
          const volumeDetails = volumes.map(volume => 
            `📦 ${volume.name} (ID: ${volume.id})
    Created: ${new Date(volume.createdAt).toLocaleString()}`
          );
    
          return createSuccessResponse({
            text: `Volumes in project:\n\n${volumeDetails.join('\n\n')}`,
            data: volumes
          });
        } catch (error) {
          return createErrorResponse(`Error listing volumes: ${formatError(error)}`);
        }
      }
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 of behavioral disclosure. It mentions the tool is for listing volumes, which implies a read-only operation, but doesn't explicitly state whether it's safe, requires specific permissions, or details about rate limits or pagination. The description adds some context with the 'Best for' section, but lacks deeper behavioral traits.

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

Conciseness5/5

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

The description is well-structured and appropriately sized, using bullet points and arrows for clarity. Every sentence earns its place by providing purpose, usage guidelines, prerequisites, and related tools without unnecessary fluff. It's front-loaded with the core action and efficiently organized.

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

Completeness4/5

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

Given the tool's low complexity (1 parameter, 100% schema coverage, no output schema), the description is mostly complete. It covers purpose, usage, and context well, but lacks details on behavioral aspects like permissions or output format, which would be helpful since no annotations or output schema are provided. This minor gap prevents a perfect score.

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

Parameters3/5

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

Schema description coverage is 100%, with the single parameter 'projectId' fully documented in the schema as 'ID of the project to list volumes for'. The description doesn't add any additional meaning or details about this parameter beyond what the schema provides, so it meets the baseline of 3 for high schema coverage.

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

Purpose5/5

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

The description clearly states the specific action ('List all volumes') and resource ('in a project'), distinguishing it from sibling tools like volume_create, volume_delete, and volume_update. The title 'volume_list' aligns perfectly with this purpose, making the tool's function immediately apparent.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('Best for: Viewing persistent storage configurations, Managing data volumes, Auditing storage usage'), prerequisites ('Prerequisites: project_list'), next steps ('Next steps: volume_create'), and related tools ('Related: service_info, database_deploy'). This comprehensive guidance helps the agent choose this tool appropriately over alternatives.

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

Install Server

Other Tools

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/epitaphe360/railway-mcp'

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