MailBluster MCP by usefulapi
Manage MailBluster leads, custom fields, products and orders: look up, add and update records.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"mailbluster": {
"url": "https://mailbluster.usefulapi.io/mcp"
}
}
}Remote-Endpunkte
https://mailbluster.usefulapi.io/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (13)
🟢mailbluster_list_fields
List the brand's custom lead fields: id, label and merge tag. Use the merge tags as keys of `fields` when creating or updating leads. GET /fields.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡mailbluster_create_field(field_label, field_merge_tag)
WRITE: create a custom lead field. The merge tag is the key used in lead `fields` and in email templates. Creating a field changes the brand's data model but sends nothing. POST /fields.
Eingabe-Schema
{
"type": "object",
"properties": {
"field_label": {
"type": "string",
"minLength": 1,
"maxLength": 190,
"description": "Display label, e.g. Gender."
},
"field_merge_tag": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Merge tag, e.g. gender."
}
},
"required": [
"field_label",
"field_merge_tag"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢mailbluster_get_lead(email, lead_hash)
Get one lead by email address (the server computes the MD5 id MailBluster uses): name, custom fields, timezone, subscribed and opt-in status, tags, created/updated dates. MailBluster has no list-leads endpoint. GET /leads/{md5(email)}.
Eingabe-Schema
{
"type": "object",
"properties": {
"email": {
"description": "The lead's email address (preferred).",
"type": "string",
"minLength": 3,
"maxLength": 320
},
"lead_hash": {
"description": "Alternative to email: the 32-character MD5 hex of the lowercased email.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴mailbluster_create_lead(email, first_name, last_name, fields, timezone, ...)
WRITE: add a lead (contact) to the brand. `subscribed` defaults to FALSE: the lead is stored but is not subscribed to email. Only set subscribed=true when the person has given consent to receive email from this brand (the user is responsible for lawful consent); this server never subscribes anyone on its own. No email is sent by this tool (double opt-in is not offered). If the lead already exists the call fails unless overwrite_existing=true, which replaces the stored data (then `subscribed` must be given explicitly). POST /leads.
Eingabe-Schema
{
"type": "object",
"properties": {
"email": {
"type": "string",
"minLength": 3,
"maxLength": 320,
"description": "Email address."
},
"first_name": {
"type": "string",
"maxLength": 190
},
"last_name": {
"type": "string",
"maxLength": 190
},
"fields": {
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "number"
},
{
"type": "boolean"
}
]
},
"description": "Custom field values keyed by the field's MERGE TAG (see mailbluster_list_fields), e.g. {\"company\": \"Pied Piper\"}."
},
"timezone": {
"description": "IANA timezone, e.g. America/Los_Angeles.",
"type": "string",
"maxLength": 100
},
"ip_address": {
"description": "Lead's IP address; MailBluster derives country/city/timezone from it.",
"type": "string",
"maxLength": 64
},
"subscribed": {
"description": "Default false. true only with the lead's consent to receive email.",
"type": "boolean"
},
"tags": {
"description": "Tag names to attach (created if missing).",
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"overwrite_existing": {
"description": "Default false. true overwrites an existing lead with the same email.",
"type": "boolean"
}
},
"required": [
"email"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴mailbluster_update_lead(email, lead_hash, new_email, first_name, last_name, ...)
WRITE: change an existing lead's name, custom fields, email, timezone, IP address, subscription flag or tags (send only what should change). `subscribed` is left alone unless you pass it; false unsubscribes the lead, true re-subscribes. Only set subscribed=true when the person has given consent to receive email from this brand (the user is responsible for lawful consent); this server never subscribes anyone on its own. PUT /leads/{md5(email)}.
Eingabe-Schema
{
"type": "object",
"properties": {
"email": {
"description": "Current email of the lead to update (preferred).",
"type": "string",
"minLength": 3,
"maxLength": 320
},
"lead_hash": {
"description": "Alternative to email: the 32-character MD5 hex of the lowercased current email.",
"type": "string"
},
"new_email": {
"description": "Change the lead's email address to this.",
"type": "string",
"minLength": 3,
"maxLength": 320
},
"first_name": {
"type": "string",
"maxLength": 190
},
"last_name": {
"type": "string",
"maxLength": 190
},
"fields": {
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "number"
},
{
"type": "boolean"
}
]
},
"description": "Custom field values keyed by the field's MERGE TAG (see mailbluster_list_fields), e.g. {\"company\": \"Pied Piper\"}."
},
"timezone": {
"type": "string",
"maxLength": 100
},
"ip_address": {
"type": "string",
"maxLength": 64
},
"subscribed": {
"description": "Only pass to change the subscription. true only with the lead's consent.",
"type": "boolean"
},
"add_tags": {
"description": "Tag names to attach (created if missing). Applied before remove_tags.",
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"remove_tags": {
"description": "Tag names to detach.",
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢mailbluster_list_products(page_no, per_page)
List product records (id, name, dates) the brand has registered for e-commerce tracking. Paged: the reply's meta has total and nextPageNo (null on the last page). GET /products.
Eingabe-Schema
{
"type": "object",
"properties": {
"page_no": {
"description": "Page number, from 1 (default 1). Pass the previous reply's meta.nextPageNo.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (MailBluster default 10).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢mailbluster_get_product(product_id)
Get one product record by the id you registered it under. GET /products/{product_id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"product_id": {
"type": "string",
"minLength": 1,
"maxLength": 190,
"description": "Product id."
}
},
"required": [
"product_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡mailbluster_create_product(product_id, name)
WRITE: register a product record (your own id plus a name) so orders can reference it. Sends nothing to anyone and charges nothing. POST /products.
Eingabe-Schema
{
"type": "object",
"properties": {
"product_id": {
"type": "string",
"minLength": 1,
"maxLength": 190,
"description": "Your unique product id."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 190,
"description": "Product name."
}
},
"required": [
"product_id",
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴mailbluster_update_product(product_id, name)
WRITE: rename a product record. PUT /products/{product_id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"product_id": {
"type": "string",
"minLength": 1,
"maxLength": 190,
"description": "Product id."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 190,
"description": "New product name."
}
},
"required": [
"product_id",
"name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢mailbluster_list_orders(page_no, per_page)
List order records (id, currency, total price, customer lead, campaign, line items). These are records kept in MailBluster for tracking; no payment is involved. Paged: see meta.nextPageNo. GET /orders.
Eingabe-Schema
{
"type": "object",
"properties": {
"page_no": {
"description": "Page number, from 1 (default 1). Pass the previous reply's meta.nextPageNo.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000
},
"per_page": {
"description": "Results per page, 1-100 (MailBluster default 10).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢mailbluster_get_order(order_id)
Get one order record by the id it was created with. GET /orders/{order_id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"order_id": {
"type": "string",
"minLength": 1,
"maxLength": 190,
"description": "Order id."
}
},
"required": [
"order_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴mailbluster_create_order(order_id, customer, campaign_id, currency, total_price, ...)
WRITE: record an order (a tracking record: it does not take payment, charge a card or send email). The customer's email becomes a lead if none exists, and the lead's tags are merged. `customer.subscribed` is REQUIRED because MailBluster would otherwise default it to true: pass false unless the customer has consented to email. For a customer who already exists, the value may replace their stored subscription state. Only set subscribed=true when the person has given consent to receive email from this brand (the user is responsible for lawful consent); this server never subscribes anyone on its own. POST /orders.
Eingabe-Schema
{
"type": "object",
"properties": {
"order_id": {
"type": "string",
"minLength": 1,
"maxLength": 190,
"description": "Your unique order id."
},
"customer": {
"type": "object",
"properties": {
"email": {
"type": "string",
"minLength": 3,
"maxLength": 320,
"description": "Email address."
},
"first_name": {
"type": "string",
"maxLength": 190
},
"last_name": {
"type": "string",
"maxLength": 190
},
"fields": {
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "number"
},
{
"type": "boolean"
}
]
},
"description": "Custom field values keyed by the field's MERGE TAG (see mailbluster_list_fields), e.g. {\"company\": \"Pied Piper\"}."
},
"timezone": {
"type": "string",
"maxLength": 100
},
"ip_address": {
"type": "string",
"maxLength": 64
},
"tags": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"subscribed": {
"type": "boolean",
"description": "Required. true only with the customer's consent to receive email; otherwise false."
}
},
"required": [
"email",
"subscribed"
]
},
"campaign_id": {
"description": "Id of the campaign that led to the order, if any.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "ISO currency code, e.g. USD."
},
"total_price": {
"type": "number",
"minimum": 0,
"maximum": 1000000000,
"description": "Order total, e.g. 10.64."
},
"items": {
"minItems": 1,
"maxItems": 200,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 190,
"description": "Your id of the product (a product record with this id is created in MailBluster if it does not exist)."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 190,
"description": "Product name."
},
"price": {
"type": "number",
"minimum": 0,
"maximum": 1000000000,
"description": "Unit price, e.g. 3.15."
},
"quantity": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 1000000
}
},
"required": [
"id",
"name",
"price",
"quantity"
]
},
"description": "Ordered products."
}
},
"required": [
"order_id",
"customer",
"currency",
"total_price",
"items"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴mailbluster_update_order(order_id, campaign_id, currency, total_price, items)
WRITE: change an order record's campaign, currency, total or items (send only what should change; `items`, when given, REPLACES all previous items). The customer cannot be changed here. No payment or email is involved. PUT /orders/{order_id}.
Eingabe-Schema
{
"type": "object",
"properties": {
"order_id": {
"type": "string",
"minLength": 1,
"maxLength": 190,
"description": "Order id."
},
"campaign_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "ISO currency code, e.g. USD."
},
"total_price": {
"type": "number",
"minimum": 0,
"maximum": 1000000000,
"description": "New order total."
},
"items": {
"description": "New complete item list; replaces the previous items.",
"minItems": 1,
"maxItems": 200,
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 190,
"description": "Your id of the product (a product record with this id is created in MailBluster if it does not exist)."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 190,
"description": "Product name."
},
"price": {
"type": "number",
"minimum": 0,
"maximum": 1000000000,
"description": "Unit price, e.g. 3.15."
},
"quantity": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 1000000
}
},
"required": [
"id",
"name",
"price",
"quantity"
]
}
}
},
"required": [
"order_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Nachweis