list_service_variables
Retrieve all environment variables for a Railway service to view configuration, audit settings, or check connection strings.
Instructions
[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
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project containing the service | |
| environmentId | Yes | ID of the environment to list variables from (usually obtained from service_list) | |
| serviceId | No | Optional: ID of the service to list variables for, if not provided, shared variables across all services will be listed |
Implementation Reference
- src/tools/variable.tool.ts:27-29 (handler)Handler function for the list_service_variables tool, which calls variableService.listVariables with the provided parameters.async ({ projectId, environmentId, serviceId }) => { return variableService.listVariables(projectId, environmentId, serviceId); }
- src/tools/variable.tool.ts:22-26 (schema)Input schema for the tool parameters using Zod.{ projectId: z.string().describe("ID of the project containing the service"), environmentId: z.string().describe("ID of the environment to list variables from (usually obtained from service_list)"), serviceId: z.string().optional().describe("Optional: ID of the service to list variables for, if not provided, shared variables across all services will be listed") },
- src/tools/variable.tool.ts:6-30 (registration)Creates and adds the list_service_variables tool to the variableTools export array.createTool( "list_service_variables", formatToolDescription({ type: 'API', description: "List all environment variables for a service", bestFor: [ "Viewing service configuration", "Auditing environment variables", "Checking connection strings" ], relations: { prerequisites: ["service_list"], nextSteps: ["variable_set", "variable_delete"], related: ["service_info", "variable_bulk_set"] } }), { projectId: z.string().describe("ID of the project containing the service"), environmentId: z.string().describe("ID of the environment to list variables from (usually obtained from service_list)"), serviceId: z.string().optional().describe("Optional: ID of the service to list variables for, if not provided, shared variables across all services will be listed") }, async ({ projectId, environmentId, serviceId }) => { return variableService.listVariables(projectId, environmentId, serviceId); } ),
- The main logic for listing service variables, called by the tool handler. Fetches variables using the client API and formats them for response.async listVariables(projectId: string, environmentId: string, serviceId?: string) { try { const variables = await this.client.variables.getVariables(projectId, environmentId, serviceId); if (Object.keys(variables).length === 0) { return createSuccessResponse({ text: serviceId ? "No variables found for this service in this environment." : "No shared variables found in this environment.", data: {} }); } const context = serviceId ? "service variables" : "shared environment variables"; const formattedVars = Object.entries(variables) .map(([key, value]) => `${key}=${value}`) .join('\n'); return createSuccessResponse({ text: `Current ${context}:\n\n${formattedVars}`, data: variables }); } catch (error) { return createErrorResponse(`Error listing variables: ${formatError(error)}`); } }