Give your agent a feed layer

emit is a programmable RSS service with a hosted MCP server. Point any MCP-aware client at one URL and your agent can create filtered feeds, watch pages that have no feed, send email newsletters from your own domain, and push items into Slack or Discord — using the same API key, auth, and rate limits as a direct REST call.

There is no package to install and nothing to run locally. The server is a URL.

Connect

The endpoint is https://api.rssemit.com/mcp. It speaks the Model Context Protocol over Streamable HTTP, and it authenticates with your emit API key as a bearer token — the same key you would use against the REST API.

Claude Code

claude mcp add --transport http emit https://api.rssemit.com/mcp \
  --header "Authorization: Bearer $EMIT_API_KEY"

Clients that accept an HTTP mcpServers block — use this in your client's MCP configuration:

{
  "mcpServers": {
    "emit": {
      "type": "http",
      "url": "https://api.rssemit.com/mcp",
      "headers": { "Authorization": "Bearer emit_live_…" }
    }
  }
}

Where that file lives differs per client; check your client's own MCP documentation for the path. Other clients use different formats; follow their HTTP transport and bearer-header instructions.

No key yet? You don't need a signup form. Ask your agent to call create_account with a name and an email and it will get one back — the key is returned once, so store it as EMIT_API_KEY immediately.

Once connected, tools/list returns 33 tools. Everything below is one of them.

The one-prompt quickstart

Paste this at your agent and it will do the whole thing:

Use the emit MCP server to set me up:

1. Create an emit account for me and save the API key as EMIT_API_KEY.
2. Create a feed for security advisories and breaking changes affecting
   Postgres, Redis, and nginx.
3. Show me the feed's Atom URL so I can subscribe in my reader.
4. Register my sending domain and walk me through the DNS records, then
   turn the feed into a daily email digest from digest@<my-domain>.
5. Start a $10 top-up so filtering and sending are funded, then refresh
   the feed and show me what it caught.

What happens under the hood: create_account issues the key, create_feed discovers sources from the prompt and returns durable atom_url / json_url endpoints, verify_domain returns the exact DKIM, SPF, and DMARC records to add, broadcast_feed_by_email turns the feed into a daily email digest, top_up returns a Stripe Checkout URL, and refresh_feed polls immediately instead of waiting for the cadence.

Only one step is yours: opening the Checkout URL. New accounts start at a zero balance, and nothing sends until it is funded.

What the tools call things

This is worth two minutes before you read the tool list, because the MCP surface deliberately uses friendlier names than the REST API does. If you have the API reference open in another tab, the words do not line up:

The MCP tools say The REST API and docs call it REST path
feed — a stream you curate and filter a watcher (also "smart feed") /v1/watchers
email broadcast — a newsletter people subscribe to a feed /v1/feeds
chat broadcast — a Slack or Discord destination a sink /v1/sinks

So create_feed posts to /v1/watchers, and create_email_broadcast posts to /v1/feeds. The overlap on the word "feed" is the one that bites: an MCP feed is a REST watcher, and an MCP email broadcast is a REST feed.

The MCP names describe what the object does for you; the REST names are the internal model. Nothing is translated at the data layer — a feed you create over MCP is the same object you can GET /v1/watchers/{id} a second later.

The tools

Account and billing — create_account, account, verify_domain, top_up

Create an account and get a key, read your credit balance and verification state, register a sending domain and receive its DNS records, and start a prepaid top-up.

Feeds (anything in, one clean stream out) — create_feed, list_feeds, get_feed, update_feed, delete_feed, add_feed_source, remove_feed_source, feed_items, preview_feed, refresh_feed

Describe an interest in plain language and let it find sources, or pass source URLs yourself — RSS/Atom feeds, or pages with no feed at all, which are watched by diffing their links. With no prompt you get a plain merge. preview_feed dry-runs the filter over recent items and shows what would be kept versus dropped, with scores, without changing what the feed publishes; it is the right way to tune a prompt or threshold before committing to it.

