Dataset Aggregate & Pivot
Server Details
GROUP BY and pivot tables for JSON rows: 11 functions, date buckets, top N, totals, messy numbers.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- Nero-Engine/dataset-aggregate-pivot-mcp
- GitHub Stars
- 0
TDQS
Scored across 2 tools
The two tools serve completely distinct purposes: aggregate_rows performs the actual aggregation/pivot operation, while list_capabilities is a static metadata/discovery helper. There is no overlap in function or trigger conditions.
Both names follow a clear snake_case verb_noun pattern: aggregate_rows and list_capabilities. The convention is consistent and predictable.
With only two tools, one of which is a static capability lister, the set feels thin for a dataset aggregation server. A dedicated pivot tool or data preview tool could reasonably earn its place, though the count is not extreme.
The core aggregation/pivot operation is well covered with grouping, topN, blank handling, warnings, and limits documented via list_capabilities. Minor gaps exist around data preview or schema inspection, but agents can work around them.
Available Tools
2 toolsaggregate_rowsAInspect
SQL GROUP BY and a spreadsheet pivot table for a list of JSON rows, in one call. Returns one output row per group with the aggregated columns, plus a summary: groups found, groups dropped by topN, values skipped because they were blank or not numeric (never guessed), and warnings such as a misspelled field name. Use it to turn scraped or API records into totals: orders and revenue per region, average price per brand, listings per city per month, top 10 products by revenue. Messy data is expected: "South" and "south " group together, and "$1,234.50" sums as 1234.5. Leave groupByFields empty to summarise all rows into one row. At most 500 rows per call.
| Name | Required | Description | Default |
|---|---|---|---|
| rows | Yes | The records to aggregate, up to 500. Each row is a JSON object; keys may differ between rows. | |
| topN | No | After sorting, keep only the first N groups. The totals row still covers every input row. | |
| sortBy | No | An output column to sort by: a group field, an aggregation alias such as "total_amount", or a pivot column. Omitted sorts by the group fields. | |
| pivotField | No | Turns this field's distinct values into columns, pivot-table style: group by "region" and pivot on "product" for one row per region with a column per product. Must not also be a group-by field. At most 50 distinct values. | |
| aggregations | No | What to compute per group, for example [{"function":"count","alias":"orders"}, {"field":"amount","function":"sum","alias":"total_amount"}]. Every function except count needs a field. alias is the output column name (defaults to function_field, or "count"). Omitted gives a plain row count per group. Up to 20. | |
| groupByFields | No | One output row per distinct combination of these field values, like SQL GROUP BY, for example ["region"] or ["city", "category"]. Dot paths like "address.city" work. Empty or omitted aggregates every row into a single row. | |
| groupMatching | No | normalized (default) ignores letter case and extra whitespace when grouping, so "South" and "south " are one group. exact requires identical values. | |
| pivotFunction | No | How pivot cell values are combined. Defaults to sum when pivotValueField is set; ignored (row count) without one. | |
| sortDirection | No | asc (default) or desc. Use desc with topN for "top N by" questions. | |
| lenientNumbers | No | On by default: "$1,234.50", "49 USD", "12%" and "(300)" count as numbers for sum, avg, min, max and median. Set false to accept only real numbers and plain numeric strings. | |
| dateBucketField | No | A date or timestamp field to group by time period, for example "orderedAt". Adds a group column named like "orderedAt_month". Unreadable dates land in an "(invalid date)" group. | |
| pivotValueField | No | The field whose values fill the pivot cells, for example "amount". Omitted fills each cell with a row count. | |
| includeTotalsRow | No | Appends a grand-total row labelled "(total)" and adds a _rowType column ("group" or "total"). | |
| dateBucketGranularity | No | Bucket size for dateBucketField: day (2026-08-19), week (2026-W34), month (2026-08, default), quarter (2026-Q3) or year. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden, and it does well: it discloses the output shape (one row per group plus a summary), dropped groups via topN, blank/non-numeric values being skipped rather than guessed, warnings for misspelled fields, normalization behavior ('South' vs 'south '), and lenient number parsing ('$1,234.50' -> 1234.5). The 500-row cap is stated. It doesn't describe permissions, rate limits, or idempotency, but for a pure in-memory aggregation those are largely irrelevant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core analogy, then adds incremental behavioral details in a tight four-sentence block. Every sentence adds information (output shape, use cases, data-messiness handling, row cap). Slightly dense for a description that must be skimmed, but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter, no-output-schema tool with no annotations, the description covers the essentials an agent needs: purpose, output shape, edge-case behavior, and limits. It stops short of fully documenting every interaction between 14 parameters, but the schema covers those and an agent can call correctly from this description plus the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all 14 parameters are documented in the schema with enums, examples, and defaults. The description adds a few cross-cutting facts not in the schema (500-row cap, normalization example, empty groupByFields behavior), but does not document individual parameter semantics beyond what the schema already provides. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a concrete analogy ('SQL GROUP BY and a spreadsheet pivot table for a list of JSON rows, in one call') that nails the verb, resource, and output shape. It distinguishes itself from its single sibling, list_capabilities, by being obviously a data-transformation tool. An agent can select this without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete task examples (orders and revenue per region, average price per brand, top 10 products by revenue) that make usage context clear. It also states the key alternative behavior (leave groupByFields empty for a single summary row). However, there is no explicit when-not-to-use or named alternative tool, and the single sibling is unrelated, so the guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_capabilitiesAInspect
Returns the 11 aggregation functions and what each one does, the date bucket formats, the labels used for blank, invalid-date and total rows, and the limits per call (rows, pivot columns, pivot cells, aggregations). Call this first if you are unsure what is available. Free, processes no data.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it usefully discloses that the call is "Free" and "processes no data," i.e. a read-only, zero-cost, side-effect-free operation. It does not discuss auth requirements or any rate limits, but for a static reference endpoint this is solid behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the returned content and ending with the routing cue and cost note. The enumerated list is dense but every item is meaningful information an agent needs, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 must describe the payload — and it does, itemizing all four categories of returned data plus the per-call limits. An agent knows precisely what it will get and when to call it, leaving nothing essential uncovered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to disambiguate beyond confirming this is a no-argument call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (Returns) and enumerates exactly what the resource contains: aggregation functions, date bucket formats, row labels, and per-call limits. It clearly reads as a discovery/reference tool rather than an executor, implicitly contrasting with aggregate_rows, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear trigger — "Call this first if you are unsure what is available" — which tells the agent when to reach for this instead of guessing. It stops short of stating when not to call it or naming aggregate_rows as the alternative for actual computation.
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.
2 tool updates
- First observed
aggregate_rows - First observed
list_capabilities
Related MCP Connectors
Clean, filter and reshape JSON rows in one call: 26 transforms, 25 filters, sort, dedupe, limit.
21Excel analytics: inspect, query (JSON rows), charts, and JSON-to-xlsx workbook writing.
Dedupe, flatten and clean messy JSON rows (emails, phones, URLs, HTML) in one call, as JSON or CSV.
21Join two lists of JSON rows on a key, like SQL or VLOOKUP: left, inner, full, anti joins, union.
21
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables efficient reading, analyzing, and querying of Excel, CSV, and JSON files with support for chunked processing, column/field filtering, and streaming for large datasets. Supports multiple transport protocols (stdio, HTTP, SSE) for flexible integration.144ISC
- AlicenseNot gradedqualityCmaintenanceEnables natural language interaction with JSON files, providing tools to load, query, aggregate, transform, and export data directly from AI editors.3MIT
- FlicenseAqualityFmaintenanceEnables users to process large datasets record by record, supporting JSON Lines and JSON with jq expressions, with stateful navigation, result tracking, and export capabilities.8-
- FlicenseNot gradedqualityDmaintenanceEnables schema-aware exploration of JSON data by uploading samples, flattening nested structures, and using heuristic search with token overlap and fuzzy matching to find field paths for target names, accelerating ETL and API onboarding workflows.-