tableau_view_csv
Fetch and paginate complete CSV exports from government Tableau Server guest views to access public contract, vendor payment, and checkbook data.
Instructions
Fetch a curated US-government Tableau Server Guest view's COMPLETE CSV export (keyless) and page over it — a SLED transparency source (many state/local govs publish contracts / vendor-payment / checkbook data on a Guest-enabled Tableau Server; a worksheet view exports as CSV at {host}/t/{site}/views/{workbook}/{view}.csv?:embed=y, no login/key/cookie). First payload: mt_contracts_awarded = State of Montana (DOA) Contracts Awarded (~4,554 award records: '$ Awarded', 'Award Date', 'Event Type' (Invitation For Bid / RFP), 'Event#' solicitation number, 'Vendor Name', 'Agency'). Inputs: view (the allowlist ENUM — SSRF core, never a free host), limit(1..1000)/offset. Returns { view, columns:[…], rows:[{col:value…}] } + honest _meta. HONESTY: the CSV is the COMPLETE view export (Tableau returns ALL summary rows — NO server pagination), so totalAvailable = the true row count (NEVER a page length); limit/offset page it client-side; a round-number total is flagged as a possible Tableau export cap. Values are TRIMMED strings (an empty field ⇒ null, never 0/""); the content is preserved — amounts like "$5,879,590.00" are FORMATTED STRINGS, parse client-side. A 429/5xx/404/timeout THROWS; a gated/renamed view (200 sign-in HTML or an empty dashboard-container export) ⇒ schema_drift (a loud failure, NEVER a fake empty); a worksheet with a header but 0 data rows ⇒ honest empty. SSRF: fixed allowlist base + hostname assertion + redirect:error.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| view | Yes | The curated Tableau Server Guest view (SSRF allowlist enum). 'mt_contracts_awarded' = State of Montana (DOA) Contracts Awarded (~4,554 award records: $ Awarded, Award Date, Event Type IFB/RFP, Event# solicitation, Vendor Name, Agency). | |
| limit | No | Rows per page, 1..1000, default 50. The CSV is the complete view export; this pages over it client-side. | |
| offset | No | 0-based offset; page with _meta.pagination.nextOffset. totalAvailable = the complete export row count (NOT a page length). |