Laposta MCP by usefulapi
Read Laposta lists, members, campaigns and reports; add members and build campaigns.
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": {
"laposta": {
"url": "https://laposta.usefulapi.io/mcp"
}
}
}Remote-Endpunkte
https://laposta.usefulapi.io/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (18)
🟢laposta_list_lists
List all mailing lists of the Laposta account with member counts (active, unsubscribed, cleaned). Use the list_id in the other tools.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢laposta_get_list(list_id)
Get one mailing list: name, state, notification addresses and member counts.
Eingabe-Schema
{
"type": "object",
"properties": {
"list_id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The list id (from laposta_list_lists)."
}
},
"required": [
"list_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢laposta_list_fields(list_id)
List the custom fields of a mailing list (name, custom_name used as the key in custom_fields, datatype, required, options). Call this before adding or updating a member.
Eingabe-Schema
{
"type": "object",
"properties": {
"list_id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The list id (from laposta_list_lists)."
}
},
"required": [
"list_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢laposta_list_segments(list_id)
List the segments of a mailing list (a segment id can be a campaign recipient together with its list).
Eingabe-Schema
{
"type": "object",
"properties": {
"list_id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The list id (from laposta_list_lists)."
}
},
"required": [
"list_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢laposta_list_members(list_id, state, search, label, order_by, ...)
List the members (subscribers) of a mailing list, one page at a time. Filter by state, free-text search (email and field values) or label. Contains personal data: only fetch what the task needs.
Eingabe-Schema
{
"type": "object",
"properties": {
"list_id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The list id (from laposta_list_lists)."
},
"state": {
"description": "Only members in this state (default: all).",
"type": "string",
"enum": [
"active",
"unsubscribed",
"cleaned"
]
},
"search": {
"description": "Only members containing this text in the email or any text/number/choice field.",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"label": {
"description": "Only members with this label (by name).",
"type": "string",
"minLength": 1,
"maxLength": 255
},
"order_by": {
"description": "email, signup_date, or a text field's custom_name (comma-separated for several).",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"order": {
"description": "Sort direction for order_by (default asc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Items per page (default 25, max 100; a large page can be cut at 50,000 characters and lose its next_cursor).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "Cursor: pass the previous reply's next_cursor unchanged, with the same filters.",
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"list_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢laposta_get_member(list_id, member)
Get one member of a list by member id or email address: state, signup/confirm dates and custom field values.
Eingabe-Schema
{
"type": "object",
"properties": {
"list_id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The list id (from laposta_list_lists)."
},
"member": {
"type": "string",
"minLength": 1,
"maxLength": 320,
"description": "The member id OR the member's email address."
}
},
"required": [
"list_id",
"member"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢laposta_get_member_history(list_id, member, campaign_id, event_date_from, event_date_to, ...)
The event history of one member (subscribed, confirmed, opened, clicked, bounced, unsubscribed, automations ...), newest first by default. Optionally limited to one campaign or a date range. Paged by cursor.
Eingabe-Schema
{
"type": "object",
"properties": {
"list_id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The list id (from laposta_list_lists)."
},
"member": {
"type": "string",
"minLength": 1,
"maxLength": 320,
"description": "The member id OR the member's email address."
},
"campaign_id": {
"description": "Only events of this campaign.",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"event_date_from": {
"description": "Events from this moment, inclusive.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}([ T]\\d{2}:\\d{2}:\\d{2}(Z|[+-]\\d{2}:\\d{2})?)?$"
},
"event_date_to": {
"description": "Events before this moment, exclusive.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}([ T]\\d{2}:\\d{2}:\\d{2}(Z|[+-]\\d{2}:\\d{2})?)?$"
},
"order": {
"description": "Sort by event date (default desc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Items per page (default 25, max 100; a large page can be cut at 50,000 characters and lose its next_cursor).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "Cursor: pass the previous reply's next_cursor unchanged, with the same filters.",
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"list_id",
"member"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢laposta_list_campaigns(limit, offset)
List the account's campaigns (name, subject, sender, recipient lists, delivery moments). Use limit/offset to page.
Eingabe-Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Items to return (default 100, max 500).",
"type": "integer",
"minimum": 1,
"maximum": 500
},
"offset": {
"description": "Items to skip (default 0). Pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢laposta_get_campaign(campaign_id)
Get one campaign: name, subject, preview text, sender, reply-to, recipients, delivery moments and web version URL.
Eingabe-Schema
{
"type": "object",
"properties": {
"campaign_id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The campaign id (from laposta_list_campaigns)."
}
},
"required": [
"campaign_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢laposta_get_campaign_content(campaign_id, include_html)
Get the plain-text content of a campaign (and its import_url if it was imported). Set include_html to also get the full HTML (large).
Eingabe-Schema
{
"type": "object",
"properties": {
"campaign_id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The campaign id (from laposta_list_campaigns)."
},
"include_html": {
"description": "Also return the HTML body (default false).",
"type": "boolean"
}
},
"required": [
"campaign_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢laposta_get_campaign_history(campaign_id, event_date_from, event_date_to, order, limit, ...)
Recipient events of one campaign (delivered, opened, clicked, bounced, unsubscribed ...), newest first by default, optionally within a date range. Paged by cursor. For totals use laposta_get_report.
Eingabe-Schema
{
"type": "object",
"properties": {
"campaign_id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The campaign id (from laposta_list_campaigns)."
},
"event_date_from": {
"description": "Events from this moment, inclusive.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}([ T]\\d{2}:\\d{2}:\\d{2}(Z|[+-]\\d{2}:\\d{2})?)?$"
},
"event_date_to": {
"description": "Events before this moment, exclusive.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}([ T]\\d{2}:\\d{2}:\\d{2}(Z|[+-]\\d{2}:\\d{2})?)?$"
},
"order": {
"description": "Sort by event date (default desc).",
"type": "string",
"enum": [
"asc",
"desc"
]
},
"limit": {
"description": "Items per page (default 25, max 100; a large page can be cut at 50,000 characters and lose its next_cursor).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "Cursor: pass the previous reply's next_cursor unchanged, with the same filters.",
"type": "string",
"minLength": 1,
"maxLength": 2000
}
},
"required": [
"campaign_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢laposta_list_reports(limit, offset)
Result figures of all campaigns: sent, accepted, opened, clicked, bounced, unsubscribed, with ratios. Use limit/offset to page.
Eingabe-Schema
{
"type": "object",
"properties": {
"limit": {
"description": "Items to return (default 100, max 500).",
"type": "integer",
"minimum": 1,
"maximum": 500
},
"offset": {
"description": "Items to skip (default 0). Pass the previous reply's next_offset.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢laposta_get_report(campaign_id)
Result figures of one campaign: sent, accepted, unique opens and clicks, bounces, complaints, unsubscribes and their ratios.
Eingabe-Schema
{
"type": "object",
"properties": {
"campaign_id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The campaign id (from laposta_list_campaigns)."
}
},
"required": [
"campaign_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴laposta_add_member(list_id, email, ip, source_url, custom_fields, ...)
WRITE: add one email address to a mailing list (subscribe). On a double opt-in list Laposta sends the confirmation email to that address. The address must have given consent. With upsert, an existing active member's fields are overwritten; an unsubscribed member is re-activated unless suppress_reactivation is set.
Eingabe-Schema
{
"type": "object",
"properties": {
"list_id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The list id (from laposta_list_lists)."
},
"email": {
"type": "string",
"minLength": 3,
"maxLength": 320,
"pattern": "^[^\\s@]+@[^\\s@]+$"
},
"ip": {
"type": "string",
"minLength": 3,
"maxLength": 45,
"pattern": "^[0-9a-fA-F:.]+$",
"description": "IP address the signup came from (required by Laposta; use the signup source's address, or your own server's if it was entered by staff)."
},
"source_url": {
"description": "URL the signup came from.",
"type": "string",
"maxLength": 2000,
"format": "uri"
},
"custom_fields": {
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 5000
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"maxLength": 500
}
}
]
},
"description": "Custom field values keyed by the field's custom_name (the variable name shown by laposta_list_fields). Multi-choice fields take an array of option values."
},
"upsert": {
"description": "Overwrite the fields if the address is already an active member (default false: error).",
"type": "boolean"
},
"suppress_reactivation": {
"description": "With upsert: do not re-activate an unsubscribed member.",
"type": "boolean"
},
"suppress_email_notification": {
"description": "Do not send the list's signup notification email.",
"type": "boolean"
}
},
"required": [
"list_id",
"email",
"ip"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴laposta_update_member(list_id, member, email, state, custom_fields)
WRITE: change a member's custom field values and/or email address, or unsubscribe the member (state: unsubscribed). Only the fields you pass change. Re-subscribing a person is not offered here: do it in the Laposta app or with laposta_add_member upsert only when they asked for it.
Eingabe-Schema
{
"type": "object",
"properties": {
"list_id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The list id (from laposta_list_lists)."
},
"member": {
"type": "string",
"minLength": 1,
"maxLength": 320,
"description": "The member id OR the member's email address."
},
"email": {
"description": "A new email address for this member.",
"type": "string",
"minLength": 3,
"maxLength": 320,
"pattern": "^[^\\s@]+@[^\\s@]+$"
},
"state": {
"description": "Set to unsubscribed to unsubscribe the member.",
"type": "string",
"const": "unsubscribed"
},
"custom_fields": {
"type": "object",
"propertyNames": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 5000
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"maxItems": 100,
"type": "array",
"items": {
"type": "string",
"maxLength": 500
}
}
]
},
"description": "Custom field values keyed by the field's custom_name (the variable name shown by laposta_list_fields). Multi-choice fields take an array of option values."
}
},
"required": [
"list_id",
"member"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡laposta_create_campaign(name, subject, from_name, from_email, list_ids, ...)
WRITE: create a new regular campaign (a draft: it is NOT filled, scheduled or sent). Fill it with laposta_set_campaign_content, check it with laposta_send_test_email and send it in the Laposta app. The from_email must be an approved sender address of the account.
Eingabe-Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Internal campaign name."
},
"subject": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Subject line."
},
"from_name": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "Sender name."
},
"from_email": {
"type": "string",
"minLength": 3,
"maxLength": 320,
"pattern": "^[^\\s@]+@[^\\s@]+$",
"description": "Sender email address (must be an approved sender in Laposta)."
},
"list_ids": {
"minItems": 1,
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "Laposta id (a short alphanumeric string, e.g. BaImMu3JZA)."
},
"description": "Recipients: list ids and optionally segment ids."
},
"reply_to": {
"description": "Reply-to address.",
"type": "string",
"minLength": 3,
"maxLength": 320,
"pattern": "^[^\\s@]+@[^\\s@]+$"
},
"previewtext": {
"description": "Preview text (max 120 characters).",
"type": "string",
"maxLength": 120
},
"google_analytics": {
"description": "Link Google Analytics tracking.",
"type": "boolean"
}
},
"required": [
"name",
"subject",
"from_name",
"from_email",
"list_ids"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴laposta_set_campaign_content(campaign_id, html, import_url, inline_css)
WRITE: replace a campaign's content with your HTML, or let Laposta import it from a URL (html wins if both are given). Does not send anything. The reply's report lists problems Laposta found (javascript, missing unsubscribe link, missing images).
Eingabe-Schema
{
"type": "object",
"properties": {
"campaign_id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The campaign id (from laposta_list_campaigns)."
},
"html": {
"description": "The complete HTML of the email.",
"type": "string",
"minLength": 1,
"maxLength": 2000000
},
"import_url": {
"description": "A public URL Laposta fetches the HTML from.",
"type": "string",
"maxLength": 2000,
"format": "uri"
},
"inline_css": {
"description": "Inline the CSS.",
"type": "boolean"
}
},
"required": [
"campaign_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡laposta_send_test_email(campaign_id, email)
WRITE: send a test copy of a campaign (it must have content and not be sent yet) to ONE email address. Does not send the campaign to its recipients.
Eingabe-Schema
{
"type": "object",
"properties": {
"campaign_id": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The campaign id (from laposta_list_campaigns)."
},
"email": {
"type": "string",
"minLength": 3,
"maxLength": 320,
"pattern": "^[^\\s@]+@[^\\s@]+$",
"description": "Where to send the test."
}
},
"required": [
"campaign_id",
"email"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Nachweis