Skip to main content
Glama
Badgr — GPU Compute for AI Agents  Copy

Badgr — GPU Compute for AI Agents Copy

Official
by AiBadgr

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-mcp

The 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-Instruct on 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

run_workload

Same as badgr_run (same inputs and price cap)

deploy_model

Same as badgr_serve (same inputs, price cap and required max_runtime_minutes)

ai_chat

ai_chat(model, messages, max_tokens?, temperature?) calls the Badgr AI API (OpenAI-compatible chat) and returns the reply with token usage. max_tokens is capped at 4096

launch_agent_task

Launches an autonomous agent job on a GitHub repository, verified by your check command. max_cost and max_runtime_minutes are required and clamped to server limits

check_launch_task

check_launch_task(job_id, log_lines?) returns status, cost, output, receipt and recent logs for a launched task

check_result

check_result(deployment_id, log_lines?) returns the deployment's status, GPU, cost, endpoint and its last log_lines log lines (default 50, max 500)

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

BADGR_API_KEY

Yes

—

Your Badgr API key from aibadgr.com

BADGR_BASE_URL

No

https://aibadgr.com/v1

API endpoint override

BADGR_MAX_PRICE

No

5.0

Hard $/hr cap applied to all jobs

BADGR_MAX_RUNTIME

No

60

Max minutes for badgr_serve, deploy_model and launch_agent_task

BADGR_MAX_JOB_COST

No

5.0

Hard USD cap on one launch_agent_task

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 tools
ai_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.

NameRequiredDescriptionDefault
modelYesModel ID to call
messagesYes
max_tokensNo
temperatureNo

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
deployment_idYesDeployment ID to terminate

TDQS

B3.1/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 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
deployment_idYesDeployment ID (returned by badgr_run or badgr_serve)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
gpuNoGPU type: RTX_4090, A100, L40S, H100 (default: RTX_4090)RTX_4090
nameNoJob name (auto-generated if omitted)
imageNoDocker image (default: python:3.11-slim)
regionNoOptional region preference.
commandNoContainer command, e.g. ["python", "train.py", "--epochs", "10"]
gpu_countNoNumber of GPUs (default: 1)
max_price_per_hourNoMax spend cap in USD/hr (hard limit: $5/hr)

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
gpuNoGPU type: L40S, A100, H100, RTX_4090 (default: L40S)L40S
nameNoDeployment name (auto-generated if omitted)
modelYesHuggingFace model ID, e.g. meta-llama/Llama-3.1-8B-Instruct
regionNoOptional region preference.
gpu_countNoNumber of GPUs (default: 1)
max_price_per_hourNoMax spend cap in USD/hr (hard limit: $5/hr)
max_runtime_minutesYesAuto-terminate after this many minutes. Required — prevents runaway billing.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

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 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.

Purpose4/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
job_idYesjob_id returned by launch_agent_task
log_linesNo

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
log_linesNoNumber of most recent log lines to return (default: 50)
deployment_idYesDeployment ID returned by run_workload or deploy_model

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 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
gpuNoGPU type: L40S, A100, H100, RTX_4090 (default: L40S)L40S
nameNoDeployment name (auto-generated if omitted)
modelYesHuggingFace model ID, e.g. meta-llama/Llama-3.1-8B-Instruct
regionNoOptional region preference.
gpu_countNoNumber of GPUs (default: 1)
max_price_per_hourNoMax spend cap in USD/hr (hard limit: $5/hr)
max_runtime_minutesYesAuto-terminate after this many minutes. Required — prevents runaway billing.

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

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 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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
agentNoclaude
checkYesShell command that must succeed for the task to count as done
max_costYesHard cost cap in USD (max 5)
repositoryYesGitHub repository URL (https://github.com/owner/repo)
instructionYesWhat the agent should do
max_runtime_minutesYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
gpuNoGPU type: RTX_4090, A100, L40S, H100 (default: RTX_4090)RTX_4090
nameNoJob name (auto-generated if omitted)
imageNoDocker image (default: python:3.11-slim)
regionNoOptional region preference.
commandNoContainer command, e.g. ["python", "train.py", "--epochs", "10"]
gpu_countNoNumber of GPUs (default: 1)
max_price_per_hourNoMax spend cap in USD/hr (hard limit: $5/hr)

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 11 tool updatesv1.1.0
    • First observedai_chat
    • First observedbadgr_down
    • First observedbadgr_logs
    • First observedbadgr_run
    • First observedbadgr_serve
    • First observedbadgr_status
    • First observedcheck_launch_task
    • First observedcheck_result
    • First observeddeploy_model
    • First observedlaunch_agent_task
    • First observedrun_workload

TDQS

B3.1/5.0

Scored across 11 tools

Disambiguation1/5

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 Consistency2/5

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.

Tool Count3/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers