API & MCP documentation
Programmatic access to cross-source momentum scores from ten developer and builder communities. Included with Radar at 10,000 requests/month — not a four-figure add-on.
Authentication
Generate a key in your dashboard. Keys are shown once and stored only as a hash — if you lose it, revoke and generate a new one. Pass it as a bearer token or in x-api-key:
curl -H "Authorization: Bearer sk_live_..." \
"https://www.signalcrest.app/api/v1/entities?limit=10"
# equivalent
curl -H "x-api-key: sk_live_..." "https://www.signalcrest.app/api/v1/entities?limit=10"Endpoints
Two layers: entities are trends aggregated across communities (one row per technology) — signals are the item-level evidence underneath them. Start with entities.
GET/api/v1/entities
Entities ranked by cross-source momentum.
Query: category (optional), limit (default 50, max 200).
Returns name, category, audience, signal_score, lifecycle, item_count, source_count, sources, first_seen_at.
GET/api/v1/entities/:name
Full detail for one entity: current composite, complete score history, and the member items the score aggregates. 404s with the list endpoint named if the entity is unknown.
GET/api/v1/signals
Live item-level signals, unredacted.
Query: category (optional), limit (default 50, max 200).
Returns id, source, title, url, category, summary, signal_score, source_spread, spread_entity, first_seen_at.
GET/api/v1/topics/:id
Full topic detail including complete score history.
Example response
{
"count": 2,
"entities": [
{
"name": "langchain",
"category": "ai",
"signal_score": 61.4,
"lifecycle": "Heating",
"item_count": 13,
"source_count": 4,
"sources": ["github", "hackernews", "npm", "devto"],
"first_seen_at": "2026-07-19T04:31:12.000Z"
}
]
}Quotas & errors
- 10,000 requests/month on a 30-day rolling window, plus a short-term burst limit of 120 requests/minute per key.
- Data refreshes every 30 minutes — polling faster than that returns the same scores.
- Need more? hello@signalcrest.app — we raise limits case by case.
| Status | Meaning |
|---|---|
| 401 | Missing or invalid key |
| 403 | Key valid but the account isn't on Radar |
| 404 | Unknown topic or entity |
| 429 | Burst or monthly quota exceeded |
| 503 | API temporarily unconfigured |
MCP server
Query the same data from Claude Code, Claude Desktop, or Cursor — ask “what's heating up in AI tooling this week?” and the model pulls live scores. Same key, same quota.
claude mcp add --transport http signalcrest https://www.signalcrest.app/api/mcp \
--header "Authorization: Bearer sk_live_..."Or in a client's JSON config:
{
"mcpServers": {
"signalcrest": {
"type": "http",
"url": "https://www.signalcrest.app/api/mcp",
"headers": { "Authorization": "Bearer sk_live_..." }
}
}
}Four tools are exposed:
list_entities— trends aggregated across communitiesget_entity— one entity with history and evidencelist_signals— item-level signalsget_topic— one signal with full history
No-key surfaces
Free, no authentication, rate-limited by CDN cache:
- /feed.xml — RSS of the top public signals
/api/badge/:id— live SVG score badge for a README- /archive — every scored signal and entity past the 48-hour window
How the scores are computed — every term, weight, and known limitation — is on the methodology page.