{"service":"Tigzig Database MCP","description":"Read-only SQL over Postgres (men's ODI cricket) and DuckDB (men's T20 cricket). Exposed as MCP tools and a REST API. Sizes are in `tables` below, derived live.","tables":{"postgres":{"table":"odi_ball_by_ball + match_info","contents":"odi_ball_by_ball (men's ODI ball-by-ball, 1.36M+ deliveries) and match_info (6,900+ matches, ALL formats), joined on match_id"},"duckdb":{"table":"t20_ball_by_ball + match_info","contents":"t20_ball_by_ball (men's T20 ball-by-ball, 786k+ deliveries) and match_info (6,900+ matches, ALL formats), joined on match_id"},"scope":"Men's international cricket only. No women's cricket for now, and no domestic or franchise data (no IPL) - this is a Cricsheet internationals set. match_info covers ODI, T20 and TEST in both engines; the ball tables are one format each.","counts_as_of":"2026-08-16 09:50 UTC","columns_both_tables":["match_id","season","start_date","venue","innings","ball","batting_team","bowling_team","striker","non_striker","bowler","runs_off_bat","extras","wides","noballs","byes","legbyes","penalty","wicket_type","player_dismissed","other_wicket_type","other_player_dismissed","match_type"]},"mcp":{"url":"https://db-mcp.tigzig.com/mcp","transport":"streamable-http","how_to_use":"Add as a custom connector in Claude.ai (Settings > Connectors), ChatGPT, Cursor, LM Studio or n8n."},"rest":{"base_url":"https://db-mcp.tigzig.com/v1","swagger":"https://db-mcp.tigzig.com/v1/docs","openapi":"https://db-mcp.tigzig.com/v1/openapi.json","get_variant":"GET /v1/query/{postgres|duckdb}?sql=<url-encoded SQL> also works (fetch-only clients); POST preferred","endpoints":[{"path":"/health","methods":["GET"],"summary":"Returns service status, version, and connectivity to both databases."},{"path":"/v1/query/duckdb","methods":["POST"],"summary":"Execute a read-only SQL query against the DuckDB database. Men's T20 (Twenty20) international cricket, refreshed twice daily from the same validated source the "},{"path":"/v1/query/duckdb","methods":["GET"],"summary":"GET variant for fetch-only clients (browsers, crawler-style agents, no-code HTTP nodes that cannot send a POST body). Same engine, same read-only SQL validation"},{"path":"/v1/query/postgres","methods":["POST"],"summary":"Execute a read-only SQL query against the Supabase Postgres database. Men's ODI (One Day International) cricket, refreshed twice daily from the same validated s"},{"path":"/v1/query/postgres","methods":["GET"],"summary":"GET variant for fetch-only clients (browsers, crawler-style agents, no-code HTTP nodes that cannot send a POST body). Same engine, same read-only SQL validation"}],"example":"curl -X POST \"https://db-mcp.tigzig.com/v1/query/duckdb\" -H \"Content-Type: application/json\" -d '{\"sql\": \"SELECT COUNT(*) AS balls FROM t20_ball_by_ball\", \"format\": \"json\"}'"},"limits":{"response_headers":"Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (Unix epoch seconds) for your per-IP budget. On 429, Retry-After is set. Read these at runtime instead of hard-coding numbers.","max_concurrent_per_ip":4,"guidance":"This is a read-only SQL endpoint over ~1M-row tables. Aggregate or LIMIT server-side in the SQL rather than paginating many small queries - one GROUP BY costs a single request where pagination costs dozens.","per_ip":"60 requests per minute per IP","per_ip_amount":60,"per_ip_window_seconds":60},"v":"1.0.0","catalog":"https://api.tigzig.com/.well-known/api-catalog","health":"https://db-mcp.tigzig.com/health","help":{"openapi":"https://db-mcp.tigzig.com/v1/openapi.json","docs":"https://db-mcp.tigzig.com/v1/docs","catalog":"https://api.tigzig.com/.well-known/api-catalog"}}