API
JSON over HTTPS. Structured facts with provenance — never article text.
Quick start
curl "https://intel.pulsetcg.co.uk/api/v1/events/latest?game=pokemon&limit=5"
With a key (higher rate limits, usage tracking):
curl -H "X-API-Key: tcgi_…" "https://intel.pulsetcg.co.uk/api/v1/events?status=confirmed&min_confidence=0.8"
Everything releasing in the next 90 days:
curl "https://intel.pulsetcg.co.uk/api/v1/releases/upcoming?within_days=90"
Where did a claim come from?
curl "https://intel.pulsetcg.co.uk/api/v1/events/evt_abc123/sources"
Endpoints
| GET | /api/v1/events | The main feed. All filters below apply. |
| GET | /api/v1/events/latest | Newest first — for polling. |
| GET | /api/v1/events/{id} | One event with sources, entities, facts and history. |
| GET | /api/v1/events/{id}/sources | Provenance only. |
| GET | /api/v1/releases/upcoming | Dated sets and sealed products. |
| GET | /api/v1/games | Games covered, with record counts. |
| GET | /api/v1/sets | Sets. Filter by game or search by name. |
| GET | /api/v1/sets/{slug} | One set, its known cards and linked events. |
| GET | /api/v1/cards | Cards. |
| GET | /api/v1/cards/{slug} | One card. |
| GET | /api/v1/products | Sealed products. |
| GET | /api/v1/products/{slug} | One product. |
| GET | /api/v1/search?q= | One query across events and the catalogue. |
| GET | /api/v1/sources | Every monitored source and its trust weight. |
| GET | /api/v1/me | What your key is entitled to and what it has used. |
| GET | /health | Service health. 200 healthy, 503 degraded. |
| POST | /api/mcp | MCP endpoint (JSON-RPC 2.0 over Streamable HTTP). |
Filters (/api/v1/events)
| game | pokemon | magic-the-gathering | yugioh | one-piece | lorcana |
| event_type | set_announcement | card_reveal | release_date | product_announcement | ban | unban | rules_change | tournament_result | … |
| status | confirmed | reported | rumour | disputed | retracted |
| region | global | na | eu | uk | jp | asia | oceania | latam |
| from / to | YYYY-MM-DD — filters on the event date |
| since | YYYY-MM-DD — filters on when it was first reported |
| min_confidence | 0–1 |
| official_only | true — only events with a first-party publisher source |
| q | free text over title and summary |
| order | newest | upcoming | confidence |
| include_demo | true — include demo records (excluded by default) |
| limit / offset | pagination; limit max 100 |
Repeat a parameter or comma-separate it for multiple values: ?game=pokemon,lorcana
Response shape
Every list endpoint returns the same envelope:
{
"data": [ … ],
"meta": { "total": 412, "limit": 25, "offset": 0, "hasMore": true }
}Errors always carry a machine-readable code:
{ "error": { "code": "rate_limited", "message": "Rate limit of 30 requests/minute exceeded." } }Reading the data correctly
- status —
confirmedmeans a first-party publisher stated it.reportedmeans outlets state it as fact without official confirmation.rumourmeans a leak or speculation. Never present a rumour as fact. - confidence — 0–1, recomputed from scratch each time a source is attached.
confidenceFactorsshows what produced it. - occurredPrecision — when it is
month, only a month was stated; the day inoccurredAtis a placeholder, not a claim. - independentDomains — distinct publishers, not distinct URLs. Three syndicated copies of one story count once.
- isDemo — written for this repository, not real news. Excluded unless you pass
include_demo=true.
Authentication and limits
Send your key as X-API-Key: tcgi_… or Authorization: Bearer tcgi_…. Rate limit headers are returned on every response.
| Tier | Requests/min | Requests/month | Scopes |
|---|---|---|---|
| Free | 30 | 5,000 | read |
| Developer | 120 | 100,000 | read |
| Pro | 600 | 1,000,000 | read, bulk |
| Commercial | 1,200 | 10,000,000 | read, bulk, redistribute |
Billing is not implemented. Tiers exist so limits, quotas and scopes are already per-key; enabling paid plans is a matter of wiring a payment webhook to a row update.
MCP (AI agents)
Add this deployment as an MCP server over Streamable HTTP:
{
"mcpServers": {
"tcg-intelligence": {
"type": "http",
"url": "https://intel.pulsetcg.co.uk/api/mcp",
"headers": { "X-API-Key": "tcgi_…" }
}
}
}Tools exposed:
- search_tcg_events
- get_latest_events
- get_upcoming_releases
- search_cards
- get_card
- get_set
- get_product
- get_event_sources
- list_games