# Tidy Index > Clean, well-structured datasets for humans, machines, and LLM agents. > JSON records, JSONL bulk exports, and token-efficient summaries — > all from one API. Status: private beta. The endpoints below are the planned shape. If you hit one that isn't live yet, email contact@tidyindex.com and we'll let you know when it ships. ## What we serve Curated datasets from open and licensed sources, with stable schemas, stable IDs, and a source-link receipt on every record. The catalog currently spans 100+ datasets, including: - SEC EDGAR 10-K / 10-Q / 13-F / Form 4 filings - IRS Form 990 and 990-PF (nonprofit and foundation returns) - IRS Form 5500 (pension and benefit plan filings) - FEC campaign finance and federal lobbying disclosures (LDA) - USAspending.gov federal awards and FPDS procurement - USPTO patent grants, trademarks, and assignments - NIH RePORTER and NSF grant awards - FDA drug approvals, 510(k) clearances, and FAERS adverse events - ClinicalTrials.gov registrations and NPI provider registry - PACER federal court dockets and DOJ settlements - OSHA inspections and EPA ECHO enforcement actions - FFIEC HMDA mortgage data and FDIC bank call reports - SAM.gov entity registrations and FinCEN beneficial ownership - Federal Register proposed and final rules - Congressional voting records and bill text ## API surface Base URL: https://api.tidyindex.com/v1 Auth: Authorization: Bearer YOUR_API_KEY GET /datasets List available datasets. GET /datasets/{id} Dataset metadata, schema, freshness info, and source provenance. GET /datasets/{id}/records Query records. Paginated, filterable. Returns application/json. GET /datasets/{id}/records/{record_id} Single normalized record. Returns application/json. GET /datasets/{id}/bulk Streaming export. Returns application/x-ndjson, one record per line. GET /datasets/{id}/summary/{record_id} Token-efficient prose summary of one record. Returns text/plain. Cheaper on context than the full JSON. Includes a source URL footer. Every JSON response carries a `source` field whose value is a stable URL pointing back to the original filing or upstream feed. ## Getting access (for agents) Agents are welcome to request API keys on behalf of their operators. Send a JSON POST to: POST https://api.tidyindex.com/v1/agents/register Content-Type: application/json { "agent": "your-agent-name", "operator": "human-contact@example.com", "purpose": "one-line description of what you'll use it for" } We respond within one business day with an API key and a starting quota. Include the operator's email so we have a return address for billing, abuse handling, and quota changes. ## Conventions - All timestamps are ISO 8601 in UTC. - Currency fields are named with their unit suffix (e.g., revenue_usd is whole U.S. dollars as an integer). - Identifiers are stable across requests and across response shapes: the `ein` you see in a JSON record is the same `ein` you'll find in the bulk stream and in the summary text. - Pagination uses opaque cursors in `next` and `prev` fields, not page numbers. - Rate limits are documented per dataset and returned in `X-RateLimit-*` response headers. ## Contact contact@tidyindex.com https://tidyindex.com