Mailshake MCP by usefulapi

Read campaigns, replies and leads; pause or resume campaigns; close or reopen leads in Mailshake.

사용해야 할까요

품질 및 안전성

A
설명 품질
91%
스키마 완전성
92%
이름 품질
79%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (1)

  • LOWTool 'mailshake_list_lead_status_changes' name length outside 3-30 rangemailshake_list_lead_status_changes에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~3,895토큰 (도구 정의)
~1.6 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 3.04%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`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"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 20개