Mailshake MCP by usefulapi
Read campaigns, replies and leads; pause or resume campaigns; close or reopen leads in Mailshake.
使うべきか
品質と安全性
検出事項(1)
- LOWmailshake_list_lead_status_changes 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"mailshake": {
"url": "https://mailshake.usefulapi.io/mcp"
}
}
}リモートエンドポイント
https://mailshake.usefulapi.io/mcpstreamable-httpできること
ツール一覧
ツール(20)
🟢mailshake_get_account
Show the signed-in Mailshake user and team. Also the cheapest call to check the API key. Mailshake: POST /me.
入力スキーマ
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢mailshake_list_team_members(search, nextToken, perPage)
List the users on the team, for assigning leads. Mailshake: POST /team/list-members.
入力スキーマ
{
"type": "object",
"properties": {
"search": {
"description": "Filter the results by text.",
"type": "string"
},
"nextToken": {
"description": "nextToken from the previous page. Omit it for the first page.",
"type": "string"
},
"perPage": {
"description": "Results per page, up to 100.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢mailshake_list_senders(search, nextToken, perPage)
List the sender accounts (the mailboxes that send campaign emails). Mailshake: POST /senders/list.
入力スキーマ
{
"type": "object",
"properties": {
"search": {
"description": "Filter the results by text.",
"type": "string"
},
"nextToken": {
"description": "nextToken from the previous page. Omit it for the first page.",
"type": "string"
},
"perPage": {
"description": "Results per page, up to 100.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢mailshake_list_campaigns(search, nextToken, perPage)
List the team's campaigns with their IDs and status. Start here to find a campaignID. Costs 10 quota units per call. Mailshake: POST /campaigns/list.
入力スキーマ
{
"type": "object",
"properties": {
"search": {
"description": "Filter the results by text.",
"type": "string"
},
"nextToken": {
"description": "nextToken from the previous page. Omit it for the first page.",
"type": "string"
},
"perPage": {
"description": "Results per page, up to 100.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢mailshake_get_campaign(campaignID)
Get one campaign and its message sequence. Mailshake: POST /campaigns/get.
入力スキーマ
{
"type": "object",
"properties": {
"campaignID": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Campaign ID, from mailshake_list_campaigns."
}
},
"required": [
"campaignID"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢mailshake_list_recipients(campaignID, filter, search, nextToken, perPage)
List the recipients of one campaign. Filter by state (for example opened, clicked, replied, wasSent, bounced, paused, hasProblems); set negateAction to exclude that state. Costs 10 quota units per call. Mailshake: POST /recipients/list.
入力スキーマ
{
"type": "object",
"properties": {
"campaignID": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Campaign ID, from mailshake_list_campaigns."
},
"filter": {
"description": "Filter by recipient state.",
"type": "object",
"properties": {
"action": {
"type": "string",
"description": "Recipient state, for example opened, clicked, replied or bounced."
},
"negateAction": {
"description": "true = recipients WITHOUT this state.",
"type": "boolean"
}
},
"required": [
"action"
]
},
"search": {
"description": "Filter the results by text.",
"type": "string"
},
"nextToken": {
"description": "nextToken from the previous page. Omit it for the first page.",
"type": "string"
},
"perPage": {
"description": "Results per page, up to 100.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"required": [
"campaignID"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢mailshake_list_leads(campaignID, status, assignedToEmailAddress, search, nextToken, ...)
List the team's leads: recipients who may be interested. Filter by campaign, status (for example open) or the teammate the lead is assigned to. Costs 1 quota unit per call. Mailshake: POST /leads/list.
入力スキーマ
{
"type": "object",
"properties": {
"campaignID": {
"description": "Only leads from this campaign.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"status": {
"description": "Lead status, for example open.",
"type": "string"
},
"assignedToEmailAddress": {
"description": "Only leads assigned to this teammate.",
"type": "string"
},
"search": {
"description": "Filter the results by text.",
"type": "string"
},
"nextToken": {
"description": "nextToken from the previous page. Omit it for the first page.",
"type": "string"
},
"perPage": {
"description": "Results per page, up to 100.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢mailshake_list_sent_messages(messageType, campaignID, campaignMessageID, campaignMessageType, recipientEmailAddress, ...)
List the most recent emails sent, with the recipient and the message text as plain text. Costs 1 quota unit per call. Mailshake: POST /activity/sent.
入力スキーマ
{
"type": "object",
"properties": {
"messageType": {
"description": "one-off = replies a person sent by hand; campaign-message = campaign emails.",
"type": "string",
"enum": [
"one-off",
"campaign-message"
]
},
"campaignID": {
"description": "Only messages from this campaign.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"campaignMessageID": {
"description": "Only this message in a campaign.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"campaignMessageType": {
"description": "Only one message type in a campaign, for example initial.",
"type": "string"
},
"recipientEmailAddress": {
"description": "Recipient email address. A domain such as acme.com matches every address on that domain.",
"type": "string"
},
"excludeBody": {
"description": "true = leave out the message text.",
"type": "boolean"
},
"nextToken": {
"description": "nextToken from the previous page. Omit it for the first page.",
"type": "string"
},
"perPage": {
"description": "Results per page, up to 25.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 25
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢mailshake_list_replies(replyType, campaignID, recipientEmailAddress, nextToken, perPage)
List the most recent replies, with the reply text as plain text. Use replyType reply for real answers; bounce, out-of-office, unsubscribe and delay-notification are the other kinds. Costs 10 quota units per call. Mailshake: POST /activity/replies.
入力スキーマ
{
"type": "object",
"properties": {
"replyType": {
"description": "Only this kind of reply. Use reply for real answers.",
"type": "string",
"enum": [
"reply",
"bounce",
"out-of-office",
"unsubscribe",
"delay-notification"
]
},
"campaignID": {
"description": "Only replies from this campaign.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"recipientEmailAddress": {
"description": "Recipient email address. A domain such as acme.com matches every address on that domain.",
"type": "string"
},
"nextToken": {
"description": "nextToken from the previous page. Omit it for the first page.",
"type": "string"
},
"perPage": {
"description": "Results per page, up to 25.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 25
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢mailshake_list_opens(campaignID, campaignMessageID, excludeDuplicates, recipientEmailAddress, since, ...)
List the most recent email opens. Costs 2 quota units per call. Mailshake: POST /activity/opens.
入力スキーマ
{
"type": "object",
"properties": {
"campaignID": {
"description": "Only opens in this campaign.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"campaignMessageID": {
"description": "Only opens of this message.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"excludeDuplicates": {
"description": "true = count each recipient once.",
"type": "boolean"
},
"recipientEmailAddress": {
"description": "Recipient email address. A domain such as acme.com matches every address on that domain.",
"type": "string"
},
"since": {
"description": "Only events after this UTC time, for example 2026-10-01 00:00:00.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}( \\d{2}:\\d{2}:\\d{2})?$"
},
"nextToken": {
"description": "nextToken from the previous page. Omit it for the first page.",
"type": "string"
},
"perPage": {
"description": "Results per page, up to 100.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢mailshake_list_clicks(campaignID, excludeDuplicates, matchUrl, recipientEmailAddress, since, ...)
List the most recent clicks on tracked links. Costs 3 quota units per call. Mailshake: POST /activity/clicks.
入力スキーマ
{
"type": "object",
"properties": {
"campaignID": {
"description": "Only clicks in this campaign.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"excludeDuplicates": {
"description": "true = count each recipient once.",
"type": "boolean"
},
"matchUrl": {
"description": "Only clicks on this exact tracked link.",
"type": "string"
},
"recipientEmailAddress": {
"description": "Recipient email address. A domain such as acme.com matches every address on that domain.",
"type": "string"
},
"since": {
"description": "Only events after this UTC time, for example 2026-10-01 00:00:00.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}( \\d{2}:\\d{2}:\\d{2})?$"
},
"nextToken": {
"description": "nextToken from the previous page. Omit it for the first page.",
"type": "string"
},
"perPage": {
"description": "Results per page, up to 100.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢mailshake_list_created_leads(campaignID, recipientEmailAddress, assignedToEmailAddress, since, nextToken, ...)
List the most recently created leads (from Lead Catcher rules or manual conversions). Costs 5 quota units per call. Mailshake: POST /activity/created-leads.
入力スキーマ
{
"type": "object",
"properties": {
"campaignID": {
"description": "Only leads from this campaign.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"recipientEmailAddress": {
"description": "Recipient email address. A domain such as acme.com matches every address on that domain.",
"type": "string"
},
"assignedToEmailAddress": {
"description": "Only leads assigned to this teammate.",
"type": "string"
},
"since": {
"description": "Only events after this UTC time, for example 2026-10-01 00:00:00.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}( \\d{2}:\\d{2}:\\d{2})?$"
},
"nextToken": {
"description": "nextToken from the previous page. Omit it for the first page.",
"type": "string"
},
"perPage": {
"description": "Results per page, up to 100.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢mailshake_list_lead_status_changes(campaignID, recipientEmailAddress, assignedToEmailAddress, since, nextToken, ...)
List the most recently updated leads (opened, won, lost or ignored). Costs 5 quota units per call. Mailshake: POST /activity/lead-status-changes.
入力スキーマ
{
"type": "object",
"properties": {
"campaignID": {
"description": "Only leads from this campaign.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"recipientEmailAddress": {
"description": "Recipient email address. A domain such as acme.com matches every address on that domain.",
"type": "string"
},
"assignedToEmailAddress": {
"description": "Only leads assigned to this teammate.",
"type": "string"
},
"since": {
"description": "Only events after this UTC time, for example 2026-10-01 00:00:00.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}( \\d{2}:\\d{2}:\\d{2})?$"
},
"nextToken": {
"description": "nextToken from the previous page. Omit it for the first page.",
"type": "string"
},
"perPage": {
"description": "Results per page, up to 100.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡mailshake_pause_campaign(campaignID)
Stop all sending for a campaign now. Emails already in a batch are not stopped. Undo with mailshake_unpause_campaign. Mailshake: POST /campaigns/pause.
入力スキーマ
{
"type": "object",
"properties": {
"campaignID": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Campaign ID, from mailshake_list_campaigns."
}
},
"required": [
"campaignID"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡mailshake_unpause_campaign(campaignID)
Resume sending for a paused campaign. The sending calendar reschedules its pending emails. Mailshake: POST /campaigns/unpause.
入力スキーマ
{
"type": "object",
"properties": {
"campaignID": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Campaign ID, from mailshake_list_campaigns."
}
},
"required": [
"campaignID"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡mailshake_pause_recipient(campaignID, emailAddress)
Stop all sending to one recipient in a campaign. Undo with mailshake_unpause_recipient. Mailshake: POST /recipients/pause.
入力スキーマ
{
"type": "object",
"properties": {
"campaignID": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Campaign ID, from mailshake_list_campaigns."
},
"emailAddress": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "The recipient's email address in this campaign."
}
},
"required": [
"campaignID",
"emailAddress"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡mailshake_unpause_recipient(campaignID, emailAddress)
Resume sending to one paused recipient in a campaign. Mailshake: POST /recipients/unpause.
入力スキーマ
{
"type": "object",
"properties": {
"campaignID": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Campaign ID, from mailshake_list_campaigns."
},
"emailAddress": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "The recipient's email address in this campaign."
}
},
"required": [
"campaignID",
"emailAddress"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡mailshake_close_lead(leadID, status)
Mark a lead as won (status closed, the default) or as lost (status lost). Mailshake: POST /leads/close.
入力スキーマ
{
"type": "object",
"properties": {
"leadID": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Lead ID, from mailshake_list_leads."
},
"status": {
"description": "closed = won (default); lost = lost.",
"type": "string",
"enum": [
"closed",
"lost"
]
}
},
"required": [
"leadID"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡mailshake_ignore_lead(leadID)
Mark a lead as not worth pursuing (ignored). Undo with mailshake_reopen_lead. Mailshake: POST /leads/ignore.
入力スキーマ
{
"type": "object",
"properties": {
"leadID": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Lead ID, from mailshake_list_leads."
}
},
"required": [
"leadID"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡mailshake_reopen_lead(leadID)
Make a closed or ignored lead open again for review. Mailshake: POST /leads/reopen.
入力スキーマ
{
"type": "object",
"properties": {
"leadID": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Lead ID, from mailshake_list_leads."
}
},
"required": [
"leadID"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}コミュニティ
エビデンス