# Vast.ai MCP connector

The Vast.ai connector lets Claude, ChatGPT, Cursor and any MCP client rent and manage GPU instances, network disks, SSH keys, worker groups, endpoint jobs and secrets in Vast.ai, with every action running under the person who signed in.

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

## Facts

| | |
| --- | --- |
| Application | Vast.ai |
| Category | Cloud Storage |
| AI tools | 89 |
| 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. 89 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once Vast.ai is connected

- List every running Vast.ai instance and its bid price
- Which Vast.ai machines are in maintenance right now
- Show network disks attached to instances in Research

## Connect Vast.ai in Elaichi

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

1. Open Connections, choose Add connection, and pick Vast.ai.
2. Optionally set Share with, then press Connect.
3. Paste a Vast.ai API key. One person generates a token in Vast.ai 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 Vast.ai tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect Vast.ai 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 Vast.ai 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 Vast.ai 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 Vast.ai 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 Vast.ai 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 Vast.ai through Elaichi

### Spin up a GPU box for training

Machine learning. Ask for a new instance with the right disk and SSH access, then adjust the bid price if the job needs to keep running through a busy hour.

### Move datasets onto a network disk

Data engineering. Create a network disk for a project and queue a copy of training data onto it with an rclone command, then clear the command when the transfer is done.

### Keep worker groups and endpoint jobs in shape

Platform. List the worker groups serving a model, change the settings on one, and add or retire endpoint jobs as traffic changes.

### Rotate API keys and secrets without a console

Security. See which Vast.ai API keys exist, create a fresh one for a new pipeline, and delete keys and secrets that are no longer needed.

### Trim spend on running instances

Finance. Review what is running, lower the bid price on instances that can wait, and remove SSH access from boxes that are being wound down.

### Take a machine in and out of maintenance

Hosting. Cancel scheduled maintenance on a host machine when the fix lands early, or run a cleanup on a machine before it goes back into the market.

## Frequently asked questions

### How do I connect Vast.ai to Claude?

First connect Vast.ai in Elaichi by pasting an API key from your Vast.ai account, then in Claude go to Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp. Vast.ai signs in with an API key, so there is no OAuth application to register and no client ID or secret to generate. Once both steps are done, Claude can work with your Vast.ai instances, disks and keys as you.

### Does Vast.ai work with ChatGPT and Cursor as well as Claude?

Yes. Vast.ai is connected once in Elaichi, and the same endpoint, https://api.elaichi.ai/mcp, is pasted into Claude, ChatGPT, Cursor, any other MCP client and the Elaichi Agent. There is nothing extra to set up for each client.

### What can an AI agent actually do with my Vast.ai account?

An agent can create Vast.ai instances and network disks, add or remove SSH access, change the bid price on a running instance, and queue copy or rclone commands to move data. It can also list, create, update and delete worker groups, endpoint jobs, API keys and secrets, and take a host machine out of maintenance or run a cleanup on it. Short, concrete asks such as "lower the bid on instance 4821" work better than long paragraphs.

### Does connecting Vast.ai give the AI access to everything in my account?

No. Every call to Vast.ai runs under the API key the signed-in person provided, so the agent can only reach the instances, disks, worker groups and secrets that key can already reach. Elaichi can narrow that further by blocking specific actions, and it never widens what the key allows.

### Can my team share one Vast.ai connection?

Yes. One person connects Vast.ai in Elaichi and shares the connection with a team, and nobody else ever handles the API key. Each teammate still signs in to Elaichi as themselves, so the audit log names the actual person who created an instance or deleted a secret.

### Can I stop an agent from deleting or changing things in Vast.ai?

Yes. Restrictions in Elaichi work per action, so you can allow listing Vast.ai instances and worker groups while blocking deletion of instances, API keys or secrets. A blocked action is never shown to Claude, ChatGPT or Cursor at all, so no prompt can reach it.

### What happens to a Vast.ai connection when someone leaves?

Offboarding that person in Elaichi ends their access to Vast.ai through every client at once. If they had shared a Vast.ai connection, it keeps working for everyone else on the team. Disconnecting Vast.ai once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client together.

## All 89 Vast.ai tools

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

