jsonloupe.dev
Turn nested JSON into a spreadsheet — each array becomes its own sheet, joined by id, never items/0/sku columns — and read JSON that is too big and too precise for your viewer. Excel or CSV, in your…
First seen 2026-11-05 · Last seen 2026-11-05 · Source: webmcp.com
Answer 4 · Act 4 · Transact 0 · Score: Not yet scored
Tool inspector
run_query
Run a query against the JSON document open in the user's viewer and return matches or an aggregate, capped. Use this instead of asking the user to read or paste their document: it scans in the page's worker and returns only the bounded answer. Grammar (a JSONPath subset with aggregation pipes): Paths: $.key $['odd key'] $[3] $[-1] $[1:5] $.arr[*] $..key (recursive) A [...] step attaches directly to what precedes it: $['odd key'], $.a['b c'] — never $.['odd key']. Any key that is not a plain identifier (space, '-', '.') must be bracketed: $['line-items'], @['unit price']. $.arr is the array itself; $.arr[*] is its elements — $.orders[*] | count counts the orders, $.orders | count is 1. Predicates filter the CHILDREN of the current node: $.tasks[?(...)] A [?(...)] step already yields the matched elements — never follow it with [*]. Operators: == != > >= @.capacity.max A predicate holds one level only: no predicate inside a predicate, no $ path inside it Pipes: append AT MOST ONE, at the very end. Pipes never chain — `| top(...) | pluck(...)` is invalid. | count | sum(@.x) | avg(@.x) | min(@.x) | max(@.x) | distinct | group(@.x, @.y) | top(@.score, @.id) | bottom(@.score, @.id) | pluck(@.a, @.b.c) top/bottom/pluck already name their output columns — never add a second pipe to project them. A pipe argument is one plain field path (@.a.b) — no [*], no arithmetic, no second query. A pipe without args operates on the matched values themselves: $.a[*].n | sum Examples: "how many tasks have no route" → $.tasks[?(!@.routeId)] | count "how many orders are there" → $.orders[*] | count "failed tasks by reason" → $.tasks[?(@.status =~ /^failed$/i)] | group(@.failureReason) "tasks that are not cancelled" → $.tasks[?(!(@.status =~ /^cancelled$/i))] "top delayed tasks" → $.tasks[*] | top(@.delayMinutes, @.id, @.status) "highest value orders showing just their id and amount" → $.orders[*] | top(@.amount, @.id) "all statuses that appear" → $..status | distinct "ids and etas of pendin…
Page: /
Input schema
| Property | Type | Required | Description |
|---|---|---|---|
query |
string | yes | A query, e.g. $.tasks[?(@.status == 'FAILED')] | count; $.tasks[*] | group(@.region, @.status); $.tasks[*] | top(@.delay, @.id) |
offset |
integer | no | Detail rows to skip (default 0). |
limit |
integer | no | Maximum detail rows returned (default 10, 0 for summary only, max 100). |
Raw JSON schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "A query, e.g. $.tasks[?(@.status == 'FAILED')] | count; $.tasks[*] | group(@.region, @.status); $.tasks[*] | top(@.delay, @.id)"
},
"offset": {
"type": "integer",
"description": "Detail rows to skip (default 0).",
"minimum": 0
},
"limit": {
"type": "integer",
"description": "Maximum detail rows returned (default 10, 0 for summary only, max 100).",
"minimum": 0,
"maximum": 100
}
},
"required": [
"query"
]
}
Similar websites
morphus.myles4miles.chatgpt.site
Morphus is an AI-native workspace for designing worlds and generating playable game experiences.
damnpdfs.com
Install the DamnPDFs Codex plugin, pair a browser workspace and use PDF, image and file tools from your coding agent. Includes setup and privacy limits.
insignifi4nt.github.io
broCAD/M: local-first CAD and CAM for parametric design, wire EDM planning, simulation and controller export.
cabinet.varera.studio
The Cartographer's Cabinet