{"name":"io.github.spruikco/send16-mcp","slug":"spruikco-send16-mcp","title":null,"description":"Email for AI agents: send mail, manage contacts, automations & webhooks. Zero-DNS first send.","url":"https://mcp.market/server/spruikco-send16-mcp","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"email","tags":["email"],"presence":{"score":26,"stars":0,"forks":0,"downloads_week":44,"last_push_at":"2026-07-19T18:26:57.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-09-27T12:26:07.807Z","last_ok_at":"2026-09-27T12:26:07.807Z","latency_ms":784},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/spruikco/send16-mcp","website":"https://send16.com","version":"0.5.8","remotes":[{"type":"streamable-http","url":"https://mcp.send16.com/mcp"}],"packages":[{"registryType":"npm","identifier":"send16-mcp","version":"0.5.8","transport":{"type":"stdio"},"environmentVariables":[{"description":"Your Send16 API key (sk_live_...), from https://send16.com/dashboard/developers","isRequired":true,"isSecret":true,"name":"SEND16_API_KEY"}]}],"tools":[{"name":"activate_automation","description":"Activate an automation. New events matching its triggers will start enrolling contacts.","write_action":false,"price_micros":0,"input_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#"}},{"name":"add_contacts_to_audience","description":"Add contacts (by ID) to an audience.","write_action":false,"price_micros":0,"input_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#"}},{"name":"add_convo_note","description":"Add a private internal note on a conversation. Notes are visible only to workspace members.","write_action":false,"price_micros":0,"input_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#"}},{"name":"add_domain","description":"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.","write_action":false,"price_micros":0,"input_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#"}},{"name":"add_suppression","description":"Add an email to the suppression list. Future sends to this address will be blocked.","write_action":false,"price_micros":0,"input_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#"}},{"name":"check_domain_health","description":"Check the DNS health of a specific domain, including DKIM, SPF, DMARC, and MX record verification status. Triggers a fresh DNS lookup.","write_action":false,"price_micros":0,"input_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#"}},{"name":"create_action","description":"Create an Action that maps an event name to a transactional template. Each matching event sends one email to the contact.","write_action":true,"price_micros":0,"input_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#"}},{"name":"create_audience","description":"Create a new audience.","write_action":true,"price_micros":0,"input_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#"}},{"name":"create_campaign","description":"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.","write_action":true,"price_micros":0,"input_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#"}},{"name":"create_contact","description":"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.","write_action":true,"price_micros":0,"input_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#"}},{"name":"create_topic","description":"Create a new subscription topic. Contacts opt into topics individually via the preference center.","write_action":true,"price_micros":0,"input_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#"}},{"name":"create_webhook","description":"Register an outgoing webhook endpoint. Send16 POSTs event JSON to this URL with an HMAC-SHA256 signature. Outgoing webhooks are a plan feature.","write_action":true,"price_micros":0,"input_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#"}},{"name":"delete_action","description":"Delete an Action.","write_action":true,"price_micros":0,"input_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#"}},{"name":"delete_audience","description":"Delete an audience (list). Contacts are not deleted — only the list and its memberships are removed.","write_action":true,"price_micros":0,"input_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#"}},{"name":"delete_campaign","description":"Delete a draft campaign. Sent campaigns cannot be deleted (only archived).","write_action":true,"price_micros":0,"input_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#"}},{"name":"delete_contact","description":"Delete a contact and all associated events. Irreversible.","write_action":true,"price_micros":0,"input_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#"}},{"name":"delete_topic","description":"Delete a subscription topic. All subscribers will be detached.","write_action":true,"price_micros":0,"input_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#"}},{"name":"delete_webhook","description":"Delete an outgoing webhook endpoint.","write_action":true,"price_micros":0,"input_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#"}},{"name":"design_email_template","description":"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.","write_action":true,"price_micros":0,"input_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#"}},{"name":"duplicate_campaign","description":"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.","write_action":false,"price_micros":0,"input_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#"}},{"name":"enroll_in_automation","description":"Manually enroll a contact in an active automation. The automation must be in 'active' status. Use send_event for event-driven enrollment.","write_action":false,"price_micros":0,"input_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#"}},{"name":"generate_email_from_url","description":"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.","write_action":true,"price_micros":0,"input_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#"}},{"name":"get_action","description":"Get a single Action with its trigger config and template binding.","write_action":false,"price_micros":0,"input_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#"}},{"name":"get_automation","description":"Get a single automation by ID, including its trigger, steps, and current status.","write_action":false,"price_micros":0,"input_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#"}},{"name":"get_automation_stats","description":"Get aggregate analytics for an automation: total enrollments, completed, exited, open/click rates per step.","write_action":false,"price_micros":0,"input_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#"}},{"name":"get_brand","description":"Get the workspace's brand settings: colors, logo, fonts, and the DESIGN.md spec injected into AI generation prompts.","write_action":false,"price_micros":0,"input_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#"}},{"name":"get_campaign_stats","description":"Get detailed performance statistics for a specific campaign including open rate, click rate, bounce rate, and delivery metrics.","write_action":false,"price_micros":0,"input_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#"}},{"name":"get_contact_health_score","description":"Get a contact's 0-100 health score based on recent engagement (opens, clicks, replies).","write_action":false,"price_micros":0,"input_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#"}},{"name":"get_contact_timeline","description":"Get a contact's full activity timeline: emails received, events fired, opens, clicks, automation enrollments, topic changes.","write_action":false,"price_micros":0,"input_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#"}},{"name":"get_convo","description":"Get a single conversation with its full thread of posts (incoming + outgoing).","write_action":false,"price_micros":0,"input_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#"}},{"name":"get_deliverability_status","description":"Get your workspace's deliverability summary — sending reputation, domain authentication status, and recent bounce/complaint health. (Deliverability Hub plan feature.)","write_action":false,"price_micros":0,"input_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#"}},{"name":"get_message","description":"Fetch a single message with its full event timeline (created → sent → delivered → opened → clicked → ...).","write_action":false,"price_micros":0,"input_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#"}},{"name":"get_message_events","description":"Get just the delivery event timeline for a message — no body or recipient details.","write_action":false,"price_micros":0,"input_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#"}},{"name":"get_template","description":"Get a single starter template by ID, including its EmailContent JSON.","write_action":false,"price_micros":0,"input_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#"}},{"name":"get_workspace","description":"Get the current workspace (the one the API key belongs to).","write_action":false,"price_micros":0,"input_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#"}},{"name":"get_workspace_usage","description":"Get the current month's send count, contact count, and plan limits.","write_action":false,"price_micros":0,"input_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#"}},{"name":"import_contacts","description":"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).","write_action":false,"price_micros":0,"input_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#"}},{"name":"list_actions","description":"List Actions. Actions fire a transactional template when a custom event arrives — Plunk-style 'event_name → template' pairings, simpler than full automations.","write_action":false,"price_micros":0,"input_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#"}},{"name":"list_audiences","description":"List audiences (lists). An audience is a static, manually-managed group of contacts.","write_action":false,"price_micros":0,"input_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#"}},{"name":"list_automation_enrollments","description":"List active and historical enrollments for an automation.","write_action":false,"price_micros":0,"input_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#"}},{"name":"list_automations","description":"List all automations in the workspace, including draft/active/paused status and trigger types.","write_action":false,"price_micros":0,"input_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#"}},{"name":"list_campaigns","description":"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.","write_action":false,"price_micros":0,"input_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#"}},{"name":"list_contacts","description":"List all contacts with optional filtering by subscription status and tag. Supports pagination.","write_action":false,"price_micros":0,"input_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#"}},{"name":"list_convos","description":"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.","write_action":false,"price_micros":0,"input_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#"}},{"name":"list_domains","description":"List all sending domains configured in your Send16 workspace, including their verification status and DNS records.","write_action":false,"price_micros":0,"input_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#"}},{"name":"list_inbox_counts","description":"Get unread/total counts per category and label for the inbox sidebar (newsletter, transactional, marketing, calendar, social, cold).","write_action":false,"price_micros":0,"input_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#"}},{"name":"list_messages","description":"List messages from the unified send log (transactional + campaign). Filter by recipient, sender, status, date range, or source.","write_action":false,"price_micros":0,"input_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#"}},{"name":"list_segments","description":"List dynamic segments. Segments compute their members from a filter expression at send time.","write_action":false,"price_micros":0,"input_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#"}},{"name":"list_suppressions","description":"List suppressed email addresses (bounces, complaints, unsubscribes, manual).","write_action":false,"price_micros":0,"input_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#"}},{"name":"list_templates","description":"List starter-gallery email templates available to every workspace.","write_action":false,"price_micros":0,"input_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#"}},{"name":"list_topics","description":"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.","write_action":false,"price_micros":0,"input_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#"}},{"name":"list_webhooks","description":"List configured outgoing webhooks (your endpoints that Send16 POSTs delivery events to). Outgoing webhooks are a plan feature.","write_action":false,"price_micros":0,"input_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#"}},{"name":"list_workspaces","description":"List workspaces the authenticated user has access to (owner or member).","write_action":false,"price_micros":0,"input_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#"}},{"name":"mark_convo_read","description":"Mark a conversation as read for the current viewer.","write_action":false,"price_micros":0,"input_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#"}},{"name":"pause_automation","description":"Pause an automation. Existing enrollments freeze in place; no new contacts enroll.","write_action":false,"price_micros":0,"input_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#"}},{"name":"pause_campaign","description":"Pause a sending campaign. Already-sent messages are unaffected; remaining sends halt.","write_action":false,"price_micros":0,"input_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#"}},{"name":"pre_send_review","description":"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.","write_action":true,"price_micros":0,"input_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#"}},{"name":"preview_campaign_recipients","description":"Preview the recipient set for a campaign before sending. Returns count + sample list.","write_action":false,"price_micros":0,"input_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#"}},{"name":"preview_segment","description":"Preview the contacts that match a segment without sending.","write_action":false,"price_micros":0,"input_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#"}},{"name":"regenerate_webhook_secret","description":"Rotate the HMAC signing secret for an outgoing webhook endpoint. Returns the new secret once.","write_action":false,"price_micros":0,"input_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#"}},{"name":"remove_contact_from_audience","description":"Remove a contact from an audience.","write_action":true,"price_micros":0,"input_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#"}},{"name":"remove_suppression","description":"Remove an email from the suppression list. Use only when you've confirmed the recipient wants to receive mail again.","write_action":true,"price_micros":0,"input_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#"}},{"name":"render_email_content","description":"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.","write_action":true,"price_micros":0,"input_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#"}},{"name":"resume_campaign","description":"Resume a paused campaign.","write_action":false,"price_micros":0,"input_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#"}},{"name":"schedule_campaign","description":"Schedule (or send immediately) an existing draft campaign to an audience/segment/topic.","write_action":false,"price_micros":0,"input_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#"}},{"name":"screener_decide","description":"Decide a pending screener conversation (first-time sender). 'allow' lets future emails through, 'reject' blocks, 'cold' marks as cold outreach.","write_action":false,"price_micros":0,"input_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#"}},{"name":"search_contacts","description":"Search contacts by email address or name. Returns matching contacts with their tags and subscription status.","write_action":false,"price_micros":0,"input_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#"}},{"name":"send_broadcast","description":"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.","write_action":true,"price_micros":0,"input_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#"}},{"name":"send_campaign_test","description":"Send a test email for an existing campaign to preview how it will look in recipients' inboxes.","write_action":true,"price_micros":0,"input_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#"}},{"name":"send_email","description":"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 `onboarding@send16.com` — the sandbox sender delivers with no DNS, but only to your own account email.","write_action":true,"price_micros":0,"input_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#"}},{"name":"send_event","description":"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>`.","write_action":true,"price_micros":0,"input_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#"}},{"name":"send_reply","description":"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.","write_action":true,"price_micros":0,"input_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#"}},{"name":"update_action","description":"Update an Action (toggle enabled, change template, change event name).","write_action":true,"price_micros":0,"input_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#"}},{"name":"update_brand","description":"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.","write_action":true,"price_micros":0,"input_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#"}},{"name":"update_campaign","description":"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.","write_action":true,"price_micros":0,"input_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#"}},{"name":"update_contact","description":"Update a contact's profile fields, custom fields, or subscription state.","write_action":true,"price_micros":0,"input_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#"}},{"name":"update_convo","description":"Update conversation status (open/closed/archived/snoozed) or assignee.","write_action":true,"price_micros":0,"input_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#"}},{"name":"update_topic","description":"Update a subscription topic (name, description, default).","write_action":true,"price_micros":0,"input_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#"}},{"name":"whoami","description":"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.","write_action":false,"price_micros":0,"input_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#"}}],"scan":{"score":83,"grade":"B","scanned_at":"2026-09-26T05:12:13.410Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-26T05:12:13.584Z","components":{"code":{"score":25,"max":25,"notes":["3 source files scanned"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1974ms"]},"poisoning":{"score":15,"max":15,"notes":["79 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 29 write-action tools with no auth"]},"maintenance":{"score":12,"max":15,"notes":["last push 68 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://mcp.send16.com/mcp","reachable":true,"authRequired":false,"latencyMs":1974,"serverInfo":{"name":"send16","version":"0.5.13"}}],"packages":[{"registryType":"npm","identifier":"send16-mcp","version":"0.5.8","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-07-12T09:31:37.834Z","repositoryUrl":"git+https://github.com/spruikco/send16-mcp.git","weeklyDownloads":44}],"repo":{"found":true,"owner":"spruikco","repo":"send16-mcp","archived":false,"pushedAt":"2026-07-19T18:26:57Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/172265380?v=4","ownerCreatedAt":"2024-06-10T10:29:50Z","license":"MIT"},"icon":{"url":"https://send16.com/favicon.ico","source":"site","width":256,"height":256},"presence":{"stars":0,"forks":0,"downloadsWeek":44,"license":"MIT","lastPushAt":"2026-07-19T18:26:57.000Z","score":26}}}},"grade_history":[],"reviews":[]}