Looking to just connect Claude or ChatGPT? See Connect to Claude / ChatGPT. This page is the technical reference.
Endpoint & transport
- URL —
https://api.signalraven.ai/mcp - Transport — Streamable HTTP, JSON-RPC 2.0
- Auth — OAuth 2.1 (the client discovers the authorization server automatically)
Discovery
Connectors find the authorization server via standard metadata:
api.signalraven.ai/.well-known/oauth-protected-resource(RFC 9728)auth.signalraven.ai/.well-known/openid-configuration
A 401 from /mcp carries a WWW-Authenticate: Bearer resource_metadata="…" header so clients can auto-discover the flow.
Tools
| Tool | Scope | Description |
|---|---|---|
| list_signals | read:signals | List signals (limit, offset, type, minStrength) |
| get_signal | read:signals | Fetch one signal by id |
| list_sources | read:sources | List sources + metrics (period) |
| get_watchlist | read:watchlist | List watchlist posts |
| get_icp | read:icp | Get the workspace ICP profile |
Results carry structuredContent.mode = "live" or "sample", mirroring the REST _meta.mode.
Approved vs. sample data
There are two permission layers — worth understanding the difference:
- You authorizing a client — “I let this app read my workspace” (OAuth consent, or creating an API key).
- SignalRaven approving a client to operate — a platform-level gate for third-party connectors.
| Client state | Result |
|---|---|
| Your own API key | Live data immediately — auto-approved for your workspace |
| Approved third-party connector | Live data for workspaces users consent to |
| Pending / unknown connector | Sample data + a prompt to get approved |
| Denied connector | 403 — no access |
So an unknown agent that discovers the server can complete the handshake, see the tool list, and get a realistic taste — but never a real customer’s data — until a human at SignalRaven approves it.
// Example: list_signals tool call (JSON-RPC)
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": { "name": "list_signals", "arguments": { "limit": 5 } } }