reachowl
ReachOwl MCP, agent instructions You have the ReachOwl MCP connected to the public API at https://reachowl.com/api/v1.
What it can do
- Authenticate: Get a ReachOwl Bearer token via POST /api/v1/authenticate. Stores the token for later tools.
- Get User: GET /api/v1/user — current user, default team_id, and teams list.
- List Campaigns: GET /api/v1/campaigns — list campaigns. Prefer omit team_id.
What data it sees
Do you need an account
No: the server works without sign-in
ReachOwl MCP, agent instructions
You have the ReachOwl MCP connected to the public API at https://reachowl.com/api/v1.
Auth (required before other tools)
Each user has their own Sanctum token (digits|…, e.g. 1|…). Prefer token already on the connector (reachowlToken → x-reachowl-token). If missing: ask the user for their Sanctum token and call set_token. Call auth_status — need has_token: true. Call get_user to verify the token and read team_id / teams. Only if they have no token: authenticate with email/password (fallback). Never put passwords or full tokens in chat when avoidable. “Connected” to Smithery/Claude is not a ReachOwl login. How to call tools
Prefer named tools (list_campaigns, get_contact, …) over api_request. Prefer omit team_id on list calls; use team_id from get_user when creating. Prefer Facebook group URLs over internal ids for campaigns / post schedulers. Browsers / app-states are read-only. Toggle status with { "status": 0|1 } where applicable. Facebook/Instagram execution still needs a connected browser session in ReachOwl. If tools fail
No tools / discovery error / mcp_auth timeout → connector URL or Smithery config is wrong (not ReachOwl API). Tell the user to fix MCP connection first. has_token: false or 401 → set reachowlToken / set_token, then auth_status + get_user. Do not invent Sanctum tokens or reuse another user’s token. First successful sequence auth_status → get_user → then the user’s requested action (e.g. list_campaigns).
Server tool list (53)
Raw names from tools/list. Only developers need these.
| authenticate | Get a ReachOwl Bearer token via POST /api/v1/authenticate. Stores the token for later tools. |
| get_user | GET /api/v1/user — current user, default team_id, and teams list. |
| list_campaigns | GET /api/v1/campaigns — list campaigns. Prefer omit team_id. |
| get_campaign | GET /api/v1/campaigns/{id} |
| create_campaign | POST /api/v1/campaigns — create or clone a campaign. Use post_url for Facebook group URLs. clone_from clones an existing campaign. |
| update_campaign | PATCH /api/v1/campaigns/{id} — partial update. Toggle with { status: 0|1 }. |
| delete_campaign | DELETE /api/v1/campaigns/{id} |
| list_contacts | GET /api/v1/contacts — list campaign contacts/audiences. |
| get_contact | GET /api/v1/contacts/{id} — contact detail including notes. |
| add_contact_note | POST /api/v1/contacts/{id}/notes — add or update a note. |
| delete_note | DELETE /api/v1/notes/{id} |
| lookup_queues | GET /api/v1/queues — look up queues for confirmation. Require campaign_id plus one of audience_id, member_id, or profile_url. |
| update_queue | PATCH /api/v1/queues — update/retry a queue. Prefer { id, retry: true } after lookup_queues. |
| list_groups | GET /api/v1/groups — synced Facebook groups (read-only). |
| list_mentions | GET /api/v1/mentions — keyword monitors. |
| get_mention | GET /api/v1/mentions/{id} |
| create_or_update_mention | POST /api/v1/mentions — create (no id) or update (with id) a keyword monitor. |
| delete_mention | DELETE /api/v1/mentions/{id} |
| list_mention_posts | GET /api/v1/mentions/posts?mention_id= — posts found by a keyword monitor. |
| delete_mention_post | DELETE /api/v1/mentions/posts/{id} |
| list_post_schedulers | GET /api/v1/post-scheduler |
| get_post_scheduler | GET /api/v1/post-scheduler/{id} |
| create_post_scheduler | POST /api/v1/post-scheduler — prefer group_urls over internal group_ids. Supports clone_from. |
| update_post_scheduler | PATCH /api/v1/post-scheduler/{id} — status, schedule, delete_queue_ids, or full posts update. |
| delete_post_scheduler | DELETE /api/v1/post-scheduler/{id} |
| list_profile_growth | GET /api/v1/profile-growth — Instagram profile growth plans (type=instagram). |
| get_profile_growth | GET /api/v1/profile-growth/{id} |
| create_profile_growth | POST /api/v1/profile-growth — create IG growth plan (instagram only). |
| update_profile_growth | PATCH /api/v1/profile-growth/{id} — e.g. { status: "running"|"paused" }. |
| delete_profile_growth | DELETE /api/v1/profile-growth/{id} |
| list_stages | GET /api/v1/stages |
| get_stage | GET /api/v1/stages/{id} |
| create_or_update_stage | POST /api/v1/stages — create or update one stage ({ name, id?, order? }). |
| reorder_stages | PUT /api/v1/stages — reorder stages with an array of { id, order }. |
| delete_stage | DELETE /api/v1/stages/{id} |
| list_message_templates | GET /api/v1/message-templates |
| upsert_message_template | POST /api/v1/message-templates — create/update ({ message, stage_id, image?, id? }). |
| delete_message_template | DELETE /api/v1/message-templates/{id} |
| list_browsers | GET /api/v1/browsers — connected browsers (read-only). |
| get_browser | GET /api/v1/browsers/{id} |
| list_app_states | GET /api/v1/app-states — connected social accounts. Use ids as executor_id / executor_ids. |
| get_app_state | GET /api/v1/app-states/{id} |
| list_teams | GET /api/v1/teams — team_id + teams. |
| list_team_members | GET /api/v1/team/members |
| add_team_member | POST /api/v1/team/add — invite by email. |
| update_team_member | POST /api/v1/team/members/store — update member ({ id, user_id, status, role }). |
| delete_team_member | DELETE /api/v1/team/members/{id} |
| list_events | GET /api/v1/events — webhook event catalog (ids/keys for create_webhook). |
| list_webhooks | GET /api/v1/webhooks |
| create_webhook | POST /api/v1/webhooks — subscribe a callback URL. Events from list_events (ids or slugs). keyword-monitor-found-a-post ignores campaign_id and sends at most 2 new posts per store. |
| update_webhook | PUT /api/v1/webhooks/{id} |
| delete_webhook | DELETE /api/v1/webhooks/{id} |
| api_request | Raw authenticated call to /api/v1/*. Prefer named tools when possible. Path must start with /api/v1/. |