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— optionallimit(1-50),since(ISO time),tag,include_archived.get_breaking_story— requiredslug. 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.