# Runpod MCP connector

Connect Runpod to Claude, ChatGPT, Cursor, or any MCP client through Elaichi and start, stop, create, and delete Runpod pods, serverless endpoints, and templates from a chat, with each action running as the person who signed in.

Source: https://elaichi.ai/connectors/runpod/

## Facts

| | |
| --- | --- |
| Application | Runpod |
| Category | Application Development |
| AI tools | 58 |
| Authentication | Connects with an API key |
| Needs your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. 58 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once Runpod is connected

- List running Runpod pods and their GPU types.
- Stop idle pods in the ML research workspace.
- Which Runpod endpoints were created this week?

## Connect Runpod in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Runpod.
2. Optionally set Share with, then press Connect.
3. Paste a Runpod API key. One person generates a token in Runpod and pastes it once. Everyone else works through Share with, and never sees it.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Runpod tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect Runpod to Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Connect Runpod to ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Connect Runpod to Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Runpod to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Runpod tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Runpod through Elaichi

### Stop idle pods before they run up the bill

Machine learning. Ask which Runpod pods are running right now, see who left them on, and stop the ones nobody is using without opening the Runpod console.

### Spin up a pod from an approved template

Engineering. Create a new Runpod pod from a saved template so the GPU type, container image, and settings match what the team already agreed on.

### Roll out a new endpoint version

Platform. Update a Runpod serverless endpoint to a new template or worker configuration, then confirm it picked up the change.

### Reconcile what is running against the invoice

Finance. List every Runpod pod and endpoint in the account at month end and check the running ones against the charges before approving the bill.

### Restart a stuck training pod

Research. When an experiment hangs, ask for the pod by name, reset or restart it, and get back to the run in a minute.

### Look up how Runpod handles something

Support. Ask a question about Runpod pods, endpoints, or templates and get an answer drawn from Runpod's own docs and API reference instead of searching for it.

## Frequently asked questions

### How do I connect Runpod to Claude?

In Elaichi, choose Runpod from the connector list and paste in a Runpod API key, which you copy from your Runpod account settings. There is no OAuth application to register and no client ID or secret to generate. Then in Claude go to Customize, then Connectors, then Add, and paste the endpoint https://api.elaichi.ai/mcp. Sign in as yourself and Runpod is available in the chat.

### Does Runpod work with ChatGPT and Cursor as well as Claude?

Yes. Once Runpod is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client, and the Elaichi Agent. You connect Runpod once and every client picks it up.

### What can an AI agent actually do with my Runpod account?

With Runpod connected, an agent can list your pods, endpoints, and templates, create new ones, start, stop, reset, or restart a pod, update an endpoint or template, and delete what is no longer needed. It can also answer questions from Runpod's docs and API reference. Because Runpod exposes a lot of actions, short concrete asks like "stop the pod called training-3" work better than long paragraphs.

### Does connecting Runpod give the AI access to my whole Runpod account?

The agent can only do what the Runpod API key it was given can do, and every call runs as the person who signed in to Elaichi. Elaichi can narrow that further, for example to viewing and stopping pods but never creating or deleting them. Elaichi never widens access beyond what the Runpod key already allows.

### Can my team share one Runpod connection?

Yes. One person connects Runpod in Elaichi and shares the connection with a team, and nobody else ever sees or handles the Runpod API key. Each teammate still signs in as themselves, so the audit log names the person who started, stopped, or deleted a Runpod pod, not the account.

### Can I stop an agent from deleting or changing things in Runpod?

Yes. Restrictions in Elaichi apply per action, so you can allow listing and starting Runpod pods while blocking deleting pods, endpoints, or templates. A blocked action is never shown to Claude, ChatGPT, or Cursor at all, so no prompt, however worded, can reach it.

### What happens to a Runpod connection when someone leaves?

Offboarding a person in Elaichi ends their access to Runpod immediately across every client they used. A Runpod connection shared with the team keeps working for everyone else. If you want it gone entirely, disconnecting Runpod once in Elaichi removes it from Claude, ChatGPT, Cursor, and every other client at the same time.

## All 58 Runpod tools

