You asked your agent a simple question: "Which of these three datasets has the cleanest schema for a customer-support fine-tune?" Two seconds later, your prompt context is gone. Three CSVs, two README files, and a JSON manifest are sitting in your model window, eating 47,000 tokens before the agent has even started reasoning. You didn't ask for an analysis. You asked a question. There has to be a better way.
There is. EVIDIQ Atlas is our pay-per-call MCP tool that lets an agent query datasets from AI agents the same way a developer would hit a REST endpoint: small request in, structured answer out, full artifact if you want the receipts. No token dumping. No "let me just paste the whole CSV into the prompt." In this piece we'll walk through what Atlas actually does, why metered queries beat context-stuffing by a wide margin, and how it slots into the rest of the EVIDIQ MCP family.
Querying Datasets From an AI Agent, Defined
To query datasets from AI agents means sending a structured MCP request to an external dataset service, which runs the analysis server-side and returns findings and an optional artifact — instead of the agent pulling raw rows into its context window. EVIDIQ Atlas is a pay-per-call, x402-priced implementation of that pattern, callable from any MCP-compatible agent.
That's the clean definition. The longer version matters too, because most teams get this wrong on their first attempt.
The natural instinct when an agent needs to "know" something about a dataset is to feed the dataset to the model. Pass the CSV as a tool result. Inline a few hundred rows as context. Hope the model can pattern-match across the columns without hallucinating a column that isn't there. It works — until the dataset is bigger than a few thousand tokens, at which point three things go wrong at once: you start paying for tokens that aren't doing reasoning, latency climbs because every prompt turn re-processes the rows, and accuracy drops because the model is now doing data engineering in a slot designed for chat.
Atlas flips the direction. The agent holds a question. The dataset lives elsewhere. The tool call asks a remote analyzer to do the work and ship a small answer back. Here's the shape of the contract:
- Request: a small JSON payload naming the dataset URI, the analysis kind (schema inspection, row counts, type inference, statistical summary, diff against another dataset), and any filters.
- Response: structured findings — a few hundred tokens at the top end — plus an optional artifact URI for the full report, available via the EVIDIQ docs.
- Cost: priced per call via x402 on X Layer, so the agent (or its user) decides how many questions are worth asking before the budget runs out.
That's it. The model never sees a raw row. It sees an answer.
The Context-Window Tax Nobody Budgets For
[IMAGE_PROMPT: A modern flat illustration of a developer terminal window showing a giant overflowing context-window bar chart filled with raw CSV rows, contrasted against a small tidy MCP tool-call receipt icon. Tech aesthetic, neutral navy background with orange and teal accents, geometric shapes, no text in image, no real brand logos.]
Let's do the math, because the math is the part that usually wakes a team up.
Say you have a 50 MB CSV. Compressed, that's roughly 12 million tokens if the agent had to read it as text — an unrealistic worst case, but useful for the order-of-magnitude argument. A realistic "I just dumped it into the prompt" scenario lands somewhere around 200,000–400,000 tokens for a typical dataset slice a developer would actually try to load. At current 2026 inference pricing on frontier models, that's between $3 and $15 per turn just for the input, before the agent has produced a single token of reasoning. Now multiply by however many turns the agent needs to do anything useful with the data — five, ten, fifteen — and a single "look at this dataset" interaction has cost more than a paid Atlas call by an order of magnitude, with worse answers.
Accuracy, meanwhile, gets worse than the cost story. When you stuff raw rows into a context window, the model isn't reading a spreadsheet — it's sampling. It will confidently invent a column name you don't have. It will miscount N. It will hallucinate a correlation that the dataset does not contain. This isn't because the model is dumb; it's because data inspection is a different problem class than text generation, and asking a chat model to do both at once in a shared slot is a recipe for silent errors.
The right primitive is a function call, not a context dump. Query datasets from AI agents should look like a tool call against a dataset service — small request, structured answer, priced per call — exactly the shape Atlas exposes.
Here's our opinionated take, stated bluntly: if your agent's "data analysis" step involves raw rows in the prompt, you are paying three bills — tokens, latency, and accuracy — for a worse answer than a $0.002 metered query would give you. The honest reason teams ship the dumb version is that it's one cat | head away. It's not actually faster or cheaper. It just hides the cost until the bill arrives.
A few signs you're paying the context-window tax without realizing it:
- Your per-turn input token count is climbing into the hundreds of thousands.
- The same dataset is being re-attached on every reasoning turn.
- The agent's answer contradicts numbers that are visibly in the data.
- Your cost dashboard shows a single multi-turn task costing more than a paid API call would have.
Any one of those is enough reason to switch. We built Atlas because we kept watching builders pay it.
One Question, One Priced Call
Let's walk an actual flow. The agent decides it needs to compare two datasets before recommending one for fine-tuning. It picks up its MCP client, connects to the Atlas server, and makes a JSON-RPC call.
The first call is estimate_cost. It's free. It returns the expected price for query_dataset and compare_datasets against the URIs the agent just named. The agent looks at the number — say, $0.004 — checks the budget, and decides to proceed. No card on file, no subscription, no surprise.
Here's the sequence in order:
estimate_cost— the agent asks what the next call will cost. Returns a USDT0-denominated quote on X Layer. Free.- The agent receives an x402 402 challenge — the HTTP 402 Payment Required response that carries the
acceptsarray from the x402 v2 spec. Theaccepts[].amountfield is the exact amount in atomic units. - The agent signs an EIP-3009
transferWithAuthorizationfor USDT0 on X Layer. No KYC for approval. query_datasetfires with the signed authorization. Atlas runs the analysis server-side and returns:- structured findings (the actual answer),
- a content hash (keccak256 of the canonicalized response),
- an artifact URI for the full report,
- and a signed receipt (EIP-191 over the EVIDIQ key) so the agent can prove what it got.
- The agent repeats for the second dataset, or calls
compare_datasetsto get a delta in one round trip.
The artifact matters because it lets the agent say "I asked X, I got Y, here's the signed receipt" — auditable, not vibes. The full flow is documented in the EVIDIQ docs, and the MCP surface is small enough that a single LLM can read it.
A worked example of the request the agent sends:
{
"tool": "compare_datasets",
"params": {
"a": "ipfs://bafy.../support-tickets-v2.csv",
"b": "ipfs://bafy.../support-tickets-v3.csv",
"analysis": ["schema_diff", "row_count", "null_pct_per_column"]
}
}
The agent pays the x402 challenge. The server returns:
{
"findings": {
"schema_diff": ["a has column 'priority', b renames to 'severity'"],
"row_count": {"a": 184322, "b": 207441},
"null_pct_per_column": {"a": {}, "b": {}}
},
"artifact_uri": "0g://storage/0xabc.../report.json",
"receipt_sig": "0x9f..."
}
About 600 tokens of structured answer. No raw rows crossed the wire into the prompt. The agent now has a citable recommendation — and, importantly, one that can be re-checked later by re-fetching the artifact and re-hashing it.
Where Atlas Fits Next to Sentinel and Notary
[IMAGE_PROMPT: A modern flat illustration of three connected MCP nodes arranged in a horizontal pipeline: a guard shield icon as a vetting checkpoint, a magnifying glass over a dataset icon as an analysis checkpoint, and a signed document icon as a receipts checkpoint. Connected by thin glowing lines on a navy background with teal and purple accents, geometric flat style, no text in image, no real brand logos.]
Atlas isn't a standalone product. It's the third tool in a family of EVIDIQ MCP surfaces, and the reason it exists is that "is this connection safe?", "what did the model produce?", and "what's actually in this data?" are three different questions you ask at three different moments.
Think of it as three checkpoints in an agent's day:
- Before: EVIDIQ Sentinel docs — Sentinel answers "should I trust the agent I'm about to call?" It returns a 0–100 trust score plus a proceed/proceed-with-escrow/caution/do-not-proceed verdict, deterministic and explainable.
- During: Atlas — answers "what does this dataset actually contain?" Cheap, structured, priced per call.
- After: EVIDIQ Notary docs — Notary receipts what the model said. Tamper-evident, anchored on 0G Storage, signed by the EVIDIQ key.
All three are reachable from the EVIDIQ Operator docs, all three are paid via the same x402 flow on X Layer, and all three share a pricing model: free install, free how_to_install and get_evidiq_skill tools, paid per call for the actual work. If you've paid one EVIDIQ call, you know how to pay all of them.
Where Atlas earns its slot is the boring middle. Sentinel is a yes/no at the door. Notary is a real-time stamp on output. Atlas is the part where the agent is deciding — pulling a row count, comparing two schemas, sanity-checking a fine-tune candidate — and needs a primitive that costs less than the answer is worth. A 200-token wall of question marks in the prompt is not a primitive. Atlas is.
If you want to see the whole MCP family wired up, the EVIDIQ main page lays out the integration order. In our own internal agents, the call order is almost always the same — Sentinel to vet, Atlas to check, Notary to receipt — and the cost of the whole chain is usually under a cent per interaction.