Skip to main content
Glama
kvrancic

prime-intellect-mcp

by kvrancic

prime-intellect-mcp

Permite que Claude Code alquile, gestione y termine pods de GPU de Prime Intellect por su cuenta, con límites estrictos de gasto que tú controlas.

PyPI Python License CI MCP


Qué es esto

Un servidor MCP que conecta Claude Code (o cualquier cliente MCP) a tu cuenta de Prime Intellect. Con él, el agente puede:

  • 🔍 Buscar el pod de GPU más barato que cumpla con tus requisitos

  • 💸 Cotizar un precio antes de comprometer dinero

  • 🛒 Aprovisionar el pod (solo después de que digas confirm=True)

  • 🖥️ SSH para entrar en él (la cadena de conexión se entrega a la propia herramienta Bash del agente)

  • 🛑 Terminar el pod cuando el trabajo esté hecho, y avisar en voz alta si lo olvidas

Creado para un flujo de trabajo: decirle a Claude "alquila la H100 más barata, ejecuta mi script de entrenamiento y luego elimínala" y no despertarte con una factura de 400 $.


Related MCP server: claude-colab

Instalar en 60 segundos

Solo necesitas esto para empezar a alquilar GPUs a través de Claude Code:

1. Obtén una clave API de Prime Intellect

Haz clic aquí para generar una → establece los permisos:

Ámbito

Nivel

Instancias

Lectura y escritura

Disponibilidad

Solo lectura

Facturación

Solo lectura

Claves SSH

Solo lectura

Copia la clave: empieza por pit_….

2. Añade el servidor a Claude Code

Abre ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o el archivo .mcp.json de tu proyecto, y pega:

{
  "mcpServers": {
    "prime-intellect": {
      "command": "uvx",
      "args": ["prime-intellect-mcp"],
      "env": {
        "PRIME_API_KEY": "pit_PASTE_YOURS_HERE",
        "PRIME_MAX_HOURLY_USD": "5",
        "PRIME_MAX_TOTAL_USD": "40"
      }
    }
  }
}

Eso es todo. Reinicia Claude Code y pregunta: "¿Qué GPUs están disponibles ahora mismo por menos de 1 $/hora?"

¿No tienes uvx? Instálalo con curl -LsSf https://astral.sh/uv/install.sh | sh (o brew install uv). Es un instalador de una sola línea para el gestor de paquetes uv y nunca más tendrás que gestionar un virtualenv.


✨ Añadir SSH (opcional, +2 min) — necesario para que Claude pueda ejecutar código en el pod

El servidor anterior ya puede aprovisionar/inspeccionar/terminar pods. Pero para que Claude Code pueda entrar por SSH en un pod en ejecución y ejecutar comandos en él, Prime Intellect necesita conocer la clave pública SSH de tu máquina.

3. Busca o genera una clave SSH en tu máquina

