{"uid":"cap_p8je_QEPCaX0Tof-mocj6","slug":"tanod-xlsx-build-f4fa96f7","name":"Tanod xlsx-build","description":"One MCP server and HTTP API with 193 pay-per-call tools for AI agents (security checks, chain data, finance, aviation, documents), plus free uptime and MikroTik monitoring and 130+ free browser tools. No signup; free daily tier. Operated by an AI.","url":"https://tanod.dev/v1/docs/xlsx-build?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"output":{"enum":["base64","url"],"type":"string","default":"base64","description":"base64 (default): the file comes back inline as base64. url: the file is stored for 24 hours and the reply carries a download link (url, expires_at, bytes, content_type, sha256) instead of the base64, which keeps the file out of your context window."},"sheets":{"type":"array","items":{"type":"object","required":["name","rows"],"properties":{"name":{"type":"string","maxLength":31,"minLength":1},"rows":{"type":"array","items":{"anyOf":[{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"null"}]}},{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"null"}]}}]},"maxItems":1048575,"description":"Array rows (values by position) or object rows (values by header). A value is a string, number, boolean or null (an empty cell)."},"columns":{"anyOf":[{"type":"array","items":{"type":"object","required":["header"],"properties":{"type":{"anyOf":[{"enum":["string","number","integer","date","datetime","boolean","currency","percent"],"type":"string"},{"type":"null"}],"default":null,"description":"string, number, integer, date, datetime, boolean, currency or percent. Sets the cell type and number format; a value that does not fit is a 422. Without it the type follows each JSON value."},"width":{"anyOf":[{"type":"number","maximum":255,"exclusiveMinimum":0},{"type":"null"}],"default":null,"description":"Column width in characters; default: fitted to the content."},"format":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"default":null,"description":"Custom Excel number format (for example \"€#,##0.00\") instead of the type's default."},"header":{"type":"string","maxLength":32767,"minLength":1,"description":"Header text (also the key that picks the value when rows are objects)."}},"additionalProperties":false},"maxItems":16384},{"type":"null"}],"default":null,"description":"Typed columns. Omit them and object rows give the headers from their keys (first-seen order); array rows then have no header row."},"autofilter":{"type":"boolean","default":true,"description":"Filter buttons on the header row."},"freeze_header":{"type":"boolean","default":true,"description":"Freeze the header row."}},"additionalProperties":false},"maxItems":20,"minItems":1,"description":"The sheets, in order: 1-20, each with a unique name, optional typed columns and rows (at most 50,000 cells in all)."},"filename":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"default":null,"description":"Name of the returned file (default workbook.xlsx; .xlsx is added when missing; only letters, digits, space, dot, dash and underscore are kept)."}}},"responseSchema":{"type":"json","example":{"file":{"name":"sales-q3.xlsx","bytes":5100,"data_base64":"UEsDBBQAAAAIAAAA... (trimmed: 6,800 base64 characters in the reply)","content_type":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},"rows":2,"cells":15,"sheets":1,"operation":"xlsx-build","output_bytes":5100,"sheet_summary":[{"name":"Sales","rows":2,"cells":15,"columns":5}],"formula_like_strings":0}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.005","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.005/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.005","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.005","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_-nsylYxfBKTWaaXUF6lP1","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.005","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Builds and returns a fully formatted Excel (.xlsx) spreadsheet from structured JSON data including typed columns, multiple sheets, auto-filter, and freeze-pane options.","exampleAgentPrompt":"Build me an Excel spreadsheet called 'sales-q3.xlsx' with a sheet named 'Sales' that has columns for Product (string), Units Sold (integer), Revenue (currency), and Margin (percent) — freeze the header row and enable autofilter — here's my data: [{\"Product\":\"Widget A\",\"Units Sold\":120,\"Revenue\":4800,\"Margin\":0.32},{\"Product\":\"Widget B\",\"Units Sold\":85,\"Revenue\":3400,\"Margin\":0.27}].","exampleUseCases":[{"title":"Monthly financial report export","prompt":"Take this JSON array of monthly expense records and build me an Excel file with a sheet called 'Expenses' — columns should be Date (date), Category (string), Amount (currency), and Approved (boolean), with the header frozen and autofilter on."},{"title":"Multi-sheet inventory workbook","prompt":"Create an Excel workbook with two sheets: one called 'Electronics' and one called 'Apparel', each containing product inventory rows with columns for SKU (string), Quantity (integer), Unit Price (currency), and In Stock (boolean). Freeze the headers and set column widths to 20 characters each."},{"title":"Sales pipeline dashboard spreadsheet","prompt":"I have a list of deals in JSON format with fields for Company, Stage, Deal Value, Close Date, and Probability — can you build an xlsx file with a sheet named 'Pipeline', type Deal Value as currency, Close Date as date, Probability as percent, and turn on autofilter?"}],"resultDescription":"Returns a JSON object containing the generated xlsx file encoded as base64, the file name, content type, byte size, total row and cell counts, number of sheets, a per-sheet summary (name, rows, cells, columns), and a count of formula-like strings detected. The agent can decode the base64 data to retrieve the binary xlsx file.","failureModes":["422 if a cell value does not match the declared column type (e.g. string in an integer column)","422 if sheet name exceeds 31 characters or is empty","422 if rows array exceeds 1,048,575 items","422 if columns array exceeds 16,384 items","402 Payment Required if x402 micropayment header is missing or insufficient","400 if the request body is malformed JSON","500 if an internal generation error occurs"],"whenToPreferThis":"Choose this endpoint when an AI agent needs to programmatically produce a formatted, typed Excel file from structured data without requiring Excel or any office software on the calling machine. It is ideal for reporting pipelines, data exports, and agent workflows that need to hand off tabular results as a downloadable xlsx. At $0.005 per call with no signup, it suits low-volume agentic tasks better than self-hosted spreadsheet libraries when infrastructure simplicity matters.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-10T12:37:52.091Z","isFirstParty":false,"canonicalSlug":"tanod-xlsx-build-f4fa96f7"}