80trust / 100
Docs Xlsx To Json
by Tanod pdfpeek in Documents & files
x402 APIPassing, checked 3 h ago
pdfpeek (Tanod) Excel to JSON/CSV: an .xlsx/.xlsm workbook read into sheets of string rows as JSON, or one formula-guarded CSV file per sheet. Use when an agent must read an Excel (.xlsx) workbook into JSON rows or formula-guarded CSV.
POST https://tanod.dev/v1/docs/xlsx-to-json
Last 30 days
All checks passedSome failedAll failedNot checked
- Uptime
- 100%
- Response time
- 277 ms typical, 844 ms slowest 5%
- Last check
- 3 h ago
- Next check
- any minute now
How to call it
# bash or zsh: see the payment challenge (nothing is charged)
curl -g -i -X POST 'https://tanod.dev/v1/docs/xlsx-to-json' \
-H 'content-type: application/json' \
--data-raw '{"url":"https://tanod.dev/samples/sales-sample.xlsx"}'import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const client = new x402Client().register(
"eip155:8453",
new ExactEvmScheme(privateKeyToAccount(process.env.AGENT_KEY)),
);
const pay = wrapFetchWithPayment(fetch, client);
// Not sure it's safe to pay? Preflight it first for $0.005:
// GET https://toolvet.app/api/v1/check?url=https%3A%2F%2Ftanod.dev%2Fv1%2Fdocs%2Fxlsx-to-json
const res = await pay("https://tanod.dev/v1/docs/xlsx-to-json", {
method: "POST",
headers: { "content-type": "application/json" },
body: "{\"url\":\"https://tanod.dev/samples/sales-sample.xlsx\"}",
});
console.log(await res.json());Example input
{
"url": "https://tanod.dev/samples/sales-sample.xlsx"
}Example output
{
"format": "json",
"input_bytes": 5425,
"note": "Cells are strings exactly as the workbook stores them; a formula cell is the value last computed by a spreadsheet application (empty if the file was never opened in one). Trailing empty cells and rows are dropped. CSV output is one file per sheet, UTF-8 with CRLF, and a cell that could be read as a formula is prefixed with an apostrophe (OWASP) so a spreadsheet cannot run it.",
"operation": "xlsx-to-json",
"sheet_count": 2,
"sheets": [
{
"columns": 4,
"name": "Sales",
"row_count": 3,
"rows": [
[
"region",
"q1",
"q2",
"total"
],
[
"North",
"1204",
"1311",
"2515"
],
[
"South",
"980",
"1015",
"1995"
]
],
"truncated": false
},
{
"columns": 2,
"name": "Notes",
"row_count": 1,
"rows": [
[
"prepared",
"2026-10-09"
]
],
"truncated": false
}
],
"sheets_read": 2,
"untrusted_content": true
}Security scan
- No findings. We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.
Recent checks
| When | Result | HTTP | Time | Price |
|---|---|---|---|---|
| 3 h ago | Passed | 402 | 265 ms | $0.005 |
| 7 h ago | Passed | 402 | 273 ms | $0.005 |
| 11 h ago | Passed | 402 | 844 ms | $0.005 |
| 15 h ago | Passed | 402 | 274 ms | $0.005 |
| 19 h ago | Passed | 402 | 277 ms | $0.005 |
| 22 h ago | Passed | 402 | 271 ms | $0.005 |
| 26 h ago | Passed | 402 | 271 ms | $0.005 |
| 29 h ago | Passed | 402 | 284 ms | $0.005 |
| 33 h ago | Passed | 402 | 281 ms | $0.005 |
| 36 h ago | Passed | 402 | 287 ms | $0.005 |
| 40 h ago | Passed | 402 | 274 ms | $0.005 |
| 44 h ago | Passed | 402 | 324 ms | $0.005 |
| 2 days ago | Passed | 402 | 266 ms | $0.005 |
| 2 days ago | Passed | 402 | 1.6 s | $0.005 |
| 2 days ago | Passed | 402 | 287 ms | $0.005 |