io.github.Misar-AI/misarreach-mcp · v5.1.2 · sales-and-crm
MisarReach MCP Server is healthy: it completed an MCP handshake in 3079 ms and exposes 31 tools.
Find and enrich leads, run multi-channel outreach, and manage the sales pipeline.
Endpoint: https://api.misar.io/reach/mcp (streamable-http)
Repository · Website · JSON · Add to my inventory
| Users (last 30 days) | 0 |
| Handshake | Healthy |
| Auth needed | None |
| Tool count | 31 |
| Latency | 3079 ms |
| Last checked (UTC) | 2026-10-15T01:55:53.958Z |
| Checked (UTC) | Status | Latency | Error |
|---|---|---|---|
| 2026-10-15T01:55:53.958Z | Healthy | 3079 |
list_leads | List leads already saved to the account, newest first, with paging and search. Use this to work with leads you already have. It does NOT find new ones — that is search_leads, which starts a job and costs credits. Narrow to one search job with job_id when you want just that job's results. Reads o |
search_leads | Start an AI lead-search job and return its jobId immediately. This is ASYNCHRONOUS: results are not in the response. Poll get_search_job_status with the jobId until it reports completion, then read the leads with list_leads filtered by that job_id. Use it to find NEW leads; use list_leads for ones |
get_search_job_status | Poll one lead-search job for its progress and results. This is the companion to search_leads: call it repeatedly with the jobId you were given until the job reports it has finished. Leave a few seconds between polls — searches take a while, and polling harder does not make them faster. Reads onl |
submit_lead_feedback | Record whether an AI-generated outreach message for a lead was good or bad, as training signal for future generations. Use it when the user judges a drafted message — it improves later output rather than changing anything now. It does not edit, resend, or delete the message, and it sends nothing t |
discover_companies | Find COMPANIES matching firmographic criteria, optionally pulling contact emails for each. This is company-level discovery — reach for it when the user is targeting organisations by industry, location, headcount or tech stack. When they want named people, use search_leads. Filters combine with AND |
enrich_lead | Fill in a saved lead's missing person and company detail — seniority, department, LinkedIn, phone, company size, industry. Use it on one lead at a time, after list_leads has given you its id, and typically before writing outreach that needs context. Check the lead first: enriching one that already |
verify_emails | Check whether email addresses are deliverable, one or up to 20 at a time. Run this before a send to protect sender reputation — bouncing a campaign off dead addresses is what gets a domain blocked. Pass either `email` for one or `emails` for a batch, not both. CONSUMES VERIFICATION CREDITS per a |
score_leads | Queue AI qualification scoring for leads — either every unscored lead in a search job, or a specific set of ids. Pass jobId OR leadIds, not both. This runs in the BACKGROUND: it returns a count immediately and the scores appear on the leads afterwards, so re-read them with list_leads rather than e |
list_lead_lists | List the managed lead lists this account has created or synced. Use it to find a listId before sync_lead_list, or to check whether a list already exists before create_lead_list makes a duplicate. These lists are held apart from the saved leads, which are separate from the leads stored locally — li |
create_lead_list | Create a new, empty managed lead list. Creating the list does not put anything in it, and it does not import anything locally — sync_lead_list does that. Call list_lead_lists first: each call creates a NEW list and nothing deduplicates by name. Requires an API key. Costs no credits. Returns the |
sync_lead_list | Import a managed lead list into local lead records so the rest of these tools can work with it. Run it after create_lead_list, or on any existing list from list_lead_lists, to pull its contacts in. Until a list is synced its contacts are invisible to list_leads, enrich_lead and send_to_campaign. |
preview_message | Draft a sample AI-personalised outreach message for a named person, to show what the agent would say. This is a PREVIEW: nothing is sent, saved, or attached to a lead or campaign. Use it to check tone before committing to a sequence. The person does not need to exist as a lead — pass their name an |
send_to_campaign | Add saved leads to a campaign's contact list in bulk, up to 500 at a time. This is how leads enter an outreach sequence, so treat it as consequential: once they are on a running campaign's list they can start receiving messages. It does NOT send anything by itself and does not start the campaign — |
list_deals | List deals as a flat, paged array, optionally filtered by status, with revenue totals alongside. Use this when you want deals as data — to count them, filter one status, or page through many. For the board view with deals grouped into stages, use get_pipeline instead; the two return the same deals |
create_deal | Open a new deal against a lead's email address. Use it when a conversation turns into a real opportunity worth tracking. Each call creates a NEW deal — it does not check for an existing one on the same email, so list_deals first if you might be duplicating. To change a deal that exists, use update |
update_deal | Change a deal's status, value, or notes. Only the fields you pass are altered. For moving a deal along the pipeline board prefer move_deal_stage, which is the same operation expressed in stage terms; use this one for value and notes. Setting status to 'closed' or 'lost' marks the deal resolved and |
get_pipeline | Get the sales pipeline as a board: deals grouped by stage, with revenue totals. Use this for 'how does the pipeline look' questions and stage-by-stage review. It is the board view of the same deals list_deals returns flat — reach for that one when you need filtering or paging, since this returns t |
move_deal_stage | Move one deal to a different pipeline stage — the equivalent of dragging its card on the board. This is the tool for pipeline progression; update_deal is for value and notes. Moving to 'closed' or 'lost' resolves the deal and removes it from open pipeline revenue, which changes reported figures — |
start_autopilot | Start an autonomous outreach run: give the agent a goal and it finds, contacts and follows up with leads on its own. This is the most consequential tool on this server. It is FIRE-AND-FORGET and it SENDS REAL MESSAGES TO REAL PEOPLE without returning for approval, so only start a run when the user |
list_autopilot_runs | List past and running autopilot runs with their status and result summaries. Use it to review what has already been run — and to check for a run already in flight before start_autopilot launches a second one against the same goal. For detail on one run, use get_autopilot_status. Reads only, cost |
get_autopilot_status | Get the current progress and results of one autopilot run. This is how you follow a run started by start_autopilot: call it with the runId, leaving time between polls. Reading status does not pause, stop, or alter the run in any way — it keeps going regardless, and there is no tool here to stop it |
get_channels_status | Report the configuration, connection state and delivery stats for every outreach channel — WhatsApp, SMS and push. Check this before relying on a channel: a disabled or unconfigured one silently delivers nothing. It is also the natural first step before update_channel, so you know the current stat |
update_channel | Turn one outreach channel on or off — WhatsApp, SMS or push. This changes how the account actually delivers messages, so it affects live campaigns and autopilot runs, not just future ones. DISABLING a channel silently stops delivery over it; enabling one that has no credentials configured will not |
get_sales_agent_config | Fetch the AI sales agent's current settings: whether it is enabled, its booking link, offer price, reply limits and confidence threshold. Read this before update_sales_agent_config so you change one field without clobbering the rest, and to check whether the agent is enabled at all before expectin |
update_sales_agent_config | Change the AI sales agent's settings — enable or disable it, set the booking link, offer price, reply limits and confidence threshold. These settings govern an agent that replies to real prospects, so treat them as live: ENABLING it lets it start responding on its own, the confidence threshold dec |
get_sales_agent_actions | Get what the AI sales agent has done today, with summary stats — actions taken, deals created, replies sent. This is the audit trail: use it to see what the agent did on the account's behalf, and to sanity-check its behaviour after enabling it. Covers TODAY only, so it is not the tool for historic |
process_sales_agent | Run the sales-agent pipeline over one conversation: decide the next action and carry it out. This ACTS on a real conversation — depending on what it decides, it can reply to the prospect, create a deal, or book a meeting. It is not a dry run and there is no preview, so call it only when the user w |
search_verified_leads | Find people or businesses matching a plain-language description and return only leads with a real way to reach them (email, phone or LinkedIn), each read from a real record — never generated. Waits for the search to finish (up to wait_seconds) and returns the leads with each email's verification sta |
reveal_company_contacts | Read a company's own website now and return what it publishes: contact emails, a phone number, its social profiles and its detected tech stack. robots.txt is obeyed. One enrichment credit, charged only when the site publishes a way to reach the company, and at most once per company per day. |
company_email_format | The email address format a company uses (e.g. {first}.{last}@acme.com), learned only from addresses that were verified deliverable, with each pattern's share and a confidence level. Free. Returns 'not published' when there is not yet enough verified evidence for the domain. |
verify_email | Check whether one email address can receive mail. Returns valid, invalid, accept_all (a catch-all domain: the server accepts every address, so this one cannot be confirmed — do not treat it as valid), webmail, disposable or unknown. Consumes one verification credit. The verdict is saved onto any lea |