Developers — API & MCP
Read-only, no key, CORS-open. Community data is
aggregate-only — individual reports are not retrievable.
REST API
| Endpoint | Returns |
GET /api/v1/frontiers |
Every category: ISD frontier date, days behind, movement velocity,
community aggregates (reports / waiting / completed / with card, waiting &
approval medians, card-lag median). Cacheable 5 min. |
GET /api/v1/community/history?category=4 |
Weekly community pace series: trailing 4-week medians for
applied→approved, approved→card and applied→card, in weeks. |
GET /api/v1/eta?category=4&applied=2026-03-15 |
Timeline for one application: processing window, card-in-hand range, and
counts of community reports from applications within ±2 weeks. |
curl -s https://stampwatcher.com/api/v1/frontiers
curl -s 'https://stampwatcher.com/api/v1/eta?category=4&applied=2026-03-15'
Quote URLs in a shell — an unquoted & splits the command.
MCP
Streamable HTTP at https://stampwatcher.com/mcp. No auth, stateless, read-only.
| Client | Setup |
| Claude Code |
claude mcp add --transport http stampwatcher https://stampwatcher.com/mcp |
| Claude Desktop / claude.ai |
Settings → Connectors → Add custom connector → URL https://stampwatcher.com/mcp |
Any project (.mcp.json) |
{"mcpServers": {"stampwatcher": {"type": "http", "url": "https://stampwatcher.com/mcp"}}} |
Verify from a shell (expects a JSON tool list back):
curl -s -X POST https://stampwatcher.com/mcp \
-H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
| Tool | Does |
get_frontiers() | All categories — same payload as the REST endpoint. |
get_frontier(category) | One category by key ("4") or name ("Stamp 4"). |
get_eta(category, applied) | Timeline estimate for one application date. |
Unofficial; see the footer disclaimer. Responses cache for
5 minutes — polling faster returns the same data.