# Tigzig Unified Data Surface

Category-first read-only public API + MCP over ~330 curated macro, credit, valuation, insurance, India, global, markets and FX indicators. Sourced from 17+ publishers (FRED, OECD, RBI, MoSPI, ECB, BoE, Bundesbank, NY Fed, NCUA, FDIC, FFIEC, Shiller, Cox/Manheim, NSE, Yahoo Finance and others). Updated daily-to-weekly per source cadence. No auth required.

**Progressive-disclosure MCP design:** unlike a flat catalog that dumps every indicator into one tool description at session init, the unified surface exposes 4 tools an agent navigates - `list_categories` (the 8-domain menu), `list_indicators_in_category` (per-domain catalog WITH the `notes` field), `find_indicator` (cross-category fuzzy search), and `v2_get_series` (wide-pivot time series, JSON or TSV). Session-init token weight is ~1,350 vs ~7,850 for the flat Tremor V1 MCP - 83% lighter, and scales as new domains land.

**The `notes` field:** every indicator carries agent-relevant sharp-edges - annualization recipes ('already SAAR - do NOT multiply by 4'), sign conventions ('NEGATIVE = net outflow'), methodology breaks ('Nifty50 P/E: standalone pre-Apr 2021, consolidated after'), leading-indicator behavior. 100% coverage across the ~330 visible indicators. READ NOTES BEFORE COMPUTING - the name + unit alone will silently mislead an agent.

**Quick start (REST):**
- `GET /v1/categories` - the 8 domains with one-liners
- `GET /v1/categories/us_credit/indicators` - per-domain catalog (add `?compact=true` for id/name/frequency only)
- `GET /v1/find?query=usdinr` - cross-category fuzzy match
- `GET /v1/series?ids=us_treasury_10y_yield,us_core_cpi&from=2020-01-01` - wide-format pivot, up to 10 ids per call, `format=tsv` for token-light
- Bulk: `GET /v1/download/all` (~7 MB sqlite/duckdb - full dataset in one file, preferable to paginating /series for heavy pulls)

**MCP:** POST to https://api.tigzig.com/mcp with `Accept: application/json, text/event-stream` (Streamable HTTP; SSE fallback at /mcp/sse but not advertised). Any modern MCP client (Claude.ai connectors, Cursor, Continue, n8n) can add the URL directly. Open-source reference wrapper: https://github.com/amararun/tigzig-mcp-v2-reference

**Gotchas:** dates are YYYY-MM-DD. `v1_get_series` mixes multiple indicators into one wide-pivot response even if they have different frequencies - check the returned columns. TSV responses open with a `# meta: count=N unknown=[...] empty=[...]` comment line so agents can distinguish typos from empty-date-range hits even in TSV (most parsers respect `#` comments).

**Navigation (machine-readable):** catalog https://api.tigzig.com/v1/ | categories https://api.tigzig.com/v1/categories | downloads https://api.tigzig.com/v1/download/all | MCP https://api.tigzig.com/mcp | human docs https://www.tigzig.com/apis/unified

Author: Amar Harolikar - https://www.linkedin.com/in/amarharolikar

Rate limit: 60 requests/min per IP. Downloads: 10/min.

Part of Tigzig: free interactive tools, open-source repos, APIs and MCP servers for analytics and live data across global and Indian markets, macro indicators and filings. Catalog: https://api.tigzig.com/.well-known/api-catalog | Guide: https://www.tigzig.com/llms.txt

App: https://tremor.tigzig.com

**Source and licence.** The underlying data is published by its original sources as public records. This service reformats and republishes it, is not an authoritative source, and is not affiliated with or endorsed by any of them. No rights in the underlying data are claimed here, and none are granted. Check the original publisher's own terms before relying on it. Each indicator carries its publisher in the `source` field. To the extent this service holds any rights in the compilation (the assembly, the schema and the derived fields), they are released under CC0 1.0 (https://creativecommons.org/publicdomain/zero/1.0/); no attribution required. Provided as is. No guarantee of accuracy, completeness or availability, and no support commitment. Check against the original publisher for anything that matters.

## V2 catalog - lists every category with a one-liner

`GET /v1/`

V2 catalog entry point. Returns the categories list + tool surface
summary. Convenient for humans to inspect; MCP agents see the same
information via the server-instructions field at session init.

