The Veil Press · Developers

For developers & agents

Public, read-only access to Veil Press breaking news: a JSON API, JSON Feed, RSS, an MCP server for AI agents, and an embeddable headline widget. No key, no sign-up. Stories are free to republish in full with credit and a link back, under CC BY-ND 4.0.

Endpoints

/api/breaking.jsonLatest stories: title, slug, url, published time, summary, key fact, cover and share images, tags, sources.
/api/breaking/<slug>.jsonOne story with full text (markdown and plain), update log and numbered sources.
/breaking/feed.jsonJSON Feed 1.1 with full HTML content.
/breaking/rss.xmlRSS with cover images.
/api/index.jsonMachine-readable index of all of the above.
/api/mcpMCP server (streamable HTTP, no auth). Tools list_breaking_stories, get_breaking_story.
/llms.txtAgent-readable site summary that points to all of these.

Everything is read-only, open to any origin (CORS) and cached for a few minutes. New stories appear as soon as they are published.

Quick examples

curl

curl -s https://www.theveilpress.com/api/breaking.json | jq '.stories[] | {title, url, published_at}'
curl -s https://www.theveilpress.com/api/breaking/treasury-two-year-auction-clears-at-4-708-percent.json | jq '.story | {title, key_fact, sources}'

JavaScript

const res = await fetch('https://www.theveilpress.com/api/breaking.json');
const { stories } = await res.json();
for (const s of stories.slice(0, 5)) console.log(s.published_at, s.title, s.url);

Python

import requests
stories = requests.get('https://www.theveilpress.com/api/breaking.json', timeout=10).json()['stories']
for s in stories[:5]:
    print(s['published_at'], s['title'], s['url'])

JSON Feed

curl -s https://www.theveilpress.com/breaking/feed.json | jq '.items[0] | {title, url, date_published}'

Connect an AI agent (MCP)

Add this URL as a custom connector or remote MCP server. No authentication.

https://www.theveilpress.com/api/mcp
  • Grok Bot and other apps with custom connectors: add a custom connector and paste the URL.
  • Cursor (mcp.json) and other clients that take a URL:
{
  "mcpServers": {
    "veilpress-breaking": { "url": "https://www.theveilpress.com/api/mcp" }
  }
}
  • Clients that only speak stdio can bridge it:
npx mcp-remote https://www.theveilpress.com/api/mcp

Try it with curl

curl -s https://www.theveilpress.com/api/mcp -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'
curl -s https://www.theveilpress.com/api/mcp -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_breaking_stories","arguments":{"limit":3}}}'

Tools

  • list_breaking_stories — optional limit (1-50), since (ISO time), tag, include_archived.
  • get_breaking_story — required slug. Returns full text, update log and sources.

Embeddable headline widget

Paste this where you want the latest headlines. It links back to each story and is styled in an isolated box.

<div id="veilpress-breaking" data-limit="5" data-theme="dark"></div>
<script async src="https://www.theveilpress.com/embed/breaking.js"></script>

Options: data-limit (1-10, default 5) and data-theme (dark or light).

Live preview

Using the stories

Credit The Veil Press and link to the story URL. Keep the text unedited if you republish it in full. Questions or something you need that is not here: deepdivefile@gmail.com.