Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,562Letters: 14Defects: 1,336counted 4 min ago
teppi

Server definition

Hash
sha256:e956f2bd0d56f11b9c8ba740a05db07402cd6ff22b34b67d1179ee31492836fb
What it is
What a remote MCP server returned when asked what it offers: 2 tools

The blob, as servednamed by its sha256

{ "instructions": "Call aggregate_rows with your rows, groupByFields and aggregations to get a GROUP BY or pivot-table summary in one call. Call list_capabilities first if you are unsure which functions, date buckets or limits apply.", "tools": [ { "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.", "inputSchema": { "additionalProperties": false, "properties": { "aggregations": { "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": { "properties": { "alias": { "description": "Output column name.", "type": "string" }, "field": { "description": "The field to aggregate. Optional for count, which then counts rows.", "type": "string" }, "function": { "enum": [ "count", "countDistinct", "sum", "avg", "min", "max", "median", "first", "last", "list", "listDistinct" ], "type": "string" } }, "required": [ "function" ], "type": "object" }, "type": "array" }, "dateBucketField": { "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.", "type": "string" }, "dateBucketGranularity": { "description": "Bucket size for dateBucketField: day (2026-08-19), week (2026-W34), month (2026-08, default), quarter (2026-Q3) or year.", "enum": [ "day", "week", "month", "quarter", "year" ], "type": "string" }, "groupByFields": { "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" }, "type": "array" }, "groupMatching": { "description": "normalized (default) ignores letter case and extra whitespace when grouping, so \"South\" and \"south \" are one group. exact requires identical values.", "enum": [ "normalized", "exact" ], "type": "string" }, "includeTotalsRow": { "description": "Appends a grand-total row labelled \"(total)\" and adds a _rowType column (\"group\" or \"total\").", "type": "boolean" }, "lenientNumbers": { "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.", "type": "boolean" }, "pivotField": { "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.", "type": "string" }, "pivotFunction": { "description": "How pivot cell values are combined. Defaults to sum when pivotValueField is set; ignored (row count) without one.", "enum": [ "count", "countDistinct", "sum", "avg", "min", "max", "median", "first", "last", "list", "listDistinct" ], "type": "string" }, "pivotValueField": { "description": "The field whose values fill the pivot cells, for example \"amount\". Omitted fills each cell with a row count.", "type": "string" }, "rows": { "description": "The records to aggregate, up to 500. Each row is a JSON object; keys may differ between rows.", "items": { "type": "object" }, "type": "array" }, "sortBy": { "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.", "type": "string" }, "sortDirection": { "description": "asc (default) or desc. Use desc with topN for \"top N by\" questions.", "enum": [ "asc", "desc" ], "type": "string" }, "topN": { "description": "After sorting, keep only the first N groups. The totals row still covers every input row.", "minimum": 1, "type": "integer" } }, "required": [ "rows" ], "type": "object" }, "name": "aggregate_rows", "outputSchema": null }, { "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.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "list_capabilities", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:e956f2bd0d56f11b9c8ba740a05db07402cd6ff22b34b67d1179ee31492836fb | sha256sum