Emailchaser
REMOTE · APP.EMAILCHASER.COM · SCANNED SEP 29
Run cold email outbound from an AI agent: campaigns, leads, replies, sender accounts, autopilot.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security89
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, but the challenge carries no valid RFC 9728 metadata, so a client cannot discover where to get a token. See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability73
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 15811 tokens (~156/item across 101 items; 101 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management57
- Stability observed for 17 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 9 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 102 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the Emailchaser MCP server?
Emailchaser is a hosted endpoint at https://app.emailchaser.com/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · app.emailchaser.com
claude mcp add --transport http com-emailchaser-emailchaser 'https://app.emailchaser.com/api/mcp'
{
"mcpServers": {
"com-emailchaser-emailchaser": {
"url": "https://app.emailchaser.com/api/mcp"
}
}
} {
"servers": {
"com-emailchaser-emailchaser": {
"type": "http",
"url": "https://app.emailchaser.com/api/mcp"
}
}
} [mcp_servers.com-emailchaser-emailchaser] url = "https://app.emailchaser.com/api/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-emailchaser-emailchaser": {
"type": "remote",
"url": "https://app.emailchaser.com/api/mcp",
"enabled": true
}
}
} openclaw mcp add com-emailchaser-emailchaser --url 'https://app.emailchaser.com/api/mcp' --transport streamable-http
mcp_servers:
com-emailchaser-emailchaser:
url: "https://app.emailchaser.com/api/mcp" {
"McpServers": {
"com-emailchaser-emailchaser": {
"Transport": "http",
"Url": "https://app.emailchaser.com/api/mcp"
}
}
} assistant mcp add com-emailchaser-emailchaser -t streamable-http -u 'https://app.emailchaser.com/api/mcp'
{
"mcpServers": {
"com-emailchaser-emailchaser": {
"type": "http",
"url": "https://app.emailchaser.com/api/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 29 Sept 26 +1
- Tool “connect_sender_email” rewrote its description, which is the text the model reads security
- Tool “get_campaign” rewrote its description, which is the text the model reads security
- Tool “get_sender_email” rewrote its description, which is the text the model reads security
- Tool “get_sender_email_dns” rewrote its description, which is the text the model reads security
- Tool “get_sender_email_warmup” rewrote its description, which is the text the model reads security
- Tool “list_sender_emails” rewrote its description, which is the text the model reads security
- Tool “update_campaign” rewrote its description, which is the text the model reads security
- Tool “update_sender_email” rewrote its description, which is the text the model reads security
- Tool “update_sender_email_warmup” rewrote its description, which is the text the model reads security
- “create_campaign” added an optional parameter “minimumHealthScore” cosmetic
- “update_campaign” added an optional parameter “minimumHealthScore” cosmetic
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 24 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.
- 23 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “create_dfy_order” rewrote its description, which is the text the model reads security
- “create_dfy_order” reworded the description of “domains” cosmetic
- “create_dfy_order” reworded the description of “mailboxes” cosmetic
- 22 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.
- 21 Sept 26 0
- New tool “cancel_email_verification_job” functional
- New tool “create_email_verification_job” functional
- New tool “get_email_verification_job” functional
- New tool “get_email_verification_rates” functional
- New tool “list_email_verification_jobs” functional
- New tool “list_email_verification_results” functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 29 Sept 2026 · Probed https://app.emailchaser.com/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=app.emailchaser.com | CN=YR1,O=Let's Encrypt,C=US | 23 Aug 2026 | 21 Nov 2026 | RSA 2048 | SHA256-RSA | 61021dee2caec2f53b2f84d9ba3be1caeeb |
| SANs: app.emailchaser.com | ||||||
| CN=YR1,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | a20253f15f2691c05dc1ce13b9bcca4e |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of app.emailchaser.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| emailchaser.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Challenged, unverified
The endpoint asked for a token, but we could not retrieve and validate the RFC 9728 metadata that tells a client how to obtain one.
| Result | Challenged, unverified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer error="invalid_token", error_description="No authorization provided", resource_metadata="https://app.emailchaser.com/.well-known/oauth-protected-resource"
Bearer error="invalid_token", error_description="No authorization provided", resource_metadata="https://app.emailchaser.com/.well-known/oauth-protected-resource" | Header | Value |
|---|---|
| strict-transport-security | max-age=63072000 |
Protected resource metadata
| Document | https://app.emailchaser.com/.well-known/oauth-protected-resource |
|---|---|
| Retrieved | No |
| Problem | metadata_http_error |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://app.emailchaser.com/api/mcp | Verified | 200 | |
| http (plaintext) | http://app.emailchaser.com/api/mcp | HTTPS enforced | 308 | https://app.emailchaser.com/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
import_instantly Import from Instantly ~80
Imports your Instantly.ai campaigns and leads into Emailchaser using your Instantly API key. Imported campaigns are created as DRAFTS — nothing sends until you review and launch them. Runs in the background and returns a job id.
| Name | Type | Req | Description |
|---|---|---|---|
| instantlyApiKey | string | yes | Your Instantly.ai API key (Instantly → Settings → API keys) |
No output schema declared.
No examples provided.
kill_autopilot_run Autopilot: kill a run ~108
Engages the kill switch: the run halts wherever it is and can NEVER be resumed, and any campaign the run launched is paused so nothing more sends. Use pause_autopilot_run instead when you might want to continue later. The optional reason is recorded in the run's audit trail.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The numeric autopilot run ID (from list_autopilot_runs) |
| reason | string | – | Why the run is being killed, for the audit trail |
No output schema declared.
No examples provided.
launch_campaign Launch campaign ~51
Launches a new campaign or resumes a paused one. The campaign configuration is validated before launching; emails start sending per the campaign schedule.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The numeric campaign ID (from list_campaigns) |
No output schema declared.
No examples provided.
list_autopilot_runs Autopilot: list runs ~89
Lists the workspace's autopilot runs, newest first, with status (pending, building_icp, writing_sequence, sourcing_prospects, awaiting_approval, running, paused, completed, failed) and linked ICP/campaign IDs.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Page size (default 50, max 200) |
| page | integer | – | Page number, starting at 1 |
No output schema declared.
No examples provided.
list_blocklist_entries List blocklist entries ~162
Returns the suppression entries (blocked domains and email addresses) that apply to this workspace, newest first. Blocked entries are never emailed by any campaign. By default that spans both lists: this workspace's own entries and the account-wide ones inherited from the main workspace. Each entry reports which list it came from.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Page size (default 100, max 1,000) |
| offset | integer | – | Number of entries to skip (default 0) |
| scope | string | – | Which list to return: "workspace" for this workspace's own entries, "global" for the account-wide list, "all" for both (default) |
| search | string | – | Case-insensitive substring match on the domain or address |
No output schema declared.
No examples provided.
list_campaigns List campaigns ~97
Lists cold email campaigns in the workspace with their status and stats (sent, replies, bounces). Supports pagination and filtering by status or folder.
| Name | Type | Req | Description |
|---|---|---|---|
| folderId | integer | – | Filter by folder ID |
| limit | integer | – | Page size (default 20, max 200) |
| page | integer | – | Page number, starting at 1 (20 campaigns per page) |
| status | string | – | Filter by campaign status |
No output schema declared.
No examples provided.
list_credit_transactions List credit transactions ~220
Lists the workspace's credit ledger, newest first: every grant, spend, reservation and refund with the balance after each entry. Filter by movement kind, reason or a time window. Use it to see where credits went, or to check for a stripe_topup entry after an unconfirmed purchase_credits call. An entry with free set to true was written while the workspace's credits were free: its amount is what the action would have cost, and no credits moved.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | Filter by movement type |
| limit | integer | – | Page size (default 50, max 200) |
| page | integer | – | Page number, starting at 1 |
| reason | string | – | Filter by what the credits were spent on or granted for |
| since | string | – | Only entries at or after this time (RFC3339 or YYYY-MM-DD) |
| until | string | – | Only entries at or before this time (RFC3339 or YYYY-MM-DD; a bare date means midnight UTC at the start of that day) |
No output schema declared.
No examples provided.
list_dfy_orders List done-for-you orders ~76
Lists the workspace's done-for-you orders, newest first, each with status, cost breakdown and the ordered domains and mailboxes. Internal billing and provider records are never exposed.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Page size (default 50, max 200) |
| page | integer | – | Page number, starting at 1 |
No output schema declared.
No examples provided.
list_email_verification_jobs List email verification jobs ~82
Lists the workspace's standalone email verification jobs, newest first, with live counts and what each has billed so far (meterEvents and spentUsd).
| Name | Type | Req | Description |
|---|---|---|---|
| page | integer | – | Page number, starting at 1 |
| search | string | – | Filter by job name |
| size | integer | – | Page size (default 25, max 200) |
No output schema declared.
No examples provided.
list_email_verification_results List an email verification job's results ~145
Returns one row per address with its verdict: valid, catchall_validated (the domain accepts everything, so delivery is likely but not proven), invalid, or unknown (no verdict, and not billed). Each row also carries what each provider said and how many verification credits it cost. Filter with result, where 'deliverable' means valid plus catch-all, which is what a campaign will actually send to.
| Name | Type | Req | Description |
|---|---|---|---|
| jobId | string | yes | The job ID |
| page | integer | – | Page number, starting at 1 |
| result | string | – | Filter by verdict |
| size | integer | – | Page size (default 25, max 200) |
No output schema declared.
No examples provided.
list_icps List ICPs ~76
Lists the workspace's stored Ideal Customer Profiles (ICPs), newest first, with their targeting criteria, whether each is AI-generated or human-edited, and the estimated audience size.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Page size (default 50, max 200) |
| page | integer | – | Page number, starting at 1 |
No output schema declared.
No examples provided.
list_inbox_placement_run_results List inbox placement run probes ~96
Returns one row per probe email of a run: which of your mailboxes sent it, which seed mailbox received it, where it landed and how many seconds it took to arrive. deliverySeconds is worth watching on its own: greylisting and throttling show up there before they show up in a placement number.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The numeric inbox placement run ID (from list_inbox_placement_runs) |
No output schema declared.
No examples provided.
list_inbox_placement_runs List inbox placement runs ~134
Lists inbox placement runs, newest first, optionally only those of one test. Each run counts how many probe emails landed in the inbox, in spam, in a Gmail category tab (promotions) or nowhere (missing, which usually means a silent block). Counters are only final once status is completed. Any rate of -1 means NOT MEASURED yet and must never be reported as 0%.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | How many runs to return (default 50, max 200) |
| testId | integer | – | Only runs of this test (from list_inbox_placement_tests) |
No output schema declared.
No examples provided.
list_inbox_placement_tests List inbox placement tests ~89
Lists every inbox placement test defined in the workspace, newest first. A test is the definition: the email content, which mailboxes send it and, for a recurring test, how often it runs. Each execution of a test is a run (list_inbox_placement_runs). Inbox placement is a paid add-on: a workspace without it gets an error, not an empty list.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_instantly_accounts List Instantly sending accounts ~143
Fetches the sending accounts of an Instantly.ai workspace using your Instantly API key, together with a pre-filled CSV for Emailchaser's bulk IMAP/SMTP connection flow. A read-only preview before an import: nothing is written to the workspace. Mailbox passwords cannot be exported from any provider, so each account is either reconnected via Google/Microsoft OAuth in the app or bulk-uploaded with app passwords using the CSV. The backend treats all non-GET calls as writes, so this needs a read & write API key.
| Name | Type | Req | Description |
|---|---|---|---|
| instantlyApiKey | string | yes | Your Instantly.ai API key (Instantly → Settings → API keys) |
No output schema declared.
No examples provided.
list_lead_finder_imports Lead Finder: list adds ~74
Lists the workspace's Lead Finder adds (people added to campaigns from the contact database), newest first, each with its progress: requested, added, skipped and why, what email verification said, and credits spent.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | How many to return (default 10, max 50) |
No output schema declared.
No examples provided.
list_leads List leads ~125
Lists the leads in the workspace, newest first, 20 per page. Filter by exact email to look up a single lead, or by campaign to list only that campaign's leads. This is how you find the ID of a lead you added earlier.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | integer | – | Filter to the leads in one campaign |
| string | – | Filter by exact email address, which returns at most one lead | |
| limit | integer | – | Page size (default 20, max 200) |
| page | integer | – | Page number, starting at 1 |
No output schema declared.
No examples provided.
list_replies List replies ~186
Lists inbound emails (replies received from prospects) in the workspace, newest first, 20 per page. Filter by AI response category, campaign, lead or a time floor. responseCategory is null while AI categorization is still pending. This tool only lists: to answer a reply, review its AI draft (list_reply_drafts), edit it if needed (update_reply_draft) and send it with send_reply_draft.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | integer | – | Filter by campaign ID |
| category | string | – | Filter by AI response category |
| leadId | integer | – | Filter by lead ID |
| limit | integer | – | Page size (default 20, max 200) |
| page | integer | – | Page number, starting at 1 |
| since | string | – | Only replies received at or after this time (RFC3339 or YYYY-MM-DD) |
No output schema declared.
No examples provided.
list_reply_drafts List AI reply drafts ~114
Lists AI-suggested reply drafts awaiting review, newest first, 20 per page. Each draft answers the inbound reply referenced by inReplyToEmailId. Nothing here has been sent: a draft stays a draft until a human sends it from the app or send_reply_draft is called. Edit one first with update_reply_draft if the wording needs work.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Page size (default 20, max 200) |
| page | integer | – | Page number, starting at 1 |
No output schema declared.
No examples provided.
list_sender_emails List sender emails ~241
Lists the sending email accounts in the workspace, 20 per page, with their connection status, daily limits and health score. Filter to one campaign's senders, to connected or disconnected mailboxes only, or to one workspace on the account. healthScore is the account's health score: 0-100, higher is better, the share of its warm-up emails over the last 7 full days that landed in the inbox rather than spam. It moves daily as warm-up emails land in the inbox (up) or in spam (down), and is null while warm-up is off or before 20 warm-up emails were checked. Use it to pick the accounts to add to a campaign.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | integer | – | Only the sender emails attached to this campaign |
| isConnected | boolean | – | true for mailboxes that are connected and able to send, false for disconnected ones |
| limit | integer | – | Page size (default 20, max 200) |
| page | integer | – | Page number, starting at 1 |
| spaceId | integer | – | Only the sender emails of this workspace (from list_workspaces) |
No output schema declared.
No examples provided.
list_webhooks List webhooks ~25
Lists the webhook endpoints registered for the workspace, with their event type and status.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_workspaces List workspaces ~85
Lists the workspaces owned by the account behind the API key: the main workspace and its sub-workspaces, each with id, name, icon and creation date. isCurrent marks the workspace this key is bound to. Every other tool acts on the current workspace only; to work in another workspace, connect with that workspace's own key (create_workspace_api_key mints one).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
mark_lead_meeting Mark meeting booked on lead ~121
Records that a meeting was actually booked with this lead: sets meetingBookedAt to now, sets the lead's category to meeting_booked and fires the LeadCategoryUpdate webhook. Emailchaser never infers meetings from reply text or calendars, so this explicit mark is the only way a meeting is counted (in get_campaign_stats totals.meetings and get_outcomes_report). Idempotent: repeating the call keeps the original timestamp and fires no second webhook.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The numeric lead ID (returned when the lead was created) |
No output schema declared.
No examples provided.
move_lead_to_campaign Move lead to another campaign ~114
Moves a lead from one campaign to another: the lead's unsent emails in the source campaign are deleted, and if the target campaign is running, emails for the lead are enqueued there. Use it to re-route a lead into a better-fitting campaign.
| Name | Type | Req | Description |
|---|---|---|---|
| leadId | integer | yes | The numeric lead ID (returned when the lead was created) |
| sourceCampaignId | integer | yes | The campaign the lead is currently in |
| targetCampaignId | integer | yes | The campaign to move the lead into |
No output schema declared.
No examples provided.
pause_autopilot_run Autopilot: pause a run ~69
Suspends an autopilot run that is still in flight; resume later with resume_autopilot_run. Pausing never skips the approval gate. A completed or failed run cannot be paused.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The numeric autopilot run ID (from list_autopilot_runs) |
No output schema declared.
No examples provided.
pause_campaign Pause campaign ~37
Pauses a running campaign and cancels all currently scheduled emails.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The numeric campaign ID (from list_campaigns) |
No output schema declared.
No examples provided.
plan_autopilot Autopilot: size a budget plan ~205
Turns a monthly budget in dollars into a concrete outbound setup: how many domains and mailboxes it buys, monthly sending volume, prospects per month, and costs (one-off setup, recurring, first month). creditsUsd, recurringUsd and firstMonthUsd value prospect credits at the list price, 1 credit ($0.033 at list) per revealed prospect, and a note says when that puts the monthly cost above the budget. Pure computation — nothing is created or charged. expectedMeetingsPerMonth is a planning estimate on pessimistic assumptions, not a promise. Use it to answer 'what does $X/month get me' before start_autopilot_run.
| Name | Type | Req | Description |
|---|---|---|---|
| budgetUsd | number | yes | Total monthly budget in US dollars, inclusive of the platform subscription |
| maxMailboxes | integer | – | Cap on mailboxes regardless of budget. 0 means no cap |
| platformUsd | number | – | Subscription cost to reserve before sizing infrastructure. Defaults to 0 |
No output schema declared.
No examples provided.
purchase_credits Buy credits (charges real money) ~262
SPENDS REAL MONEY. Immediately charges the workspace's saved default card (the one behind the active subscription), off-session, with no confirmation step beyond this call — every successful call is a new charge. Buys 1,000 to 10,000 prospect credits at the tiered list price: $33/1k · $20/1k from 5k. The server prices the charge, so treat this as the list price and not a quote. Errors carry a machine-readable code: billing_required and payment_failed mean no money moved (fix billing or the card, then retry); credits_free means this workspace's credits are free, so nothing was charged and there is nothing to buy; temporarily_unavailable means the purchase stopped before any charge, so it is safe to retry shortly; purchase_incomplete means the card WAS charged but crediting failed — do NOT retry, support is already notified; purchase_unconfirmed means the outcome is unknown or the purchase completed without a balance to report — check list_credit_transactions for a stripe_topup entry before retrying. After a timeout or a dropped connection, check the same way before calling this again.
| Name | Type | Req | Description |
|---|---|---|---|
| credits | integer | yes | How many prospect credits to buy (1,000 to 10,000) |
No output schema declared.
No examples provided.
refresh_icp_audience_size Refresh ICP audience size ~71
Re-counts how many prospects match an ICP's targeting criteria against the live data provider and caches the result on the profile. Sizing is free — it never spends credits; only revealing contact details is metered.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The numeric ICP ID (from list_icps) |
No output schema declared.
No examples provided.
remove_blocklist_entries Remove blocklist entries ~194
Unblocks up to 1,000 domains or email addresses in one call, so campaigns can email them again. Pass values (domains or addresses, matched case-insensitively) and/or ids (entry IDs from list_blocklist_entries); a value that is not blocked is counted as skipped rather than failing the call. Scope defaults to "workspace" and never touches the account-wide list unless asked; removing an account-wide entry only works from the main workspace.
| Name | Type | Req | Description |
|---|---|---|---|
| ids | array | – | Blocklist entry IDs to remove (from list_blocklist_entries). Provide values, ids or both |
| scope | string | – | Which list to remove from: "workspace" (default), "global", or "all" |
| values | array | – | Email addresses and/or domains to unblock, e.g. ["competitor.com", "jane@acme.com"] (1 to 1,000 per request) |
No output schema declared.
No examples provided.
remove_blocklist_entry Remove one blocklist entry ~91
Removes one suppression entry by ID, so campaigns can email that domain or address again. This cannot be undone: the entry and the record of when it was added are gone. A sub-workspace key cannot remove an account-wide entry it merely inherits. To unblock many values at once use remove_blocklist_entries.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The numeric blocklist entry ID (from list_blocklist_entries) |
No output schema declared.
No examples provided.
replace_campaign_sequence Replace campaign sequence ~133
Replaces a campaign's WHOLE sequence with the steps provided. This is not a partial edit: steps you leave out are removed, so send the full sequence every time. Sending the same payload twice leaves the same result, so a retry cannot duplicate steps. Editing a running campaign is allowed and changes future sends only; already-sent emails are untouched.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The numeric campaign ID (from list_campaigns) |
| signature | string | – | Optional signature appended to every step |
| steps | array | yes | The full sequence, first email first. The first step must have delayDays 0 |
No output schema declared.
No examples provided.
resume_autopilot_run Autopilot: resume a run ~81
Resumes a paused autopilot run. A run paused before approval goes back to awaiting approval — resuming can never skip the gate. A failed run resumes from the stage it failed at once the cause (e.g. insufficient credits) is fixed.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The numeric autopilot run ID (from list_autopilot_runs) |
No output schema declared.
No examples provided.
search_dfy_domains Search available sending domains ~120
Checks availability and pricing of sending domains derived from a brand name (e.g. 'acme' yields acme-mail.com and similar). Only .com and .org are supported. Free to call — use it to pick domains and see exact prices before create_dfy_order.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum suggestions to return |
| query | string | yes | Brand name to derive domain suggestions from |
| tlds | string | – | Comma-separated TLDs to check (default "com,org"; only com and org are supported) |
No output schema declared.
No examples provided.
search_lead_finder Lead Finder: search the contact database (free) ~549
Searches Emailchaser's B2B contact database (Lead Finder) with explicit filters and returns one page of matching people, masked: first name, last initial, title, seniority, job function, company name, industry, size and revenue band, and location. Email addresses, domains, LinkedIn URLs and phone numbers are never shown; contact details are revealed only when people are added to a campaign with add_lead_finder_prospects. Spends no credits, but every result row uses the account's daily browsing allowance (rowsLeftToday; 2,000 rows a day by default, 250 on a trial). An account may start 20 searches a minute. Searches that find nobody also draw on a bucket of 120 that refills one every 30 seconds; while it is empty every new search is refused for a moment (rate_limited, reason empty_searches, with retryAfterSeconds). The same page asked for again within 10 minutes costs nothing. total is the exact audience size only when totalIsExact is true; otherwise it is a lower bound (often 50,000). If status is running or totalStatus is pending, call get_lead_finder_search with the searchId: total, hasMore and maxPage are recomputed then. status failed means the search did not run, and error says why (rate_limited, timeout, provider_blocked, budget_exhausted, invalid_filters, expired or internal): it is not an empty audience, so try again later. Each result's ref is what add_lead_finder_prospects takes, valid for 60 minutes after its page was last shown. inWorkspace means Lead Finder added that person to this workspace and their lead is still there, so adding them again is skipped for free; someone who is a lead from another source shows false, and adding them is skipped for free too. A read-only key may use this tool.
| Name | Type | Req | Description |
|---|---|---|---|
| filters | object | yes | Who to look for. Every field is optional but at least one include filter is required. Free-text fields take up to 50 values of up to 100 characters each (get_lead_finder_filters has the limits that a… |
| page | integer | – | Results page, starting at 1 (default 1). The deepest page is 100 by default, and a search's maxPage says how deep that audience goes |
| pageSize | – | – | People per page: 25 (default) or 50 |
No output schema declared.
No examples provided.
send_reply_draft Send AI reply draft ~142
Sends an AI reply draft to the prospect through the conversation's sender mailbox; it is scheduled for delivery right away and cannot be recalled. The draft's CURRENT subject and body are what goes out, so read it first (list_reply_drafts or get_lead_conversation) and fix it with update_reply_draft if needed. Refused with 409 for anything that is not a sendable AI reply draft (already sent or scheduled emails, inbound replies, sequence templates) and with 422 when the conversation has no connected sender mailbox or no resolvable recipient.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The numeric reply draft ID (from list_reply_drafts) |
No output schema declared.
No examples provided.
set_billing_profile Set workspace billing profile ~213
Creates or replaces the workspace's registrant and postal contact details. Do this before create_dfy_order: domain registration files these details with the registrar, so every field except addressLineTwo is required. Idempotent: sending the same body twice leaves the same state.
| Name | Type | Req | Description |
|---|---|---|---|
| addressLineOne | string | yes | Street address |
| addressLineTwo | string | – | Suite, floor or unit (optional) |
| city | string | yes | City |
| company | string | yes | Company name |
| country | string | yes | ISO 3166-1 alpha-2 country code, e.g. US |
| firstName | string | yes | Registrant first name |
| lastName | string | yes | Registrant last name |
| phone | string | yes | Phone number without the country code |
| phoneCc | string | yes | Telephone country calling code without the plus, e.g. 1 |
| postalCode | string | yes | Postal or ZIP code |
| state | string | yes | State, province or region |
No output schema declared.
No examples provided.
set_primary_icp Set primary ICP ~54
Promotes an Ideal Customer Profile to the workspace's active one, demoting any existing primary. At most one profile is primary per workspace.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The numeric ICP ID (from list_icps) |
No output schema declared.
No examples provided.
source_prospects Source prospects into a campaign (spends credits) ~265
SPENDS CREDITS. Queues a background job that searches Emailchaser's contact database with an Ideal Customer Profile's targeting criteria, reveals the matching people and adds them to the campaign as leads. Uses the workspace's primary ICP when icpId is omitted, and adds 50 prospects unless count says otherwise (max 500 per call). Every stored prospect costs the reveal price in credits (1 at the time of writing; the response reports creditsPerProspect and estimatedCredits, the most this batch can cost). Duplicates, blocklisted domains and contacts without an email address are filtered out before any credit is spent. Asynchronous: poll list_leads with campaignId to watch the prospects arrive. Calling again for the same campaign and profile pages deeper into the audience instead of re-revealing (and re-paying for) the same people. Check get_credit_balance and get_audience_size first.
| Name | Type | Req | Description |
|---|---|---|---|
| campaignId | integer | yes | The campaign the sourced prospects are added to (from list_campaigns) |
| count | integer | – | How many prospects to add in this call (default 50, max 500) |
| icpId | integer | – | The ICP whose targeting criteria drive the search (from list_icps). Defaults to the primary ICP |
No output schema declared.
No examples provided.
start_autopilot_run Autopilot: start a run ~377
Starts an autopilot run for a company website: the AI builds an ICP, writes a sequence and checks that prospects match, then STOPS at an approval gate. Nothing is revealed, charged or sent and no sending accounts are bought until approve_autopilot_run is called; approval then reveals the first batch at 1 credit ($0.033 at list) per prospect, up to targetProspects and at most 2,000. The call is refused when the wallet cannot cover that batch. When budgetUsd is given, the sized budget plan is snapshotted on the run and returned in this response, the only response that carries it, with credits valued at list, and targetProspects defaults to the plan's monthly prospects. Without budgetUsd the run can never buy sending accounts, so the workspace needs one connected before approval or the run fails. Requires an active subscription (any plan).
| Name | Type | Req | Description |
|---|---|---|---|
| budgetUsd | number | – | Monthly budget in US dollars; sizes a plan that is snapshotted on the run |
| maxMailboxes | integer | – | Cap on the budget plan's mailboxes. 0 means no cap |
| replyMode | string | – | How inbound replies are handled: off, draft (default: AI drafts a reply for a human to send), approve, or auto. auto SENDS AI replies to interested prospects without review, so only pass it when the… |
| targetProspects | integer | – | How many prospects approval reveals first, at 1 credit ($0.033 at list) each (at most 2,000 in one batch). Defaults to the budget plan's monthly prospects when budgetUsd is given, else 50 |
| website | string | yes | The company website to seed the run from, e.g. https://acme.com |
No output schema declared.
No examples provided.
unmark_lead_meeting Unmark booked meeting on lead ~100
Removes the booked-meeting mark from a lead, e.g. when it was recorded by mistake or the meeting was canceled: clears meetingBookedAt and, when the category is still meeting_booked, reverts it to interested. The original booked time is lost. Idempotent: unmarking a lead with no meeting is a no-op.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The numeric lead ID (returned when the lead was created) |
No output schema declared.
No examples provided.
update_blocklist_entry Update blocklist entry ~143
Changes one suppression entry's blocked value, its scope, or both; provide at least one. A value containing @ is stored as an email address, otherwise as a domain, so an entry can be converted between the two. Moving an entry to or from the account-wide list ("global") requires the main workspace's key and moves the entry onto the main workspace.
| Name | Type | Req | Description |
|---|---|---|---|
| id | integer | yes | The numeric blocklist entry ID (from list_blocklist_entries) |
| scope | string | – | "workspace" blocks for this workspace only; "global" blocks for every workspace on the account |
| value | string | – | The new domain or email address to block |
No output schema declared.
No examples provided.
update_campaign Update campaign ~596
Updates campaign properties such as name, emoji, timezone, sending limits, the minimum email account health score and deliverability settings. Only the provided fields are changed. A new minimum health score re-plans a running campaign at once.
| Name | Type | Req | Description |
|---|---|---|---|
| allowNonBusinessEmails | boolean | – | Allow sending to free mailbox providers (gmail.com, etc.) |
| dailyLimit | integer | – | Cap on the total emails (initial + follow-ups) the campaign may schedule per calendar day in its timezone. Omit for no campaign-level cap; per-mailbox limits still apply |
| emoji | string | – | Campaign emoji |
| id | integer | yes | The numeric campaign ID (from list_campaigns) |
| ignoreOutOfOfficeReplies | boolean | – | Do not stop follow-ups on out-of-office replies |
| isEnabledCatchallValidated | boolean | – | Send to catch-all validated addresses |
| isEnabledEmailVerifier | boolean | – | Verify lead emails before sending |
| isEnabledIgnoreHardBouncedLeads | boolean | – | Skip leads that previously hard-bounced |
| isEnabledIgnoreLeadsWhoAlreadyResponded | boolean | – | Skip leads who already responded in another campaign |
| isEnabledLlm | boolean | – | Enable AI (LLM) features for this campaign |
| isEnabledSkipLeadIfAlreadyExists | boolean | – | Skip leads that already exist in the workspace |
| isEnabledStopFollowUpsAcrossCampaigns | boolean | – | Stop follow-ups to a lead in this campaign once they reply in any campaign |
| isEnabledStopFollowUpsForSameCompany | boolean | – | Company reply stop: once a lead replies (out-of-office and other automatic replies don't count), stop emailing the other leads at the same company in this campaign. Subdomains count as the same compa… |
| isEnabledStopFollowUpsOnReply | boolean | – | Stop follow-ups to a lead once they reply |
| maximumSendingLimitPerSenderEmail | integer | – | Daily sending limit per sender email account |
| maximumSendingLimitPerSenderEmailVariation | integer | – | Random daily variation applied to the sending limit |
| maximumTimeBetweenEmails | integer | – | Maximum gap between two sends, in minutes |
| minimumHealthScore | integer | – | Minimum email account health score for this campaign, 1-100 (see healthScore in list_sender_emails). An account below it, or with no score yet, sends nothing in this campaign, first emails and follow… |
| minimumTimeBetweenEmails | integer | – | Minimum gap between two sends, in minutes |
| name | string | – | New campaign name |
| timezone | string | – | IANA timezone, e.g. America/New_York |
No output schema declared.
No examples provided.
update_campaign_schedule Update campaign schedule ~205
Updates a campaign's sending schedule: timezone, sending days, daily time window and frequency.
| Name | Type | Req | Description |
|---|---|---|---|
| daysSchedule | array | – | Days of the week to send on, e.g. ["monday", "tuesday", "wednesday"] |
| endSchedule | string | – | Daily sending window end time, e.g. 17:00 |
| everySchedule | integer | – | Sending frequency interval |
| id | integer | yes | The numeric campaign ID (from list_campaigns) |
| maximumTimeBetweenEmails | integer | – | Maximum gap between two sends, in minutes |
| minimumTimeBetweenEmails | integer | – | Minimum gap between two sends, in minutes |
| sendAt | string | – | Exact send time for single-lead scheduled campaigns (ISO 8601) |
| startSchedule | string | – | Daily sending window start time, e.g. 09:00 |
| timezone | string | yes | IANA timezone the schedule runs in, e.g. Europe/London |
No output schema declared.
No examples provided.
update_icp Update ICP ~200
Applies a partial edit to an Ideal Customer Profile: omitted fields are left unchanged, and sending an empty list clears that list. Any edit marks the profile as human-authored.
| Name | Type | Req | Description |
|---|---|---|---|
| companySizes | array | – | Company headcount ranges, e.g. ["11-50", "51-200"] |
| id | integer | yes | The numeric ICP ID (from list_icps) |
| industries | array | – | Industries, e.g. ["Software"] |
| keywords | array | – | Free-text keywords, e.g. ["b2b saas"] |
| locations | array | – | Locations, e.g. ["United States"] |
| name | string | – | New profile name |
| seniorities | array | – | Seniority levels, e.g. ["owner", "director"] |
| summary | string | – | New one-to-three-sentence summary |
| titles | array | – | Job titles to target, e.g. ["CEO", "Head of Sales"] |
No output schema declared.
No examples provided.
update_lead Update lead ~203
Updates a lead's contact details. Only the provided fields are changed.
| Name | Type | Req | Description |
|---|---|---|---|
| company | string | – | Company name |
| customVariables | object | – | Any attribute the named fields do not cover, e.g. { pageVisited: '/pricing' }. Each key becomes a merge tag usable in email copy as {key}. Keys match case-insensitively with spaces treated as undersc… |
| string | – | Lead email address | |
| firstName | string | – | Lead first name |
| id | integer | yes | The numeric lead ID (returned when the lead was created) |
| lastName | string | – | Lead last name |
| string | – | LinkedIn profile URL | |
| middleName | string | – | Lead middle name |
| phone | string | – | Phone number |
| title | string | – | Job title |
| website | string | – | Company website URL |
No output schema declared.
No examples provided.
update_lead_category Update lead category ~123
Sets or corrects a lead's category (tag), typically to fix an AI misclassification of a reply. Setting meeting_booked behaves exactly like mark_lead_meeting. Changing the category away from meeting_booked does NOT clear the booked-meeting mark; use unmark_lead_meeting for that. A real change fires the LeadCategoryUpdate webhook; setting the value the lead already has is a no-op.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | yes | The category to set |
| id | integer | yes | The numeric lead ID (returned when the lead was created) |
No output schema declared.
No examples provided.
update_reply_draft Edit AI reply draft ~131
Edits the subject and/or body of an AI reply draft before it goes out. Provide at least one field; provided fields must be non-empty. This never changes the draft's status or sends anything: the draft stays a draft until a human sends it from the app or send_reply_draft is called. Emails that are not AI reply drafts (sent or scheduled emails, inbound replies, sequence templates) are refused.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | New body |
| id | integer | yes | The numeric reply draft ID (from list_reply_drafts) |
| subject | string | – | New subject line |
No output schema declared.
No examples provided.
update_sender_email Update sender email ~190
Updates a connected sending email account's display name, signature or daily sending limits. Only the provided fields are changed. Warm-up settings are separate: use update_sender_email_warmup. The returned account includes its healthScore (see get_sender_email).
| Name | Type | Req | Description |
|---|---|---|---|
| currentDailyLimit | integer | – | Today's effective daily limit |
| familyName | string | – | Sender last name |
| givenName | string | – | Sender first name |
| id | integer | yes | The numeric sender email ID (from list_sender_emails) |
| maximumSendingsLimitPerDay | integer | – | Maximum emails this mailbox may send per day |
| minimumSendingsLimitPerDay | integer | – | Minimum emails per day during gradual build-up |
| signature | string | – | Email signature appended to sends from this mailbox |
| toggleGradualBuildUp | boolean | – | Ramp the daily limit up gradually (recommended for new mailboxes) |
No output schema declared.
No examples provided.
update_sender_email_warmup Update sender email warm-up ~340
Switches warm-up on or off and changes the warm-up ramp for up to 100 mailboxes in one call, applying the same settings to each. Only the settings provided change. Warm-up sends startLimit emails on the first day and adds increaseBy each sending day until it reaches capLimit a day; this is separate from campaign sending limits. A mailbox that has never warmed needs enabled: true to take any other setting, and is then enrolled with the defaults (2 a day, 2 more each day, up to 10 a day, weekdays only, UTC) plus the settings given. Raising capLimit on a mailbox that is already warming lifts today's target without restarting its ramp. Each mailbox succeeds or fails on its own: the result lists the updated mailboxes' settings, each with its healthScore (see get_sender_email_warmup), under updated, and any failures with the reason under failed.
| Name | Type | Req | Description |
|---|---|---|---|
| capLimit | integer | – | Most warm-up emails per day; the ramp stops here |
| enableReplies | boolean | – | Let warm-up recipients reply, adding reply signals |
| enabled | boolean | – | true switches warm-up on, false switches it off |
| ids | array | yes | Sender email IDs to update (from list_sender_emails) |
| increaseBy | integer | – | Warm-up emails added each sending day until the cap |
| startLimit | integer | – | Warm-up emails on the first day |
| timezone | string | – | IANA timezone for the warm-up send window, e.g. America/New_York |
| weekdaysOnly | boolean | – | Send warm-up emails Monday to Friday only |
No output schema declared.
No examples provided.
What is the Emailchaser MCP server?
Emailchaser is an MCP server listed in the public MCP registry as com.emailchaser/emailchaser. Run cold email outbound from an AI agent: campaigns, leads, replies, sender accounts, autopilot. This page covers its hosted endpoint (https://app.emailchaser.com/api/mcp).
Is the Emailchaser MCP server safe to use?
Emailchaser scores 85 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Emailchaser MCP server expose?
Emailchaser exposes 101 tools: confirm_connection, list_campaigns, create_campaign, get_campaign, update_campaign, and 96 more. Their descriptions and schemas cost roughly 15,569 tokens of context every time the server is loaded.
Does the Emailchaser MCP server require authentication?
Yes. Emailchaser asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the Emailchaser MCP server still maintained?
Emailchaser is still listed as active in the MCP registry. We last reached this channel on 29 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.