Operate on Any Value.
Zero Credits. Zero AI.
Data is DataGrout's pure JSON manipulation layer โ 14 deterministic tools for filtering, sorting, aggregating, mapping, and transforming any value. No external calls, no LLM, no cost.
14 tools
filter ยท sort ยท aggregate ยท map ยท merge ยท flatten ยท more
Zero credits
deterministic ops ยท always free
cache_ref native
chain outputs across any tool call
Free to start ยท No credit card required
14 Tools. Five Functional Groups.
Every Data tool is deterministic, zero-cost, and composable โ chain them via cache_ref or pipe them through flow.into.
Access & Shape
Access a nested value by path, keep or drop specific keys from a map, and inspect structure. These are the foundational ops โ pull exactly what you need out of any JSON payload or cache_ref.
What's included
- data.get: path-based access into deeply nested structures
- data.pick: keep only named keys (works on lists of maps too)
- data.omit: remove named keys (works on lists of maps too)
- data.keys: return all keys of a map or indices of an array
- data.count: count items, keys, or characters
What Agents Use Data For
Data tools handle the structural work โ so your AI budget goes toward reasoning, not JSON plumbing.
Slice & Clean API Responses
Strip internal fields, keep only the columns your LLM or downstream tool needs, and flatten nested payloads into flat maps โ all before a single AI token is spent.
Related Solutions
Aggregate Without Prism Credits
Sum invoice totals, compute average deal sizes, find the max overdue balance, or join a list of customer names โ data.aggregate handles it for free.
Related Solutions
Deduplicate & Normalize Records
Deduplicate lists by email, ID, or any field, then sort and paginate the result for downstream processing โ no re-fetching, no extra credits.
Related Solutions
Combine Data from Two Sources
Merge enrichment data onto a base record set with a single call. Target values override base for conflicts; deep mode handles nested maps recursively.
Related Solutions
Fan-Out Enrichment at Scale
Call any MCP tool โ Salesforce, QuickBooks, Prism โ once per item in a list. data.map collects results in order, capturing per-item errors without stopping the batch.
Related Solutions
Build Pipelines via cache_ref
Every Data tool accepts cache_ref from any prior call โ filter a paginated result set, sort it, take the top 10, and aggregate โ all without re-transmitting data.
Related Solutions
Power-Up Combos
Data tools are the connective tissue of any agent pipeline. Here's how they amplify the rest of the platform.
Scalar ops meet columnar ops
Use Data tools to access, flatten, or merge raw JSON payloads before handing structured record lists to Frame for grouping, pivoting, and joining. Together they cover every shape of data transformation.
No credits. Fully deterministic. End-to-end reshaping.
Explore Frame โPrep data, then analyze it
Run data.filter and data.pick to trim a payload to exactly the fields Prism needs โ reducing tokens and improving refract accuracy. Pass the result via cache_ref to prism.refract or prism.chart.
Lower Prism credit cost. Better transform quality.
Explore Prism โFan-out across the integration mesh
Use data.map to call discovery.perform for each item in a list โ enriching records, running tool calls per account, or parallel-processing a batch. Results return in order with per-item error capture.
Parallel tool execution without custom orchestration.
Aggregation meets statistical analysis
Use data.aggregate for fast scalar summaries, then pipe the same list into math.describe for percentiles, outliers, and trend detection. Both accept cache_ref for zero re-transmission.
Free aggregation + governed statistical depth.
Data Tools in Practice
Real patterns from agent pipelines โ all with zero credits for the Data steps.
from datagrout.conduit import Client
async with Client(
"https://gateway.datagrout.ai/servers/{uuid}/mcp",
auth={"bearer": "your-access-token"}
) as client:
# Fetch invoices from QuickBooks (paginated, returns cache_ref)
invoices = await client.perform("quickbooks@1/query_invoices@1", {
"status": "open"
})
ref = invoices["_meta"]["datagrout"]["cache_ref"]
# Filter to overdue invoices only โ zero credits
overdue = await client.perform("data-grout@1/data.filter@1", {
"cache_ref": ref,
"where": [
{"field": "DueDate", "op": "lt", "value": "2026-04-01"},
{"field": "Balance", "op": "gt", "value": 0}
]
})
# Sum the balances โ zero credits
total = await client.perform("data-grout@1/data.aggregate@1", {
"cache_ref": overdue["_meta"]["datagrout"]["cache_ref"],
"op": "sum",
"field": "Balance"
})
print(f"Total overdue: {total['result']}")Also available in TypeScript, Rust, Elixir, and Ruby. View Conduit SDK โ
Frequently Asked Questions
Zero Credits. Every Operation.
Data tools handle all your JSON plumbing โ filter, sort, merge, aggregate, fan-out โ so your AI budget stays focused on reasoning.
Free to start ยท No credit card required
