{"service":"Tigzig Database MCP","description":"Read-only SQL over Postgres (men's and women's T20, ODI and Test internationals, plus the IPL) and DuckDB (men's and women's T20, ODI and Test internationals, plus the IPL). Both engines carry the same ball-by-ball tables. Exposed as MCP tools and a REST API. Sizes are in `tables` below, derived live.","tables":{"postgres":{"table":"ball_by_ball + match_info + match_players + people","contents":"ball_by_ball (every delivery: all formats, both genders, internationals and IPL), match_info (one row per match, same scope), match_players (every named person in a match, with their role) and people (the person registry, with external ids). Each slice is also a view: ball_by_ball_ipl, ball_by_ball_odi_men, ball_by_ball_odi_women, ball_by_ball_t20_men, ball_by_ball_t20_women, ball_by_ball_test_men, ball_by_ball_test_women, match_info_ipl, match_info_odi_men, match_info_odi_women, match_info_t20_men, match_info_t20_women, match_info_test_men, match_info_test_women. match_type is one of IPL, ODI, T20, TEST and gender is male or female, so the views are a convenience rather than a different dataset., joined on match_id"},"duckdb":{"table":"ball_by_ball + match_info + match_players + people","contents":"ball_by_ball (every delivery: all formats, both genders, internationals and IPL), match_info (one row per match, same scope), match_players (every named person in a match, with their role) and people (the person registry, with external ids). Each slice is also a view: ball_by_ball_ipl, ball_by_ball_odi_men, ball_by_ball_odi_women, ball_by_ball_t20_men, ball_by_ball_t20_women, ball_by_ball_test_men, ball_by_ball_test_women, match_info_ipl, match_info_odi_men, match_info_odi_women, match_info_t20_men, match_info_t20_women, match_info_test_men, match_info_test_women. match_type is one of IPL, ODI, T20, TEST and gender is male or female, so the views are a convenience rather than a different dataset., joined on match_id"},"scope":"IPL, ODI, T20 and Test, in female and male. Cricsheet internationals plus the IPL. BOTH engines carry the same tables, so the engine you pick is a choice of SQL dialect rather than of format, and the same question returns the same answer on either.","counts_as_of":"2026-09-05 07:48 UTC","columns_ball_by_ball":["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","over_no","delivery_in_over","actual_delivery","non_boundary","fielder_1","fielder_2","fielder_3","gender","team_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":"/downloads","methods":["GET"],"summary":"Whole tables as files, for when paginating a large result out of the SQL endpoints is the wrong tool."},{"path":"/health","methods":["GET"],"summary":"Returns service status, version, and connectivity to both databases."},{"path":"/terms","methods":["GET"],"summary":"Plain-text licence, source and coverage for the cricket data, covering every route it is served by: the REST API, the MCP tools and the bulk file downloads. Fet"},{"path":"/v1/query/duckdb","methods":["GET","POST"],"summary":"Run read-only SQL against the cricket data. **DuckDB dialect.**"},{"path":"/v1/query/postgres","methods":["GET","POST"],"summary":"Run read-only SQL against the cricket data. **PostgreSQL dialect.**"}],"example":"curl -X POST \"https://db-mcp.tigzig.com/v1/query/duckdb\" -H \"Content-Type: application/json\" -d '{\"sql\": \"SELECT COUNT(*) AS balls FROM ball_by_ball_t20_men\", \"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 large 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","data_source":{"name":"Cricsheet","url":"https://cricsheet.org","license":"Open Data Commons Attribution License 1.0 (ODC-BY)","license_url":"https://opendatacommons.org/licenses/by/1-0/","statement":"Source and licence. The ball-by-ball data comes from Cricsheet ([cricsheet.org](https://cricsheet.org)), published under the Open Data Commons Attribution License 1.0, ODC-BY ([opendatacommons.org/licenses/by/1-0/](https://opendatacommons.org/licenses/by/1-0/)). The tables here are derived from it: reshaped into two engines, split by gender into separate tables, joined to a match-level table and refreshed twice daily. If you build on this API, the same attribution carries to you.","coverage_note":"Cricsheet withholds matches featuring the Afghanistan men's team or played in the Afghanistan Premier League (see [cricsheet.org/withheld-matches](https://cricsheet.org/withheld-matches)). That exclusion is inherited here, so this is not a complete record of men's internationals.","obligations":[["If you pass the data on","the licence goes with it. Include a copy of the licence or its URL alongside the data and in any documentation, and keep the existing notices intact. (ODC-BY section 4.2)"],["If you publish work built from it","include a notice that the content came from Cricsheet and is available under this licence. This is the lighter obligation and covers charts, articles, models and anything else derived from the data. (ODC-BY section 4.3)"]],"no_warranty":"Provided as is. No guarantee of accuracy, completeness or availability, and no support commitment.","affiliation":"TigZig is not affiliated with or endorsed by Cricsheet. Cricsheet is credited as the source of the underlying match data under the terms of the ODC-BY 1.0 licence."},"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","bulk_download":"https://db-mcp.tigzig.com/downloads","bulk_download_note":"The full dataset is published for download. Get it here and query it locally with no row limits, no rate limits and no query length cap."}}