API reference
SignalPipe exposes two public surfaces: a REST API for direct integration and an MCP server for AI agents. Both are backed by the same scout engine and require operator-key Bearer auth.
Quickstart
https://api.signalpipe.ioAuthorization: Bearer YOUR_OPERATOR_KEYREST endpoints
Direct HTTP for the plugin, daemon, dashboards, and any non-agent integration.
| Method | Path | Description |
|---|---|---|
| GET | /health | Liveness probe (no auth). |
| POST | /scout/launch_batch | Run a scout cycle. Triggered on a schedule by pg_cron. |
| GET | /sync/missions | List pending missions. Supports ?status= and ?include=draft_context. |
| POST | /actions/upload_draft | Upload a draft for a mission. |
| POST | /actions/approve | Approve a mission for outreach. |
| POST | /actions/reject | Reject a mission. Feeds the RL loop. |
| POST | /actions/ack | Acknowledge a sent mission. |
| POST | /products/reload | Hot-reload the product / anchor cache. |
| POST | /stations/add | Add a new RSS station to a product. The feed URL must be http(s) on a public host; returns the station id. |
| POST | /stations/preview | Judge a candidate feed before adding it: a verdict (VIABLE, MARGINAL, ON-TOPIC NOT IN-MARKET, NO BUYERS, NO DATA) and a judged sample. Writes nothing. |
| POST | /stations/update | Pause, resume, rename or re-point one of your stations. |
| POST | /stations/remove | Remove a station; one that already produced leads is switched off instead. |
| POST | /signal/score | Score any text against a product. The core endpoint — your agent brings the text, from any channel. We never connect to the source. Pass context for a reply; panel_verdict says what the judges decided. |
| POST | /signal/score_batch | Score up to 25 texts in one call. One verdict each, one round trip. |
| POST | /scout/ingest | Hand the brain a feed page your own plugin or daemon read (stations marked read_by: client). |
| POST | /products/add | Create a product profile. The first call a new account makes — everything else needs its product_id. |
| POST | /products/suggest_anchors | Draft candidate anchor sentences from your product description. Edit them; do not accept them blindly. |
| POST | /products/update | Edit a product or pause and resume it. Only the fields you send change. |
| POST | /companion/record_reply | Hand the brain a prospect’s reply: intent, objections, do-not-contact, and whether they invited a private message. |
| GET | /v4/quiet_hours | Your quiet hours: when the scout skips your products. Off by default. POST to set or clear them. |
| GET | /stations/list | Your stations with a health readout — including whether a quiet queue is a dead feed or wrong anchors. |
Worked example: score Reddit posts with /signal/score_batch, in Python, JavaScript, curl or over MCP, and score X posts read with your own X API access.
MCP server
Connect from Claude Code, Cursor, Windsurf, or any MCP-compatible client.
https://api.signalpipe.io/mcp24 tools across 6 categories. Same operator-key Bearer auth as the REST surface — agents act with the operator’s permissions, never autonomously. The Signal category is new (2026-05-14): a universal classifier your agent calls with text from Gmail, Slack, Discord, Telegram, LinkedIn, or any channel its plugins give it access to.
Missions — 7 tools
get_missionsFetch pending lead missions awaiting human review.draft_missionGet drafting instructions and context for a mission.upload_draftUpload a reply draft you wrote for a mission.approve_missionApprove a mission and queue it for outreach.reject_missionReject a mission with a reason — feeds the per-station RL loop (penalty size adapts to the reason).delete_missionHard-delete a mission row — silent cleanup, no learning signal.mark_sentMark an approved mission as actually sent — records the outbound interaction and the positive RL signal.
Pipeline — 5 tools
get_pipelineGet the prospect pipeline sorted hottest first.track_prospectAdd a prospect to the nurture pipeline, or log what they did (opted_out ends it).record_replyHand the brain a prospect’s reply. It reads the intent, objections and any opt-out, updates temperature and mode, and says whether they invited a private message.get_message_promptFetch the system prompt and conversation context for a prospect. Refused for anyone who opted out.record_messageRecord a message you sent to a prospect, so the next draft knows what was said.
Products — 5 tools
get_productsList all configured products.add_productCreate a new product with anchor sentences and keywords.suggest_anchorsDraft candidate anchor sentences from a product description — edit them into buyer voice before using.update_productEdit a product’s anchors or description, or pause and resume it. The previous anchors are kept.reload_productsReload the product cache after adding or editing.
Stations — 5 tools
preview_stationCheck a feed for buyers before adding it: the judges read its best posts and give a verdict. Nothing is saved.add_stationAdd a new RSS / Reddit / HN station to a product.list_stationsYour stations with a health readout and a plain-language verdict.update_stationPause, resume, rename or re-point a station.remove_stationRemove a station (one with history is switched off instead).
Scout — 1 tool
scout_nowTrigger an on-demand scouting run across your active products.
Signal (universal) — 1 tool
score_signalScore arbitrary text from any channel your agent reads (Gmail, Slack, Discord, Telegram, LinkedIn, etc.) — returns score, classification, the judges’ verdict (panel_verdict), sub-scores, and drafting context. For a reply, pass the post it answers as context. Same engine as the scout, called by your agent.
Auth model
Every request — REST or MCP — must include the operator key as a Bearer token. It’s the operator key your dashboard issues — the same value used by the plugin, the daemon, and any MCP client.
Each account’s data is isolated — every query is scoped to the authenticated account’s records. Every account connects with its own operator key, over the hosted MCP endpoint, the REST API, the OpenClaw plugin or the daemon.