Manage MailBluster leads, custom fields, products and orders: look up, add and update records.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
Display label, e.g. Gender.
Merge tag, e.g. gender.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| field_label* | string | Display label, e.g. Gender. |
| field_merge_tag* | string | Merge tag, e.g. gender. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"field_label",
"field_merge_tag"
],
"properties": {
"field_label": {
"type": "string",
"maxLength": 190,
"minLength": 1,
"description": "Display label, e.g. Gender."
},
"field_merge_tag": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Merge tag, e.g. gender."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| tags | array | Tag names to attach (created if missing). |
| email* | string | Email address. |
| fields | object | Custom field values keyed by the field's MERGE TAG (see mailbluster_list_fields), e.g. {"company": "Pied Piper"}. |
| timezone | string | IANA timezone, e.g. America/Los_Angeles. |
| last_name | string | |
| first_name | string | |
| ip_address | string | Lead's IP address; MailBluster derives country/city/timezone from it. |
| subscribed | boolean | Default false. true only with the lead's consent to receive email. |
| overwrite_existing | boolean | Default false. true overwrites an existing lead with the same email. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"email"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"maxItems": 50,
"description": "Tag names to attach (created if missing)."
},
"email": {
"type": "string",
"maxLength": 320,
"minLength": 3,
"description": "Email address."
},
"fields": {
"type": "object",
"description": "Custom field values keyed by the field's MERGE TAG (see mailbluster_list_fields), e.g. {\"company\": \"Pied Piper\"}.",
"propertyNames": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"timezone": {
"type": "string",
"maxLength": 100,
"description": "IANA timezone, e.g. America/Los_Angeles."
},
"last_name": {
"type": "string",
"maxLength": 190
},
"first_name": {
"type": "string",
"maxLength": 190
},
"ip_address": {
"type": "string",
"maxLength": 64,
"description": "Lead's IP address; MailBluster derives country/city/timezone from it."
},
"subscribed": {
"type": "boolean",
"description": "Default false. true only with the lead's consent to receive email."
},
"overwrite_existing": {
"type": "boolean",
"description": "Default false. true overwrites an existing lead with the same email."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| items* | array | Ordered products. |
| currency* | string | ISO currency code, e.g. USD. |
| customer* | object | |
| order_id* | string | Your unique order id. |
| campaign_id | integer | Id of the campaign that led to the order, if any. |
| total_price* | number | Order total, e.g. 10.64. |
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.
| Argument | Type | Description |
|---|---|---|
| name* | string | Product name. |
| product_id* | string | Your unique product id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"product_id",
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 190,
"minLength": 1,
"description": "Product name."
},
"product_id": {
"type": "string",
"maxLength": 190,
"minLength": 1,
"description": "Your unique product id."
}
}
}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)}.
| Argument | Type | Description |
|---|---|---|
| string | The lead's email address (preferred). | |
| lead_hash | string | Alternative to email: the 32-character MD5 hex of the lowercased email. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"email": {
"type": "string",
"maxLength": 320,
"minLength": 3,
"description": "The lead's email address (preferred)."
},
"lead_hash": {
"type": "string",
"description": "Alternative to email: the 32-character MD5 hex of the lowercased email."
}
}
}Get one order record by the id it was created with. GET /orders/{order_id}.
| Argument | Type | Description |
|---|---|---|
| order_id* | string | Order id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"order_id"
],
"properties": {
"order_id": {
"type": "string",
"maxLength": 190,
"minLength": 1,
"description": "Order id."
}
}
}Get one product record by the id you registered it under. GET /products/{product_id}.
| Argument | Type | Description |
|---|---|---|
| product_id* | string | Product id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"product_id"
],
"properties": {
"product_id": {
"type": "string",
"maxLength": 190,
"minLength": 1,
"description": "Product id."
}
}
}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.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| page_no | integer | Page number, from 1 (default 1). Pass the previous reply's meta.nextPageNo. |
| per_page | integer | Results per page, 1-100 (MailBluster default 10). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page_no": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's meta.nextPageNo.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (MailBluster default 10).",
"exclusiveMinimum": 0
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| page_no | integer | Page number, from 1 (default 1). Pass the previous reply's meta.nextPageNo. |
| per_page | integer | Results per page, 1-100 (MailBluster default 10). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page_no": {
"type": "integer",
"maximum": 100000,
"description": "Page number, from 1 (default 1). Pass the previous reply's meta.nextPageNo.",
"exclusiveMinimum": 0
},
"per_page": {
"type": "integer",
"maximum": 100,
"description": "Results per page, 1-100 (MailBluster default 10).",
"exclusiveMinimum": 0
}
}
}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)}.
| Argument | Type | Description |
|---|---|---|
| string | Current email of the lead to update (preferred). | |
| fields | object | Custom field values keyed by the field's MERGE TAG (see mailbluster_list_fields), e.g. {"company": "Pied Piper"}. |
| add_tags | array | Tag names to attach (created if missing). Applied before remove_tags. |
| timezone | string | |
| last_name | string | |
| lead_hash | string | Alternative to email: the 32-character MD5 hex of the lowercased current email. |
| new_email | string | Change the lead's email address to this. |
| first_name |
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}.
| Argument | Type | Description |
|---|---|---|
| items | array | New complete item list; replaces the previous items. |
| currency | string | ISO currency code, e.g. USD. |
| order_id* | string | Order id. |
| campaign_id | integer | |
| total_price | number | New order total. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"order_id"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"price",
"quantity"
],
"properties": {
"id": {
"type": "string",
"maxLength": 190,
"minLength": 1,
"description": "Your id of the product (a product record with this id is created in MailBluster if it does not exist)."
},
"name": {
"type": "string",
"maxLength": 190,
"minLength": 1,
"description": "Product name."
},
"price": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Unit price, e.g. 3.15."
},
"quantity": {
"type": "integer",
"maximum": 1000000,
"exclusiveMinimum": 0
}
}
},
"maxItems": 200,
"minItems": 1,
"description": "New complete item list; replaces the previous items."
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "ISO currency code, e.g. USD."
},
"order_id": {
"type": "string",
"maxLength": 190,
"minLength": 1,
"description": "Order id."
},
"campaign_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"total_price": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "New order total."
}
}
}WRITE: rename a product record. PUT /products/{product_id}.
| Argument | Type | Description |
|---|---|---|
| name* | string | New product name. |
| product_id* | string | Product id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"product_id",
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 190,
"minLength": 1,
"description": "New product name."
},
"product_id": {
"type": "string",
"maxLength": 190,
"minLength": 1,
"description": "Product id."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"order_id",
"customer",
"currency",
"total_price",
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"name",
"price",
"quantity"
],
"properties": {
"id": {
"type": "string",
"maxLength": 190,
"minLength": 1,
"description": "Your id of the product (a product record with this id is created in MailBluster if it does not exist)."
},
"name": {
"type": "string",
"maxLength": 190,
"minLength": 1,
"description": "Product name."
},
"price": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Unit price, e.g. 3.15."
},
"quantity": {
"type": "integer",
"maximum": 1000000,
"exclusiveMinimum": 0
}
}
},
"maxItems": 200,
"minItems": 1,
"description": "Ordered products."
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "ISO currency code, e.g. USD."
},
"customer": {
"type": "object",
"required": [
"email",
"subscribed"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"maxItems": 50
},
"email": {
"type": "string",
"maxLength": 320,
"minLength": 3,
"description": "Email address."
},
"fields": {
"type": "object",
"description": "Custom field values keyed by the field's MERGE TAG (see mailbluster_list_fields), e.g. {\"company\": \"Pied Piper\"}.",
"propertyNames": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"timezone": {
"type": "string",
"maxLength": 100
},
"last_name": {
"type": "string",
"maxLength": 190
},
"first_name": {
"type": "string",
"maxLength": 190
},
"ip_address": {
"type": "string",
"maxLength": 64
},
"subscribed": {
"type": "boolean",
"description": "Required. true only with the customer's consent to receive email; otherwise false."
}
}
},
"order_id": {
"type": "string",
"maxLength": 190,
"minLength": 1,
"description": "Your unique order id."
},
"campaign_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Id of the campaign that led to the order, if any.",
"exclusiveMinimum": 0
},
"total_price": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Order total, e.g. 10.64."
}
}
}| string |
| ip_address | string |
| subscribed | boolean | Only pass to change the subscription. true only with the lead's consent. |
| remove_tags | array | Tag names to detach. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"email": {
"type": "string",
"maxLength": 320,
"minLength": 3,
"description": "Current email of the lead to update (preferred)."
},
"fields": {
"type": "object",
"description": "Custom field values keyed by the field's MERGE TAG (see mailbluster_list_fields), e.g. {\"company\": \"Pied Piper\"}.",
"propertyNames": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "number"
},
{
"type": "boolean"
}
]
}
},
"add_tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"maxItems": 50,
"description": "Tag names to attach (created if missing). Applied before remove_tags."
},
"timezone": {
"type": "string",
"maxLength": 100
},
"last_name": {
"type": "string",
"maxLength": 190
},
"lead_hash": {
"type": "string",
"description": "Alternative to email: the 32-character MD5 hex of the lowercased current email."
},
"new_email": {
"type": "string",
"maxLength": 320,
"minLength": 3,
"description": "Change the lead's email address to this."
},
"first_name": {
"type": "string",
"maxLength": 190
},
"ip_address": {
"type": "string",
"maxLength": 64
},
"subscribed": {
"type": "boolean",
"description": "Only pass to change the subscription. true only with the lead's consent."
},
"remove_tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"maxItems": 50,
"description": "Tag names to detach."
}
}
}