For developers
Every API, in one place.
Connect my apps to your own code, scripts, servers and AI assistant. Each API runs on your own install, in your own Cloudflare account, so nothing goes through me.
// pick an app
Which app are you connecting?
Mail AppRead, search and send email from your own apps, with signed webhooks for new and sent email.Read the API Blog BuilderRead and change posts, pages, pictures and menus, and write with Claude or ChatGPT.Read the API ReaderCountRead your visitors, pages, sources, clicks and Google searches. Read only.Read the API Site WatchSee what's up or down, add websites and post status page updates, with webhooks when a site goes down.Read the API DMARC ReportsRead who sends email as your domains and how much passes, with webhooks for new reports and senders.Read the API
// the same everywhere
Learn one, and you know them all.
Every app follows the same rules, so a script for one looks like a script for the others.
Keys made in the appMake a key in the app's settings, give it a name and copy it. It's shown once, and only a fingerprint (a SHA-256 hash) is kept. Delete it and it stops working straight away.
Sent in a header
Authorization: Bearer <key> on every request. Never in the web address, and never in a web page where anyone could copy it.JSON in and outEvery answer is JSON. Times are UTC, written like
2026-11-04T17:00:00.000Z.Plain English errorsAnything that goes wrong comes back with a status and a sentence you can show to a person, plus a link to the right page.
Signed webhooksWhere an app sends webhooks, they're signed the same way, so one check works for all of them.
An AI connectorAdd the app to Claude, ChatGPT or any MCP client and ask questions in plain English. You choose what it may do.
// at a glance
Every API on one table.
Each address starts with your own install's web address, such as https://mail.yourdomain.co.uk.
| App | API address | Keys start with | Webhooks | AI connector |
|---|---|---|---|---|
| Mail App | /api/ext/v1 | mailapp_ | email.received, email.sent | Admins, inside sign-in |
| Blog Builder | /_emdash/api | ec_pat_ | None | Yes, /_emdash/api/mcp |
| ReaderCount | /api/v1 | rc_ | None | Yes, /mcp |
| Site Watch | /api/v1 | watch_ | monitor.down, monitor.up, monitor.flapping, monitor.blocked, monitor.cert, cert.expiring, domain.expiring | Yes, /mcp |
| DMARC Reports | /api/v1 | dmarc_ | report.received, sender.new, sender.failing, reports.stopped, tls.failing | Yes, /mcp |
Blog Builder's API comes from EmDash, the blogging software it's built on, so its keys and error answers follow EmDash's own pattern.
Stay in the loop
Subscribe for updates.
Leave your email and I'll tell you when there's a new version of one of my apps, or a new project to try. Nothing else.