## List indicators in a V2 category

`GET /v1/categories/{category}/indicators`

Returns metadata for every visible indicator in one Tigzig V2 category.

Each indicator row carries: indicator_id, name, country, frequency, unit, source, source_series_id, seasonally_adjusted, first_date, last_date, record_count, and `notes` (free-text caveats: annualization rules, cumulative-vs-per-period semantics, base-year vintages, source-method discontinuities). READ THE NOTES before computing - they capture the gotchas that the name + unit fields alone don't convey. Pick which ids you need, then call v2_get_series with those ids.

Tip: pass compact=true for big categories - returns just {indicator_id, name, frequency, last_date} per row (no notes), saves tokens.

Categories:
  us_macro       US macro: FRED + Michigan + UMCSENT. Monetary, labor, inflation, GDP, consumer sentiment, housing, financial conditions.
  us_credit      US credit stress: delinquency + charge-offs from FRED + FFIEC, NCUA credit-union aggregates, NY Fed Household Debt, FDIC bank aggregates.
  us_valuation   US equity-market valuation: Shiller CAPE, Buffett indicator (market cap / GDP), nominal GDP, US Treasury bond yields.
  us_insurance   US insurance industry: Fed Z.1 invested asset breakdown for Life and P&C insurers (general account, separate account, by asset class).
  india_macro    India macro + credit: RBI WSS (rates, FX reserves, money supply), MoSPI (IIP, CPI, WPI, GDP, GFCF), NSE Nifty 50 PE/PB/DivYield.
  global_macro   Global macro: OECD Business Confidence Indicator (37 countries), European sovereign bond yields (Bund, Gilt, ECB AAA + all-issuer).
  markets        Daily market prices (Yahoo Finance): 16 symbols. Equity indices (SPX, Nifty, Nikkei, Hang Seng, DAX, Shanghai), bond yields (US 10Y), currencies (DXY, USD/INR, USD/JPY), commodities (Gold, Silver, Copper, WTI, Brent, Natural Gas).
  currencies     Daily FX rates (FRED DEX* series): USDINR, USDJPY, USDKRW, USDTWD. Designed for INR-vs-EM-Asia peer cuts.

Unknown category returns HTTP 404 with the valid list, so an agent that skipped list_categories can still recover.

## List all V2 categories with one-liner descriptions

`GET /v1/categories`

Returns the full menu of Tigzig V2 categories with a one-line summary of each. Call this first when you don't know which domain a question lives in. Then call list_indicators_in_category to expand any.

Categories:
  us_macro       US macro: FRED + Michigan + UMCSENT. Monetary, labor, inflation, GDP, consumer sentiment, housing, financial conditions.
  us_credit      US credit stress: delinquency + charge-offs from FRED + FFIEC, NCUA credit-union aggregates, NY Fed Household Debt, FDIC bank aggregates.
  us_valuation   US equity-market valuation: Shiller CAPE, Buffett indicator (market cap / GDP), nominal GDP, US Treasury bond yields.
  us_insurance   US insurance industry: Fed Z.1 invested asset breakdown for Life and P&C insurers (general account, separate account, by asset class).
  india_macro    India macro + credit: RBI WSS (rates, FX reserves, money supply), MoSPI (IIP, CPI, WPI, GDP, GFCF), NSE Nifty 50 PE/PB/DivYield.
  global_macro   Global macro: OECD Business Confidence Indicator (37 countries), European sovereign bond yields (Bund, Gilt, ECB AAA + all-issuer).
  markets        Daily market prices (Yahoo Finance): 16 symbols. Equity indices (SPX, Nifty, Nikkei, Hang Seng, DAX, Shanghai), bond yields (US 10Y), currencies (DXY, USD/INR, USD/JPY), commodities (Gold, Silver, Copper, WTI, Brent, Natural Gas).
  currencies     Daily FX rates (FRED DEX* series): USDINR, USDJPY, USDKRW, USDTWD. Designed for INR-vs-EM-Asia peer cuts.

## Cross-category indicator search by id substring or name

`GET /v1/find`

Substring search over indicator IDs and display names across ALL V2 categories. Use this when you know what you want but not which category it lives in (e.g. 'usdinr', 'shiller', 'cape', 'nominal').

