Oasy · MCP builder for publishers

Press Gazette

https://pressgazette.co.uk/ · slug pressgazette-co-uk

MCP server

URL: https://builder-one-delta.vercel.app/api/mcp/cmpoev6d00000g8n18q4yvbb2
Card: /api/publishers/cmpoev6d00000g8n18q4yvbb2/card · Manifest: /.well-known/mcp.json?slug=pressgazette-co-uk
Claude Desktop / ChatGPT install snippet
{
  "mcpServers": {
    "pressgazette-co-uk": {
      "transport": {
        "type": "streamable-http",
        "url": "https://builder-one-delta.vercel.app/api/mcp/cmpoev6d00000g8n18q4yvbb2"
      }
    }
  }
}

Retrieval (hybrid search) & latency SLO

Semantic index: 150 / 19676 articles embedded (gap-fill: npx tsx --env-file=.env scripts/backfill-embeddings.ts pressgazette-co-uk; unembedded articles are still searchable via full-text)
Last 7 days · search p95: no calls yet (target < 300 ms)

Ingestion

Last job (sync): SUCCEEDED · discovered 0 · ingested 51 · failed 0

Sources (…)

Add a source
CSV: url (+ optional title) column. Max 20MB.

Loading…

Book catalog (PDF upload)

Upload a book PDF (or a markdown/plain-text manuscript). It's split into chapter-level units — via the PDF's table of contents when present, otherwise by chapter headings — and each chapter is served like any article: search, MCP/A2A, paywall, and payments all apply. The author contract checkboxes set the rights ceiling from the underlying book contract; chapters can never be licensed beyond it.
Author contract permits
Loading catalog…

Content rules (path / embargo / territory / pricing)

No rules. Rules refine article policy at serve time — by path, article age (embargo), requester territory, or with a time-window price.

Add rule
Lower priority evaluates first; first match sets policy/price, territory denials stack. Age is measured from publish date. Rules apply on MCP, REST, A2A and the oasy landing page.

Content license (use-case rights)

View public terms →
Unchecking Full display makes agents receive summaries only (summarization license). Unchecking RAG retrieval removes articles from agent search. Fine-tuning is denied by default industry-wide.

License requests

No license requests yet.

Paywall meter (MCP path)

Applies to articles whose policy is PAYWALL. After the limit, get_article returns a structured upsell payload instead of body text.

Agent payments (oasy / WAF path)

Agent is charged $0.53 per article (your price + 4.7% platform fee = $0.03). You keep $0.50, paid out monthly.
Applies to articles whose policy is PAYWALL served on the oasy / WAF path. Per-article overrides take precedence.
Crawlers your robots.txt disallows stop getting free content on the oasy landing page — their policy escalates to PAYWALL (pay per article, or nothing). Your robots.txt is refetched daily.

Enterprise license (negotiated)

MCP Apps (interactive UI)

When on, the article UI resource is emitted with mime type text/html;profile=mcp-app and a small postMessage bridge, so compliant hosts (Claude, Claude Desktop, VS Code Copilot, Goose, Postman, MCPJam) render it as a sandboxed interactive app. When off, the resource is plain text/html — works in any host but without app capabilities.

Public REST API

When on, a JSON HTTP API is exposed on your custom domain so clients can search and fetch articles without speaking MCP.
  • Search: GET https://oasy.pressgazette.co.uk/api/v1/articles/search?query=...
  • Get article: GET https://oasy.pressgazette.co.uk/api/v1/articles/<id>?last_user_prompt=... — last_user_prompt is required (verbatim reader prompt).

A2A (Agent2Agent) server

When on, this publisher exposes an Agent Card at the well-known path and a JSON-RPC 2.0 endpoint implementing message/send, tasks/get, and tasks/cancel per the A2A spec. Two skills are declared: search_articles and get_article.
  • Agent Card: GET https://oasy.pressgazette.co.uk/.well-known/agent-card.json
  • JSON-RPC: POST https://oasy.pressgazette.co.uk/a2a

Tools (auto-generated)

  • search_articles(query, limit?)
  • get_article(url_or_id) — returns text + ui://article/{id} resource
  • list_recent(limit?, since?)
  • list_by_topic(tag, limit?)

Sponsor tools

Toggle which catalog tools this publisher exposes in tools/list. Affects every MCP client connected to this publisher.
No catalog tools defined.

Articles (50 shown of 19676)

Set policy on all articles:
TitlePublishedPolicyPrice (PAYWALL)
Home Page—$
Independent doubles revenue in six years to reach £55m2026-10-02$
Penske AI Overviews lawsuit dismissed because ‘no formal bargain’ struck with Google2026-10-01$
Goalhanger to bring ad sales and sponsorship in-house2026-10-01$
What I’ve learned: Dropping out of school at 17 was turning point for Irish News editor2026-10-01$
Local newspaper where Harold Evans began closes after 171 years in print2026-10-01$
GB News narrows losses despite 63% drop in website visitors2026-09-30$
Jeremy Clarkson, Meghan, Prince Harry and the secret of Oxford Mail’s traffic success2026-09-30$
The Nerve reaches 5,000 paying subscribers in first year2026-09-30$
Guardian creates 40 jobs to train journalists as content creators2026-09-29$
New Scientist launches new advertising platform targeting B2B audience2026-09-29$
PA Media Group revenue flat in 2025 after a decade of growth2026-09-29$
Mill Media receives £100,000 from Postcode Lottery to fund subscriptions for under-25s2026-09-29$
BBC to cut local radio and regional TV news with 90 jobs at risk2026-09-28$
News diary 28 September – 4 October: Conservative and Green Party conferences, energy price cap rise, Glastonbury tickets on sale2026-09-28$
How Advance Local went from zero to 250,000 paid online subs2026-09-25$
Financial Times grows business to record revenue of £566m for 20252026-09-25$
British Journalism Awards 2026: Deadline extended2026-09-25$
What publishers can learn from creators: ‘Be audience, not platform, obsessed’2026-09-24$
What I’ve learned: Science writer Deborah Cohen says ‘arseholes’ keep her motivated2026-09-24$
Facebook algorithm change in April ‘crushed’ audience reach for Digitalbox2026-09-24$
Economist video strategy: ‘We did 50 pilot shows before launching Insider’2026-09-23$
Fifth of News UK website traffic was ‘non-human’ in past six months2026-09-23$
How S&P Global nurtures a niche audience worth billions in revenue2026-09-23$
Music blog Drowned in Sound launches first print edition2026-09-23$
Music blog Drowned in Sound launches first print edition2026-09-23$
Music blog Drowned in Sound launches first print edition2026-09-23$
Reach online subs have ‘opened door’ to more court and investigative reporting2026-09-22$
Computer Weekly bucks trend of tech journalism decline by growing editorial team2026-09-22$
Mag giant Hearst UK returns to revenue growth after three years of decline2026-09-21$
News diary 21-27 September: Burnham to meet Trump, Labour Party conference, MTV Video Music Awards2026-09-21$
Prominent art therapist quoted by Vice, Forbes and others is AI-generated2026-09-18$
What I’ve learned: TTG boss Daniel Pearce says ‘finding our purpose’ was business turning point2026-09-17$
FT chief Jon Slade on how business brand became a hit with Gen Z2026-09-17$
Reach to cut editorial team by further 160 jobs as key metric becomes ‘active engaged time’2026-09-16$
Newsquest grows profit as online subscribers rise to 159,0002026-09-16$
Metro editor exits as ‘radical change’ needed to curb losses2026-09-15$
One in five Britons now using AI to access news2026-09-15$
Guardian grows revenue to record £282m boosted by US operation2026-09-15$
‘Calling out genocide’: Why reporter left ITV News to help launch Zeteo UK2026-09-14$
Sun editor ‘optimistic’ about future after ‘reimagining the newsroom’2026-09-11$
News diary 14-20 September: Lucy Letby inquiry report, UK labour market and inflation data, Primetime Emmys2026-09-11$
Revealed: Future of Media Awards 2026 winners2026-09-10$
IPSO complaint against Press Gazette upheld over alleged sex offence admission2026-09-10$
Press Gazette launches newsroom tool to stop AI fakes before publication2026-09-10$
Sky News goes ‘narrow’ for first time with paid-for Defence Insider2026-09-10$
Washington Post ‘on track to break even’ after four years of losses2026-09-09$
What I’ve learned: Longtime The Grocer editor-in-chief Adam Leyland who led ‘B2B powerhouse’ for 20 years2026-09-09$
‘Rock’ of US Sun Paul Vale dies aged 502026-09-09$
Emily Maitlis joins The New World as columnist2026-09-09$

MCP call log (last 100)

