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 OK ].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

Two categories, live over MCP and REST.

[ 01 ]

Stock fundamentals

Normalized income statements, balance sheets, and cash-flow statements for U.S. public companies, plus SEC filing metadata and company / ticker / CIK resolution. Sourced from SEC EDGAR.

[ 02 ]

U.S. macro & rates

Treasury yield curves, federal debt, and interest rates are live today, straight from the U.S. Treasury. Inflation and employment (BLS) and GDP and PCE (BEA) are next onto the same surface.

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

See full coverage →

Roadmap

Built to span categories.

Real estate is the next category — market-level data by geography first, with commercial real estate for institutional clients as the destination. After that, any category that fits the pattern: authoritative sources, normalization as the product, one consistent surface. Each new category is a new set of tools on the same platform — not a new product to integrate.

Stage 1

Stocks

Live — stock fundamentals and Treasury macro.

Stage 2

Real estate

Planned — market data first, CRE the goal.

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.