Badgr — GPU Compute for AI Agents Copy
OfficialAllows launching autonomous agent jobs on GitHub repositories, with status, cost, output, receipt, and recent logs available through task checks.
badgr-mcp
MCP server that lets coding agents provision GPU jobs and model endpoints — directly from Claude, Cursor, Copilot, or any MCP-compatible tool.
npx badgr-mcpThe problem it solves
Running a GPU workload normally means switching to a terminal, writing a CLI command, waiting, and copying an endpoint URL back into your editor. badgr-mcp removes all of that — your coding agent calls badgr_serve or badgr_run directly, gets the endpoint URL back, and keeps working without you leaving the editor.
Related MCP server: gpu-broker-mcp
Quick start
1. Get a Badgr API key at aibadgr.com
2. Add to your MCP config:
{
"mcpServers": {
"badgr": {
"command": "npx",
"args": ["badgr-mcp"],
"env": {
"BADGR_API_KEY": "your-api-key"
}
}
}
}3. Ask your agent to run a GPU job:
"Serve
meta-llama/Llama-3.1-8B-Instructon a GPU and give me the endpoint URL"
The agent calls badgr_serve, gets back the endpoint URL, and you can start using it immediately.
Available tools
badgr_serve — persistent OpenAI-compatible endpoint
Start a model endpoint that stays up until you stop it or the max runtime is reached.
badgr_serve(
model: string, // HuggingFace model ID
max_runtime_minutes: number, // Auto-stop after N minutes (max: BADGR_MAX_RUNTIME, default 60)
gpu?: string, // L40S | A100 | H100 | RTX_4090 (default: L40S)
gpu_count?: number, // 1–8 GPUs (default: 1)
region?: string, // US | EU | AU (default: US)
max_price_per_hour?: number, // Hard $/hr cap
name?: string // Optional label for the deployment
)Returns: { deployment_id, endpoint_url, openai_base_url, cost_per_hour, max_runtime_minutes }
The openai_base_url is a fully OpenAI-compatible endpoint — drop it into any OpenAI SDK client.
badgr_run — one-off GPU job
Run a container command on a GPU. The job runs, completes, and is torn down automatically.
badgr_run(
command: string[], // Docker command, e.g. ["python", "train.py"]
image?: string, // Docker image (default: python:3.11-slim)
gpu?: string, // RTX_4090 | A100 | L40S | H100 (default: RTX_4090)
gpu_count?: number, // 1–8 GPUs (default: 1)
region?: string,
max_price_per_hour?: number,
name?: string
)Returns: { deployment_id, status, gpu_type, cost_per_hour, logs_url }
badgr_status — list active deployments
badgr_status()Returns: list of active deployments with IDs, models, GPUs, status, and cost.
badgr_logs — fetch deployment logs
badgr_logs(deployment_id: string)Returns: { lines: string[], log_text: string }
badgr_down — stop a deployment
badgr_down(deployment_id: string)Terminates the deployment and stops billing immediately.
Returns: { status, message } — always call this when done.
Smithery tool names
The server also exposes tools used for registry listings (the first three are aliases or helpers for Run and Serve, the next three cover the AI API and Launch products):
Tool | Behavior |
| Same as |
| Same as |
|
|
| Launches an autonomous agent job on a GitHub repository, verified by your |
|
|
|
|
Call badgr_down when a deployment is finished so billing stops.
Hosted HTTP mode
node src/server.js --http (or set PORT) serves the same tools at POST /mcp over streamable HTTP, with GET /health. Every request must carry Authorization: Bearer <Badgr API key>; the server uses that caller's key for Badgr calls, so a shared host never spends someone else's credits. The server never falls back to a BADGR_API_KEY env var in this mode, so an unauthenticated caller cannot spend the host's credits. Each request is stateless. Put TLS in front of it.
Publishing to Smithery
smithery.yaml and Dockerfile in this folder describe a stdio deployment. In Smithery, connect the GitHub repo and set the base directory to packages/badgr-mcp. Users supply badgrApiKey (plus optional price cap, runtime cap and base URL) as Smithery config, which maps to the environment variables below. Publishing on Smithery is a manual step done from a Smithery account. The smithery.yaml here describes the stdio deployment; whether Smithery's current flow wants that or the hosted HTTP mode above was not verified.
Environment variables
Variable | Required | Default | Description |
| Yes | — | Your Badgr API key from aibadgr.com |
| No |
| API endpoint override |
| No |
| Hard $/hr cap applied to all jobs |
| No |
| Max minutes for |
| No |
| Hard USD cap on one |
BADGR_MAX_PRICE and BADGR_MAX_RUNTIME are safety limits — the server enforces these regardless of what the agent requests.
Example agent workflow
Serve a model and use it:
Agent: badgr_serve("meta-llama/Llama-3.1-8B-Instruct", max_runtime_minutes=30)
← { deployment_id: "dep-abc123", openai_base_url: "https://dep-abc123.aibadgr.com/v1", cost_per_hour: 1.20 }
Agent: [uses openai_base_url to run inference]
Agent: badgr_down("dep-abc123")
← { status: "terminated", message: "Billing stopped" }Run a fine-tuning job:
Agent: badgr_run(["python", "train.py"], gpu="A100", image="pytorch/pytorch:2.1.0-cuda12.1-cudnn8-runtime")
← { deployment_id: "dep-xyz789", status: "running", logs_url: "..." }
Agent: badgr_logs("dep-xyz789")
← { log_text: "Epoch 1/10: loss=2.34..." }Requirements
Node.js 18+
A Badgr API key — sign up at aibadgr.com
An MCP-compatible coding agent (Claude, Cursor, Copilot, or any client that supports MCP)
Available Tools
11 toolsai_chatB
Call the Badgr AI API (OpenAI-compatible chat completion) and return the reply with token usage. max_tokens is capped at 4096 per call. Usage is metered.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | Model ID to call | |
| messages | Yes | ||
| max_tokens | No | ||
| temperature | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose two genuinely useful traits: max_tokens is capped at 4096 per call and usage is metered (billable). It does not cover auth requirements, rate limits, error behavior, or what happens when a model ID is invalid, which leaves meaningful gaps for a billed network call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what the tool does, followed by the two constraints that matter (token cap, metering). No filler, no repetition of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple four-parameter chat proxy with no output schema, the description covers the return shape (reply + token usage) and the token ceiling. It is still missing model discovery, temperature guidance, and failure modes, so an agent can call it but not fully predict behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% — just the 'model' field has a description, and it is circular ('Model ID to call'). The description adds nothing about the messages array structure, role semantics, or temperature behavior, and its 4096 cap restates the schema's maximum rather than adding meaning. Low coverage with no compensating detail puts this below the 3 baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: calls the Badgr AI API as an OpenAI-compatible chat completion and returns the reply plus token usage. That is unambiguous and clearly distinct from the deployment/lifecycle siblings (deploy_model, badgr_run, check_result). It stops short of explicitly naming where an alternative might apply, which keeps it at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no exclusions. Nothing tells the agent when to prefer this over launch_agent_task or deploy_model, nor what prerequisites exist (model availability, credentials). The 'OpenAI-compatible chat completion' phrase only implies usage; the agent must infer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
badgr_downB
Terminate a Badgr deployment and stop billing.
| Name | Required | Description | Default |
|---|---|---|---|
| deployment_id | Yes | Deployment ID to terminate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. "Terminate" implies a destructive, likely irreversible action, but the description never says whether data/volumes are lost, whether shutdown is graceful, whether billing stops immediately, or how a missing/already-terminated deployment is handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the action and its effect front-loaded; zero filler. The only issue is that more content would have been justified, not that anything is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema this is minimally sufficient to invoke correctly, but for an unannotated destructive operation the description should disclose irreversibility and any data-loss semantics, which it does not.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is documented as "Deployment ID to terminate," so the baseline of 3 applies. The description adds nothing about ID format or how to obtain a valid deployment_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ("Terminate") plus specific resource ("a Badgr deployment") and an explicit outcome ("stop billing"). It is clearly the teardown counterpart to badgr_run/badgr_serve, though it never names those siblings directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to call this versus badgr_status or badgr_run, no prerequisites, and no exclusions. The agent must infer that this is the stop/decommission operation and that it should only be used on a deployment that should no longer exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
badgr_logsC
Fetch logs for a Badgr deployment.
| Name | Required | Description | Default |
|---|---|---|---|
| deployment_id | Yes | Deployment ID (returned by badgr_run or badgr_serve) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but discloses nothing behavioral: no indication of whether the call blocks until completion, whether logs are tailed or truncated, how large a payload to expect, or whether the deployment must still be live. Only the schema hint that deployment_id comes from badgr_run/badgr_serve adds any operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short, front-loaded sentence with no filler. It is efficient, though the brevity reflects under-specification rather than tight editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A single-parameter read tool with a fully documented schema, so the core invocation is answerable. But with no output schema and no annotation coverage, the description should say something about what logs come back and in what form; that gap leaves it merely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is documented with its provenance (returned by badgr_run or badgr_serve). The description adds nothing beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Fetch) and resource (logs) scoped to a Badgr deployment, which is clear on its own. However, it never distinguishes this from sibling tools like badgr_status or badgr_down, which an agent must guess between when diagnosing a deployment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus badgr_status (health) or badgr_down (teardown), and no prerequisites such as the deployment needing to exist or be running. The agent is left to infer that logs are only meaningful after badgr_run/badgr_serve.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
badgr_runA
Run a one-off GPU job via Badgr. Returns deployment_id, status, receipt_id, logs_url. Hard limits: max_price_per_hour ≤ $5/hr. Always confirm with the user before running jobs that cost > $1/hr.
| Name | Required | Description | Default |
|---|---|---|---|
| gpu | No | GPU type: RTX_4090, A100, L40S, H100 (default: RTX_4090) | RTX_4090 |
| name | No | Job name (auto-generated if omitted) | |
| image | No | Docker image (default: python:3.11-slim) | |
| region | No | Optional region preference. | |
| command | No | Container command, e.g. ["python", "train.py", "--epochs", "10"] | |
| gpu_count | No | Number of GPUs (default: 1) | |
| max_price_per_hour | No | Max spend cap in USD/hr (hard limit: $5/hr) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden. It does useful work by disclosing the return fields and the $5/hr hard cap plus a $1/hr human-confirmation gate — meaningful safety context. However it never says whether the call blocks until the job finishes or returns immediately after submission, nor what happens on capacity failure, which is the key behavioral unknown for a job-launch tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences: what it does, what it returns, what the limits are. Front-loaded and every sentence adds a distinct fact. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so listing deployment_id/status/receipt_id/logs_url is valuable, and the cost guardrails fill the annotation gap. Missing only the synchronous-vs-asynchronous execution model and what a minimal valid invocation looks like given zero required parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description earns a bump by restating the max_price_per_hour ceiling alongside the operational rule that ties it to user confirmation. It does not add meaning for gpu, image, region, or command beyond the schema, but it does link the price cap to behavior rather than just a constraint.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource: 'Run a one-off GPU job via Badgr'. The word 'one-off' implicitly distinguishes it from badgr_serve (long-running serving), but no sibling is named explicitly. An agent can tell what it does without reading the schema, but must infer the boundary with badgr_serve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'One-off' hints at the exclusion versus persistent serving tools like badgr_serve/deploy_model, but that contrast is never stated. The cost-confirmation rule ('always confirm with the user before running jobs that cost > $1/hr') is a concrete, actionable usage constraint. No explicit when-not guidance or named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
badgr_serveA
Provision a persistent OpenAI-compatible endpoint for an LLM model. Returns endpoint_url, deployment_id, receipt_id. The endpoint stays up (billing runs) until badgr_down is called. Hard limits: max_price_per_hour ≤ $5/hr. max_runtime_minutes is REQUIRED — agents must not create open-ended billing. Always confirm with the user before serving.
| Name | Required | Description | Default |
|---|---|---|---|
| gpu | No | GPU type: L40S, A100, H100, RTX_4090 (default: L40S) | L40S |
| name | No | Deployment name (auto-generated if omitted) | |
| model | Yes | HuggingFace model ID, e.g. meta-llama/Llama-3.1-8B-Instruct | |
| region | No | Optional region preference. | |
| gpu_count | No | Number of GPUs (default: 1) | |
| max_price_per_hour | No | Max spend cap in USD/hr (hard limit: $5/hr) | |
| max_runtime_minutes | Yes | Auto-terminate after this many minutes. Required — prevents runaway billing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses the persistent billing lifecycle ('stays up (billing runs) until badgr_down'), hard price cap, required runtime limit, and the need to confirm with the user. It also names key return values. Minor gaps remain, such as failure modes or provisioning time, but core safety and lifecycle traits are surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is tightly structured: it front-loads the purpose, then covers return values, lifecycle, hard limits, and a safety confirmation in five efficient sentences. Every sentence contributes actionable information with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of annotations and output schema, the description provides substantial context: purpose, return fields, billing lifecycle, required safety parameter, hard price cap, and user-confirmation rule. It is nearly complete for safe invocation, though it does not clarify behavior on provisioning failure or how the endpoint relates to similar sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 all seven parameters in detail. The description reinforces the required nature of max_runtime_minutes and the $5/hr price cap, but these are also present in the schema descriptions. It adds little parameter-specific meaning beyond the schema baseline, so a 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Provision a persistent OpenAI-compatible endpoint for an LLM model.' This is clear and actionable. However, it does not distinguish this tool from sibling tools like deploy_model or run_workload, which could also be used for model deployment. The reference to badgr_down clarifies lifecycle but not when to choose badgr_serve over other launching tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: it is for persistent serving, billing runs until badgr_down is called, max_runtime_minutes is required, and the agent must confirm with the user before serving. This covers when to use and a key prerequisite. It stops short of explicitly comparing with alternatives like deploy_model or run_workload, so no full when-not guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
badgr_statusA
List active Badgr GPU deployments for this account.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It usefully discloses two traits: the result is filtered to 'active' deployments only, and it is scoped to the caller's account rather than all accounts. It does not say whether results are paginated, what 'active' means, or what the response looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and scope, with no filler. Every clause earns its place by narrowing the result set.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool this is close to adequate, but with no annotations and no output schema the agent still cannot tell what a status entry contains or how to interpret 'active'. A brief note on return shape would complete it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. It correctly implies no filtering arguments are needed because account scope is implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('active Badgr GPU deployments') scoped to 'this account'. An agent can distinguish it from badgr_run/badgr_down/badgr_logs by the listing intent, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the discovery/status check before or after run/down/serve, but the description gives no explicit when-to-use or when-not-to-use guidance and names no alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_launch_taskB
Check an agent task started with launch_agent_task: status, cost so far, verification output, receipt and recent log lines.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | job_id returned by launch_agent_task | |
| log_lines | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it partially meets it by naming the returned fields (status, cost so far, verification output, receipt, logs). It does not say whether the call is a safe read, whether it polls or blocks, whether cost is cumulative, or how log output is bounded — gaps that matter for a monitoring tool with no annotations and no 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with a colon-delimited list of return contents; every clause adds information and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate but incomplete: it names the returned fields, which is valuable given there is no output schema, but it leaves log_lines unexplained and omits behavioral traits (read-only nature, cost semantics, log truncation) for a tool with zero annotation coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: job_id is documented in both schema and description, but log_lines appears nowhere in the description and has no schema description (only type/min/max/default). The description does not compensate for the undocumented parameter, which controls how much log output is returned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check an agent task') and enumerates what it reports: status, cost, verification output, receipt, log lines. Ties it explicitly to launch_agent_task, which separates it from generic status siblings. It doesn't differentiate against check_result or badgr_status, keeping it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'started with launch_agent_task' gives clear implied context — use it to poll a task you launched. But there is no explicit when-not-to-use guidance and no mention of the check_result sibling that could plausibly serve a similar role, so an agent still has to infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_resultA
Check the state of one Badgr deployment and fetch its most recent log lines. Use after run_workload or deploy_model, with the returned deployment_id. Call badgr_down when the deployment is finished so billing stops.
| Name | Required | Description | Default |
|---|---|---|---|
| log_lines | No | Number of most recent log lines to return (default: 50) | |
| deployment_id | Yes | Deployment ID returned by run_workload or deploy_model |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden; it does communicate that this is a state-read plus log-fetch and that leaving a deployment running accrues billing. It omits what 'state' values are possible, whether this call itself has side effects or cost, and any latency or retry characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, no waste, with purpose front-loaded before the sequencing hint and the billing warning. Every sentence carries actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should explain what comes back; it names 'state' and 'log lines' but does not enumerate states or indicate log formatting. For a status-check tool this leaves a meaningful gap, though the lifecycle guidance is solid.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
deployment_id provenance is added beyond the schema ('returned by run_workload or deploy_model'). log_lines is left entirely to the schema, which already documents default 50 and the 0-500 range at 100% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: check state of one Badgr deployment plus fetch recent log lines. It ties itself to the run_workload/deploy_model lifecycle, though it does not distinguish itself from siblings badgr_status or badgr_logs, which appear to overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('use after run_workload or deploy_model, with the returned deployment_id') and a follow-up action ('call badgr_down when finished so billing stops'). No exclusion versus badgr_status/badgr_logs is stated, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_modelA
Provision a persistent OpenAI-compatible endpoint for an LLM model. Returns endpoint_url, deployment_id, receipt_id. The endpoint stays up (billing runs) until badgr_down is called. Hard limits: max_price_per_hour ≤ $5/hr. max_runtime_minutes is REQUIRED — agents must not create open-ended billing. Always confirm with the user before serving.
| Name | Required | Description | Default |
|---|---|---|---|
| gpu | No | GPU type: L40S, A100, H100, RTX_4090 (default: L40S) | L40S |
| name | No | Deployment name (auto-generated if omitted) | |
| model | Yes | HuggingFace model ID, e.g. meta-llama/Llama-3.1-8B-Instruct | |
| region | No | Optional region preference. | |
| gpu_count | No | Number of GPUs (default: 1) | |
| max_price_per_hour | No | Max spend cap in USD/hr (hard limit: $5/hr) | |
| max_runtime_minutes | Yes | Auto-terminate after this many minutes. Required — prevents runaway billing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses persistent billing, the teardown dependency on badgr_down, hard cost and runtime limits, and a mandatory user confirmation step. It stops short of describing authentication needs or failure modes, leaving some behavioral gaps for a provisioning operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five sentences, front-loaded with the core action, then return values, lifecycle, limits, and a safety instruction. Every sentence earns its place with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description supplies the critical missing context: return fields, persistent billing, teardown mechanism, and required safeguards. It could be more complete by noting what happens on provisioning failure or whether the endpoint requires credentials, but the essential information for correct invocation is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 all seven parameters. The description reinforces the required nature of max_runtime_minutes and the $5/hr cap, but adds no syntax, format, or edge-case detail beyond what the schema provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Provision a persistent OpenAI-compatible endpoint for an LLM model.' It distinguishes the tool from teardown sibling badgr_down via lifecycle context, but does not explicitly name or contrast with other provisioning alternatives like badgr_serve or run_workload.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied through the lifecycle note ('stays up until badgr_down is called') and the requirement to confirm with the user before serving. However, there is no explicit guidance on when to prefer this tool over siblings such as badgr_serve or run_workload, nor are there exclusions or prerequisites beyond the required runtime cap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
launch_agent_taskA
Launch an autonomous coding agent on a GitHub repository. The job is verified by running check. max_cost is REQUIRED (hard limit $5); max_runtime_minutes is REQUIRED (limit 60). Returns a job_id: poll with check_launch_task, and read the receipt when it finishes. Always confirm with the user before launching.
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | claude | |
| check | Yes | Shell command that must succeed for the task to count as done | |
| max_cost | Yes | Hard cost cap in USD (max 5) | |
| repository | Yes | GitHub repository URL (https://github.com/owner/repo) | |
| instruction | Yes | What the agent should do | |
| max_runtime_minutes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load and does well: it discloses hard cost/runtime caps, that verification runs `check`, that a job_id is returned, and that user confirmation is required. It omits key side-effect details – whether the agent commits/pushes/opens PRs on the repo and what happens on failure or timeout – which matters for a mutating launch.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then verification, limits, return/workflow, and the confirmation rule – every sentence carries information an agent needs. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the launch-verify-poll-receipt lifecycle and the required-parameter emphasis, which is enough to invoke it correctly, and there's no output schema to explain. The gap is agent-selection guidance and failure/side-effect semantics for a tool that can mutate a repository.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%. The description restates the max_cost and max_runtime_minutes constraints that the schema already enforces (maximum 5, maximum 60) rather than adding guidance. It says nothing about the `agent` enum (claude/codex/cline/...), its default, or how `repository`/`instruction` should be formed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Launch an autonomous coding agent on a GitHub repository') plus the verification mechanism, and names the sibling (check_launch_task) used to follow up. An agent can tell exactly what this does relative to check_launch_task or the badgr_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete workflow rule ('Always confirm with the user before launching') and explicitly routes follow-up polling to check_launch_task. It stops short of stating when NOT to use it (e.g. vs. run_workload or a specific agent choice), so it's not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_workloadA
Run a one-off GPU job via Badgr. Returns deployment_id, status, receipt_id, logs_url. Hard limits: max_price_per_hour ≤ $5/hr. Always confirm with the user before running jobs that cost > $1/hr.
| Name | Required | Description | Default |
|---|---|---|---|
| gpu | No | GPU type: RTX_4090, A100, L40S, H100 (default: RTX_4090) | RTX_4090 |
| name | No | Job name (auto-generated if omitted) | |
| image | No | Docker image (default: python:3.11-slim) | |
| region | No | Optional region preference. | |
| command | No | Container command, e.g. ["python", "train.py", "--epochs", "10"] | |
| gpu_count | No | Number of GPUs (default: 1) | |
| max_price_per_hour | No | Max spend cap in USD/hr (hard limit: $5/hr) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does reasonably well: it declares the return fields (deployment_id, status, receipt_id, logs_url), a hard spend cap, and a user-confirmation gate for costly jobs. It omits lifecycle behavior an agent would want — whether the job is billed until stopped, how to terminate it (presumably badgr_down), and whether the call blocks or returns immediately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: capability and return values first, then the hard limit, then the confirmation rule. Nothing is wasted and the most decision-relevant constraint is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-annotation, zero-output-schema job launcher, the description covers what the tool does, what it returns, and the cost guardrails. The remaining gap is post-launch lifecycle and cancellation guidance, which matters for a billable GPU job but is a single missing piece rather than a systemic hole.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters are documented in the schema itself, making 3 the baseline. The description only restates the $5/hr ceiling already encoded as the schema maximum, adding no syntax, units, or interaction detail beyond structured data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Run a one-off GPU job via Badgr') and the word 'one-off' implicitly separates it from persistent-serving siblings like badgr_serve. However, it never distinguishes itself from the confusingly similar sibling badgr_run or from deploy_model, which an agent would need in order to choose correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
One concrete operational rule is given ('Always confirm with the user before running jobs that cost > $1/hr'), which is genuinely useful gating behavior. But there is no explicit statement of when to prefer badgr_run, badgr_serve, or deploy_model, so the usage boundary is only implied by 'one-off'.
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.
11 tool updates
v1.1.0- First observed
ai_chat - First observed
badgr_down - First observed
badgr_logs - First observed
badgr_run - First observed
badgr_serve - First observed
badgr_status - First observed
check_launch_task - First observed
check_result - First observed
deploy_model - First observed
launch_agent_task - First observed
run_workload
TDQS
Scored across 11 tools
The set contains exact duplicate purposes: badgr_run and run_workload both run a one-off GPU job with identical descriptions, and badgr_serve and deploy_model both provision a persistent endpoint identically. badgr_status and check_result also overlap on deployment state inspection, making misselection highly likely.
Naming mixes a badgr_ prefix (badgr_run, badgr_status, badgr_logs) with unrelated generic verb_noun names (run_workload, deploy_model, check_result) and an unaffixed ai_chat. The duplication across naming schemes makes the surface feel inconsistent rather than deliberately organized.
Eleven tools is a reasonable raw count for the GPU compute domain, but two pairs are exact duplicates, so the effective surface is smaller and the count overstates the real capability. The set would be better scoped if duplicates were removed.
The lifecycle is broadly covered: run jobs, serve endpoints, check status/logs, tear down billing, call chat, and launch/check autonomous agent tasks. Minor gaps exist around pricing/model discovery or richer cost inspection, but core workflows are reachable.
Maintenance
Related MCP Connectors
HiveCompute MCP Server — decentralized inference router for AI agents
Pay-per-use tool marketplace for AI agents. Search, price-check, and call APIs via MCP.
Command your AI agents: verifiable passports, credential injection, full audit, revoke in 60s.
Scoped agent execution. Server-side credentials, policy, budgets and verifiable receipts.
Related MCP Servers
- AlicenseAqualityCmaintenanceJungle Grid MCP Server lets AI agents submit, estimate, monitor, and retrieve logs for GPU workloads through Jungle Grid. It enables agentic execution for inference, training, fine-tuning, and batch jobs without manually choosing GPU providers or infrastructure.86 npm4MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to discover, reserve, and dispatch inference to GPU nodes via MCP tools, using signed handles for stateless reservation management.Apache 2.0
- AlicenseBqualityAmaintenanceZero-quota GPU orchestration MCP server — lets AI agents discover, provision, and manage GPU compute across multi-datacenter partner nodes (H100/H200/B200) through a single control plane.4128 npmMIT
- AlicenseBqualityBmaintenanceEnables AI agents to submit GPU job requests, select eligible workers, track execution, and retrieve results via MCP.1421MIT