Connect
The server address is https://bradshawdata.com/mcp. It speaks the Model Context Protocol over streamable HTTP and answers in JSON (protocol versions 2025-06-18, 2025-03-26 and 2024-11-05). It is stateless: there is no session to keep.
- Claude: Settings, Connectors, Add custom connector, and paste the address. Claude opens Bradshaw’s sign-in page; choose Allow.
- ChatGPT: add Bradshaw as a connector or app with the same address and sign in when asked.
- Other clients (the MCP Inspector, Cursor, your own code): use the address; clients that support MCP authorization find the sign-in themselves.
Every tool only reads data. None of them can change your account, your lists or anything else.
Sign-in and keys
There are two ways to authenticate. Both use Authorization: Bearer ....
- OAuth (assistants): the client discovers the authorization server from
https://bradshawdata.com/.well-known/oauth-protected-resourceand signs you in with your Bradshaw account (a new account starts the 14-day trial; no card). Supported: authorization code with PKCE (S256), refresh tokens, dynamic client registration at/registerand client ID metadata documents. The only scope isbradshaw.read. Access tokens last one hour and refresh tokens 30 days; each refresh issues a new pair. Disconnecting in the assistant revokes the token. - API key (developers): create a key under Account, API keys, and send it as
Authorization: Bearer bk_live_...(or anX-API-Keyheader). Keys need a plan with API calls (the trial or Pro).
Without credentials, initialize, ping and tools/list answer so that you and directories can see what the server offers. A tool call without credentials answers HTTP 401 with a WWW-Authenticate header that points to the resource metadata.
Free and paid
What you get depends on your organisation’s plan at the moment of the call.
- Trial and Pro: all ten tools. Each successful tool call counts as one API call against the plan’s monthly allowance (1,000 on the trial, 10,000 on Pro), shared with the REST API. Handshakes and tool lists are not counted.
- Free (a Bradshaw account whose trial has ended, or a plan without API calls such as Light):
search_companiesby name or company number, andget_companywith the facts, round count, total raised and the latest round with its filing link. That is what the company’s public page at/company/<number>shows, and nothing more. The other tools answer with a short note on what Bradshaw holds for your question and a link to the plans; they return no figures.
Tools
Search UK companies (search_companies, free and paid)
Search and filter UK private companies by name, number, sector, region, status, rounds and amount raised.
q: Company name, trading name or number.status: active, dissolved, liquidation, administration, receivership, voluntary-arrangement.sector: Sector slug(s).region: Region slug(s).ceremonial_county: Ceremonial county slug(s) from the geography seed.constituency: Parliamentary constituency slug(s).local_authority: Local authority slug(s).postcode: Postcode or outward-code prefix (spaces ignored).inc: Incorporated window: 12m or from..to.rounds: Number of priced rounds as a range.last: Window of the last round.raised: Total raised in pounds as a range.net_assets: Net assets in pounds as a range.employees: Average employees as a range.accounts_size: large (full or group accounts), medium or small (small and micro), comma separated.turnover_band: Turnover band of the latest filed accounts, pounds only: under-1m, 1m-10m, 10m-50m, 50m-250m, over-250m (comma separated, any of).employees_band: Average employees band of the latest filed accounts: 1-9, 10-49, 50-249, 250-999, 1000-plus (comma separated, any of).grant: yes or no: holds public grants.corp_investor: yes or no: has a corporate shareholder on the PSC register.company_class: public, vehicle, subsidiary or independent (comma separated). Default: all classes.sort: rounds (default, most first), name, inc, last or raised; a leading - sorts descending.page: Page number, from 1.per: Rows per page: 25 (default), 50 or 100.- Returns: A page of companies (
data) with paging inmeta(total,page,per,next). - Free:
q,pageandperonly; each company with its name, number, status, incorporation date, region and public page.
Get company profile (get_company, free and paid)
One company: facts, every priced round we can read with its working and filing link, the latest financials, corporate shareholders (no individuals) and website.
number(required): UK company number: up to 8 letters and digits, for example 12203483 or SC123456.- Returns: One company (
data): register facts, sector, region, website, every priced round with its working and filing link, the latest financials and corporate shareholders. - Free: the public page’s facts, round count, total raised and latest round with its filing link.
Get a company’s funding rounds (get_company_rounds, trial and Pro)
The quality priced rounds of one company (confidence 0.5 or more, 100,000 pounds or more raised), newest filed first, each with price per share, valuation working and the filing link. Each round has post_money (as filed, counts deferred shares), valuation_verdict (quote, quote_with_care or never), post_money_ex_deferred and valuation_basis: quote a valuation only from post_money_ex_deferred, say so when the verdict is quote_with_care, and give none when it is never.
number(required): UK company number: up to 8 letters and digits, for example 12203483 or SC123456.sort: filed (default), allotted, cash, price, stepup, post (post_money_ex_deferred) or conf; a leading - sorts descending.page: Page number, from 1.per: Rows per page: 25 (default), 50 or 100.- Returns: A page of rounds, each with price per share, new shares, cash raised, post-money as filed,
post_money_ex_deferred,valuation_verdict, the working and the filing link.
Get filed accounts (get_company_financials, trial and Pro)
The balance-sheet history of one company from its filed accounts: cash, net assets, turnover, employees and the extraction flags, as filed.
number(required): UK company number: up to 8 letters and digits, for example 12203483 or SC123456.- Returns:
periods: one row per filed balance sheet with cash, net assets, turnover, employees and flags.
Search funding rounds (search_rounds, trial and Pro)
Priced share-allotment rounds, newest filed first, with the shared filters (filed and allotted windows, sector, region, cash raised, post-money, step-up, confidence, press announced). Each round carries valuation_verdict and post_money_ex_deferred: quote a valuation only from post_money_ex_deferred, with care when the verdict is quote_with_care, and none when it is never.
filed: Window the first filing was filed in: 7d, 30d, 90d, 12m, ytd or from..to (ISO dates, either end optional).allotted: Window the shares were allotted in; same forms as filed.sector: Sector slug(s), comma separated or repeated: software-and-it, life-sciences-and-health, ...region: Region slug(s): london, south-east, scotland, ...cash: Cash raised in pounds as lo..hi, either end optional, suffixes k, m, bn.post: Post-money in pounds, same form as cash. Filters on post_money_ex_deferred (deferred shares left out), so a round with valuation_verdict never has no value and never matches.stepup: up, flat, down (comma separated), or a price multiple range such as 1.5..conf: Confidence range between 0 and 1.announced: yes: only rounds matched to a press announcement; no: only those not.press_link: found: rounds with a matched press article; none: rounds we searched and found no press for (rounds not yet checked are in neither). Only while the press links feature is on.company: One company number.company_class: public, vehicle, subsidiary or independent (comma separated). Default: all classes.q: Text inside the company name.sort: filed (default, newest first), allotted, cash, price, stepup, post (post_money_ex_deferred) or conf; a leading - sorts descending.page: Page number, from 1.per: Rows per page: 25 (default), 50 or 100.- Returns: A page of rounds in the same shape as get_company_rounds, with paging in
meta.
Get corporate investor (get_investor, trial and Pro)
One corporate shareholder family (from the register of people with significant control) and the companies it holds, each with a summary of its priced rounds. Use the key from the investors list.
key(required): The investor key, for example ACME FUND.page: Page number, from 1.per: Rows per page: 25 (default), 50 or 100.- Returns: The investor family and a page of the companies it holds, each with a summary of its priced rounds.
Get funding signals (get_signals, trial and Pro)
Signals detected from filings, newest first: grant then equity, up round, lower-priced round, headcount surge, distress, foreign parent.
rule: grant_then_equity, up_round, lower_priced, headcount_surge, distress or foreign_parent (comma separated).since: Detected on or after: 30d, 12m or an ISO date.detected: Detected window: same forms as filed, including from..to.sector: Bradshaw sector slug(s) of the company. A legacy SIC-group slug is still accepted here for backward compatibility; use sic_group.sic_group: SIC group slug(s) of the company: software-and-it, life-sciences-and-health, ...region: Region slug(s) of the company.sort: detected (default newest first) or -detected / detected for the order.page: Page number, from 1.per: Rows per page: 25 (default), 50 or 100.- Returns: A page of signals, each with its rule, company, date and the facts that triggered it.
Get corporate events (get_events, trial and Pro)
Corporate events from Companies House filings, Gazette notices and the PSC register: strike-off notices, liquidations, administrations, plc re-registrations, name changes, new corporate shareholders. Only event types that have passed their precision check are returned (see meta.live_types). Each event links to its filing or notice.
type: Event type(s), comma separated or repeated. Only types listed inmeta.live_typesare accepted.company: One company number.since: Events dated on or after: an ISO date, or a span such as 30d or 12m.page: Page number, from 1.per: Rows per page: 25 (default), 50 or 100.- Returns: A page of events, each with its type, company, date and a link to the filing or notice;
meta.live_types.
Get public grants (get_grants, trial and Pro)
Public grant awards matched to a company number (for example Innovate UK), as published: an award offered is not money paid. Each grant has its funder, licence and source link; the company number is a Companies House number.
company: One company number.funder: Funder name, for example Innovate UK (not case sensitive).source: Source dataset, for example innovate_uk.since: Project started on or after: an ISO date, or a span such as 12m.min_award: Smallest award offered, in pounds.page: Page number, from 1.per: Rows per page: 25 (default), 50 or 100.- Returns: A page of grant awards with funder, amount offered, dates, licence and source link.
List my saved lists (list_my_lists, trial and Pro)
The saved company lists of the organisation that owns this API key (shared lists and the key creator’s own). Give list_id to get one list with a page of its companies (Companies House numbers with links). Never shows another organisation’s lists.
list_id: Optional. A list id from the first call, to open that list.page: Page number, from 1.per: Rows per page: 25 (default), 50 or 100.- Returns: Your organisation’s lists, or one list with a page of its companies.
Errors
A problem with the request itself is a JSON-RPC error (-32700 parse error, -32600 invalid request, -32601 unknown method, -32602 unknown tool). A problem inside a tool is a normal result with isError: true and an error object with a code and a message, for example:
invalid_parameter: a missing or malformed argument, such as a company number that is not 8 letters and digits.not_found: no company, investor or list with that identifier.free_limit_reached: the free tier’s calls for today are used;retry_aftergives the seconds to midnight UTC.rate_limited: calls came too fast;retry_aftergives the wait in seconds.free_tier_busy: the free tier has reached its daily ceiling across all users.data_unavailable: the data is being refreshed; retry shortly.
At the HTTP level: 401 means no valid token or key; 402 means the key’s plan has no API calls; 429 means a paid plan’s rate limit or monthly quota (with Retry-After).
Rate limits and quota
- Trial and Pro: the API rate limit applies per key, or per organisation for OAuth, with bursts allowed; the monthly allowance resets on the first of each month (UTC). Replies carry
X-RateLimit-Remaining,X-Quota-RemainingandX-Quota-Limit. - Free: 25 successful tool calls a day per organisation, one call a second, resetting at midnight UTC. Calls that fail, and the notes the paid tools return, do not use the 25. Each data reply says how many calls are left today in
meta.free_calls_left_today.
Data and privacy
The data comes from public registers, mainly Companies House filings, and every figure carries a link to the filing it was read from. The tools return companies, not people: no individual’s name, address or contact details. The arguments your assistant sends (for example a company name or number) are used only to answer that call. They are not written to the logs or stored with the account. See the privacy notice.
Support
Questions or problems: [email protected].