UK Competition Case MCP Server
Pricing
from $50.00 / 1,000 tool calls
UK Competition Case MCP Server
Answer 'is there a UK competition case touching these companies or this market' from the Competition and Markets Authority case register, with an explicit guardrail against reporting an investigation as a finding.
Pricing
from $50.00 / 1,000 tool calls
Rating
0.0
(0)
Developer
NexGen Watch
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Share
🧰 UK Competition Case MCP Server
Answer "is there a UK competition case touching these companies or this market" from the Competition and Markets Authority's case register, live.
Built for deal and legal teams.
This is a standby MCP server: it stays warm on Apify and answers tool calls from any MCP client (Claude Desktop, Cursor, an agent framework) at https://nexgenwatch--uk-competition-case-mcp.apify.actor/mcp. Billing is pay-per-event: $0.05 when the server starts, then $0.05 per tool call (mcp-tool-call). Source: www.gov.uk.
No login, no source API key and no CAPTCHA solving are involved: the source is read logged-out.
📊 Sample Output
A standby server answers tool calls rather than writing a dataset, so the sample is the server's own live health answer (GET https://nexgenwatch--uk-competition-case-mcp.apify.actor/, HTTP 200, read on 2026-09-17) followed by its tool table:
{"server": "uk-competition-case","billing_gate": true,"declared_events": ["apify-actor-start","mcp-tool-call"],"scope": "The UK Competition and Markets Authority case register, via the gov.uk Search API -- 2,572 cases as of 2026-07-30, 71 open. Mergers, Competition Act and cartel investigations, market studies, consumer enforcement, subsidy referrals, digital markets and regulatory appeals. Sector regulators with concurrent competition powers (Ofcom, Ofgem, FCA and the rest) publish separately and are NOT covered, nor is the Competition Appeal Tribunal.","rate_limit_per_sec": 2.0,"rate_waits": 0,"ready": true}
| Tool | Arguments | What it returns |
|---|---|---|
find_cases | `company_or_term: str | None = None, case_type: str |
open_cases | `case_type: str | None = None, market_sector: str |
market_case_profile | market_sector: str, limit: int = 25 | How much competition activity touches one market sector: totals for the sector, how many are open, and the most recent cases. |
explain_limits | `` | What this server can and cannot say, the guilt guardrail in full, the two measured traps, and the enumerated vocabularies. Read before acting. |
list_market_sectors | `` | The 33 market sectors the CMA register actually uses, enumerated from a full walk of all 2,572 cases. Use one as market_sector — an unrecognised value returns zero cases rather than an error. |
✅ What you get
5 tools, each returning a JSON object built only from what the source answered, with a scope and note field stating what the source does and does not cover. A lookup the source answers with 'not found' is a sourced answer (charged); malformed input or a source failure returns a notice that is NOT charged; nothing is ever fabricated.
The guardrail is the product
An open Competition Act or cartel case is an INVESTIGATION, not a finding. Saying otherwise about a named company is not a data-quality slip — it is a false statement about identified parties. Three rules, each enforced by a test:
-
A finding is never inferred.
finding_statuscomes from an explicit map of the 27 outcome slugs the register actually contains, enumerated by walking all 2,572 cases. An outcome this build has not seen reports asno-finding-recorded-unmapped-outcome— never a guess. -
No party name is ever extracted from an investigation title. Merger titles are structured (
Sky / ITV merger inquiry) and naming the parties to a merger implies nothing bad about them, so parties are extracted there. For Competition Act and civil cartels, criminal cartels, director disqualification and consumer enforcement, the title is carried verbatim andpartiesis empty by construction. -
A criminal-cartels verdict is not a conviction. A verdict can be an acquittal and the register does not say which way it went — it reports as
verdict-recorded-direction-not-in-feed. The same care applies to commitments (accepted with no admission of liability) and administrative closures (the CMA closed on resource grounds, having found nothing).
Only four of the 27 outcomes state anything adverse about a party, and each is a published finding: Chapter I infringement, Chapter II infringement, a disqualification order granted, and a consumer-law court order.
Two things measured live that a naive read gets wrong
1. An unrecognised filter value returns zero cases, not an error
filter_case_type=not-a-real-type -> HTTP 200, total 0filter_market_sector=energy-and-environment -> HTTP 200, total 0 (an invented slug)filter_market_sector=distribution-and-service-industries -> total 256
A typo therefore answers "no competition case touches your market" — the worst possible wrong answer for a deal team. Every value is validated against the enumerated vocabulary before any query is sent, and the refusal explains why.
The vocabularies were enumerated by walking all 2,572 cases on 2026-07-30, not read off documentation: 12 case types, 33 market sectors, 2 states, 27 outcomes.
And the filters are real — proven control vs test against that independent walk: no
filter 2,572; case_type=mergers 1,991; case_state=open 71; a real sector 256; an invented
one 0.
2. The company search is free text, not a party index
Measured: q=Paramount returns three cases — the live Paramount / Warner Bros. Discovery
merger inquiry, an unrelated 2006 NTL / Virgin Mobile merger, and a pay-TV market
investigation. The API matches document text, so a hit need not name the company as a party.
Every row reports whether your query is visible in its title, and every search reports the
ratio.
Tools
| tool | what it answers |
|---|---|
find_cases | Cases matching a company, term, family, state or market sector |
open_cases | Every case currently open — 71 of 2,572 — optionally narrowed |
market_case_profile | How much competition activity touches one sector: all-time and open totals plus recent cases |
list_market_sectors | The 33 real sector values, enumerated from the full walk |
explain_limits | The guardrail in full, the two traps, and every vocabulary. Read before acting. |
Scope
The CMA case register only — 2,572 cases as of 2026-07-30, 71 open. Mergers, Competition Act and cartel investigations, market studies, consumer enforcement, subsidy referrals, digital markets, regulatory appeals.
Not covered: the sector regulators with concurrent competition powers (Ofcom, Ofgem, the FCA and the rest) publish separately, and neither is the Competition Appeal Tribunal. A "no cases" answer means the CMA register is silent — not that no UK competition matter exists.
gov.uk/robots.txt disallows /search/all* and /*/print$, and sets a Crawl-delay: 10
for AhrefsBot only. The /api/search.json path is not disallowed and no crawl-delay
applies to us — every call is paced at 2 requests/second anyway.
This server reports what the CMA publishes. It states no view on whether any party did anything wrong, and it is not legal advice.
⚙️ Sample inputs
1. Connect an MCP client (Claude Desktop / Cursor style config; your Apify API token goes in the header):
{"mcpServers": {"uk-competition-case-mcp": {"url": "https://nexgenwatch--uk-competition-case-mcp.apify.actor/mcp","headers": {"Authorization": "Bearer <YOUR_APIFY_TOKEN>"}}}}
2. One tool call over JSON-RPC (what the client sends to /mcp; each call is one mcp-tool-call event):
{"jsonrpc": "2.0","id": 1,"method": "tools/call","params": {"name": "find_cases","arguments": {"company_or_term": "<company_or_term>","case_type": "<case_type>","case_state": "<case_state>","market_sector": "<market_sector>","limit": 25}}}
3. Health check from a shell (free — no tool call is charged):
$curl -H "Authorization: Bearer $APIFY_TOKEN" https://nexgenwatch--uk-competition-case-mcp.apify.actor/
🧾 JSON sample record
The live health record above is the server's own answer; a tool result carries the fields listed in the tool table plus scope and note.
🔧 How it works
Source. www.gov.uk — endpoints: https://www.gov.uk, https://www.gov.uk/api/search.json. Public, logged-out reads only.
Standby. Apify keeps one server process warm; each MCP session is served by that process and idle servers are stopped by the platform. Nothing is cached between calls except what the source itself caches.
Charging. Every tool call charges one mcp-tool-call at $0.05 through Apify's pay-per-event billing before the answer is returned; the declared events are asserted against the live pricing at startup (billing_gate in the health answer).
What is not done. No login, no CAPTCHA bypass, no private data, no scraping of pages the source does not publish to any visitor.
💰 Pricing example
| Event | Free | Bronze | Silver | Gold |
|---|---|---|---|---|
Actor Start (apify-actor-start) | $0.05 | $0.05 | $0.05 | $0.05 |
Tool call (mcp-tool-call) | $0.05 | $0.05 | $0.05 | $0.05 |
- 10 tool calls in one session: $0.05 start + 10 × $0.05 = $0.55
- 100 tool calls in one session: $0.05 start + 100 × $0.05 = $5.05
- 1000 tool calls in one session: $0.05 start + 1000 × $0.05 = $50.05
A health check or a connection that makes no tool call charges only the $0.05 start fee. A sourced 'not found' answer is a completed tool call and is charged; a notice for malformed input or a source failure is not charged (settle() charges only chargeable outcomes).
⚖️ Legal & ToS
The server reads public data published by www.gov.uk to any visitor, identifies itself, and does not access accounts or private data. Use the answers in line with the source's terms and your local law; the intended use is B2B research and agent tooling.
❓ FAQ
Q: Do I need a source API key?
A: No. www.gov.uk is read logged-out. You need only your Apify API token to connect to the server.
Q: Which MCP clients work?
A: Any client that speaks the MCP HTTP transport: Claude Desktop, Cursor, Windsurf, LangChain/LlamaIndex MCP adapters and Apify's own MCP client. Point it at the /mcp URL above.
Q: What happens when the source has no answer?
A: A sourced 'not found' (for example a 404 for an unknown identifier) comes back as an answer with scope and note explaining what was checked (where the server carries those fields), and is charged as a completed call; malformed input or a source outage returns a notice that is not charged. Nothing is invented.
Q: How is a call billed?
A: One mcp-tool-call event per tool call at $0.05, plus $0.05 when the server starts. Idle time is not billed to you.
Q: Is it rate limited?
A: The server paces requests to the source (RATE_PER_SEC=2.0) and answers calls in the order they arrive.
Q: Can I call it without an MCP client?
A: Yes — the /mcp endpoint is plain JSON-RPC over HTTP (sample input 2), and GET / is a free health check.
🆘 Troubleshooting
- 401 / 403 from the server → the Authorization header is missing or the token is wrong → use
Bearer <your Apify API token>. - 400
Missing session ID→ the client hit/mcpwithout initialising an MCP session → let the MCP client connect (it performs the handshake); raw JSON-RPC needs the session header the initialise call returns. - Tool returns a notice instead of data → the input was malformed or empty, or the source failed → the call was not charged; check the
note/reasonfield, fix the input and call again. - First call is slow → the standby server was cold and Apify started it → later calls in the same session are fast.
🔗 Related Actors
- Research Funding Landscape MCP Server — Answer 'who funds research on this topic' across two public government registers: US National Science Foundation awards and UK Research and Innovatio…
- SEC Filing Evidence MCP Server — Locate the SEC filing behind a claim. Every answer carries the accession number, the filing date and a direct SEC URL, so an agent's claim about a pu…
- Trademark Dispute MCP Server — Answer 'has anyone contested a mark like this' across the USPTO Trademark Trial and Appeal Board and the Canadian Trademarks Opposition Board. Report…
- UK Parliament Stakeholder MCP Server — An MCP server over the official UK Parliament Members API (members-api.parliament.uk) —
- UK Planning Constraints MCP Server — An MCP server over the official planning.data.gov.uk platform — ~220 national planning
- Vehicle VIN Decoder MCP Server — An MCP server over the official NHTSA vPIC API (vpic.nhtsa.dot.gov) — decode a Vehicle
- 🏢 About NexGenData — NexGen Watch is NexGenData's fleet of 256 public monitoring and lookup actors built on official sources, pay-per-result. Browse the catalog at apify.com/nexgenwatch.
⭐ Found this useful?
If this server answered a question your agent could not, a quick review on the Apify Store helps other teams find it. Feature request or a source that changed? Open it from the Issues tab — every one is read.
