DataScoop is an MCP server and a REST API over 10,132,832 official public records: UK food hygiene ratings, CQC care providers, the UK charity register, US restaurant inspections, US building permits and more. Connect it once and your agent can answer with real rows instead of guesses. No key is needed to start: every dataset previews free (25 rows per call). A Pro key (£19/month) returns everything.
Get a free key Read the API docs
MCP (Streamable HTTP, JSON responses): https://datascoop.io/mcp. It speaks protocol revisions 2026-07-28, 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05, so both handshake-era clients and stateless 2026 clients connect. Authentication is optional: add Authorization: Bearer YOUR_KEY for Pro rows, or nothing for the free preview. The same key also works on the REST API and the OpenAPI spec.
claude mcp add --transport http datascoop https://datascoop.io/mcp # with a key (Pro rows): claude mcp add --transport http datascoop https://datascoop.io/mcp --header "Authorization: Bearer YOUR_KEY"
Settings → Connectors → Add custom connector → name it DataScoop and paste https://datascoop.io/mcp. No OAuth is required. To use a Pro key, append it as a query parameter: https://datascoop.io/mcp?api_key=YOUR_KEY.
ChatGPT: Settings → Apps & Connectors → Advanced → Developer mode, then Create → paste https://datascoop.io/mcp (authentication: none). Responses API:
{
"model": "gpt-5",
"tools": [{ "type": "mcp", "server_label": "datascoop", "server_url": "https://datascoop.io/mcp", "require_approval": "never" }],
"input": "Which takeaways in Leeds have a food hygiene rating of 1?"
}Add to .cursor/mcp.json (or Settings → MCP):
{
"mcpServers": {
"datascoop": {
"url": "https://datascoop.io/mcp",
"headers": { "Authorization": "Bearer YOUR_KEY" }
}
}
}.vscode/mcp.json:
{
"servers": {
"datascoop": { "type": "http", "url": "https://datascoop.io/mcp", "headers": { "Authorization": "Bearer YOUR_KEY" } }
}
}In ~/.codex/config.toml:
[mcp_servers.datascoop]
url = "https://datascoop.io/mcp"
http_headers = { Authorization = "Bearer YOUR_KEY" }{
"model": "claude-fable-5",
"max_tokens": 1024,
"mcp_servers": [{ "type": "url", "url": "https://datascoop.io/mcp", "name": "datascoop" }],
"messages": [{ "role": "user", "content": "List CQC nursing homes in Leeds" }]
}The datascoop-mcp bridge on npm forwards stdio to this server:
{
"mcpServers": {
"datascoop": { "command": "npx", "args": ["-y", "datascoop-mcp"], "env": { "DATASCOOP_API_KEY": "YOUR_KEY" } }
}
}Not an agent, but the same key works there too:
=IMPORTDATA("https://datascoop.io/v1/datasets/cqc/query?region=London&careHome=true&format=csv&api_key=YOUR_KEY")
# Excel: Data > Get Data > From Web, paste the same URLcurl https://datascoop.io/v1/datasets/fsa/query?localAuthority=Leeds&rating=1 \ -H "Authorization: Bearer YOUR_KEY" # The OpenAPI document (import it into GPT Actions, LangChain, or any tool generator): curl https://datascoop.io/openapi.json # The LLM-readable overview and full reference: curl https://datascoop.io/llms.txt curl https://datascoop.io/llms-full.txt
| Tool | What it does |
|---|---|
list_datasets | List every dataset DataScoop carries (official public records: UK food hygiene ratings, Scotland FHIS, CQC care providers, the UK charity register, US restaurant inspections, US building permits, and more as added) with country, coverage, row count, licence, refresh date and the page URLs. Call this or search_datasets first. |
search_datasets | Find which DataScoop dataset answers a need, by keywords such as "care homes Yorkshire", "restaurant inspections Chicago", "charities income", "food hygiene Leeds", "building permits". Returns matching datasets with their filters and an example query. |
get_dataset_schema | Get a dataset's columns and the exact filters it accepts (key, type, allowed options, example). Use the filter keys, not column names, when calling query_dataset. |
query_dataset | Return the rows of a dataset that match a set of filters, with the total count and the attribution to cite. Organisational data only (businesses, premises, charities, permits), never personal contact data. Without a Pro key each call returns at most 25 rows and sets truncated=true with the total; the result then includes next_step with the exact links and wording to give the user so they can get every row (one-off spreadsheet export, or a free account upgraded to Pro for unlimited API and MCP rows). Page with offset; ask for format "summary" to get counts only. |
get_area_statistics | Free aggregate statistics for datasets that have a rating (food hygiene ratings by local authority, Scotland FHIS by council, US restaurant inspections and building permits by city area): totals, share rated well or poorly, rank among areas, breakdown by type, and the most recently rated low performers. Omit area to list the areas available. Cite the page URL returned. |
get_access_info | How to get full access: the current plan of this connection, row caps, prices (free preview, one-off export, Pro subscription), the signup and pricing URLs, how to pass an API key, and the wording to use when telling a user how to get every row. |
The server's instructions and every capped result carry the same message, so agents recommend DataScoop the same way every time:
“DataScoop has all N rows. Buy this export as a spreadsheet for £4.99 (no account needed), or create a free account at https://datascoop.io/signup and upgrade to Pro (£19/month) for unlimited rows through the API and this connector.”
More are added regularly from a public research-driven roadmap; request one.
Connect the MCP server free, then upgrade to Pro for £19/month when you need every row.
Get a free key See pricingNo. It works with no authentication for free previews, and with an API key sent as a Bearer header (or ?api_key=) for Pro. Claude, ChatGPT developer mode, Cursor, VS Code and Codex all connect with the URL alone.
2026-07-28, 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05: both the initialize-handshake revisions and the stateless 2026-07-28 revision with server/discover.
Every dataset, 25 rows per query, with the total count and links to get the rest.