coverage ≥ 0.75 rubric — so the same sample trains an SFT model and seeds an RL rollout.
Overview
Data
task_id is the bundle. The task’s servers live in a field inside task.json ("servers": ["filesystem","git","mongodb"]), not in directory names.
What each file holds
The key design point: a write task has a realized world (the
final snapshot is what “success” looks like), while the claims are the system-agnostic reward — a fact like “the ‘community_garden’ database contains a collection ‘garden_plots’” is checkable regardless of how the agent got there.
env.jsonl is a faithful replay of the agent’s tool I/O — every response is the real result the tool returned during the solve (from the read-through corpus, which serves frozen real API data on first reference and grows on miss). A bundle is rl_ready only when n_hollow_steps == 0, i.e. no step returned an empty / un-replayable response.Server roles (per manifest)
Each bundle classifies the MCP servers it touched by how the environment is reconstructed:
Full task: Mustang-restoration project tracker (03085ddcf7047f3e)
Task & claims
Task & claims
Task:
I’m restoring a 1967 Ford Mustang in Austin and need to set up a project tracker. Look up Austin’s geographic coordinates, verify the domain mustangrestore.com is legitimate by checking its registration status, calculate a preliminary budget from parts costs of 3500, 500, and confirm there’s a Project Management base available to track the restoration tasks.
Expected artifact:A project-tracker summary containing Austin’s coordinates, the domain-verification status, the calculated budget total, and confirmation of a Project Management base.Servers (5):
osm-mcp-server, whois, calculator, airtable, ddg-searchClaims (4):Agent trajectory (verbatim from trajectory.json)
Agent trajectory (verbatim from trajectory.json)
Each assistant step is shown with its four message components separated exactly as they appear in
Step 1 — fan out the four independent readsReasoning (Tool results (
Step 2 — try to fetch the (not-yet-existing) summary fileReasoning:Tool results:
Step 3 — recognize the limitation, pivot to the Airtable baseReasoning:Tool results:
Step 4 — write the kickoff record into the confirmed baseReasoning:Tool results:
Step 5 — final answerReasoning:
trajectory.json: Reasoning (reasoning_content, the chain-of-thought) · Tool calls (tool_calls) · Tool results (the following tool-role messages) · and, on the last step, the assistant Content (the user-visible answer).System (role: system):You are an autonomous agent. Solve the user’s task by calling the provided tools. Think step by step; decide the next action from what you’ve observed. Don’t fabricate tool outputs; rely only on real results.User (
role: user):
I’m restoring a 1967 Ford Mustang in Austin and need to set up a project tracker. Look up Austin’s geographic coordinates, verify the domain mustangrestore.com is legitimate by checking its registration status, calculate a preliminary budget from parts costs of 3500, 500, and confirm there’s a Project Management base available to track the restoration tasks.
Step 1 — fan out the four independent readsReasoning (
reasoning_content):Let me break down the task: (1) look up Austin’s geographic coordinates, (2) verify the domain mustangrestore.com by checking its registration status, (3) calculate a preliminary budget from the parts costs, (4) confirm a Project Management base. These are independent — I’ll issue them together.Tool calls (
tool_calls):role: tool):Step 2 — try to fetch the (not-yet-existing) summary fileReasoning:
Great, I have all four facts: Austin (30.285, -97.734); mustangrestore.com is registered with GoDaddy (created 2013-04-13, expires 2027); budget $11,000; and the Project Management base exists. Let me check the summary file the task implies.Tool calls:
Step 3 — recognize the limitation, pivot to the Airtable baseReasoning:
The fetch_content tool doesn’t work for local files, and I don’t see a direct file-write tool in the available functions. Let me inspect the Project Management base (BASE004) instead.Tool calls:
Step 4 — write the kickoff record into the confirmed baseReasoning:
The Project Management base (BASE004) has a “Restoration Milestones” table, which is relevant for tracking the project. I’ll create the kickoff record there.Tool calls:
Step 5 — final answerReasoning:
I’ve created the record. The task asked for a “project tracker summary”; since there’s no file-write tool, I’ll deliver the summary directly to the user.Content (
content, user-visible):I’ve completed all the required tasks for your 1967 Ford Mustang restoration project tracker:Note the agent (a) fans out the four independent reads in one step, (b) discovers
- Austin coordinates: 30.2851, -97.7339
- Domain:
mustangrestore.comis registered (GoDaddy, created 2013-04-13, statusclientDeleteProhibited) — legitimate- Preliminary budget: $11,000
- Project Management base (BASE004) confirmed; a kickoff record was created in the Restoration Milestones table
BASE004 via list_bases before writing to it, and (c) when fetch_content can’t serve a local file, states the limitation and pivots rather than fabricating a written file.Grading & ground truth (4/4 claims, coverage 1.0)
Grading & ground truth (4/4 claims, coverage 1.0)
claims.json ships the per-claim verdict the grader produced — all four grounded in real tool output:all_pass=true). The realized world — the Airtable kickoff record — is captured in the shared fixture; whois / osm / calculator are stateless replayable_servers served from real frozen responses, so env/workspace_init carries the sandbox baseline an RL rollout restores from.How to consume
SFT —trajectory.json is ready-to-train OpenAI-style messages (system / user / assistant-with-reasoning_content+tool_calls / tool). The action space (every tool of every server the task touches) comes from the benchmark’s upstream tool schemas.
RL — restore env/workspace_init/ into a fresh per-task sandbox, let your policy act, then grade its trajectory against claims.json (coverage ≥ 0.75 = pass). env.jsonl provides the reference tool I/O for replay or for seeding the rollout; env/workspace_final/ is the golden end state for write tasks.
Verification
Every bundle was delivered by a grader, not by signal alone: the agent re-solved the task in a fresh per-task sandbox, and a per-claim LLM judge scored its trajectory. A bundle ships only when coverage ≥ 0.75 (the MCP-Atlas pass threshold) and no tool returned a not-implemented / broken result. Themanifest records the real coverage and an all_pass flag, so a strict consumer can post-filter to 100%-claim bundles.
Provenance
- Tasks are proposed by an LLM grounded in the live tool graph, then really executed against the local MCP mirror — tool calls and arguments are grounded in actual tool responses, not invented.
- Tool data is real. Mocked servers serve frozen real API responses (e.g. real Met objects, real Wikipedia articles, real GitHub repos); on a cache miss the read-through layer fetches the genuine upstream and appends it to the corpus. Mock tool schemas are byte-identical to the benchmark’s upstream servers, so a trajectory transfers to the live eval unchanged.
- Claims are factual and non-time-sensitive (no “current price” / “today’s” style claims), extracted from the executed trajectory and graded against it.
Download
Browse on Hugging Face
View MCP-Atlas files
For the complete MCP-Atlas corpus — its scale, the full server graph, and commercial licensing — see the Full Dataset page.