The Token Tax
When an AI agent queries SEC data, every byte of the API response consumes tokens. Bloated responses waste money and slow down agent reasoning. SEC API solves this with compact, purpose-built responses.Headline numbers
Two effects compound:- vs raw SEC EDGAR documents: roughly 21x fewer tokens. Pulling a filing from EDGAR and feeding the raw HTML/XBRL to an agent costs an order of magnitude more tokens than the structured, pre-extracted response SEC API returns for the same question.
?view=agenttrims about 93% of the response envelope versus the default view on envelope-heavy endpoints (for example,entities.resolvedrops from ~4.9 KB to ~0.3 KB), while preserving the citation fields agents need.
Side-by-Side: SEC API vs sec-api.io
Competitor numbers below were captured 2026-03-18; re-capture before citing as current.Entity Resolution
| Metric | SEC API | sec-api.io | Savings |
|---|---|---|---|
| Response size | 273 bytes | 412 bytes | 34% |
| Estimated tokens | 68 | 103 | 34% |
| Latency | 62ms | 231ms | 73% |
Filing Search
| Metric | SEC API | sec-api.io | Savings |
|---|---|---|---|
| Response size | 500 bytes | 792 bytes | 37% |
| Estimated tokens | 125 | 198 | 37% |
| Latency | 64ms | 281ms | 77% |
Section Extraction
| Metric | SEC API | sec-api.io | Savings |
|---|---|---|---|
| Response size | 1,800 bytes | 2,880 bytes | 38% |
| Estimated tokens | 450 | 720 | 38% |
| Latency | 64ms | 348ms | 82% |
Intelligence Bundles: 75% Token Reduction
A typical “company briefing” requires assembling data from multiple sources:Traditional Approach (sec-api.io)
SEC API Intelligence Bundle
Why SEC API Responses Are Smaller
- No wrapper bloat. Responses contain data, not framework metadata.
- Agent mode. Use
?view=agentto get token-efficient responses that preserve citation fields where applicable. - Pre-computed intelligence. One bundle call replaces 8+ raw API calls.
- Semantic search. Find relevant content in one call instead of paginating through keyword results.
Field selection and tabular output (MCP)
Over MCP,tools/call accepts two params-level controls (siblings of name and arguments, not inside arguments). Both shape only the human/agent-facing text content — structuredContent always stays canonical JSON, so typed clients and outputSchema validation are unaffected.
params.fields — keep only the fields you asked for
Pass a comma-separated list of dotted paths to project the text content down to those fields. For a list result the projection is applied to each row in data; envelope keys (object, requestId, traceparent, and the list keys data/hasMore/nextCursor/degradedState) are always retained so the result stays schema-valid. Paths address object fields — the projection does not descend into nested arrays.
params.response_format — compact columnar or CSV for lists
json (default) returns the full object form. table returns a compact columnar envelope ({ object: "table", columns, rows }) that lists the columns once and emits one array of cells per row, dropping the repeated per-row keys; csv returns RFC-4180 CSV text. Both apply to the data array of list-shaped results and shine on flat rows; non-list results fall back to JSON. Decoding is trivial — pair each columns[i] with rows[n][i].
fields and response_format compose: projection runs first, so a table’s columns are exactly the (flat) fields you kept. This pairs naturally with the multi-entity batch tools (companies.overview, companies.financials, companies.ratios accept a tickers array of up to 50) — request a portfolio in one call, then trim and tabularize it.
include= — REST opt-in for expensive sub-objects
include= is a REST query param, not an MCP control: where fields subtracts, include adds bounded enrichments that are omitted by default — for example GET /v1/companies/overview?include=segments,footnotes,dilution,factors. Omitted enrichments report status: not_requested rather than being computed.
Measure It Yourself
The?view=agent reduction is the easiest to reproduce — compare the agent view
against the default view of the same endpoint:
SECAPI-Compute-Headers: token-count to
the request. Every response includes a SECAPI-Estimated-Cost header; cache
hits also return an exact SECAPI-Token-Count without recomputing the body.
