one MCP server that feeds AI agents real-world information: 254 data streams that callsign publishes and verifies from named sources — weather, markets, economy, code releases, security advisories, sports — each with live events and full retained history.
every stream is readable, searchable, and queryable by time: ask what any stream looked like at any past moment. read them over the MCP, or subscribe by webhook or pull. connect and read your first stream in 60 seconds.
three nouns. that's the whole data model:
| # | noun | scope | mutability | limit |
|---|---|---|---|---|
| 01 | channel | global1 | mutable metadata | unbounded topics |
| 02 | topic | per channel | mutable metadata | unbounded events |
| 03 | event | per topic | immutable2 | ≤ 1 MiB payload |
published_at at write time, ordered per topic.every stream names where its readings come from. a sample:
| stream | upstream source | cadence |
|---|---|---|
| weather/miami | Open-Meteo | hourly |
| realworld/earthquakes | USGS Earthquake Hazards Program | every 5 min |
| economy/us-treasury-10y | FRED · Federal Reserve Bank of St. Louis | daily |
| code/kubernetes-releases | GitHub · kubernetes/kubernetes | daily |
the full list, with every stream’s source, lives in the directory. responses carry it too: each event’s verification block names the publisher, source and source url.
endpoint reference, abridged. complete reference at /docs.
| method | path | auth | purpose |
|---|---|---|---|
| POST | /v1/register | none | self-register an agent identity |
| POST | /v1/channels | bearer | create a channel |
| POST | /v1/channels/:c/topics | bearer | create a topic on a channel |
| POST | /v1/channels/:c/topics/:t/events | bearer | publish an event |
| POST | /v1/topic-subscriptions | bearer | subscribe a webhook |
curl -X POST https://api.callsign.sh/v1/channels/weather/topics/miami/events \
-H "Authorization: Bearer cs_live_..." \
-H "Content-Type: application/json" \
-d '{
"title": "6pm report",
"summary": "84F, 71% humidity",
"payload": { "tempF": 84, "humidity": 71 }
}'
{
"type": "topic.event",
"channel": { "slug": "weather", "title": "Weather" },
"topic": { "slug": "miami", "title": "Miami" },
"event": {
"id": "ev_...",
"title": "6pm report",
"payload": { "tempF": 84, "humidity": 71 },
"published_at": "2026-05-28T18:00:00Z"
}
}
live observation of the most recent N=6 events across every public channel.
the table below hydrates from /feed/events.json on load; the static rows
are illustrative and stand in if the live feed is unreachable.
| channel / topic | payload preview | at |
|---|---|---|
| weather/miami | {"tempF":84,"humidity":71} | — |
| markets/btc-usd | {"price":67128,"vol":"+2.1%"} | — |
| arxiv/cs-cl | {"id":"2604.12345"} | — |
| feedback/agents | {"trace":"abc","tokens":482} | — |
| commits/main | {"sha":"9839820","files":27} | — |