{"openapi":"3.1.0","info":{"title":"Unclaimed — public API","version":"1.0.0","description":"The public, read-only surface of 2217 household benefit and 1641 company/startup grant records, across 25 countries and 77 jurisdictions. Free fields are described per schema below; the same data is also reachable through an MCP server at /mcp for any MCP-capable AI client — no key, no install.","contact":{"url":"https://unclaimedgrant.com/api/"},"license":{"name":"Dataset terms","url":"https://unclaimedgrant.com/api/"}},"servers":[{"url":"https://unclaimedgrant.com"}],"tags":[{"name":"household","description":"Individual and household benefits"},{"name":"startups","description":"Company and startup grants"},{"name":"alerts","description":"Deadline email alerts"},{"name":"mcp","description":"The Model Context Protocol endpoint"}],"paths":{"/api/check":{"post":{"tags":["household"],"summary":"Run the household eligibility check","description":"Matches a profile (country, age, income band, household, housing) against that country's dataset. Returns the eligible total and, for entitled callers, the named programme list; a signed-out or unentitled caller receives the total and a locked count only.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["country_code"],"properties":{"country_code":{"type":"string","description":"Two-letter country slug, e.g. \"gb\"."}},"additionalProperties":true}}}},"responses":{"200":{"description":"Match result","content":{"application/json":{"schema":{"type":"object","properties":{"country":{"type":"string"},"currency":{"type":"string"},"total_min":{"type":"number"},"total_max":{"type":"number"}}}}}},"400":{"description":"country_code required"}}}},"/api/startups/check":{"post":{"tags":["startups"],"summary":"Run the company eligibility check","description":"Matches a company profile (country, stage, headcount, turnover) against every reachable jurisdiction's dataset (a company's own country plus EU and global pools where applicable).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["country_code"],"properties":{"country_code":{"type":"string"}},"additionalProperties":true}}}},"responses":{"200":{"description":"Match result"},"400":{"description":"country_code required"}}}},"/api/v1/countries.json":{"get":{"tags":["household"],"summary":"Country index","description":"Codes, currencies, regions, income bands and record counts for every household country.","responses":{"200":{"description":"OK"}}}},"/api/v1/programmes/{cc}.json":{"get":{"tags":["household"],"summary":"Every public household programme for one country","parameters":[{"name":"cc","in":"path","required":true,"schema":{"type":"string"},"example":"gb"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"programmes":{"type":"array","items":{"type":"object","description":"A public household-benefit record. Showcase records (see free_rows below) are whole; every other record has locked: true with application_url, source_url, procedure_steps and documents_required removed.","properties":{"slug":{"type":"string"},"name_en":{"type":"string"},"funder":{"type":"string"},"category":{"type":"string"},"benefit_type":{"type":"string"},"amount_min":{"type":["number","null"]},"amount_max":{"type":["number","null"]},"amount_currency":{"type":["string","null"]},"verification_status":{"type":"string","enum":["verified","auto_extracted"]},"last_verified_at":{"type":"string","format":"date"},"locked":{"type":"boolean"}},"required":["slug","name_en","funder"]}}}}}}}}}},"/api/v1/stats.json":{"get":{"tags":["household"],"summary":"Live dataset statistics","responses":{"200":{"description":"OK"}}}},"/api/v1/startups/index.json":{"get":{"tags":["startups"],"summary":"Jurisdiction/pool index for company grants","responses":{"200":{"description":"OK"}}}},"/api/v1/startups/{slug}.json":{"get":{"tags":["startups"],"summary":"Every public company grant for one jurisdiction","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"example":"gb"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"programmes":{"type":"array","items":{"type":"object","description":"A public company/startup grant record. Free-rows are whole; every other record has application_url, procedure_steps and documents_required removed and locked: true.","properties":{"slug":{"type":"string"},"name_en":{"type":"string"},"country_code":{"type":"string"},"funder":{"type":"string"},"grant_type":{"type":"string"},"status":{"type":"string","enum":["open","rolling","upcoming","closed","paused"]},"closes_at":{"type":["string","null"],"format":"date"},"amount_min":{"type":["number","null"]},"amount_max":{"type":["number","null"]},"amount_currency":{"type":["string","null"]},"last_verified_at":{"type":"string","format":"date"},"locked":{"type":"boolean"}},"required":["slug","name_en","country_code"]}}}}}}}}}},"/api/v1/csv/startups-{cc}.csv":{"get":{"tags":["startups"],"summary":"Free per-country CSV of public startup-grant fields","description":"PUBLIC fields only: slug, name, funder, country, grant_type, status, closes_at, page_url. Never application_url, documents_required or procedure_steps — those are the paid tier.","parameters":[{"name":"cc","in":"path","required":true,"schema":{"type":"string"},"example":"gb"}],"responses":{"200":{"description":"CSV file","content":{"text/csv":{"schema":{"type":"string"}}}}}}},"/api/v1/mcp-tools.json":{"get":{"tags":["mcp"],"summary":"MCP tool schemas (JSON Schema 2020-12)","responses":{"200":{"description":"OK"}}}},"/api/alerts/status":{"get":{"tags":["alerts"],"summary":"Whether email alerts are configured on this deployment","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"configured":{"type":"boolean"}}}}}}}}},"/api/alerts/subscribe":{"post":{"tags":["alerts"],"summary":"Subscribe to deadline alerts (double opt-in)","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email","jurisdictions","audience"],"properties":{"email":{"type":"string","format":"email"},"jurisdictions":{"type":"array","items":{"type":"string"}},"audience":{"type":"string","enum":["companies","individuals"]}}}}}},"responses":{"200":{"description":"Confirmation email sent"},"429":{"description":"Rate limited"},"503":{"description":"Email is not configured on this deployment"}}}},"/api/alerts/confirm":{"get":{"tags":["alerts"],"summary":"Confirm a subscription (the link in the opt-in email)","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Confirmed"}}}},"/api/alerts/unsubscribe":{"get":{"tags":["alerts"],"summary":"Unsubscribe (the link in every alert email)","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Unsubscribed"}}}},"/mcp":{"post":{"tags":["mcp"],"summary":"MCP Streamable HTTP endpoint (spec 2025-06-18, 2025-03-26 also accepted)","description":"A stateless JSON-RPC 2.0 endpoint any MCP client can add by URL. Apart from report_issue, which only records a data-quality report, every tool is read-only: it can look up programmes, coverage and, for a signed-in caller with a bearer token, their own entitlement. It cannot sign anyone in, spend money, or submit an application. See /api/v1/mcp-tools.json for the exact tool schemas.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"A JSON-RPC 2.0 request, e.g. {\"method\":\"tools/list\"}."}}}},"responses":{"200":{"description":"JSON-RPC 2.0 response"}}}}}}