ls ~/.ssh/*.pub          # if you have id_ed25519.pub or similar, you're set
# otherwise:
ssh-keygen -t ed25519 -C "you@example.com"   # press Enter through the prompts

4. Registra la clave pública en Prime Intellect

cat ~/.ssh/id_ed25519.pub    # or whichever .pub file you have

Copia la salida (una línea que empieza por ssh-ed25519 …), luego pégala en el formulario Add SSH key en app.primeintellect.ai/dashboard/ssh-keys.

Eso es todo. Los futuros pods tendrán tu clave pública en authorized_keys, y la herramienta Bash de Claude Code podrá entrar directamente por SSH:

ssh ubuntu@<pod-ip-from-pod_status> "nvidia-smi"

Próximamente en v0.2: una herramienta MCP register_ssh_key que realiza el paso 4 desde dentro de Claude (sin visitar el navegador). Consulta el rastreador de problemas para seguir el progreso.


Lo que Claude puede hacer ahora (las 9 herramientas)

Herramienta

Caso de uso

list_gpu_types

"¿Qué tipos de GPU ofrece Prime Intellect?"

list_availability

"Muéstrame pods 1×H100 disponibles por menos de 3 $/hora."

get_wallet_balance

"¿Cuánto crédito me queda?"

pod_quote

"Cotízame una 1×A100 con 200 GB de disco." (sin coste)

pod_create

"Aprovisiona el pod de esa cotización." (requiere confirm=True)

pod_list

"Muéstrame mis pods en ejecución."

pod_status

"¿Está listo el pod X? Espera hasta que tenga información SSH."

pod_terminate

"Elimina el pod X." (requiere confirm=True)

pod_check_runaway

"¿Olvidé terminar algo?"


Seguridad: nada se aprovisiona silenciosamente

Tres capas, en orden:

  1. Cotizar primero. pod_quote devuelve un precio + un token de 60 segundos. Sin efectos secundarios. El importe en dólares está ahora en el contexto del agente.

  2. Confirmación explícita. pod_create (y pod_terminate) requiere confirm=True. Sin esto, obtienes una vista previa de prueba.

  3. Límites estrictos de variables de entorno. PRIME_MAX_HOURLY_USD bloquea cualquier pod por encima de la tarifa. PRIME_MAX_TOTAL_USD bloquea cualquier (tarifa × horas_máximas_de_vida) por encima del presupuesto. El saldo de la billetera también se aplica. Ninguno de estos límites puede ser anulado por los argumentos de la herramienta: se leen en cada llamada.

Valores predeterminados: PRIME_MAX_HOURLY_USD=5, PRIME_MAX_TOTAL_USD=40. Configúralos en el bloque env de tu configuración.

Cada pod_create / pod_terminate se añade como JSON a ~/.prime-intellect-mcp/audit.log, para que tengas un historial completo de lo que el agente hizo con tu dinero.


Ejemplos de prompts (pega esto en Claude Code)

List the cheapest 1×H100 pods available right now. Show me the top 3 by hourly price.
Quote a 1×A100 80GB with 100GB disk, 8 vCPU, 64GB RAM. Don't provision yet —
just show me what it would cost.
I need to fine-tune a 7B model overnight. Find the cheapest 1×H100 with 200GB
disk, max $40 total budget, max 12 hours. Provision it, give me the SSH command,
and remind me to terminate when I'm done.
Check if I have any running pods I forgot about and show me their hourly cost.
Terminate pod abc123. Confirm before doing it.

Solución de problemas

O bien tu configuración de Claude Code no detectó el bloque env, o escribiste PRIME_API_KEY como una variable diferente. Verifica con:

$ env | grep PRIME

dentro del mismo shell que lanza Claude Code, o pega la clave directamente en el bloque env del JSON (en lugar de usar ${PRIME_API_KEY}).

El agente eligió un pod por encima de tu límite estricto. O bien:

  • Elige una GPU más barata (list_availability con un filtro de región a menudo muestra filas más baratas con precios comunitarios), o

  • Aumenta PRIME_MAX_HOURLY_USD en tu configuración y reinicia Claude Code.

Las cotizaciones duran 60 segundos; el agente esperó demasiado entre pod_quote y pod_create. Simplemente llama a pod_quote de nuevo; no tiene coste.

El aprovisionamiento no ha terminado completamente. El pod está activo pero todavía ejecutando su script de instalación. Llama a pod_status(pod_id, wait_for_ssh=True) y se bloqueará (consultando cada 5s) hasta que SSH esté disponible.

No le has informado a Prime Intellect sobre tu clave pública (o el pod se aprovisionó antes de que la registraras). Solución:

  1. Verifica que tu clave pública esté registrada en app.primeintellect.ai/dashboard/ssh-keys.

  2. Reaprovisiona: el authorized_keys del pod se establece en el momento de la creación, por lo que los pods existentes no recogerán las claves que registraste después.

  3. Si tu clave privada tiene una frase de contraseña, ejecuta ssh-add --apple-use-keychain ~/.ssh/your_key una vez en macOS para que el agente la desbloquee silenciosamente a partir de ahora.

Recarga en app.primeintellect.ai/wallet e inténtalo de nuevo.


¿Por qué otro más?

Existe un prime-mcp-server 0.1.2 en PyPI. Es una prueba de concepto básica; esto no es un fork. Diferencias para uso desatendido durante la noche:

prime-intellect-mcp

prime-mcp-server 0.1.2

Cotización en dos pasos → confirmar

✅

❌

Límites estrictos de gasto en variables de entorno

✅

❌

Verificación previa de saldo de billetera

✅

❌

Detección de pods fuera de control

✅

❌

Entrega de SSH al agente

✅

❌

Pruebas

32 unitarias + en vivo opcionales

Ninguna


Desarrollo local

git clone https://github.com/kvrancic/prime-intellect-mcp
cd prime-intellect-mcp
uv sync
uv run pytest -m "not live"        # 32 fast tests, no network, no spend
uv run ruff check .
uv run mypy src

Prueba de humo en vivo (aprovisiona la GPU más barata disponible, ejecuta nvidia-smi, termina; gasto de ~0,05 $):

PRIME_API_KEY=pit_... PRIME_LIVE_TEST=1 PRIME_LIVE_MAX_HOURLY=0.60 \
PRIME_MAX_HOURLY_USD=0.60 PRIME_MAX_TOTAL_USD=2.00 \
uv run pytest tests/test_smoke_live.py -v -s

Hoja de ruta

  • v0.2 — Herramienta MCP register_ssh_key (elimina el paso del panel de control), Sandboxes (SDK prime-sandboxes), Hub de entornos

  • v0.3 — Demonio de terminación automática opcional (aplicación del lado del servidor de max_lifetime_hours); telemetría de costes

  • v1.0+ — Despliegue alojado/OAuth cuando Prime Intellect lance OAuth; envío al directorio de conectores de Anthropic


Agradecimientos

Licencia

MIT: consulta LICENSE.

Contribución

Se aceptan problemas y PRs. Por favor, ejecuta uv run pytest -m "not live" y uv run ruff check . antes de enviar.

Available Tools

9 tools
get_wallet_balanceA

Return the current Prime Intellect wallet balance and recent billings.

Use this to estimate how long a quoted pod can run, or to check why pod_create returned an insufficient-funds error.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description adequately discloses a read-only behavior and the return of balance and billings. There is no mention of side effects, rate limits, or auth requirements, but the tool is simple with no parameters and an output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long with no wasted words. It front-loads the purpose immediately and follows with practical usage guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters, an output schema, and no annotations, the description fully covers its functionality, including both the return value and practical use cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the input schema coverage is 100% (vacuously). The description does not need to add parameter information, so a baseline of 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Return the current Prime Intellect wallet balance and recent billings,' identifying a specific verb and resource. It distinguishes itself from sibling tools like pod_create and pod_quote by focusing on wallet balance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases: estimating pod runtime and debugging insufficient-funds errors. It lacks an explicit when-not-to-use section, but the context is clear enough for a simple getter tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_availabilityA

List currently-available GPU pods that match the filters.

Returns the SDK's GPUAvailability rows (cloud_id, gpu_type, gpu_count, prices, disk/vcpu/memory bounds, stock_status, ...). Use this to pick a target before pod_quote, or to show the user options.

ParametersJSON Schema
NameRequiredDescriptionDefault
gpu_typeNoGPU type slug, e.g. 'H100_80GB'. Strongly recommended — the unfiltered response is large.
gpu_countNoRequired GPU count per pod (1, 2, 4, 8). None means any.
regionsNoOptional list of region slugs. None means any.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description adequately discloses that it returns GPUAvailability rows and lists fields. It implies a read-only operation and mentions the unfiltered response is large, but could add performance or reliability notes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with three sentences: purpose, detail on returned data, and usage guidance. No superfluous words, well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has three optional parameters and an output schema, the description covers purpose, return type, and usage context. It could elaborate on pagination or filtering behavior, but overall complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter has a description. The tool's description adds value by noting that gpu_type is strongly recommended due to large unfiltered response, which goes beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists currently-available GPU pods matching filters, with a specific verb and resource. It distinguishes itself from siblings by mentioning its role before pod_quote or for showing options.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says 'Use this to pick a target before pod_quote, or to show the user options,' providing clear context. However, it does not explicitly state when not to use it or compare to alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_gpu_typesA

List every GPU type Prime Intellect currently offers (e.g. "H100_80GB", "A100_80GB").

Use this when the user is vague about what they want. Pass the result into list_availability or pod_quote.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must cover behavioral traits. It accurately describes a safe, read-only list operation. While it doesn't discuss data freshness or rate limits, the simplicity of the tool (no parameters, no side effects) makes the implicit behavior clear. Slight deduction for not mentioning any potential delays or consistency guarantees.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, each earning its place. The first sentence states the action and gives examples. The second provides usage guidance. No wasted words, and critical information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, clear output described), the description is complete. The existence of an output schema means return values are fully specified. The description directly addresses the agent's need to clarify vague user requests and chain to other tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters, so schema description coverage is 100%. With 0 parameters, the baseline is 4. The description adds value by providing examples of GPU types, which helps agents understand the output without needing to inspect the output schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool lists all GPU types offered by Prime Intellect, with specific examples like 'H100_80GB' and 'A100_80GB'. It distinguishes from siblings by specifying its role in clarifying vague user requests and directing results to list_availability or pod_quote.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use the tool: 'when the user is vague about what they want.' Also provides clear next steps: 'Pass the result into list_availability or pod_quote.' This leaves no ambiguity about context and downstream usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pod_check_runawayA

Return locally-tracked pods that have run past max_lifetime_hours OR whose accumulated cost is approaching PRIME_MAX_TOTAL_USD.

Call this at the start of long-running sessions to catch forgotten pods.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral disclosure. It states the tool returns matching pods but does not mention whether it is read-only, side effects, rate limits, or refresh behavior. For a check tool, assuming read-only is reasonable but not explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. The first sentence states purpose, the second provides usage guidance. Front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with no parameters and an output schema (not shown but exists), the description is fairly complete. It could note that the operation is read-only, but overall it covers what the tool does and when to use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has zero parameters, baseline is 4 per instructions. Description adds context about the filtering criteria (max_lifetime_hours and cost limit) which are not parameters but clarify the tool's logic. Schema coverage is 100% due to no parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it returns 'locally-tracked pods that have run past max_lifetime_hours OR whose accumulated cost is approaching PRIME_MAX_TOTAL_USD'. This distinguishes it from sibling tools like 'pod_list' (list all) and 'pod_status' (status of specific pod), providing a specific verb+resource combination.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises 'Call this at the start of long-running sessions to catch forgotten pods', giving clear when-to-use context. While it doesn't exclude other scenarios, the guidance is sufficient for typical use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pod_createA

Provision a Prime Intellect GPU pod (or preview the provisioning).

With confirm=False: returns a dry-run preview describing what would happen. With confirm=True: validates spend caps + quote freshness, then provisions.

The server enforces:

  • quote_token must be fresh (TTL 60s)

  • hourly_usd ≤ PRIME_MAX_HOURLY_USD

  • hourly_usd × max_lifetime_hours ≤ PRIME_MAX_TOTAL_USD

  • estimated total ≤ wallet balance

On success, the pod is recorded in local state.json so pod_check_runaway can warn about overdue pods later.

ParametersJSON Schema
NameRequiredDescriptionDefault
quote_tokenYesToken returned by pod_quote.
nameYesHuman-readable pod name.
max_lifetime_hoursNoSoft budget cap: hourly_usd × this must fit under PRIME_MAX_TOTAL_USD.
confirmNoRequired True to actually provision. False returns a dry-run preview.
env_varsNoOptional env vars to inject into the pod.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description discloses dry-run vs actual provisioning, server constraints, and side effects like recording in state.json for runaway detection.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

About 80 words, well-structured with bullet points, front-loaded with key action, no wasted sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers both modes, constraints, side effects. Output schema exists so return values not needed. Complete for provisioning tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

100% schema coverage but description adds context: explains confirm's dual role, constraints on max_lifetime_hours, and how quote_token is used.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it provisions a GPU pod or previews provisioning, using specific verbs like 'provision' and 'preview'. It distinguishes from siblings like pod_quote and pod_terminate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains when to use confirm=False vs True and lists server-enforced constraints. No explicit 'when not to use' but implicit from context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pod_listA

List every pod the API key can see (active + provisioning + stopped).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description solely bears the burden. It mentions the statuses included but not any side effects, ordering, or pagination. Since an output schema exists, return value details may be covered there, but additional behavioral context (e.g., no mutations, read-only) is absent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. Every word contributes meaning, making it maximally concise for its purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and an existing output schema, the description is largely sufficient. However, it could be slightly more complete by clarifying that it lists all visible pods without filtering (vs. pod_status for a specific pod).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, and schema coverage is 100% (trivially). The description adds no parameter information because none is needed. Baseline for zero parameters is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the verb 'List', the resource 'pod', and the scope: 'every pod the API key can see' with explicit statuses (active, provisioning, stopped). It is distinctive from siblings like pod_status or pod_terminate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs. siblings such as pod_status for a specific pod. The description only states what it does, not when it is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pod_quoteA

Get a non-binding price quote + reserved provisioning payload.

Returns a quote_token (TTL=60s) that you pass to pod_create with confirm=True to actually provision. This tool has NO side effects.

The server picks the cheapest matching GPUAvailability row that satisfies the requested disk/vcpu/memory. If none matches, returns an error explaining what's available.

ParametersJSON Schema
NameRequiredDescriptionDefault
gpu_typeYesGPU type slug, e.g. 'H100_80GB'.
gpu_countNoNumber of GPUs per pod (1, 2, 4, 8).
disk_size_gbNoDisk size in GB.
vcpusNovCPU count.
memory_gbNoMemory in GB.
imageNoContainer image slug. Use 'ubuntu_22_cuda_12' if unsure.ubuntu_22_cuda_12

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, description carries full behavioral burden. It discloses no side effects, TTL of 60s, server picks cheapest matching row, and returns error with available options if no match. Comprehensive and honest.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences with front-loaded purpose, then flow, behavior, and error case. No fluff, every sentence adds value. Very concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity and presence of output schema, the description covers essential aspects: return value, TTL, side-effect-free nature, selection logic, and error behavior. Complete for a quoting tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents each parameter well. Description adds overall logic (cheapest matching) but no extra per-parameter meaning beyond schema defaults and examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool gets a non-binding price quote and reserved provisioning payload, distinguishing it from sibling tools like pod_create. It specifies the verb 'Get' and the resource, making purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description explains that the tool has no side effects and that the returned quote_token should be passed to pod_create with confirm=True to provision. It implicitly guides usage before creation, but lacks explicit when-not-to-use or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pod_statusA

Get the current status (provisioning / active / failed) for a pod.

With wait_for_ssh=True, blocks (polls every 5s) until ssh_connection is available — that's when you can SSH in. Returns the SSH connection string in ssh_connection (e.g. "root@1.2.3.4 -p 22000"). Use it from your Bash tool: ssh -o StrictHostKeyChecking=no <ssh_connection> "<cmd>".

ParametersJSON Schema
NameRequiredDescriptionDefault
pod_idYesThe id returned by pod_create.
wait_for_sshNoIf True, poll until ssh_connection is populated or timeout_s elapses.
timeout_sNoMax seconds to wait when wait_for_ssh=True.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses polling behavior every 5s, blocking until SSH available, and return format for SSH connection. It does not cover rate limits or permissions but is sufficient for safe use.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is brief (4 sentences), front-loaded with purpose, then explains the optional blocking behavior and SSH usage. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given tool complexity (polling, SSH) and presence of output schema, description adequately explains the blocking behavior and SSH string usage. Lacks details on full return object but output schema covers that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% description coverage, so baseline is 3. Description adds marginal value by contextualizing SSH connection usage but essentially repeats parameter descriptions found in schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool gets pod status with specific statuses, and distinguishes from siblings like pod_create, pod_list, and pod_terminate by focusing on a single pod and offering SSH readiness detection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for checking status and waiting for SSH, but does not explicitly state when to use versus alternatives like pod_list or pod_create, nor provides when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pod_terminateA

Destroy (terminate) a pod. Idempotent on already-deleted pods.

Without confirm=True, returns a no-op preview so you can re-read your decision.

ParametersJSON Schema
NameRequiredDescriptionDefault
pod_idYesThe pod to destroy.
confirmNoRequired True to actually terminate.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry behavioral disclosure. It mentions idempotency and preview behavior, but it does not disclose potential side effects, required permissions, or data loss risks. While the preview feature adds transparency, the description lacks warnings about irreversibility, making it only partially transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, with the first sentence concisely stating purpose and idempotency, and the second explaining the preview feature. No unnecessary words or repetitions; every sentence earns its place, making it highly efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple destructive tool with a clear output schema, the description covers purpose, idempotency, and preview behavior. However, it does not mention prerequisites (e.g., pod existence is handled by idempotency) or any contextual warnings about consequences. Slight gaps in completeness, but overall adequate given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. The description adds value by clarifying the confirm parameter's preview behavior beyond the schema's 'Required True to actually terminate.' This extra context improves understanding without redundancy, justifying a score above the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Destroy (terminate) a pod' with a clear verb and resource. It also notes idempotency on already-deleted pods, adding clarity. The tool is uniquely positioned among siblings as the only destroy operation, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the preview behavior with confirm=False, guiding when to preview vs execute. However, it does not provide explicit when-to-use or when-not-to-use guidance, nor does it compare to alternatives like pod_check_runaway. The usage guidelines are implied but not fully elaborated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv0.1.0
    • First observedget_wallet_balance
    • First observedlist_availability
    • First observedlist_gpu_types
    • First observedpod_check_runaway
    • First observedpod_create
    • First observedpod_list
    • First observedpod_quote
    • First observedpod_status
    • First observedpod_terminate

TDQS

A4.4/5.0

Scored across 9 tools

Disambiguation5/5

Each tool has a unique and clearly distinct purpose, from wallet balance and GPU availability listing to pod creation, quoting, and termination. There is no overlap that could cause an agent to select the wrong tool.

Naming Consistency5/5

Tool names follow a consistent pattern: utility functions use verb_noun (e.g., get_wallet_balance, list_availability) and pod operations all start with pod_ (e.g., pod_create, pod_terminate). The naming is predictable and easily understood.

Tool Count5/5

With 9 tools covering wallet, GPU types, availability, pod lifecycle (create, list, status, quote, terminate), and runaway monitoring, the count is well-scoped for the server's purpose. Each tool earns its place with no redundancy.

Completeness5/5

The tool surface covers the full lifecycle of GPU pod management: discovering availability, quoting, creating, monitoring status, listing, terminating, and checking for runaway pods. The inclusion of wallet balance and wait-for-SSH functionality addresses common operational needs.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers