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: 122 / 19639 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 19639)

Set policy on all articles:
TitlePublishedPolicyPrice (PAYWALL)
Home Page$
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$
IB Times freelance reporter earns $2.62 for 782-word article2026-09-09$
Reuters replaces Getty as agency partner for 70-year ITN news archive2026-09-08$
Podcast mastery: How publishers can find an audience and make money from it2026-09-08$
Can SME licensing deals be bigger for publishers than AI licensing deals?2026-09-07$
The Canary suspends operations after second bank account blocked2026-09-07$
US issues ‘censorship’ warning over UK plan to boost ‘public service’ news on social media2026-09-07$
Footballco says AI assistant helped it reach 1bn+ World Cup page views2026-09-07$
News diary 7-13 September: Assisted dying bill returns, Bayeux Tapestry opens, iPhone launch2026-09-04$
Amazon and Meta AI bots account for most website visits2026-09-03$
Tech websites remove articles after failing to verify journalists exist2026-09-03$
Guardian Jobs to close blaming five-year low in UK vacancies2026-09-02$
How Politico has boosted AI innovation by moving to one headless CMS2026-09-02$
What I’ve learned: Bloomberg CEO Karen Saltser says ‘be bold and learn to live with some discomfort’2026-09-02$
The open web was built for change, is your CMS?2026-09-01$
US newspaper circulations 2026: Villages Daily Sun is only one of 50 biggest print titles to see annual growth2026-09-01$
Long-serving Islington Gazette editor Tony Allcock dies aged 782026-08-27$
Reach to open ‘Mirror North’ Manchester base led by Maria Breslin2026-08-27$
LLM citation mastery: Tips from Axios publisher Nicholas Johnston2026-08-27$
Texas non-profit newsrooms ‘stronger together’ after merger2026-08-27$
MSN removes publishers from platform without notice2026-08-26$
What I’ve learned: Future operations director Catherine Westwood who led major digital transformation2026-08-26$
‘Misleading’ Home Office photo guidance risks ‘serious consequences’ for journalists, warns NUJ2026-08-25$
Revealed: The news publishers on Instagram with the biggest follower growth since 20242026-08-25$
Social media content creation mastery: Tips for publishers from DMG New Media2026-08-25$
One-click link in articles adds publishers to Google users’ ‘preferred source’ for Top Stories and AI search2026-08-24$
Second ‘overwhelming victory’ for Mail publisher in Harry privacy case with costs decision2026-08-21$
Axel Springer gave Telegraph £7m loan months before takeover2026-08-21$
Guardian condemns ‘racialised’ abuse of its journalists in Jason Arday death aftermath2026-08-21$
Traffic to 10 biggest US news websites down a third in two years2026-08-21$
Angela Rayner privacy and harassment complaint against Sun on Sunday dismissed2026-08-20$
Guardian journalist David Conn, Andy Burnham and the ‘Hillsborough law’2026-08-20$
Pink News to cut up to 11 staff and shut office amid Snapchat changes2026-08-20$
Reach hits 50,000 paid subscribers in under nine months2026-08-19$
What I’ve learned: Metropolis CEO Robert Marr who went ‘from finance bro to media guy’2026-08-19$
The news publishers on Tiktok with biggest growth since 20242026-08-19$

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