[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Reply to Mailshake leads from Lead Catcher

> Answer your open Mailshake leads with replies drafted from what each person wrote, send them after your OK and close the ones who said no.

Source: https://cotlet.dev/integrations/mailshake-api-mcp-server/reply-to-leads

Every morning Lead Catcher holds a new batch of open leads, and each one needs a reply typed by hand before the person loses interest.

Cotlet does it in your own Mailshake account with list\_leads, list\_replies, reply\_to\_lead and update\_lead\_status, called by your AI agent, an n8n workflow or a script.

[Sign up free](https://cotlet.dev/app/signup?app=mailshake) [All Mailshake tools](https://cotlet.dev/integrations/mailshake-api-mcp-server.md)

Hosted · nothing to install or maintain

## Can Mailshake do this on its own?

Mailshake's API can read leads and replies and set a lead to closed, lost or ignored (checked 22 Oct 2026). It has no endpoint that sends a reply, so every answer is written in the Lead Catcher screen.

## How you do it in Mailshake today

1. In the Mailshake app, an admin or teammate opens Campaigns, then Lead Catcher in the left sidebar. Open leads assigned to you show first.
2. The filters narrow the list by search, by campaign or by teammate, and old leads can be shown by choosing ignored or closed ones.
3. Clicking an open lead loads that person's history. The user clicks Reply, writes the answer and clicks Send Email.
4. Afterwards the lead is set to Won, Lost or Ignored from the Lead Action button, or in bulk with the Change Status menu.
5. The queue refills whenever someone replies, and a lead that was won, lost or ignored opens again when the person writes back.

## How to reply to Mailshake leads from Lead Catcher

Prompt

```
Read my open Mailshake leads from Agency outreach Q4, draft a reply to each that asks for pricing or a call, and send them once I approve. Mark leads that say no as lost.
```

1. 01  
### Take the open queue  
Your agent reads open leads with list\_leads, filtered to the campaign and to you, and follows next\_token to the end so a long weekend is handled as one batch. A lead assigned to a teammate is left for that person unless your prompt says otherwise.
2. 02  
### Read what they wrote  
For each lead, list\_replies with the recipient's address returns the plain-text reply. The agent skips out-of-office notes and bounces, because only reply type means a person answered.
3. 03  
### Decide the answer  
A question about price or a call gets a draft that answers it and proposes one time. A clear no goes to the lost pile. Anything about a contract or a complaint is listed for you with the quoted line.
4. 04  
### Send after your OK  
reply\_to\_lead sends each draft from your Mailshake mailbox. Every send waits for your approval until you switch confirmation off for this tool, and a sent email cannot be recalled.
5. 05  
### Close the loop  
update\_lead\_status marks the refusals lost and the sent replies stay open, so a second answer from the person puts them back at the top of the queue.

### What you get back

Example data

```
Open leads in Agency outreach Q4: 6
Replied 3, e.g. Dana Whitfield (asked about pricing, call proposed Thursday)
Marked lost 1 (Omar Haddad: "not a fit")
Left for you 2:
- Priya Nair: asks about a contract term
- Tomas Berg: forwarded to a colleague
```

### Other ways to ask

- Every weekday at 9, draft replies to new open leads and wait for my OK before sending.
- Reply to open leads from the webinar campaign with the booking link and move them to the nurture campaign.
- List open leads older than 3 days that nobody answered, with the last thing each one wrote.

## What Mailshake allows, and what to know first

- Mailshake records a reply sent from Lead Catcher as a One Off Send, separate from the campaign sequence, and the API lists it under messages of type one-off.
- A person who replies again after a lead was won, lost or ignored reopens the lead automatically.
- Once someone becomes a lead, Mailshake cancels their follow-up and on-click emails, and there is no way to add them back to the campaign.
- By default a reply makes someone a lead, and a team can add its own rules, such as opening an email 3 times or clicking a link.
- Won leads are included when you export a campaign, so closing a lead as won also feeds your campaign report.

reply\_to\_lead asks for your OK by default. To run it daily without you, switch confirmation off for that tool in your dashboard.

Sources: [Mailshake Help: How do I reply to a lead?](https://docs.mailshake.com/article/133-how-do-i-reply-to-a-lead) · [Mailshake Help: How do I handle a lead?](https://docs.mailshake.com/article/131-how-do-i-handle-a-lead) · [Mailshake Help: How does the Lead Catcher queue work?](https://docs.mailshake.com/article/130-how-does-the-lead-catcher-queue-work) · [Mailshake Help: How do you customize Lead Catcher settings?](https://docs.mailshake.com/article/129-how-do-you-customize-lead-catcher-settings) · [Mailshake API reference](https://api-docs.mailshake.com/)

## Call reply\_to\_lead from a script

curl

```
curl -X POST https://cotlet.dev/api/v1/mailshake/leads/5530/replies \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"body":"Hi Dana, glad it fits. Plans start per seat, and I can walk you through them in 20 minutes on Thursday. Does 2 pm work?"}'
```

Example response

```
{
"lead_id": 5530,
"status": "sent",
"sent_as": "one-off",
"to": "dana@brightpath.example",
"subject": "Re: Quick question about your client reporting",
"sent_at": "2026-10-22T08:05:00.000Z"
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is mailshake\_write → reply\_to\_lead. Example data.

[Schedule it in n8n, Make, Zapier or cron](https://cotlet.dev/integrations/mailshake-api-mcp-server.md#automations)

## Mailshake tools this automation uses

__Cotlet Mailshake tools used to reply to Mailshake leads from Lead Catcher__
| Tool | Parameters |
| -------------------- | ---------------------------------------------------------------------------- |
| list\_leads | campaign\_id, status, assigned\_to\_email, search, per\_page, next\_token |
| list\_replies | reply\_type, campaign\_id, recipient\_email\_address, per\_page, next\_token |
| reply\_to\_lead | lead\_id, body, move\_to\_campaign\_id |
| update\_lead\_status | lead\_id, status |

[All 15 Mailshake tools with descriptions](https://cotlet.dev/integrations/mailshake-api-mcp-server.md#tools)

## Frequently asked questions

### Is it safe to connect Mailshake to Cotlet?

Yes. You sign in to Mailshake yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Mailshake once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.

## More Mailshake automations

- [Add a follow-up to a running Mailshake campaign](https://cotlet.dev/integrations/mailshake-api-mcp-server/add-follow-up-to-campaign.md)
- [Mailshake API and MCP server: every tool](https://cotlet.dev/integrations/mailshake-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to Mailshake.

Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with Mailshake.

[Sign up free](https://cotlet.dev/app/signup?app=mailshake)

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.

## For AI agents: sign your user up

Is your user asking you to sign them up for Cotlet? You can do it for them, no account or key needed.

1. Read the fields and their allowed values: GET https://cotlet.dev/api/v1/access-requests
2. Ask the user for each value: email, apps, what you will do with them. If they leave the password to you, generate a strong one and show it to them.
3. Show the user what you will send, then POST it as JSON to https://cotlet.dev/api/v1/access-requests.

One call creates the account and sends the access request; we email the user when access is granted.
