{"name":"io.github.Nero-Engine/dataset-aggregate-pivot","slug":"nero-engine-dataset-aggregate-pivot","title":"Dataset Aggregate & Pivot","description":"GROUP BY and pivot tables for JSON rows: 11 functions, date buckets, top N, totals, messy numbers.","url":"https://mcp.market/server/nero-engine-dataset-aggregate-pivot","rating":null,"grade":"A","score":88,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":23,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-09-13T00:04:22.000Z","license":null},"uptime":{"percent":100,"checks":2,"ok":2,"last_checked_at":"2026-09-19T22:50:55.428Z","last_ok_at":"2026-09-19T22:50:55.428Z","latency_ms":61},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/Nero-Engine/dataset-aggregate-pivot-mcp","website":"https://github.com/Nero-Engine/dataset-aggregate-pivot-mcp","version":"0.1.0","remotes":[{"type":"streamable-http","url":"https://dataset-aggregate-pivot.nerolabs.workers.dev/mcp"}],"packages":[],"tools":[{"name":"aggregate_rows","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"rows":{"type":"array","description":"The records to aggregate, up to 500. Each row is a JSON object; keys may differ between rows.","items":{"type":"object"}},"groupByFields":{"type":"array","description":"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.","items":{"type":"string"}},"aggregations":{"type":"array","description":"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.","items":{"type":"object","properties":{"field":{"type":"string","description":"The field to aggregate. Optional for count, which then counts rows."},"function":{"type":"string","enum":["count","countDistinct","sum","avg","min","max","median","first","last","list","listDistinct"]},"alias":{"type":"string","description":"Output column name."}},"required":["function"]}},"groupMatching":{"type":"string","enum":["normalized","exact"],"description":"normalized (default) ignores letter case and extra whitespace when grouping, so \"South\" and \"south \" are one group. exact requires identical values."},"dateBucketField":{"type":"string","description":"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."},"dateBucketGranularity":{"type":"string","enum":["day","week","month","quarter","year"],"description":"Bucket size for dateBucketField: day (2026-08-19), week (2026-W34), month (2026-08, default), quarter (2026-Q3) or year."},"pivotField":{"type":"string","description":"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."},"pivotValueField":{"type":"string","description":"The field whose values fill the pivot cells, for example \"amount\". Omitted fills each cell with a row count."},"pivotFunction":{"type":"string","enum":["count","countDistinct","sum","avg","min","max","median","first","last","list","listDistinct"],"description":"How pivot cell values are combined. Defaults to sum when pivotValueField is set; ignored (row count) without one."},"lenientNumbers":{"type":"boolean","description":"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."},"sortBy":{"type":"string","description":"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."},"sortDirection":{"type":"string","enum":["asc","desc"],"description":"asc (default) or desc. Use desc with topN for \"top N by\" questions."},"topN":{"type":"integer","minimum":1,"description":"After sorting, keep only the first N groups. The totals row still covers every input row."},"includeTotalsRow":{"type":"boolean","description":"Appends a grand-total row labelled \"(total)\" and adds a _rowType column (\"group\" or \"total\")."}},"required":["rows"],"additionalProperties":false}},{"name":"list_capabilities","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false}}],"scan":{"score":88,"grade":"A","scanned_at":"2026-09-19T20:06:24.008Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T20:06:24.153Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 185ms"]},"poisoning":{"score":15,"max":15,"notes":["2 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":15,"max":15,"notes":["last push 7 days ago"]},"identity":{"score":6,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"probes":[{"url":"https://dataset-aggregate-pivot.nerolabs.workers.dev/mcp","reachable":true,"authRequired":false,"latencyMs":185,"serverInfo":{"name":"nerolabs-dataset-aggregate-pivot","version":"0.1.0"}}],"packages":[],"repo":{"found":true,"owner":"Nero-Engine","repo":"dataset-aggregate-pivot-mcp","archived":false,"pushedAt":"2026-09-13T00:04:22Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/315789026?v=4","ownerCreatedAt":"2026-08-11T12:14:49Z"},"icon":{"url":"https://avatars.githubusercontent.com/u/315789026?v=4&s=128","source":"registry"},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":null,"lastPushAt":"2026-09-13T00:04:22.000Z","score":23}}}},"grade_history":[],"reviews":[]}