Every tool below is callable through https://api.elaichi.ai/mcp once Runpod is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all Runpod openapi jsons** (List). Get the OpenAPI 3.0 specification for the runpod API. Returns the complete API specification as an opaque JSON document; the source provides no enumerable field-level schema (example payload is an empty object), and the response structure follows the OpenAPI 3.0 standard.
- **List all Runpod docs** (List). Get the interactive RunPod API documentation page. Returns an HTML page rendering the OpenAPI schema UI — this endpoint serves a text/html response rather than structured JSON data, so no enumerable fields are available.
- **List all Runpod pods** (List). List runpod Pods with optional filters. Returns: env, gpu, id, image, interruptible, locked, machine, name, ports. Supports filtering by computeType, desiredStatus, gpuTypeId, dataCenterId, imageName, and more.
- **Create a Runpod pod** (Create). Create a new runpod Pod and optionally deploy it. Returns: env, gpu, id, image, interruptible, locked, machine, machineId, name, ports, templateId, imageName.
- **Get single Runpod pod by ID** (Get). Get a single runpod Pod by id. Returns: env, gpu, id, image, interruptible, locked, machine, name, ports. Required: id.
- **Update a Runpod pod by ID** (Update). Update a runpod Pod by id, potentially triggering a reset. Returns: env, gpu, id, image, interruptible, locked, machine, machineId, name, ports, templateId, imageName. Required: id.
- **Delete a Runpod pod by ID** (Delete). Delete a runpod Pod by id. Returns an empty 204 response on success. Required: id.
- **Runpod pods start** (Start). Start or resume a runpod Pod. Returns: id, desiredStatus. Required: pod_id.
- **Runpod pods stop** (Stop). Stop a running runpod Pod. Returns: id, desiredStatus. Required: pod_id.
- **Runpod pods reset** (Action). Reset a runpod Pod. Returns: id, desiredStatus. Required: pod_id.
- **Create a Runpod pod update** (Create). Update a runpod pod by pod_id (synonym for PATCH /pods/{podId}). Returns the updated pod object including id, imageName, env, machineId, machine details, and desiredStatus. Required: pod_id.
- **Create a Runpod pod restart** (Create). Restart a runpod Pod by its pod_id. Returns an empty 204 response on success. Required: pod_id.
- **List all Runpod endpoints** (List). List all RunPod serverless endpoints. Returns: createdAt, env, id, name, template, version, workers.
- **Create a Runpod endpoint** (Create). Create a new RunPod serverless endpoint. Returns: allowedCudaVersions, computeType, createdAt, dataCenterIds, env, executionTimeoutMs, gpuCount, gpuTypeIds, id, idleTimeout, instanceIds, minCudaVersion, name, networkVolumeId, networkVolumeIds, scalerType, scalerValue, template, templateId, userId, version, workers, workersMax, workersMin, gpuIds, locations, flashBootType, pods.
- **Get single Runpod endpoint by ID** (Get). Get a single RunPod serverless endpoint by id. Returns: createdAt, env, id, name, template, version, workers. Required: id.
- **Update a Runpod endpoint by ID** (Update). Update an existing RunPod serverless endpoint by id. Returns: createdAt, env, id, name, template, templateId, version, workers, workersMax, gpuIds. Required: id.
- **Delete a Runpod endpoint by ID** (Delete). Delete a RunPod serverless endpoint by id. Returns an empty 204 response on success. Required: id.
- **Create a Runpod endpoint update** (Create). Update a RunPod endpoint by ID (synonym for PATCH /endpoints/{endpointId}). Returns the updated endpoint object including id, name, gpuIds, templateId, workersMax, workersMin, scalerType, scalerValue, idleTimeout, locations, networkVolumeId, and flashBootType. Required: endpoint_id.
- **List all Runpod templates** (List). List Runpod templates. Returns: category, earned, env, id, name, ports, readme. Optionally broaden results to include endpoint-bound templates, community public templates, or official Runpod templates using the filter parameters.
- **Create a Runpod template** (Create). Create a new Runpod template. Returns: category, earned, env, id, imageName, name, ports, readme. Required: imageName, name.
- **Get single Runpod template by ID** (Get). Get a single Runpod template by id. Returns: category, earned, env, id, name, ports, readme. Required: id.
- **Update a Runpod template by ID** (Update). Update a Runpod template by id. Returns: category, earned, env, id, name, ports, readme. Required: id.
- **Delete a Runpod template by ID** (Delete). Delete a Runpod template by id. Returns an empty 204 response on success. Required: id.
- **Create a Runpod template update** (Create). Update a RunPod template by template_id (synonym for PATCH /templates/{templateId}). Returns the updated template object including id, imageName, name, and env. Required: template_id.
- **List all Runpod networkvolumes** (List). List all runpod network volumes. Returns: id, name, size, dataCenterId.
- **Create a Runpod networkvolume** (Create). Create a new runpod network volume. Returns: dataCenterId, id, name, size. Required: name.
- **Get single Runpod networkvolume by ID** (Get). Get a single runpod network volume by id. Returns: dataCenterId, id, name, size. Required: id.
- **Update a Runpod networkvolume by ID** (Update). Update a runpod network volume by id. Returns: dataCenterId, id, name, size. Required: id.
- **Delete a Runpod networkvolume by ID** (Delete). Delete a runpod network volume by id. Returns an empty 204 response on success. Required: id.
- **Create a Runpod networkvolume update** (Create). Update a runpod network volume. Acts as a synonym for PATCH on the network volume resource. Returns the updated network volume including its id and name. Required: network_volume_id.
- **List all Runpod containerregistryauths** (List). List all container registry auths in runpod. Returns: id, name, created_at, updated_at.
- **Create a Runpod containerregistryauth** (Create). Create a new container registry auth in runpod. Returns: id, name, created_at, updated_at.
- **Get single Runpod containerregistryauth by ID** (Get). Get a single runpod container registry auth by id. Returns: id, name, created_at, updated_at. Required: id.
- **Delete a Runpod containerregistryauth by ID** (Delete). Delete a runpod container registry auth by id. Returns an empty 204 response on success. Required: id.
- **List all Runpod billing pods** (List). Retrieve runpod pod billing history aggregated into configurable time buckets. Returns a BillingRecords collection; the record-level field schema is defined by the BillingRecords type in the runpod REST API reference and is not enumerated in the available source documentation. Optionally filter by gpuTypeId or podId and control aggregation granularity via bucketSize and grouping.
- **List all Runpod billing endpoints** (List). Retrieve Runpod Serverless endpoint billing history aggregated into time buckets. Returns billing record objects grouped by the chosen field; the field-level response shape is not enumerated in the available source documentation. All query parameters are optional.
- **List all Runpod billing networkvolumes** (List). List runpod network volume billing history aggregated into configurable time buckets. Returns billing records for the requested time range (response field details are not enumerated in the API docs). Optional: bucketSize (defaults to day), startTime, endTime.
- **Create a Runpod pod start** (Create). Start (resume) a stopped runpod Pod via the podResume mutation. Returns: id, desiredStatus, imageName, data. Required: pod_id. Optionally supply gpuCount and allowedCudaVersions to control GPU allocation and CUDA version filtering when the Pod resumes.
- **Create a Runpod pod stop** (Create). Stop a runpod Pod by pod_id, releasing the GPU while preserving volume data. Returns: id, desiredStatus, data. Required: pod_id.
- **Create a Runpod pod reset** (Create). Reset a runpod Pod, stopping and restarting it in place. Returns the pod's id and desiredStatus reflecting the result of the reset operation. Required: pod_id.
- **List all Runpod network volumes** (List). List all runpod network volumes available to your account — persistent storage units attachable to pods and serverless endpoints. Returns: id, name, size, dataCenterId, attributes, data.
- **Get single Runpod network volume by ID** (Get). Get a single runpod network volume by id. Returns: dataCenterId, id, name, size, attributes, data. Required: id.
- **Create a Runpod network volume** (Create). Create a new runpod network volume for persistent storage attachable to pods and serverless endpoints. Returns: dataCenterId, id, name, size, attributes, data.
- **Update a Runpod network volume by ID** (Update). Update an existing runpod network volume by id. Returns: dataCenterId, id, name, size, attributes, data. Required: id.
- **Delete a Runpod network volume by ID** (Delete). Delete a runpod network volume by id. Returns an empty 204 response on success. Required: id.
- **List all Runpod container registry auths** (List). List all container registry auth credentials saved in runpod for connecting to private Docker registries. Returns: id, name.
- **Get single Runpod container registry auth by ID** (Get). Get a single runpod container registry auth credential by id. Returns: id, name. Required: id.
- **Create a Runpod container registry auth** (Create). Create a new container registry auth credential in runpod to enable pulling from a private Docker registry. Returns: id, name, data.
- **Delete a Runpod container registry auth by ID** (Delete). Delete a runpod container registry auth credential by id. Returns an empty 204 response on success. Required: id.
- **List all Runpod billing network volumes** (List). List runpod network volumes with associated billing information. Returns: amount, time. No required parameters.
- **Create a Runpod serverless sync job** (Create). Submit a synchronous job to a runpod serverless endpoint and wait for completion before returning the result. Returns: id, status. Required: endpoint_id and input. Default wait time is 90 seconds, adjustable via the wait query parameter (1000–300000 ms); results are retained for 1 minute after completion.
- **Create a Runpod serverless async job** (Create). Submit an asynchronous job to a RunPod serverless endpoint. The job processes in the background; retrieve its result via the /status endpoint. Results are available for 30 minutes after completion. Returns: id, status. Required: endpoint_id, input.
- **Get single Runpod serverless job status by ID** (Get). Get the status of a runpod serverless job by job and endpoint ID. Returns: id, status. Required: endpoint_id, id.
- **Get single Runpod serverless job stream by ID** (Get). Get the accumulated streaming output chunks for a runpod serverless job by job id. Returns an array of stream chunk objects, each containing output (with text, input_tokens, output_tokens) and metrics (with stream_index, scenario, gpu_kv_cache_usage, running, pending, and throughput stats). Required: endpoint_id, id.
- **Create a Runpod serverless job cancellation** (Create). Cancel a runpod serverless job that is currently queued or running. Returns: id, status. Required: endpoint_id, job_id.
- **Create a Runpod serverless job retry** (Create). Retry a failed or timed-out RunPod serverless job by requeuing it with its original input parameters and the same job ID, discarding any previous output. Returns: id, status. Required: endpoint_id, job_id. Only works for jobs whose current status is FAILED or TIMED_OUT; expired jobs (async results older than 30 minutes) cannot be retried.
- **Create a Runpod serverless queue purge** (Create). Purge all pending jobs from the queue of a runpod serverless endpoint. Returns: removed, status. Required: endpoint_id.
- **Get single Runpod serverless endpoint health by ID** (Get). Get the operational health status of a runpod serverless endpoint. Returns: jobs, workers. Required: endpoint_id.
