update-pod
Modify a RunPod pod's configuration by updating its name, Docker image, disk size, volume settings, ports, or environment variables.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| podId | Yes | ID of the pod to update | |
| name | No | New name for the pod | |
| imageName | No | New Docker image | |
| containerDiskInGb | No | New container disk size in GB | |
| volumeInGb | No | New volume size in GB | |
| volumeMountPath | No | New path to mount the volume | |
| ports | No | New ports to expose | |
| env | No | New environment variables |
Implementation Reference
- src/index.ts:242-254 (handler)The main handler function for the 'update-pod' tool. It extracts the podId from params, calls runpodRequest with PATCH method to update the pod, and returns the JSON response as text content.async (params) => { const { podId, ...updateParams } = params; const result = await runpodRequest(`/pods/${podId}`, 'PATCH', updateParams); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], }; }
- src/index.ts:226-241 (schema)Zod schema defining the input parameters for the 'update-pod' tool, including required podId and optional update fields.{ podId: z.string().describe('ID of the pod to update'), name: z.string().optional().describe('New name for the pod'), imageName: z.string().optional().describe('New Docker image'), containerDiskInGb: z .number() .optional() .describe('New container disk size in GB'), volumeInGb: z.number().optional().describe('New volume size in GB'), volumeMountPath: z .string() .optional() .describe('New path to mount the volume'), ports: z.array(z.string()).optional().describe('New ports to expose'), env: z.record(z.string()).optional().describe('New environment variables'), },
- src/index.ts:224-255 (registration)The server.tool registration call that defines and registers the 'update-pod' tool with its schema and handler function.server.tool( 'update-pod', { podId: z.string().describe('ID of the pod to update'), name: z.string().optional().describe('New name for the pod'), imageName: z.string().optional().describe('New Docker image'), containerDiskInGb: z .number() .optional() .describe('New container disk size in GB'), volumeInGb: z.number().optional().describe('New volume size in GB'), volumeMountPath: z .string() .optional() .describe('New path to mount the volume'), ports: z.array(z.string()).optional().describe('New ports to expose'), env: z.record(z.string()).optional().describe('New environment variables'), }, async (params) => { const { podId, ...updateParams } = params; const result = await runpodRequest(`/pods/${podId}`, 'PATCH', updateParams); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], }; } );
- src/index.ts:27-66 (helper)Shared helper function used by the update-pod handler (and other tools) to make authenticated HTTP requests to the RunPod API.async function runpodRequest( endpoint: string, method: string = 'GET', body?: Record<string, unknown> ) { const url = `${API_BASE_URL}${endpoint}`; const headers = { Authorization: `Bearer ${API_KEY}`, 'Content-Type': 'application/json', }; const options: NodeFetchRequestInit = { method, headers, }; if (body && (method === 'POST' || method === 'PATCH')) { options.body = JSON.stringify(body); } try { const response = await fetch(url, options); if (!response.ok) { const errorText = await response.text(); throw new Error(`RunPod API Error: ${response.status} - ${errorText}`); } // Some endpoints might not return JSON const contentType = response.headers.get('content-type'); if (contentType && contentType.includes('application/json')) { return await response.json(); } return { success: true, status: response.status }; } catch (error) { console.error('Error calling RunPod API:', error); throw error; } }