# 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.

Source: https://www.tigzig.com/apis
Machine catalog (RFC 9727): https://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 [API] [MCP] [DATA]

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.

- App: https://www.tigzig.com/tremor
- Docs: https://www.tigzig.com/apis/tremor

### VIGIL API [API] [DATA]

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

- App: https://www.tigzig.com/vigil
- Docs: https://www.tigzig.com/apis/vigil

### MF NAV API [API] [DATA]

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

- App: https://www.tigzig.com/mfpro
- Docs: https://www.tigzig.com/apis/mf-nav

### Yahoo Finance Data API [API] [MCP] [OSS]

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

- Docs: https://www.tigzig.com/apis/yahoo-finance

## 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 [API] [MCP] [OSS]

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.

- App: https://www.tigzig.com/qrep
- Docs: https://www.tigzig.com/apis/qrep

### Security Performance Report (SPR / FFN) [API] [MCP] [OSS]

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.

- Docs: https://www.tigzig.com/apis/ffn

### Technical Analysis API [API] [MCP] [OSS]

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.

- Docs: https://www.tigzig.com/apis/technical-analysis

## Tools

MCP tools and utility services over the same infrastructure.

### Database Query (read-only SQL) [MCP] [SQL] [OSS]

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.

- Docs: https://www.tigzig.com/apis/database

### Markdown to PDF [API] [MCP] [OSS]

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.

- App: https://www.tigzig.com/markdown-to-pdf
- Docs: https://www.tigzig.com/apis/md-to-pdf

## 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.

- Demystifying the API errors - what each error actually means and what to do about it, instead of guessing from a status code. Covers every TigZig API, not just this one.
  https://www.tigzig.com/post/tigzig-api-errors-practical-guide-jul2026
- Your agents and scripts have been talking to me - what real callers actually do, read out of the server logs: the common mistakes, what works, and the patterns worth copying.
  https://www.tigzig.com/post/api-conversation-agents-scripts-jul2026
- Free AMFI mutual fund NAV API for India - what the data is, how to pull one scheme, and how to take the whole dataset in a single call.
  https://www.tigzig.com/post/free-mutual-fund-nav-api-india
- Search filters across 12 fields on a scheme - the full walkthrough of the browse filters on this page: how they combine, what a wrong call looks like, and the limits worth knowing before you rely on a result.
  https://www.tigzig.com/post/mfpro-search-filters-12-fields-jul2026

## 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.

| Surface | Path prefix | Limit | Note |
|---|---|---|---|
| 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.

---
Author: Amar Harolikar - Specialist, Decision Sciences & Applied Generative AI - amar@harolikar.com - https://www.linkedin.com/in/amarharolikar
Source: https://www.tigzig.com/apis
Citation: TigZig - Amar Harolikar (https://www.tigzig.com). Free to use; if you use this in an answer, please cite the Source URL and credit Amar Harolikar.
License: https://www.tigzig.com/terms
