service_delete
Delete a service from a Railway project to remove unused resources, clean up test deployments, or reorganize infrastructure.
Instructions
[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
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ID of the project containing the service | |
| serviceId | Yes | ID of the service to delete |
Implementation Reference
- src/tools/service.tool.ts:185-187 (handler)The handler function that executes the service_delete tool logic by calling serviceService.deleteServiceasync ({ projectId, serviceId }) => { return serviceService.deleteService(projectId, serviceId); }
- src/tools/service.tool.ts:182-184 (schema)Zod schema defining input parameters for the service_delete tool: projectId and serviceIdprojectId: z.string().describe("ID of the project containing the service"), serviceId: z.string().describe("ID of the service to delete") },
- src/tools/service.tool.ts:161-188 (registration)Registration of the service_delete tool using createTool, including description, schema, and handlercreateTool( "service_delete", formatToolDescription({ type: 'API', description: "Delete a service from a project", bestFor: [ "Removing unused services", "Cleaning up test services", "Project reorganization" ], notFor: [ "Temporary service stoppage (use service_restart)", "Updating service configuration (use service_update)" ], relations: { prerequisites: ["service_list", "service_info"], alternatives: ["service_restart"], related: ["project_delete"] } }), { projectId: z.string().describe("ID of the project containing the service"), serviceId: z.string().describe("ID of the service to delete") }, async ({ projectId, serviceId }) => { return serviceService.deleteService(projectId, serviceId); } ),
- Helper method serviceService.deleteService that performs the deletion and handles response/errorasync deleteService(projectId: string, serviceId: string) { try { await this.client.services.deleteService(serviceId); return createSuccessResponse({ text: `Service deleted successfully` }); } catch (error) { return createErrorResponse(`Error deleting service: ${formatError(error)}`); } }
- Repository method that executes the GraphQL mutation for service deletionasync deleteService(serviceId: string): Promise<void> { await this.client.request<{ serviceDelete: boolean }>(` mutation serviceDelete($serviceId: String!) { serviceDelete(id: $serviceId) } `, { serviceId }); }