JSON-RPC traffic from MCP clients (Claude, ChatGPT, etc.) hitting /api/mcp/cmpoev6d00000g8n18q4yvbb2.
TimeToolUALatencyStatus
2026-07-04 19:25:32_method:tools/listClaude-User0 mstrace
2026-07-04 19:25:31_method:tools/listClaude-User0 mstrace
2026-07-04 19:25:29_method:tools/listClaude-User0 mstrace
2026-07-04 19:25:25_method:resources/listClaude-User0 mstrace
2026-07-04 19:25:22_method:notifications/initializedClaude-User0 mstrace
2026-07-04 19:25:19_method:initializeClaude-User0 mstrace
2026-07-04 19:25:10_method:tools/listClaude-User0 mstrace
2026-07-04 19:25:06_method:tools/listClaude-User0 mstrace
2026-07-04 19:25:04_method:resources/listClaude-User0 mstrace
2026-07-04 19:24:59_method:notifications/initializedClaude-User0 mstrace
2026-07-04 19:24:55_method:initializeClaude-User0 mstrace
2026-07-04 19:23:47_method:tools/listClaude-User0 mstrace
2026-07-04 19:23:40_method:resources/listClaude-User0 mstrace
2026-07-04 19:23:40_method:resources/listClaude-User0 mstrace
2026-07-04 19:23:37_method:notifications/initializedClaude-User0 mstrace
2026-07-04 19:23:36_method:initializeClaude-User0 mstrace
2026-07-04 19:23:35_method:initializeClaude-User0 mstrace
2026-07-04 19:23:35_method:initializeClaude-User0 mstrace
2026-07-04 19:23:34_method:initializeClaude-User0 mstrace
2026-07-04 12:27:04_method:resources/listClaude-User0 mstrace
2026-07-04 12:27:03_method:tools/listClaude-User0 mstrace
2026-07-04 12:27:00_method:notifications/initializedClaude-User0 mstrace
2026-07-04 12:26:58_method:initializeClaude-User0 mstrace
2026-07-04 12:26:56_method:initializeClaude-User0 mstrace
2026-07-03 23:15:35_method:tools/listClaude-User0 mstrace
2026-07-03 23:15:31_method:resources/listClaude-User0 mstrace
2026-07-03 23:15:30_method:resources/listClaude-User0 mstrace
2026-07-03 23:15:27_method:notifications/initializedClaude-User0 mstrace
2026-07-03 23:15:25_method:initializeClaude-User0 mstrace
2026-07-03 23:15:23_method:initializeClaude-User0 mstrace
2026-07-03 20:10:12_method:resources/listClaude-User0 mstrace
2026-07-03 20:10:11_method:tools/listClaude-User0 mstrace
2026-07-03 20:10:08_method:notifications/initializedClaude-User0 mstrace
2026-07-03 20:10:05_method:initializeClaude-User0 mstrace
2026-07-03 20:10:03_method:initializeClaude-User0 mstrace
2026-07-03 09:56:34_method:resources/listClaude-User0 mstrace
2026-07-03 09:56:31_method:tools/listClaude-User0 mstrace
2026-07-03 09:56:31_method:tools/listClaude-User0 mstrace
2026-07-03 09:56:26_method:notifications/initializedClaude-User0 mstrace
2026-07-03 09:56:23_method:initializeClaude-User0 mstrace
2026-07-03 09:56:21_method:initializeClaude-User0 mstrace
2026-07-02 14:04:00_method:tools/listClaude-User0 mstrace
2026-07-02 14:03:58_method:resources/listClaude-User0 mstrace
2026-07-02 14:03:55_method:notifications/initializedClaude-User0 mstrace
2026-07-02 14:03:53_method:initializeClaude-User0 mstrace
2026-07-02 14:03:51_method:initializeClaude-User0 mstrace
2026-07-02 08:54:25_method:tools/listClaude-User0 mstrace
2026-07-02 08:54:23_method:resources/listClaude-User0 mstrace
2026-07-02 08:54:19_method:notifications/initializedClaude-User0 mstrace
2026-07-02 08:54:16_method:initializeClaude-User0 mstrace
2026-07-02 08:54:16_method:tools/listClaude-User0 mstrace
2026-07-02 08:54:12_method:tools/listClaude-User0 mstrace
2026-07-02 08:54:09_method:notifications/initializedClaude-User0 mstrace
2026-07-02 08:54:07_method:initializeClaude-User0 mstrace
2026-07-02 08:54:05_method:initializeClaude-User0 mstrace
2026-07-01 21:08:16_method:tools/listClaude-User0 mstrace
2026-07-01 21:08:13_method:tools/listClaude-User0 mstrace
2026-07-01 21:08:12_method:resources/listClaude-User0 mstrace
2026-07-01 21:08:08_method:notifications/initializedClaude-User0 mstrace
2026-07-01 21:08:05_method:initializeClaude-User0 mstrace
2026-07-01 21:07:44_method:tools/listClaude-User0 mstrace
2026-07-01 21:07:43_method:resources/listClaude-User0 mstrace
2026-07-01 21:07:39_method:tools/listClaude-User0 mstrace
2026-07-01 21:07:38_method:tools/listClaude-User0 mstrace
2026-07-01 21:07:33_method:notifications/initializedClaude-User0 mstrace
2026-07-01 21:07:31_method:initializeClaude-User0 mstrace
2026-07-01 21:07:29_method:initializeClaude-User0 mstrace
2026-07-01 11:20:17_method:tools/listClaude-User0 mstrace
2026-07-01 11:20:14_method:tools/listClaude-User0 mstrace
2026-07-01 11:20:12_method:resources/listClaude-User0 mstrace
2026-07-01 11:20:08_method:notifications/initializedClaude-User0 mstrace
2026-07-01 11:20:06_method:initializeClaude-User0 mstrace
2026-07-01 11:20:04_method:initializeClaude-User0 mstrace
2026-07-01 08:30:57_method:tools/listClaude-User0 mstrace
2026-07-01 08:30:55_method:resources/listClaude-User0 mstrace
2026-07-01 08:30:51_method:notifications/initializedClaude-User0 mstrace
2026-07-01 08:30:49_method:initializeClaude-User0 mstrace
2026-07-01 08:30:47_method:initializeClaude-User0 mstrace
2026-06-30 23:30:55_method:tools/listClaude-User0 mstrace
2026-06-30 23:30:52_method:resources/listClaude-User0 mstrace
2026-06-30 23:30:50_method:notifications/initializedClaude-User0 mstrace
2026-06-30 23:30:47_method:initializeClaude-User0 mstrace
2026-06-30 23:30:45_method:tools/listClaude-User0 mstrace
2026-06-30 23:30:42_method:tools/listClaude-User0 mstrace
2026-06-30 23:30:41_method:resources/listClaude-User0 mstrace
2026-06-30 23:30:37_method:notifications/initializedClaude-User0 mstrace
2026-06-30 23:30:34_method:initializeClaude-User0 mstrace
2026-06-30 23:30:00_method:tools/listClaude-User0 mstrace
2026-06-30 23:30:00_method:tools/listClaude-User0 mstrace
2026-06-30 23:29:55_method:notifications/initializedClaude-User0 mstrace
2026-06-30 23:29:52_method:initializeClaude-User0 mstrace
2026-06-30 23:29:42_method:tools/listClaude-User0 mstrace
2026-06-30 23:29:42_method:tools/listClaude-User0 mstrace
2026-06-30 23:29:37_method:notifications/initializedClaude-User0 mstrace
2026-06-30 23:29:34_method:initializeClaude-User0 mstrace
2026-06-30 23:29:33_method:initializeClaude-User0 mstrace
2026-06-30 18:48:06_method:resources/listClaude-User0 mstrace
2026-06-30 18:48:03_method:tools/listClaude-User0 mstrace
2026-06-30 18:48:02_method:tools/listClaude-User0 mstrace
2026-06-30 18:47:59_method:notifications/initializedClaude-User0 mstrace

Crawler log — oasy / WAF (last 100)

AI crawler traffic (GPTBot, ClaudeBot, PerplexityBot, …) redirected by your WAF to the oasy landing page. Not MCP requests.
TimeToolUALatencyStatus
2026-07-30 16:11:00get_articleMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Claude/1.24012.1 Chrome/148.0.7778.280 Electron/42.7.0 Safari/537.36 MSIX657 msok
2026-07-30 16:10:59indexMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Claude/1.24012.1 Chrome/148.0.7778.280 Electron/42.7.0 Safari/537.36 MSIX669 msok
2026-07-30 16:10:58get_articleMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Claude/1.24012.1 Chrome/148.0.7778.280 Electron/42.7.0 Safari/537.36 MSIX3423 msok
2026-07-30 16:10:50get_articleMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Claude/1.24012.1 Chrome/148.0.7778.280 Electron/42.7.0 Safari/537.36 MSIX561 msok
2026-07-30 16:10:35get_articleMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Claude/1.24012.1 Chrome/148.0.7778.280 Electron/42.7.0 Safari/537.36 MSIX344 msok
2026-07-30 16:10:24llms_txtMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Claude/1.24012.1 Chrome/148.0.7778.280 Electron/42.7.0 Safari/537.36 MSIX672 msok