MCP-first structured data

The structured-data layer for AI agents.

Authoritative sources, normalized into one self-describing schema and delivered MCP-first — so an agent can resolve an entity, pull the numbers, and cite the source without stitching together five vendors.

Internal MVP live · public access license-gated

One response from stocks_get_income_statements

200 OKapplication/json
{
"data": {
"ticker": "AAPL",
"cik": 320193,
"company_name": "Apple Inc.",
"period_type": "annual",
"statements": [
{
"fiscal_year": 2024,
"fiscal_period": "FY",
"period_type": "annual",
"period_start": "2023-10-01",
"period_end": "2024-09-28",
"lines": {
"revenue": {
"value": "391035000000.000000",
"unit": "USD",
"currency": "USD",
"as_of": "2024-11-01T00:00:00Z",
"accession_number": "0000320193-24-000123"
}
}
}
]
},
"meta": {
"source": "sec_edgar_companyfacts",
"as_of": "2024-11-01T00:00:00Z"
},
"pagination": {
"limit": 4,
"has_more": true,
"next_cursor": "eyJ2IjoxLCJrIjpbLi4uXX0"
}
}

Every value carries its unit, currency, as_of date, and source. Results are bounded and paginated by default.

The problem

Agents aren’t API clients.

An API built for a dashboard assumes a human is reading the docs, holding the context, and eyeballing the units. An agent has none of that. It needs the payload to describe itself, the output to fit its context window, and the tools to be discoverable without a manual.

01

Self-describing payloads

Every value carries its unit, currency, period, as_of date, and source. The agent never guesses whether a figure is in thousands or millions, or how stale it is.

"unit": "USD", "as_of": "2024-11-01"

02

Bounded by default

Results are paginated and capped to fit a context window. Ask for too much and the tool returns the limit — instead of silently dumping, or silently truncating.

"limit": 4, "has_more": true

03

Discovery-first tools

A namespaced, self-documenting tool surface an agent can navigate from the descriptions alone. No out-of-band documentation to make the first correct call.

stocks_*macro_*

Most data vendors bolt an MCP wrapper onto an API they built for humans. We built the inverse: a schema and tool surface designed for agent consumption first, with REST underneath — not the other way around.

The moat

Normalization is the product.

Raw filings are inconsistent across companies, periods, and accounting taxonomies. The hard, valuable work is turning them into one canonical schema you can compare across entities and reconcile against the source. That normalization — tested against a hand-verified golden set — is the product. The MCP and REST surfaces are thin, identical layers over it.

Available today

4 data categories, live over MCP and REST.

01

Banks

Available

US commercial bank financials and institution profiles from the FDIC BankFind Suite.

02

Foreign Exchange

Available

Daily ECB euro reference rates and EUR-triangulated conversions.

03

Geography

Available

Canonical US Census/OMB and Australian ABS ASGS geography identity, containment hierarchies, aliases, and official crosswalks.

04

Real Estate

Available

US housing and real-estate indicators — FHFA house price indices and related series.

This is an internal MVP today. Public access is a later, license-gated phase.

See full coverage →

Roadmap

Built to span categories.

Every registered category uses the same tool and response contracts. Categories remain callable while marked Soon, then become advertised only after their production and evaluation evidence clears the launch bar. Status changes flow from the catalog to every public surface.

Stage 1

Advertised categories

Banks, Foreign Exchange, Geography, Real Estate

Stage 2

Evidence-gated categories

Soon

CMBS, Legal Entities, FDA, Funds, Futures, Federal spending, Hazards, Macro, Stocks

Stage 3

The platform

Vision — the default data layer for agents.

Building an agent that needs real-world data?

We’re onboarding a small group of early-access partners while public access is finalized. Tell us your use case and the categories you need.