Documentation
How Snitch works
Snitch watches public conversations for keywords you choose, sorts each mention by what it needs, and drafts a reply that a person approves. Everything the dashboard does is also available over a REST API and an MCP server.
Concepts
- Workspace
- Your team and its billing. Everything else lives inside one.
- Project
- One thing you are watching — usually a product. Holds its own keywords, categories and alerts.
- Keyword group
- Which of three questions a keyword answers: is this about us, about a competitor, or is this someone describing a problem we solve? The group decides which question the classifier is asked, so a keyword in the wrong group is not mislabelled — its matches are discarded.
- Keyword
- A phrase Snitch searches for, inside one group. A competitor keyword also carries a line describing that competitor, so the classifier is not told the subject is you.
- Mention
- One public post, comment or video description that matched a keyword. Duplicates of the same post are collapsed into one.
- Agent action
- Something Snitch proposes — a reply, or a Linear issue. It stays
proposeduntil a person approves it.
Quickstart
- Say what you are. One sentence on the keywords page. Without it, “this pasta is wonderful” and a post about your product look identical.
- Add a keyword to each group. Your product name under My brand, two or three rivals under Competitors, and a phrase your customers would use about their problem under Customers. That last one finds people who have never heard of you.
- Let a collection run finish. Snitch searches each source and stores what matches. You can force one from the dashboard or with
POST /api/v1/scans. - Read the queue. Each mention arrives with a category, an urgency score, and a badge for the group that found it. Filter the feed to one group, or point an alert at one, to answer a single question at a time.
- Approve a reply. Snitch drafts it. Nothing is posted until you approve, and every approval records who and when.
Sources
Snitch only reads what is publicly visible. It does not read private messages, private groups, or anything behind a login.
| Source | Status | What is collected |
|---|---|---|
| Live | Posts and comments matching your keywords, via the Reddit API. | |
| YouTube | Live | Video titles and descriptions matching your keywords, via the YouTube Data API. |
| X | Planned | Adapter not shipped yet. The data model already accepts X mentions. |
| Planned | Adapter not shipped yet. Will cover a Page you connect. |
Approvals
Snitch never posts on its own. A drafted reply is an agent action in the proposed state. Approving it moves it to approved, then executing, then completed. Rejecting it stops there. Failures land in failed with the reason attached.
A mention itself moves through its own statuses:
new- Collected and categorised, not yet looked at.
reviewing- Someone on the team has it open.
actioned- A reply was approved, or an issue was created.
saved- Kept for later without acting on it.
ignored- Dismissed. Stays out of counts and alerts.
archived- Removed from the working queue.
REST API
Authenticate with a workspace API key as a bearer token. Keys start with sn_, are stored only as a SHA-256 hash, and carry scopes such as mentions:read or keywords:write. Create one under Developer in the dashboard.
curl https://heysnitch.com/api/v1/mentions?projectId=PROJECT_ID \
-H "Authorization: Bearer sn_your_key_here"| Endpoint | Does |
|---|---|
GET /api/v1/mentions | Page through mentions for a project. |
GET, POST /api/v1/keywords | List or add keywords. |
PATCH, DELETE /api/v1/keywords/:id | Edit or remove one keyword. |
GET /api/v1/alerts | Alerts raised for the workspace. |
POST /api/v1/scans | Trigger a collection run. |
GET /api/v1/usage | Mentions consumed against your plan. |
GET, POST /api/v1/api-keys | Manage machine credentials. |
GET, POST /api/v1/webhooks | Manage webhook endpoints. |
GET /api/v1/capabilities | The same capability list the MCP server exposes. |
MCP server
Point any MCP client at https://heysnitch.com/mcp and authenticate with the same bearer token. The server speaks JSON-RPC over HTTP POST and implements protocol version 2025-06-18. The tools are the same capabilities the dashboard uses, so nothing extra needs building.
curl -X POST https://heysnitch.com/mcp \
-H "Authorization: Bearer sn_your_key_here" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'35 tools are exposed. Read-only tools are annotated as such, and the destructive ones are flagged so a client can ask before running them.
list_projectsprojects:readget_projectprojects:readcreate_projectprojects:writeupdate_projectprojects:writearchive_projectprojects:writedestructivelist_keyword_groupskeywords:readcreate_keyword_groupkeywords:writeupdate_keyword_groupkeywords:writedelete_keyword_groupkeywords:writedestructivelist_keywordskeywords:readcreate_keywordkeywords:writeupdate_keywordkeywords:writelist_rejectedmentions:readdelete_keywordkeywords:writedestructivelist_mentionsmentions:readget_mentionmentions:readupdate_mention_statusmentions:writelist_draftsdrafts:readcreate_draftdrafts:writeupdate_draftdrafts:writelist_categoriescategories:readcreate_categorycategories:writeupdate_categorycategories:writedelete_categorycategories:writedestructivelist_saved_viewsviews:readcreate_saved_viewviews:writedelete_saved_viewviews:writedestructivepost_draftreplies:publishlist_postsreplies:readretract_postreplies:publishdestructivelist_source_accountsaccounts:readdisconnect_source_accountaccounts:writedestructivelist_audit_eventsaudit:readget_mention_analyticsanalytics:readget_usageusage:read
Webhooks
Register an endpoint and Snitch will POST events to it as they happen. Each delivery carries three headers: webhook-id, webhook-timestamp and webhook-signature.
The signature is v1, followed by a base64 HMAC-SHA256 of {id}.{timestamp}.{body}, signed with your endpoint secret. Verify it before trusting a payload, and reject timestamps that are far from now.
A delivery that does not return a 2xx is retried up to eight times with exponential backoff starting at one minute. Redirects are not followed.
Plans and limits
| Plan | Mentions a month | Keywords |
|---|---|---|
| starter | 1,000 | 3 |
| pro | 10,000 | 7 |
| scale | 50,000 | 15 |
When you hit the monthly limit Snitch pauses collection until the next period. You are never charged an overage, nothing is deleted, and the feed resumes on its own.
API and MCP calls are rate limited by class: read, write, and expensive for calls that trigger collection or analytics.
Something missing here? Check the FAQ