Built and run by one person.

APIs & MCP Servers from Tigzig

Free, open APIs and MCP servers. No authentication on read endpoints. Three kinds: data APIs that serve our datasets, analytics APIs that compute a report from inputs you send, and tools. Almost every service is both a REST API and an MCP server over the same backend. This is a directory - pick a service, then open its live app or its docs. Each docs page has everything else: endpoints, the OpenAPI spec, the MCP server, and bulk downloads. Looking for just the MCP servers? See the MCP Hub.

10APIs & MCP servers
MCP + RESTdual interface
20M+rows served
~300macro indicators
Openno auth required
AI agents: every API here is listed in the machine-readable catalog (RFC 9727) and exposes an OpenAPI 3.1 spec at {base}/openapi.json. Start at the catalog or the site index rather than parsing this page. Beta. Endpoints are stable; rate limits, formats, and parameters may evolve. Canonical machine list at api.tigzig.com/.well-known/api-catalog.

Data APIs

Serve structured datasets. Hit the query endpoints, or download the whole database in one file (CSV / TSV / Parquet / SQLite / DuckDB).

TREMOR / Tigzig Unified Data Surface

APIMCPDATA

Global macro, credit, valuation, insurance, India, markets and FX indicators across 8 categories (FRED, NY Fed, FDIC, NCUA, RBI, MoSPI, ECB, OECD, Shiller, NSE). Category-first navigation: pick a domain, drill in. Pull any series, or bulk-download the whole database.

VIGIL API

APIDATA

India corporate red-flag signals from NSE - share pledges, insider trades, rating changes, surveillance and more, across 7 tables.

MF NAV API

APIDATA

Daily NAV history for 38,000+ Indian mutual fund schemes (AMFI), April 2006 onward - 37M+ records, refreshed daily. The data behind MFPRO.

Yahoo Finance Data API

APIMCPOSS

Financials, prices, market data, analyst targets, estimates, holders, dividends, splits, corporate actions and detailed info for any ticker (~24 endpoints). Powered by yfinance.

Analytics APIs

Send inputs (tickers, a portfolio) and get a computed report or dataset back. Each is open source and also runs as an MCP server over the same backend.

QREP - Compare Securities

APIMCPOSS

Compare up to 6 securities against a benchmark - 81 QuantStats metrics each (CAGR, Sharpe, Sortino, Max Drawdown). Original ranaroussi/quantstats. Open MCP endpoint, no key.

Security Performance Report (SPR / FFN)

APIMCPOSS

Multi-security performance and risk report (returns, drawdown, Sharpe and more) from a list of tickers. Dual methodology: custom calculations validated against QuantStats, plus the FFN library.

Technical Analysis API

APIMCPOSS

Indicator-based plus Gemini-Vision chart-read technical report (PDF and web) for any ticker - EMAs, MACD, RSI, Bollinger Bands on daily and weekly timeframes.

Tools

MCP tools and utility services over the same infrastructure.

Database Query (read-only SQL)

MCPSQLOSS

Read-only SQL over Postgres (Supabase) and DuckDB (embedded) - ~2.1M+ cricket ball-by-ball deliveries plus match-level tables, refreshed twice daily - as MCP tools, behind a multi-layer security stack. Open endpoint plus an Auth0-secured endpoint.

Markdown to PDF

APIMCPOSS

Convert Markdown to a formatted PDF as an MCP tool call or an open HTTP API - the agent writes a report, calls the tool, gets back a PDF URL. FastAPI + ReportLab.

Guides

The pages above are the reference - what each API is and how to call it. These are the long-form guides: worked examples, the mistakes real callers actually make, and what to do when something returns an error. Each is a plain page with a Markdown twin, so you can hand the URL straight to an agent.

Rate Limits

Published limits are per IP, so a well-behaved client can plan around them. Cross one and you get HTTP 429 with Retry-After and a JSON body naming the limit hit and what to do instead (typically: batch, or use the bulk download rather than paginating). Honor the header for clean back-off. These figures are current at build time - the numbers that cannot go stale are the X-RateLimit-* headers on your own successful responses and each API's discovery endpoint, both linked from the per-API page.

SurfacePath prefixLimitNote
Tigzig Unified (recommended) /v1/* 60 req/min Catalog + indicator + search + series
Tigzig Unified downloads /v1/download/* 10 req/min Bulk file serving - downloads are heavy
Vigil /vigil/v1/* 30 req/min NSE corporate signals
Vigil downloads /vigil/v1/download/* 10 req/min Bulk file serving - downloads are heavy
MF NAV /mf/v1/* 300 req/min AMFI mutual fund daily NAV
MF NAV downloads (range, 206) /mf/v1/download 3,000 req/min Partial reads - one analytical scan is many small 206s
MF NAV downloads (whole file) /mf/v1/download 60 req/min Bulk file serving - downloads are heavy
Yahoo Finance yfin-h.tigzig.com 100 req/min Yahoo Finance market + fundamentals
FFN Portfolio Analytics ffn.tigzig.com 60 req/min Portfolio analytics - concurrency capped at 4
QuantJourney / QRep qrep-api.tigzig.com 60 req/min Quant tearsheets - 6 symbols per call
Technical Analysis ta.tigzig.com 25 req/day AI technical analysis - daily allowance, paid model per call
Markdown to PDF mdtopdf.tigzig.com 30 req/min Markdown to PDF / HTML rendering
Database MCP db-mcp.tigzig.com 60 req/min Read-only SQL over cricket datasets

Legacy: an earlier Tremor V1 surface is still served at /tremor/v1/* (REST) and /tremor/v1/mcp/http (MCP). It is frozen - response shape stable, data still refreshed daily - and stays mounted for existing integrations (limits 10-30 req/min per IP). New work should use the unified /v1/* surface above.

Sample 429 response

HTTP/1.1 429 Too Many Requests
Retry-After: 60

{
  "detail": "Rate limit exceeded",
  "limit": "60 per 1 minute",
  "retry_after_seconds": 60,
  "suggestion": "For multi-indicator or long-history pulls use the bulk download endpoints instead of paginating: GET /v1/download/all (sqlite | duckdb) for the full dataset, or /v1/download/{table}?format= for one table. One request vs many.",
  "limits_doc": "https://api.tigzig.com/v1/"
}

Per-call caps (unified /v1 series + indicators endpoints)

  • Max 10 indicators per /v1/series call - pass more by chunking, or hit /v1/download/{table} for the whole table in one file
  • Max 10,000 rows per response - reduce the date range, or use a bulk download for full history
  • TSV output carries a # meta: count=N unknown=[...] empty=[...] comment line so the agent can detect typo'd ids in the body

Heavy pulls: use bulk downloads, not pagination

If you need many indicators or long history, do not paginate /v1/series - use bulk downloads instead. One bulk request avoids rate limits entirely and serves you a single file you can query locally.

  • GET /v1/download/all?format=sqlite (or duckdb) - every public table in one file
  • GET /v1/download/{table_name}?format=parquet - one table (macro_indicators, stock_prices, or indicator_config)
  • GET /v1/downloads/manifest - file sizes + last-refresh timestamp

Programmatic consumers: the live numbers are also available at GET https://api.tigzig.com/v1/ under the limits block (per_ip_per_minute, per_ip_downloads_per_minute, max_ids_per_series_call, max_rows_per_response). Read it once at startup; do not hard-code.