Returns: {indicator_id, name, category, country, frequency, first_date, last_date}. Match is case-insensitive substring on indicator_id OR display name. The `category` field on each hit tells you which V2 category to call list_indicators_in_category or v2_get_series against.

## Get time-series data for one or more V2 indicators (wide format)

`GET /v1/series`

Returns wide-format time series: one row per date, one column per indicator. Works seamlessly across V2 backends - mix macro indicators and market prices in one call.

Required: ids (comma-separated, max 10). Optional: from + to (YYYY-MM-DD), format (json | tsv).

Use format=tsv for long / daily series to save tokens - much lighter than the default JSON. The TSV body has this shape:
  # meta: count=N unknown=[id1,...] empty=[id1,...]
  date<TAB>id1<TAB>id2<TAB>...
  YYYY-MM-DD<TAB>val<TAB>val<TAB>...
First line is always a '#' meta comment - same unknown/empty signals as the JSON path. Most TSV parsers skip '#' lines (pandas: comment='#'; duckdb read_csv: SKIP). The HTTP headers X-V2-Unknown-Ids / X-V2-Empty-Ids / X-V2-Count also carry this info for REST consumers.

JSON response includes meta.unknown_ids (ids not in any V2 catalog) and meta.empty_ids (ids that exist but returned no rows in the date range). Use these to distinguish 'typo' from 'no data here'.

## Manifest of pre-generated download files (sizes, row counts, generated_at)

`GET /v1/downloads/manifest`

Returns the manifest of pre-generated bulk download files. The manifest is the source of truth - iterate over it instead of hard-coding filenames, so future tables auto-appear without breaking client code.

Same files served by V1's /tremor/v1/downloads/manifest - V2 is just a URL alias so V2 consumers don't need to know V1's prefix.

## Manifest of pre-generated download files (sizes, row counts, generated_at)

`HEAD /v1/downloads/manifest`

Returns the manifest of pre-generated bulk download files. The manifest is the source of truth - iterate over it instead of hard-coding filenames, so future tables auto-appear without breaking client code.

Same files served by V1's /tremor/v1/downloads/manifest - V2 is just a URL alias so V2 consumers don't need to know V1's prefix.

## Download ALL Tremor tables in one file (sqlite or duckdb)

`GET /v1/download/all`

Single file with macro_indicators (visible-filtered), stock_prices, and indicator_config (data dictionary). README.md inside the zip.

Formats: sqlite (default, .db.zip), sqlite.gz, duckdb (.duckdb.zip), duckdb.gz. CSV/TSV/Parquet are per-table only - use /v1/download/{table}.

Same file served by V1's /tremor/v1/download/all.

## Download ALL Tremor tables in one file (sqlite or duckdb)

`HEAD /v1/download/all`

Single file with macro_indicators (visible-filtered), stock_prices, and indicator_config (data dictionary). README.md inside the zip.

Formats: sqlite (default, .db.zip), sqlite.gz, duckdb (.duckdb.zip), duckdb.gz. CSV/TSV/Parquet are per-table only - use /v1/download/{table}.

Same file served by V1's /tremor/v1/download/all.

## Download one Tremor table as a pre-generated file

`GET /v1/download/{table_name}`

Available tables (visible-filtered):
- macro_indicators: long-format time series, ~290 visible indicators
- stock_prices: daily OHLCV for 16 market symbols
- indicator_config: data dictionary (display name, source, notes per indicator)

Formats: csv (zip), csv.gz, tsv (zip), tsv.gz, parquet (default), sqlite (.db.zip), sqlite.gz, duckdb (.duckdb.zip), duckdb.gz.

Same files served by V1's /tremor/v1/download/{table_name}.

## Download one Tremor table as a pre-generated file

`HEAD /v1/download/{table_name}`

Available tables (visible-filtered):
- macro_indicators: long-format time series, ~290 visible indicators
- stock_prices: daily OHLCV for 16 market symbols
- indicator_config: data dictionary (display name, source, notes per indicator)

Formats: csv (zip), csv.gz, tsv (zip), tsv.gz, parquet (default), sqlite (.db.zip), sqlite.gz, duckdb (.duckdb.zip), duckdb.gz.

Same files served by V1's /tremor/v1/download/{table_name}.
