Mailshake MCP by usefulapi

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

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
91%
Integridad del esquema
92%
Calidad de los nombres
79%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (1)

  • LOWTool 'mailshake_list_lead_status_changes' name length outside 3-30 rangeen mailshake_list_lead_status_changes

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~3,895Tokens (definiciones de herramientas)
~1.6 KBTamaño de respuesta típico
Impacto significativo en la atención (3.04% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "mailshake": {
      "url": "https://mailshake.usefulapi.io/mcp"
    }
  }
}

Puntos de conexión remotos

https://mailshake.usefulapi.io/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (20)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢mailshake_get_account

Show the signed-in Mailshake user and team. Also the cheapest call to check the API key. Mailshake: POST /me.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

{
  "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.

Esquema de entrada

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

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada20 herramientas