Email broadcasts — broadcast_feed_by_email, create_email_broadcast, list_email_broadcasts, update_email_broadcast, delete_email_broadcast, broadcast_subscribers, invite_subscribers

Turn one of your feeds into a newsletter in a single call, or point a broadcast at any RSS/Atom URL directly — yours or anyone's. Schedules are on_publish, daily, or weekly. Mail goes out from your own verified domain.

Chat broadcasts — broadcast_feed_to_chat, preview_chat_broadcast, list_chat_broadcasts, update_chat_broadcast, delete_chat_broadcast

Push a feed's new items to a Slack or Discord incoming webhook, either per item as it lands or rolled up on a daily/weekly schedule. preview_chat_broadcast posts one message so you can see how it reads, and returns the exact text it posted, without changing what the live broadcast will later push.

Subscribers — add_subscriber, list_subscribers, update_subscriber, remove_subscriber, import_subscribers

Add people one at a time or bulk-import a list. Subscribers are double opt-in: they stay pending until they click the confirmation link. Consent is scoped per broadcast, so invite_subscribers is how you ask a pre-added list to confirm.

Reading and one-offs — read_items, send_one_off_email

Read recent items across everything you run, newest first — useful when the agent is the reader. send_one_off_email sends a single email to confirmed subscribers without setting up a recurring broadcast.

The server runs inside the API

Every tool call executes against your account using the key in your Authorization header, and is subject to the same validation, rate limits, and error responses as the equivalent REST call. Your subscribers' data is not proxied through a third party, and there is no client package to keep updated — when a tool changes, the endpoint changes with it.

The tool input schemas are generated from the same request models the REST API validates against, so what a tool accepts and what the endpoint accepts do not drift apart.

Or skip MCP: the Claude Code skill

If you would rather not register a server, there is a single static skill file:

mkdir -p ~/.claude/skills/emit
curl -fsSL https://rssemit.com/skill.md -o ~/.claude/skills/emit/SKILL.md

# then, in any repo:
claude "add a newsletter to this blog using emit"

It teaches the agent to find the RSS feed in your repo, verify your sending domain, import subscribers, and send the first broadcast, using plain REST calls.

There is also an llms.txt describing the whole product to agents, and the complete OpenAPI 3.1 spec as one file.

The same thing in four curl calls

MCP is a convenience, not a requirement. Nothing above is unavailable over plain HTTP:

curl -sX POST https://api.rssemit.com/v1/accounts \
  -H "Content-Type: application/json" \
  -d '{"name":"Ops feeds","email":"you@yourdomain.dev"}'
# → save .api_key as EMIT_API_KEY (shown once)

curl -sX POST https://api.rssemit.com/v1/watchers \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $EMIT_API_KEY" \
  -d '{"prompt":"security advisories and breaking changes affecting
       Postgres, Redis, and nginx"}'
# → .atom_url is your feed; .id is $FEED

curl -sX POST https://api.rssemit.com/v1/domains \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $EMIT_API_KEY" -d '{"domain":"yourdomain.dev"}'
# → add the returned DNS records, then POST /v1/domains/{id}/verify

curl -sX POST https://api.rssemit.com/v1/watchers/$FEED/pipe \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $EMIT_API_KEY" \
  -d '{"from_email":"digest@yourdomain.dev","schedule":"daily"}'

What it costs

Creating feeds, serving them, polling, sinks, and outbound webhooks are free. The meter runs on work actually done, from one prepaid balance at $1.60 per 1,000 credits, $10 minimum top-up, no monthly fee and no subscriber tiers:

A feed filtering roughly 40 items a day costs about $0.38 a month. A 5,000-subscriber blog publishing four times a month is about $32 a month.

Things to tell your agent

Get an API key → · Read the API guide · Zero to a working pipeline with any agent