/v2/mcp/).
This is not the mcp capability you declare inside an
environment. Platform MCP queries platform data. An env capability exposes tools inside a live
sandbox.
Setup
Create a key in Settings → API Keys. Point your MCP client athttps://api.beta.hud.ai/v2/mcp/ with that key on every request.
hud-platform with URL https://api.beta.hud.ai/v2/mcp/ and header
Authorization: Bearer <HUD_API_KEY> (or X-API-Key: <HUD_API_KEY>). Then call
list_environments to verify. Do not invent tool names; use the catalog the server returns.
Before creating or editing HUD environments or tasks, install the docs skill if
missing: npx skills add https://docs.hud.ai - then follow
hud-environment-builder. This server is for catalog and runs only.Authentication
Same projectHUD_API_KEY as REST. Send it as Authorization: Bearer sk-hud-… or as
X-API-Key. Missing or invalid credentials fail the tool call as unauthorized.
The server is read-only: it can list and fetch, not create jobs, deploy environments, or
mutate tasks. Visibility matches your team’s key (same authz as the REST surface).
How tools chain
Tools fall into three groups. Entrypoints discover IDs. Information is the task catalog. Runs is execution: jobs and what each attempt did. Responses carry chainable IDs (environment_id, taskset_id, job_id, trace_id), so you can jump between catalog and runs.
list_environments→get_environment→get_taskset_tasksorlist_jobslist_tasksets→get_taskset_tasksorlist_jobslist_jobs→get_job_traces→get_trace→get_trace_events
limit (default 20, max 100) and offset. When more rows remain, the
response includes next_offset. Event paging uses since_seq instead (see get_trace_events).
Entrypoints
Discovery when you do not have IDs, or when you want to re-enter from a list.list_environments - List your team's environments (newest first).
list_environments - List your team's environments (newest first).
search is a case-insensitive substring match on
environment name.{ items, total, next_offset? } with id, name, build_status, public.
Next: get_environment.list_tasksets - List your team's tasksets (newest first).
list_tasksets - List your team's tasksets (newest first).
search matches taskset name. For tasksets on one environment, prefer
get_environment (it embeds them).id, name, task_count, environment_id.
Next: get_taskset_tasks or list_jobs.list_jobs - List recent jobs with rollup trace stats.
list_jobs - List recent jobs with rollup trace stats.
total_traces, avg_reward, non-zero status counts).id, name, status, taskset_id, taskset_name, created_at,
traces rollup.
Next: get_job_traces; get_taskset_tasks when a row has taskset_id.Information
What can run and what each task is.get_environment - One environment: build, templates, and tasksets.
get_environment - One environment: build, templates, and tasksets.
id, name, description, github_url, templates, latest_build, tasksets.
Next: get_taskset_tasks or list_jobs with a taskset_id.get_taskset_tasks - Tasks in a taskset (filled-in template instances).
get_taskset_tasks - Tasks in a taskset (filled-in template instances).
id, name, description, template, args.
Next: list_jobs for runs on this bundle.Runs
How tasks ran: open a job, then a trace, then zoom into events.get_job_traces - One job: header, stats, and a page of traces.
get_job_traces - One job: header, stats, and a page of traces.
limit / offset page that job’s attempts, not the job list.traces: { stats, items, total, next_offset? }. Each item has id,
status, reward, clipped error, created_at.
Next: get_trace on a row from traces.items.get_trace - Verdict, task context, and a lean trajectory outline.
get_trace - Verdict, task context, and a lean trajectory outline.
get_trace_events. The outline and points_of_interest use seq (the event index)
as the cursor: zoom into seq K with get_trace_events(trace_id, since_seq=K-1) (since_seq is
exclusive). Outline lines tagged [screenshot] point at frames; open screenshot_url from the
events tool (never inlined).trajectory_outline, points_of_interest, and a
short response guide.
Next: get_trace_events.get_trace_events - Full events for a trace, ordered by seq.
get_trace_events - Full events for a trace, ordered by seq.
seq values from get_trace’s outline or points_of_interest. Screenshots are HTTPS links
on tool_call events (screenshot_url), not inline bytes.events, a showing summary, and next_since_seq / remaining when more match.
Next: continue paging, or return to get_trace for the outline.