- **Create a Vast.ai network disk** (Create). Add a network disk in vast to be used for creating network volume offers, or add machines to an existing network disk. Returns: success, disk_id. Required: mount_point.
- **Create a Vast.ai instance SSH** (Create). Attach an SSH key to a vast instance, granting SSH access using the provided key. Returns: success, msg. Required: id, ssh_key.
- **Delete a Vast.ai instance SSH by ID** (Delete). Detach an SSH key from a vast instance, removing SSH access for that key. Returns: success, msg. Required: id, ssh_key_id.
- **List all Vast.ai instance sshes** (List). List SSH keys associated with a vast instance. Returns: success, ssh_keys. Required: instance_id.
- **Update a Vast.ai commands copy direct by ID** (Update). Initiate a remote copy operation in vast to transfer data from one instance to another or between an instance and the local machine. Returns: success, msg. Required: src_path, dst_path.
- **Delete a Vast.ai commands copy direct by ID** (Delete). Cancel a remote copy operation in vast for the specified destination instance. Returns: success. Required: dst_id.
- **Update a Vast.ai machine cancel maint by ID** (Update). Cancel a scheduled maintenance window for a specified machine in vast. Returns: success, ctime, machine_id, msg. Required: machine_id.
- **Create a Vast.ai commands rclone** (Create). Start a cloud copy operation in vast, transferring data between a vast instance and a cloud service. Returns: success, msg, result_url.
- **Delete a Vast.ai commands rclone by ID** (Delete). Cancel an in-progress rclone sync operation in vast identified by the destination instance ID. The operation cannot be resumed once canceled and must be restarted if needed. Returns: success, msg. Required: dst_id.
- **Update a Vast.ai instances bid price by ID** (Update). Update the bid price of a vast instance to a specified value. Returns: success. Required: id, client_id, price. Price must be between $0.001 and $32 per hour.
- **Update a Vast.ai machine cleanup by ID** (Update). Clean up a vast machine by removing expired contracts, freeing up space. Returns: success, ctime, machine_id, user_id, num_deleted, msg. Required: machine_id.
- **List all Vast.ai auth apikeys** (List). List all API keys in vast associated with the authenticated user. Returns: apikeys, id, user_id, rights, team_id, team_name.
- **Create a Vast.ai auth apikey** (Create). Create a new API key in vast with specified permissions for the authenticated user. Returns: id, key, permissions. Required: name.
- **Delete a Vast.ai auth apikey by ID** (Delete). Delete an existing API key in vast by id. Returns a plain-string success confirmation on deletion. Required: id.
- **List all Vast.ai workergroups** (List). List all workergroups in vast associated with the authenticated user. Returns: success, results, id, min_load, target_util, cold_mult, test_workers, template_hash, template_id, search_query, launch_args, gpu_ram, endpoint_name, endpoint_id, api_key, created_at, user_id.
- **Create a Vast.ai workergroup** (Create). Create a new workergroup in vast to manage worker instances for a serverless endpoint. Returns: success, id.
- **Update a Vast.ai workergroup by ID** (Update). Update an existing workergroup in vast by id. Returns: success. Required: id.
- **Delete a Vast.ai workergroup by ID** (Delete). Delete an existing workergroup in vast by id. Returns: success, deleted_workers, failed_workers, msg. Required: id.
- **List all Vast.ai endptjobs** (List). List endpoint jobs for the authenticated vast user. Returns: success, results, id, min_load, target_util, cold_mult, cold_workers, max_workers, endpoint_name, api_key, user_id, created_at, endpoint_state.
- **Create a Vast.ai endptjob** (Create). Create a new job processing endpoint in vast with configurable load and worker settings. Returns: success, result.
- **Update a Vast.ai endptjob by ID** (Update). Update a vast endpoint group's configuration by id. Returns: success. Required: id.
- **Delete a Vast.ai endptjob by ID** (Delete). Delete a vast endpoint group by id; associated worker groups are also deleted. Returns: success, deleted_workers, failed_workers, msg. Required: id.
- **List all Vast.ai secrets** (List). List all environment variables (secrets) for the authenticated user in vast. Returns: success, secrets.g. *****).
- **Create a Vast.ai secret** (Create). Create a new encrypted environment variable (secret) for the authenticated user in vast. Keys are automatically converted to uppercase before storage. Returns: success, msg. Required: key, value.
- **Update a Vast.ai secret by ID** (Update). Update the value of an existing environment variable (secret) for the authenticated user in vast. Keys are automatically converted to uppercase. Returns: success, msg. Required: key, value.
- **Delete a Vast.ai secret by ID** (Delete). Delete an environment variable (secret) for the authenticated user in vast. The variable must exist and belong to the requesting user. Returns: success, msg. Required: key.
- **Update a Vast.ai ask by ID** (Update). Create a new vast instance by accepting an available offer (ask contract) identified by id. If a template_hash_id is supplied, its defaults are merged with request body parameters per documented precedence rules. Returns: success, new_contract. Required: id, image.
- **Create a Vast.ai network volume** (Create). List a network disk as a network volume offer in vast, or update an existing listing with a new price, size, end date, or discount. Returns: success, msg, disk_id. Required: disk_id.
- **Update a Vast.ai network volume by ID** (Update). Create a network volume in vast by accepting an existing network volume offer. Returns: success, volume_name, volume_size, id, msg. Required: id, size.
- **Vast.ai network volumes search** (Search). Search for available network volume offers in vast with advanced filtering and sorting. Returns: success, offers, template_hash_id.
- **List all Vast.ai sshes** (List). List SSH keys associated with the authenticated user's vast account. Returns: id, user_id, key, created_at, deleted_at.
- **Create a Vast.ai SSH** (Create). Create a new SSH key in vast and associate it with your account; the key is automatically added to all current instances. Returns: success, key. Required: ssh_key.
- **Update a Vast.ai SSH by ID** (Update). Update an SSH key in vast with a new public key value. Returns: success, key. Required: id, ssh_key.
- **Delete a Vast.ai SSH by ID** (Delete). Delete an SSH key from the authenticated user's vast account by id. Returns: success. Required: id.
- **Create a Vast.ai user** (Create). Create a standalone or subaccount user in vast. Returns: id, username, email, key_id. Required: email, username, password.
- **Update a Vast.ai user by ID** (Update). Update the authenticated user's data in vast. Returns: success, msg.
- **Get single Vast.ai user by ID** (Get). Get information about the current authenticated user in vast. Returns: id, key_id, email, balance, ssh_key, sid, credit.
- **Create a Vast.ai team** (Create). Create a new team in vast with default roles (Owner, Manager, Member) assigned automatically. Returns: success, msg. Required: team_name. Optionally transfer credits from your personal account to the new team using transfer_credit.
- **Delete a Vast.ai team by ID** (Delete). Delete the authenticated user's team in vast along with all associated API keys, roles, invitations, and memberships. The team owner's master API key is converted back to a normal client key. Returns: success, msg, pkey_id.
- **Create a Vast.ai team role** (Create). Create a new team role in vast. Returns: msg. Required: name, permissions.
- **Delete a Vast.ai team role by ID** (Delete). Remove a team role from vast by id. Returns: status, message. Required: id. The team owner role cannot be removed.
- **Update a Vast.ai team role by ID** (Update). Update an existing team role's name and permissions in vast. Returns a success confirmation string message on update. Required: id, name, permissions.
- **Get single Vast.ai team role by ID** (Get). Get a specific team role by id in vast. Returns: id, name, permissions, template_hash_id. Required: id.
- **List all Vast.ai templates** (List). Search vast templates using filter-based queries. Returns: success, templates_found, templates. Results include your own and publicly shared templates.
- **Create a Vast.ai template** (Create). Create a new vast template for launching instances. Returns: success, msg, template. Required: name, image.
- **Update a Vast.ai template by ID** (Update). Edit an existing vast template in place. Returns: success, template. Required: hash_id. Only fields you supply are modified.
- **Delete a Vast.ai template by ID** (Delete). Delete an existing vast template by its numeric template_id. Returns: success. Required: template_id (numeric id, not hash_id).
- **List all Vast.ai volumes** (List). List all volumes rented by the authenticated user in vast. Returns a volumes array where each item includes id, status, storage_total_cost, disk_space, machine_id, host_id, inet_up, inet_down, reliability2, and start_date.
- **Update a Vast.ai volume by ID** (Update). Rent or create a new volume in vast with a specified size. Returns: success, volume_name. Required: id.
- **Delete a Vast.ai volume by ID** (Delete). Delete a vast volume by its ID. Returns: success. Required: id.
- **Vast.ai volumes search** (Search). Search for available volume offerings in vast based on specified criteria. Returns an offers array where each item includes id, storage_cost, storage_total_cost, disk_space, machine_id, host_id, geolocation, reliability2, and verification. Optional: limit (max results, defaults to 64).
- **List all Vast.ai instances** (List). List vast instances for the authenticated user. Returns instance records including id, actual_status, label, image_uuid, ssh_host, ssh_port, gpu_name, dph_total, machine_id, and many more hardware, cost, and connectivity fields. Supports filtering via select_filters, column selection via select_cols, and sorting via order_by.
- **Update a Vast.ai instance by ID** (Update). Manage a vast instance's state or label by id. Returns: success. Required: id. At least one of state (stopped or running) or label must be provided in the request body.
- **Delete a Vast.ai instance by ID** (Delete). Permanently destroy a vast instance by id. This action is irreversible and deletes all data. Returns: success, msg. Required: id.
- **Get single Vast.ai instance by ID** (Get). Get details of a specific vast instance by id. Returns instances_found and instances — the full Instance record containing hardware details (id, gpu_name, num_gpus, cpu_name, cpu_cores), networking info (ssh_host, ssh_port, public_ipaddr), status fields (actual_status, intended_status, cur_state), and pricing fields (dph_base, dph_total, disk_space). Required: id.
- **Update a Vast.ai instances command by ID** (Update). Execute a constrained remote command on a specific vast instance. Returns: success, writeable_path, result_url, msg. Required: id, command. Command is limited to 512 characters; output is retrieved asynchronously from the returned result_url.
- **Create a Vast.ai team invite** (Create). Invite a team member in vast by sending an invitation email to the specified user with an assigned role. Returns: success, msg. Required: email, role.
- **Update a Vast.ai machines create ask by ID** (Update). Create or update ask contracts for a machine in vast.ai to list it for rent, allowing you to set pricing, minimum GPU requirements, expiry date, and discount rates. Returns: success, extended, msg. Required: machine.
- **Update a Vast.ai instances request log by ID** (Update). Request logs from a specific vast instance by id. The logs are uploaded to S3 and made available at a generated download URL. Returns: success, result_url, msg. Required: id.
- **Update a Vast.ai instances prepay by ID** (Update). Deposit credits into a reserved vast instance to receive usage discounts. Returns: success, timescale, discount_rate.0–0.4). Required: id, amount.
- **Update a Vast.ai instances reboot by ID** (Update). Reboot a vast instance by id, stopping and restarting its container without losing GPU priority. Updates the container status to 'rebooting' and executes docker stop/start commands on the host machine. Returns: success. Required: id.
- **Update a Vast.ai instances recycle by ID** (Update). Recycle a vast instance by id, destroying and recreating its container in place from a newly pulled image without losing GPU priority. Sets the container status to 'recycling' and executes docker stop/remove commands on the host. Returns: success. Required: id.
- **Delete a Vast.ai machine defjob by ID** (Delete). Delete the default job (background instances) for a specified machine in vast. Returns: success, machine_id, user_id. Required: machine_id.
- **Delete a Vast.ai team member by ID** (Delete). Remove a vast team member by id, revoking their team-related API keys and updating membership status. Returns: status, message. Required: id. Cannot remove the team owner.
- **List all Vast.ai team members** (List). List all vast team members associated with the authenticated user's team. Returns: id, username, email, fullname, roles.
- **List all Vast.ai machine reports** (List). List the most recent reports for a given machine in vast. Returns: problem, message, created_at. Required: machine_id.
- **Create a Vast.ai route** (Create). Route a request to a vast serverless GPU endpoint to obtain a worker instance address. Returns endpoint, __request_id, and either url, cost, reqnum, and signature when a worker is ready, or status describing worker state when no worker is available. Required: endpoint, cost.
- **Update a Vast.ai machine dnotify by ID** (Update). Schedule a maintenance window for a vast machine and notify its clients. Returns: success, you_sent. Required: machine_id, sdate, duration.
- **List all Vast.ai benchmarks** (List). List benchmark results in vast, optionally filtered by a search query string. Returns: contract_id, id, image, last_update, machine_id, model, name, num_gpus, score. Example query filter: score>1000.
- **Create a Vast.ai bundle** (Create). Search for available GPU machine offers in vast with advanced filtering operators (eq, neq, gt, lt, gte, lte, in, notin). Returns an offers array where each item includes id, gpu_name, num_gpus, dph_total, reliability, geolocation, gpu_arch, verification, compute_cap, and many additional hardware and pricing fields. All body parameters are optional.
- **Update a Vast.ai machines create bid by ID** (Update). Create default background jobs for a specified machine in vast with the given pricing and image parameters. Returns: success, machine_id, user_id, you_sent. Required: machine, price_gpu, price_inetu, price_inetd, image.
- **Update a Vast.ai machine minbid by ID** (Update). Set the minimum bid price for a specified machine in vast. Returns: success, you_sent. Required: machine_id, price.
- **List all Vast.ai charges** (List). List vast charges per contract, including GPU, storage, and bandwidth usage, filtered by a date range. Returns: success, count, total, next_token, results. Required: select_filters (a JSON string specifying at minimum day.gte and day.lte in unix seconds UTC).
- **List all Vast.ai users cloud integrations** (List). List all cloud connections associated with the authenticated user in vast. Returns: id, cloud_type, name.
- **Get single Vast.ai instances balance by ID** (Get). Get the deposit balance details for a vast instance by id. Returns: success, refundable_deposit, total_discount, discount_months, instances_found, instances. Required: id.
- **List all Vast.ai user machine earnings** (List). List machine earnings history for a vast user over a specified time range. Returns: summary, username, email, fullname, address1, address2, city, zip, country, taxinfo, current, per_machine, per_day. Required: user_id.
- **List all Vast.ai invoices** (List). List vast billing invoices including Stripe top-ups, transfers, payouts, coinbase payments, and other billing transactions. Returns: success, count, total, next_token, results, start, end, source, description, amount, metadata. Required: select_filters (a JSON-encoded object containing a `when` date range in unix seconds).
- **List all Vast.ai user ipaddrs** (List). List the IP address access history for a vast user. Returns records containing id, user_id, ip_address, and timestamp for each access event. Required: user_id.
- **List all Vast.ai machines** (List). List machines in vast associated with the authenticated user. Returns: machines, id, name. Required: user_id.
- **List all Vast.ai subaccounts** (List). List subaccounts associated with the authenticated vast account. Returns: users, id, parent_id, key_id, created_at, deleted_at.
- **List all Vast.ai team roles fulls** (List). List all roles for a vast team, excluding the owner role. Returns: name, permissions, identifier, id.
- **Update a Vast.ai commands transfer credit by ID** (Update). Transfer credits from the authenticated user's account to another user's account in vast. Returns: success. Required: recipient, amount. The recipient may be specified by email address or user ID; amount must be at least 0.01.
- **Delete a Vast.ai machine ask by ID** (Delete). Unlist a machine in vast by removing all 'ask' type offer contracts for it, making it unavailable for rent. Returns: success, machine_id, user_id. Required: machine_id.
- **Create a Vast.ai network volumes unlist** (Create). Unlist a network volume from rent in vast. Returns: success, id, msg. Required: id.
- **Create a Vast.ai volumes unlist** (Create). Remove a volume listing from the vast marketplace. Returns: success, msg. Required: id.
- **List all Vast.ai workergroup logs** (List). Retrieve logs for a specific vast workergroup by ID. Returns: api. Required: id.
- **List all Vast.ai workergroup workers** (List). List workers associated with a vast.ai workergroup. Returns worker records including id. No required parameters are documented for this endpoint.
- **List all Vast.ai endpoint logs** (List). Retrieve logs for a vast.ai serverless endpoint by name. Returns: logs, success, error, msg. Required: endpoint.
- **List all Vast.ai endpoint workers** (List). List endpoint workers for vast's serverless infrastructure. The specific response fields for this endpoint were not enumerated in the retrieved source documentation; consult the vast.ai API reference for the full worker object shape.
