send16-mcp

Email for AI agents: send mail, manage contacts, automations & webhooks. Zero-DNS first send.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
94%
Vollständigkeit des Schemas
96%
Qualität der Benennung
97%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (1)

  • LOWTool 'regenerate_webhook_secret' description lacks action verbin regenerate_webhook_secret

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~11,929Tokens (Tool-Definitionen)
~1.3 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (9.32% von 128k Kontext)

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": {
    "send16-mcp": {
      "command": "npx",
      "args": [
        "send16-mcp"
      ]
    }
  }
}

Ausführbare Pakete

npmsend16-mcp0.5.8stdio

Remote-Endpunkte

https://mcp.send16.com/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (79)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢whoami(apiKey)

Verify the API key and return the authenticated workspace: name, plan, email quota (used/limit), and owner. Call this first to confirm the key works before sending. Pair with list_domains to see which `from` addresses are allowed.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴send_email(to, subject, html, text, from_name, ...)

Send a transactional email through Send16. Provide `html`, `text`, or both (text-only is fine for OTPs/receipts/alerts). `from_email` must belong to a domain that is verified in the workspace — call `whoami` for the account and `list_domains` to see which senders are allowed; a send from an unverified domain returns a clear error, not a silent failure. For a zero-setup first send, use from_email `[email protected]` — the sandbox sender delivers with no DNS, but only to your own account email.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "to": {
      "anyOf": [
        {
          "type": "string",
          "format": "email",
          "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
        },
        {
          "minItems": 1,
          "maxItems": 50,
          "type": "array",
          "items": {
            "type": "string",
            "format": "email",
            "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
          }
        }
      ],
      "description": "Recipient email address or array of addresses (max 50)"
    },
    "subject": {
      "type": "string",
      "maxLength": 255,
      "description": "Email subject line"
    },
    "html": {
      "description": "HTML body content",
      "type": "string"
    },
    "text": {
      "description": "Plain text body content",
      "type": "string"
    },
    "from_name": {
      "description": "Sender display name (e.g. \"Acme Co\")",
      "type": "string",
      "maxLength": 255
    },
    "from_email": {
      "description": "Sender email address (must be from a verified domain)",
      "type": "string",
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "reply_to": {
      "description": "Reply-to email address",
      "type": "string",
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "template": {
      "description": "Transactional template slug to use instead of inline content",
      "type": "string"
    },
    "variables": {
      "description": "Template variables for merge tags",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "to",
    "subject"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡send_campaign_test(campaignId, testEmail, apiKey)

Send a test email for an existing campaign to preview how it will look in recipients' inboxes.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "campaignId": {
      "type": "string",
      "description": "Campaign ID to send test for"
    },
    "testEmail": {
      "type": "string",
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      "description": "Email address to send the test to"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "campaignId",
    "testEmail"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡create_campaign(name, subject, fromName, fromEmail, replyTo, ...)

Create a new email campaign as a draft: optionally with full HTML content and recipients (exactly ONE of audienceIds / segmentId / contactIds / tagIds / sendToAll) so it's ready to test and send. Nothing is sent until schedule_campaign.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Campaign name (internal label)"
    },
    "subject": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Email subject line"
    },
    "fromName": {
      "type": "string",
      "maxLength": 100,
      "description": "Sender display name"
    },
    "fromEmail": {
      "type": "string",
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      "description": "Sender email (must be from a verified domain)"
    },
    "replyTo": {
      "description": "Reply-to email address",
      "type": "string",
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "previewText": {
      "description": "Preview text shown in inbox alongside subject",
      "type": "string",
      "maxLength": 200
    },
    "html": {
      "description": "Full HTML body for the email (skip to design later)",
      "type": "string"
    },
    "audienceIds": {
      "description": "Target these audience IDs (see list_audiences)",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "segmentId": {
      "description": "Target this segment (see list_segments)",
      "type": "string"
    },
    "contactIds": {
      "description": "Target these specific contact IDs",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "tagIds": {
      "description": "Target contacts with these tag IDs",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "sendToAll": {
      "description": "Target all subscribed contacts in the workspace",
      "type": "boolean"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "name",
    "subject",
    "fromName",
    "fromEmail"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪design_email_template(type, style, description, brandColor, companyName, ...)

Use AI to generate a complete email HTML template based on a description. Returns ready-to-use HTML that can be sent or used in campaigns.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "enum": [
        "marketing",
        "transactional",
        "newsletter",
        "announcement",
        "welcome",
        "promotional"
      ],
      "description": "Type of email template to generate"
    },
    "style": {
      "type": "string",
      "enum": [
        "minimal",
        "modern",
        "bold",
        "elegant",
        "playful",
        "corporate"
      ],
      "description": "Visual style/aesthetic for the template"
    },
    "description": {
      "type": "string",
      "minLength": 10,
      "maxLength": 1000,
      "description": "Detailed description of the email content and purpose (e.g. 'Welcome email for a SaaS product with feature highlights and CTA to start trial')"
    },
    "brandColor": {
      "description": "Primary brand color as hex code (e.g. \"#4F46E5\")",
      "type": "string"
    },
    "companyName": {
      "description": "Company or brand name to include in the template",
      "type": "string"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "type",
    "style",
    "description"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_campaigns(status, search, page, pageSize, apiKey)

List email campaigns, newest first. Use `search` to find a past campaign the user describes vaguely ('the invite one', 'that July newsletter') — it matches name and subject case-insensitively; try distinctive words from their description and broaden if no hits.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "status": {
      "description": "Filter campaigns by status",
      "type": "string",
      "enum": [
        "draft",
        "scheduled",
        "sending",
        "sent",
        "paused"
      ]
    },
    "search": {
      "description": "Case-insensitive substring match on campaign name or subject",
      "type": "string",
      "maxLength": 200
    },
    "page": {
      "default": 1,
      "description": "Page number",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "pageSize": {
      "default": 20,
      "description": "Results per page (max 100)",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡create_contact(email, firstName, lastName, audienceIds, tags, ...)

Add a single new contact, optionally straight into audiences and/or with tags — e.g. 'add this person from my email into the newsletter list'. Contacts are subscribed by default. For more than a handful of people, use import_contacts instead.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      "description": "Contact email address"
    },
    "firstName": {
      "description": "Contact first name",
      "type": "string",
      "maxLength": 255
    },
    "lastName": {
      "description": "Contact last name",
      "type": "string",
      "maxLength": 255
    },
    "audienceIds": {
      "description": "Add the contact to these audience IDs (see list_audiences)",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "tags": {
      "description": "Tag NAMES to assign — matched case-insensitively, created if missing",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "customFields": {
      "description": "Custom field key-value pairs",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "string"
      }
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "email"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_contacts(query, page, pageSize, apiKey)

Search contacts by email address or name. Returns matching contacts with their tags and subscription status.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "description": "Search query (matches against email, first name, last name)"
    },
    "page": {
      "default": 1,
      "description": "Page number",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "pageSize": {
      "default": 20,
      "description": "Results per page (max 100)",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "query"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_contacts(page, pageSize, subscribed, tagId, apiKey)

List all contacts with optional filtering by subscription status and tag. Supports pagination.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "page": {
      "default": 1,
      "description": "Page number",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "pageSize": {
      "default": 20,
      "description": "Results per page (max 100)",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "subscribed": {
      "description": "Filter by subscription status",
      "type": "string",
      "enum": [
        "true",
        "false"
      ]
    },
    "tagId": {
      "description": "Filter by tag ID",
      "type": "string"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡import_contacts(csvData, audienceIds, tags, updateExisting, apiKey)

Bulk import contacts from CSV data (min column: email), optionally straight into audiences and/or with tags. This is the tool for cross-app flows — e.g. pulling people out of Gmail, a CRM, or a spreadsheet and landing them in a Send16 audience in one call. Set updateExisting for upsert semantics (safe to re-run).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "csvData": {
      "type": "string",
      "description": "CSV string with headers. Required column: \"email\". Optional: \"firstName\", \"lastName\""
    },
    "audienceIds": {
      "description": "Add all imported contacts to these audience IDs (see list_audiences / create_audience)",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "tags": {
      "description": "Tag NAMES to apply to all imported contacts — matched case-insensitively, created if missing",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "updateExisting": {
      "default": false,
      "description": "Whether to update contacts that already exist",
      "type": "boolean"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "csvData"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_domains(apiKey)

List all sending domains configured in your Send16 workspace, including their verification status and DNS records.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢check_domain_health(domainId, apiKey)

Check the DNS health of a specific domain, including DKIM, SPF, DMARC, and MX record verification status. Triggers a fresh DNS lookup.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "domainId": {
      "type": "string",
      "description": "Domain ID to check health for"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "domainId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_campaign_stats(campaignId, apiKey)

Get detailed performance statistics for a specific campaign including open rate, click rate, bounce rate, and delivery metrics.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "campaignId": {
      "type": "string",
      "description": "Campaign ID to get stats for"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "campaignId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_deliverability_status(apiKey)

Get your workspace's deliverability summary — sending reputation, domain authentication status, and recent bounce/complaint health. (Deliverability Hub plan feature.)

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_automations(apiKey)

List all automations in the workspace, including draft/active/paused status and trigger types.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_automation(automationId, apiKey)

Get a single automation by ID, including its trigger, steps, and current status.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "automationId": {
      "type": "string",
      "description": "Automation ID"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "automationId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡enroll_in_automation(automationId, contactId, apiKey)

Manually enroll a contact in an active automation. The automation must be in 'active' status. Use send_event for event-driven enrollment.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "automationId": {
      "type": "string",
      "description": "Automation ID to enroll into"
    },
    "contactId": {
      "type": "string",
      "description": "Contact UUID (use search_contacts to look up by email first)"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "automationId",
    "contactId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡send_event(name, contactId, contactEmail, payload, occurredAt, ...)

Fire a custom event for a contact. Automations whose trigger is `{type:'custom_event', eventName:'<name>'}` will enroll the contact and start running. Payload is exposed to condition steps as `event.<key>`.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[a-z0-9_.-]+$",
      "description": "Event name (e.g. 'trial_started', 'order.placed')"
    },
    "contactId": {
      "description": "Contact UUID (provide either this or contactEmail)",
      "type": "string"
    },
    "contactEmail": {
      "description": "Contact email (provide either this or contactId)",
      "type": "string",
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "payload": {
      "description": "Arbitrary JSON metadata available to automation conditions",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "occurredAt": {
      "description": "ISO-8601 timestamp; defaults to now",
      "type": "string"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_templates(apiKey)

List starter-gallery email templates available to every workspace.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_template(templateId, apiKey)

Get a single starter template by ID, including its EmailContent JSON.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "templateId": {
      "type": "string",
      "description": "Template ID (slug)"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "templateId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡render_email_content(content, variables, apiKey)

Compile an EmailContent JSON object (the shape used by the Send16 builder + templates) into HTML using the platform's authoritative renderer. Returns the exact HTML the API would send. Useful for previews and post-processing.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "content": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "EmailContent JSON (from get_template or the builder)"
    },
    "variables": {
      "description": "Variable replacements (e.g. {firstName:'Alice'})",
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": "string"
      }
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "content"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡add_domain(domain, apiKey)

Register a new sending domain. Returns the DNS records the user must add to their DNS provider, after which they should call check_domain_health to verify.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "minLength": 3,
      "maxLength": 255,
      "description": "FQDN to register (e.g. 'mail.example.com')"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "domain"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡pre_send_review(subject, html, audience, apiKey)

Run an AI pre-send review on an email's HTML before sending. Surfaces tone issues, broken links, missing alt text, spam triggers, and accessibility problems.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "subject": {
      "type": "string",
      "description": "Email subject line"
    },
    "html": {
      "type": "string",
      "description": "Full HTML body to review"
    },
    "audience": {
      "description": "Short description of the audience (helps tone analysis)",
      "type": "string"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "subject",
    "html"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡generate_email_from_url(url, instructions, apiKey)

Scrape a URL (e.g. a launch blog post or product page) and generate an email draft from its content. Returns subject, preview text, and HTML body.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri",
      "description": "Public URL to scrape and turn into an email"
    },
    "instructions": {
      "description": "Additional guidance — e.g. 'announcement style, focus on the new feature'",
      "type": "string"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡list_messages(to_email, from_email, status, source, created_after, ...)

List messages from the unified send log (transactional + campaign). Filter by recipient, sender, status, date range, or source.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "to_email": {
      "description": "Recipient email filter",
      "type": "string",
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "from_email": {
      "description": "Sender email filter",
      "type": "string",
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "status": {
      "description": "Delivery status filter",
      "type": "string",
      "enum": [
        "queued",
        "sent",
        "delivered",
        "opened",
        "clicked",
        "bounced",
        "failed"
      ]
    },
    "source": {
      "description": "Restrict to one message source",
      "type": "string",
      "enum": [
        "transactional",
        "campaign"
      ]
    },
    "created_after": {
      "description": "ISO-8601 timestamp lower bound",
      "type": "string"
    },
    "created_before": {
      "description": "ISO-8601 timestamp upper bound",
      "type": "string"
    },
    "limit": {
      "description": "Page size (default 50)",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "offset": {
      "description": "Page offset",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_message(id, apiKey)

Fetch a single message with its full event timeline (created → sent → delivered → opened → clicked → ...).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Message ID"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_message_events(id, apiKey)

Get just the delivery event timeline for a message — no body or recipient details.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Message ID"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_convos(state, mailboxId, label, search, limit, ...)

List inbox conversations. Filter by state, mailbox, label, screener status, or full-text search. Send16's unified inbox combines transactional reply threading with team-managed shared inboxes.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "state": {
      "description": "Conversation status",
      "type": "string",
      "enum": [
        "open",
        "closed",
        "archived",
        "snoozed"
      ]
    },
    "mailboxId": {
      "description": "Filter to one mailbox",
      "type": "string"
    },
    "label": {
      "description": "Filter by label slug (comma-separate for multiple)",
      "type": "string"
    },
    "search": {
      "description": "Full-text search across subject + body",
      "type": "string"
    },
    "limit": {
      "description": "Page size (default 50)",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_convo(id, apiKey)

Get a single conversation with its full thread of posts (incoming + outgoing).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Conversation ID"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡send_reply(convoId, html, text, apiKey)

Reply to an inbox conversation. The reply is sent from the original recipient address (the alias the convo arrived on) and threaded back to the contact.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "convoId": {
      "type": "string",
      "description": "Conversation ID"
    },
    "html": {
      "description": "HTML body of the reply",
      "type": "string"
    },
    "text": {
      "description": "Plain text body of the reply",
      "type": "string"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "convoId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢mark_convo_read(convoId, apiKey)

Mark a conversation as read for the current viewer.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "convoId": {
      "type": "string",
      "description": "Conversation ID"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "convoId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡update_convo(convoId, state, assigneeId, apiKey)

Update conversation status (open/closed/archived/snoozed) or assignee.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "convoId": {
      "type": "string",
      "description": "Conversation ID"
    },
    "state": {
      "description": "New status",
      "type": "string",
      "enum": [
        "open",
        "closed",
        "archived",
        "snoozed"
      ]
    },
    "assigneeId": {
      "description": "Workspace member user ID, or null to unassign",
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "convoId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡add_convo_note(convoId, body, apiKey)

Add a private internal note on a conversation. Notes are visible only to workspace members.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "convoId": {
      "type": "string",
      "description": "Conversation ID"
    },
    "body": {
      "type": "string",
      "minLength": 1,
      "description": "Note body (markdown supported)"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "convoId",
    "body"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪screener_decide(convoId, decision, apiKey)

Decide a pending screener conversation (first-time sender). 'allow' lets future emails through, 'reject' blocks, 'cold' marks as cold outreach.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "convoId": {
      "type": "string",
      "description": "Conversation ID"
    },
    "decision": {
      "type": "string",
      "enum": [
        "allow",
        "reject",
        "cold"
      ],
      "description": "Screener decision"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "convoId",
    "decision"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_inbox_counts(apiKey)

Get unread/total counts per category and label for the inbox sidebar (newsletter, transactional, marketing, calendar, social, cold).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_topics(apiKey)

List subscription topics. Topics are granular categories contacts can subscribe to (e.g. 'product-updates', 'weekly-digest'). Campaigns and automations can be gated to subscribers of a specific topic.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡create_topic(name, slug, description, isDefault, apiKey)

Create a new subscription topic. Contacts opt into topics individually via the preference center.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Display name shown to contacts"
    },
    "slug": {
      "description": "URL-safe slug (auto-derived from name if omitted)",
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[a-z0-9-]+$"
    },
    "description": {
      "description": "Description shown in the preference center",
      "type": "string",
      "maxLength": 500
    },
    "isDefault": {
      "description": "Auto-subscribe new contacts to this topic",
      "type": "boolean"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡update_topic(topicId, name, description, isDefault, apiKey)

Update a subscription topic (name, description, default).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "topicId": {
      "type": "string",
      "description": "Topic ID"
    },
    "name": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "isDefault": {
      "type": "boolean"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "topicId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴delete_topic(topicId, apiKey)

Delete a subscription topic. All subscribers will be detached.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "topicId": {
      "type": "string",
      "description": "Topic ID"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "topicId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_actions(apiKey)

List Actions. Actions fire a transactional template when a custom event arrives — Plunk-style 'event_name → template' pairings, simpler than full automations.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_action(actionId, apiKey)

Get a single Action with its trigger config and template binding.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "actionId": {
      "type": "string",
      "description": "Action ID"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "actionId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡create_action(name, eventName, templateSlug, enabled, sendOnce, ...)

Create an Action that maps an event name to a transactional template. Each matching event sends one email to the contact.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "description": "Display name"
    },
    "eventName": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "Event name to match (e.g. 'order.placed')"
    },
    "templateSlug": {
      "type": "string",
      "description": "Transactional template slug to send"
    },
    "enabled": {
      "default": true,
      "type": "boolean"
    },
    "sendOnce": {
      "description": "Only send once per contact regardless of how many times the event fires",
      "type": "boolean"
    },
    "delaySeconds": {
      "description": "Delay before sending",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "name",
    "eventName",
    "templateSlug"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡update_action(actionId, name, eventName, templateSlug, enabled, ...)

Update an Action (toggle enabled, change template, change event name).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "actionId": {
      "type": "string",
      "description": "Action ID"
    },
    "name": {
      "type": "string"
    },
    "eventName": {
      "type": "string"
    },
    "templateSlug": {
      "type": "string"
    },
    "enabled": {
      "type": "boolean"
    },
    "sendOnce": {
      "type": "boolean"
    },
    "delaySeconds": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "actionId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴delete_action(actionId, apiKey)

Delete an Action.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "actionId": {
      "type": "string",
      "description": "Action ID"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "actionId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_audiences(apiKey)

List audiences (lists). An audience is a static, manually-managed group of contacts.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡create_audience(name, description, apiKey)

Create a new audience.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    },
    "description": {
      "type": "string",
      "maxLength": 500
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "name"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡add_contacts_to_audience(audienceId, contactIds, apiKey)

Add contacts (by ID) to an audience.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "audienceId": {
      "type": "string",
      "description": "Audience ID"
    },
    "contactIds": {
      "minItems": 1,
      "maxItems": 1000,
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Contact IDs to add"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "audienceId",
    "contactIds"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴remove_contact_from_audience(audienceId, contactId, apiKey)

Remove a contact from an audience.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "audienceId": {
      "type": "string",
      "description": "Audience ID"
    },
    "contactId": {
      "type": "string",
      "description": "Contact ID"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "audienceId",
    "contactId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴delete_audience(audienceId, apiKey)

Delete an audience (list). Contacts are not deleted — only the list and its memberships are removed.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "audienceId": {
      "type": "string",
      "description": "Audience ID"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "audienceId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡list_segments(apiKey)

List dynamic segments. Segments compute their members from a filter expression at send time.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪preview_segment(segmentId, apiKey)

Preview the contacts that match a segment without sending.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "segmentId": {
      "type": "string",
      "description": "Segment ID"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "segmentId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡update_contact(contactId, firstName, lastName, customFields, subscribed, ...)

Update a contact's profile fields, custom fields, or subscription state.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "contactId": {
      "type": "string",
      "description": "Contact ID"
    },
    "firstName": {
      "type": "string"
    },
    "lastName": {
      "type": "string"
    },
    "customFields": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "subscribed": {
      "type": "boolean"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "contactId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴delete_contact(contactId, apiKey)

Delete a contact and all associated events. Irreversible.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "contactId": {
      "type": "string",
      "description": "Contact ID"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "contactId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_contact_timeline(contactId, limit, cursor, apiKey)

Get a contact's full activity timeline: emails received, events fired, opens, clicks, automation enrollments, topic changes.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "contactId": {
      "type": "string",
      "description": "Contact ID"
    },
    "limit": {
      "description": "Page size",
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "cursor": {
      "description": "Pagination cursor",
      "type": "string"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "contactId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_contact_health_score(contactId, apiKey)

Get a contact's 0-100 health score based on recent engagement (opens, clicks, replies).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "contactId": {
      "type": "string",
      "description": "Contact ID"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "contactId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡send_broadcast(name, subject, fromName, fromEmail, replyTo, ...)

One-shot broadcast: create a campaign and immediately schedule it to send, in a single call. Pass either an audienceId, segmentId, topicId, or fully-qualified filter. Provide html OR templateSlug.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "description": "Internal campaign name"
    },
    "subject": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255
    },
    "fromName": {
      "type": "string",
      "maxLength": 255
    },
    "fromEmail": {
      "type": "string",
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      "description": "Must be a verified domain"
    },
    "replyTo": {
      "type": "string",
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "previewText": {
      "type": "string",
      "maxLength": 255
    },
    "audienceId": {
      "description": "Send to all contacts in this audience",
      "type": "string"
    },
    "segmentId": {
      "description": "Send to all contacts matching this segment",
      "type": "string"
    },
    "topicId": {
      "description": "Send to all subscribers of this topic",
      "type": "string"
    },
    "html": {
      "description": "Full HTML body (one of html/templateSlug required)",
      "type": "string"
    },
    "templateSlug": {
      "description": "Workspace template slug to use",
      "type": "string"
    },
    "scheduleAt": {
      "description": "ISO-8601 future datetime; omit to send immediately",
      "type": "string"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "name",
    "subject",
    "fromName",
    "fromEmail"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡schedule_campaign(campaignId, audienceId, segmentId, topicId, scheduleAt, ...)

Schedule (or send immediately) an existing draft campaign to an audience/segment/topic.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "campaignId": {
      "type": "string",
      "description": "Campaign ID"
    },
    "audienceId": {
      "type": "string"
    },
    "segmentId": {
      "type": "string"
    },
    "topicId": {
      "type": "string"
    },
    "scheduleAt": {
      "description": "ISO-8601 future datetime; omit to send immediately",
      "type": "string"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "campaignId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡update_campaign(campaignId, name, subject, fromName, fromEmail, ...)

Update a draft campaign: name, subject, preview text, sender info, HTML content, and/or recipients. Retarget with exactly ONE of audienceIds / segmentId / contactIds / tagIds / sendToAll, then verify with preview_campaign_recipients before sending. Only drafts can be edited.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "campaignId": {
      "type": "string",
      "description": "Campaign ID"
    },
    "name": {
      "description": "Campaign name (internal label)",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "subject": {
      "type": "string"
    },
    "fromName": {
      "type": "string"
    },
    "fromEmail": {
      "type": "string",
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "replyTo": {
      "type": "string",
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "previewText": {
      "type": "string"
    },
    "html": {
      "type": "string"
    },
    "audienceIds": {
      "description": "Retarget to these audience IDs (see list_audiences). Sets recipient type 'lists'.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "segmentId": {
      "description": "Retarget to this segment (see list_segments)",
      "type": "string"
    },
    "contactIds": {
      "description": "Retarget to these specific contact IDs",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "tagIds": {
      "description": "Retarget to contacts with these tag IDs",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "sendToAll": {
      "description": "Retarget to all subscribed contacts in the workspace",
      "type": "boolean"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "campaignId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪pause_campaign(campaignId, apiKey)

Pause a sending campaign. Already-sent messages are unaffected; remaining sends halt.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "campaignId": {
      "type": "string",
      "description": "Campaign ID"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "campaignId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪resume_campaign(campaignId, apiKey)

Resume a paused campaign.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "campaignId": {
      "type": "string",
      "description": "Campaign ID"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "campaignId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪duplicate_campaign(campaignId, name, audienceIds, segmentId, contactIds, ...)

Duplicate a campaign (template, content, and settings) as a new draft — works on sent campaigns too, so this is the way to re-use a past campaign's design. Optionally rename and retarget in the same call (exactly ONE of audienceIds / segmentId / contactIds / tagIds / sendToAll). NOTE: without retargeting, the copy keeps the ORIGINAL campaign's recipients.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "campaignId": {
      "type": "string",
      "description": "Campaign ID to duplicate"
    },
    "name": {
      "description": "Name for the new draft (default: original name + ' (Copy)')",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "audienceIds": {
      "description": "Retarget the new draft to these audience IDs (see list_audiences)",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "segmentId": {
      "description": "Retarget the new draft to this segment",
      "type": "string"
    },
    "contactIds": {
      "description": "Retarget the new draft to these contact IDs",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "tagIds": {
      "description": "Retarget the new draft to contacts with these tag IDs",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "sendToAll": {
      "description": "Retarget the new draft to all subscribed contacts",
      "type": "boolean"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "campaignId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴delete_campaign(campaignId, apiKey)

Delete a draft campaign. Sent campaigns cannot be deleted (only archived).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "campaignId": {
      "type": "string",
      "description": "Campaign ID"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "campaignId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡preview_campaign_recipients(campaignId, apiKey)

Preview the recipient set for a campaign before sending. Returns count + sample list.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "campaignId": {
      "type": "string",
      "description": "Campaign ID"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "campaignId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪activate_automation(automationId, apiKey)

Activate an automation. New events matching its triggers will start enrolling contacts.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "automationId": {
      "type": "string",
      "description": "Automation ID"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "automationId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪pause_automation(automationId, apiKey)

Pause an automation. Existing enrollments freeze in place; no new contacts enroll.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "automationId": {
      "type": "string",
      "description": "Automation ID"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "automationId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_automation_stats(automationId, apiKey)

Get aggregate analytics for an automation: total enrollments, completed, exited, open/click rates per step.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "automationId": {
      "type": "string",
      "description": "Automation ID"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "automationId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_automation_enrollments(automationId, state, page, pageSize, apiKey)

List active and historical enrollments for an automation.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "automationId": {
      "type": "string",
      "description": "Automation ID"
    },
    "state": {
      "type": "string",
      "enum": [
        "active",
        "completed",
        "exited",
        "paused"
      ]
    },
    "page": {
      "description": "Page number",
      "type": "integer",
      "minimum": 1,
      "maximum": 9007199254740991
    },
    "pageSize": {
      "description": "Results per page (max 100)",
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "automationId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_workspaces(apiKey)

List workspaces the authenticated user has access to (owner or member).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_workspace(apiKey)

Get the current workspace (the one the API key belongs to).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_brand(apiKey)

Get the workspace's brand settings: colors, logo, fonts, and the DESIGN.md spec injected into AI generation prompts.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡update_brand(primaryColor, secondaryColor, logoUrl, fontFamily, designSpec, ...)

Update workspace brand settings. The designSpec field is a Markdown DESIGN.md document fed into AI generation system prompts — use it to encode voice, do/don't lists, and visual rules.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "primaryColor": {
      "description": "Hex color (e.g. '#4F46E5')",
      "type": "string"
    },
    "secondaryColor": {
      "description": "Hex color",
      "type": "string"
    },
    "logoUrl": {
      "type": "string",
      "format": "uri"
    },
    "fontFamily": {
      "description": "Body font family",
      "type": "string"
    },
    "designSpec": {
      "description": "Markdown DESIGN.md spec for AI generation",
      "type": "string"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡get_workspace_usage(apiKey)

Get the current month's send count, contact count, and plan limits.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_suppressions(reason, limit, offset, apiKey)

List suppressed email addresses (bounces, complaints, unsubscribes, manual).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "reason": {
      "type": "string",
      "enum": [
        "bounce",
        "complaint",
        "unsubscribe",
        "manual"
      ]
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡add_suppression(email, reason, notes, apiKey)

Add an email to the suppression list. Future sends to this address will be blocked.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "reason": {
      "default": "manual",
      "type": "string",
      "enum": [
        "bounce",
        "complaint",
        "unsubscribe",
        "manual"
      ]
    },
    "notes": {
      "type": "string"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "email"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴remove_suppression(email, apiKey)

Remove an email from the suppression list. Use only when you've confirmed the recipient wants to receive mail again.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "email"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢list_webhooks(apiKey)

List configured outgoing webhooks (your endpoints that Send16 POSTs delivery events to). Outgoing webhooks are a plan feature.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡create_webhook(name, url, events, enabled, apiKey)

Register an outgoing webhook endpoint. Send16 POSTs event JSON to this URL with an HMAC-SHA256 signature. Outgoing webhooks are a plan feature.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 255,
      "description": "A label for this endpoint"
    },
    "url": {
      "type": "string",
      "format": "uri",
      "description": "HTTPS endpoint to receive events"
    },
    "events": {
      "minItems": 1,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "contact.created",
          "contact.updated",
          "contact.deleted",
          "contact.subscribed",
          "contact.unsubscribed",
          "campaign.sent",
          "campaign.completed",
          "email.delivered",
          "email.opened",
          "email.clicked",
          "email.bounced",
          "email.complained",
          "form.submitted"
        ]
      },
      "description": "Event types to subscribe to"
    },
    "enabled": {
      "description": "Whether the endpoint is active (default true)",
      "type": "boolean"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "name",
    "url",
    "events"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴delete_webhook(webhookId, apiKey)

Delete an outgoing webhook endpoint.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "webhookId": {
      "type": "string",
      "description": "Webhook ID"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "webhookId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪regenerate_webhook_secret(webhookId, apiKey)

Rotate the HMAC signing secret for an outgoing webhook endpoint. Returns the new secret once.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "webhookId": {
      "type": "string",
      "description": "Webhook ID"
    },
    "apiKey": {
      "description": "Send16 API key (overrides SEND16_API_KEY env var)",
      "type": "string"
    }
  },
  "required": [
    "webhookId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet79 Tools
verifiziertVersion nicht aufgezeichnet79 Tools