sendfox_batch_ import_ contactsBulk import up to 1,000 contacts in one request (creates new ones, updates existing by email).
Bulk-import a batch of contacts, upsert people by email, draft a campaign and send it, then read back open, click and bounce rates — without opening the dashboard.
PopMCPSendFox
Every contact, list, campaign, automation, custom field, form and domain operation the agent can call, plus the account changes PopMCP can watch.
sendfox_batch_ import_ contactsBulk import up to 1,000 contacts in one request (creates new ones, updates existing by email).
sendfox_create_ contactCreate a contact, or update the existing one with that email (UPSERT by email).
sendfox_delete_ contactSoft-delete a contact and cancel any of their scheduled deliverables.
sendfox_get_ contactFetch a single contact by its numeric id.
sendfox_get_ contact_ activityGet a contact's email activity — paginated deliverables plus a contact-level engagement summary (opens, clicks).
sendfox_list_ contactsList contacts (100 per page).
sendfox_list_ unsubscribed_ contactsList contacts who have globally unsubscribed.
sendfox_unsubscribe_ contactGlobally unsubscribe a contact by email — they stop receiving all future emails.
sendfox_update_ contactUpdate a contact's name, list memberships, or custom fields.
sendfox_add_ automation_ emailAdd an email step to an automation.
sendfox_add_ contact_ to_ listAdd an EXISTING contact to a list (idempotent — no duplicate if already a member).
sendfox_create_ automationCreate an automation.
sendfox_create_ listCreate a new contact list.
sendfox_delete_ listSoft-delete a list.
sendfox_get_ automationGet an automation with its triggers, items (emails), and per-campaign stats.
sendfox_get_ listGet a list including its average open and click rates.
sendfox_list_ automationsList automations for the account.
sendfox_list_ contacts_ in_ listList the contacts that belong to a specific list.
sendfox_list_ listsList the account's contact lists.
sendfox_remove_ contact_ from_ listRemove a contact from a list (membership only — the contact is NOT deleted from the account).
sendfox_update_ listRename a contact list.
sendfox_create_ campaignCreate a campaign.
sendfox_get_ campaignGet a campaign's details (title, subject, content, status).
sendfox_get_ campaign_ statsGet a campaign's performance: sent count and open / click / bounce / unsubscribe / spam counts and rates.
sendfox_list_ campaignsList campaigns (100 per page) with status and timestamps.
sendfox_send_ campaignSend a draft campaign immediately.
sendfox_update_ campaignUpdate a DRAFT campaign (not yet sent).
sendfox_create_ contact_ fieldCreate a custom contact field.
sendfox_create_ formCreate a subscription form linked to one or more lists.
sendfox_list_ contact_ fieldsList the account's custom contact fields (20 per page).
sendfox_list_ domainsList the account's sender / whitelabel domains.
sendfox_list_ formsList subscription forms.
sendfox_get_ current_ userGet the authenticated SendFox user — id, name, email, current contacts_count and the plan's contact_limit.
sendfox_delete_ automationSoft-delete an automation and cancel all its scheduled deliverables.
sendfox_delete_ automation_ emailRemove one email from an automation.
sendfox_update_ automationUpdate an automation's title, trigger, or active status.
sendfox_update_ automation_ emailUpdate one email inside an automation.
sendfox_delete_ campaignDelete a DRAFT campaign (soft delete).
sendfox_create_ domainAdd a sender domain (creates the SendGrid whitelabel domain).
sendfox_delete_ contact_ fieldPermanently delete a custom contact field.
sendfox_delete_ domainRemove a sender domain (deletes it from SendGrid and soft-deletes locally).
sendfox_delete_ formSoft-delete a subscription form.
sendfox_get_ contact_ fieldGet a single custom contact field.
sendfox_get_ domainGet a sender domain including the DNS records needed to verify it.
sendfox_get_ formGet a single subscription form.
sendfox_update_ contact_ fieldRename a custom contact field's label (the name slug auto-regenerates).
sendfox_update_ formUpdate a form.
sendfox_validate_ domainTrigger DNS validation for a sender domain via SendGrid.
Credentials off one SendFox screen, then an endpoint your client signs into. Nothing to deploy, and nothing to install.
Paste your Personal access token into the connect form — no OAuth popup and no refresh cycle. The token is scoped to one SendFox account, so the connection is locked to that account's contacts, lists and campaigns.
••••••••••••3f7aSet the connection read-only for reporting, or full access with approval on writes so sending a campaign or globally unsubscribing a contact waits for a human. The rarer calls stay searchable.
Drop the PopMCP URL into Claude, ChatGPT, Codex or any other supported client. It signs in through PopMCP with OAuth, so your SendFox credential never leaves the server.
app.popmcp.com/mcp/…Ask for something harmless before you turn writes on. Once it comes back clean, widen the tool set or switch the connection to full access.
Which of last month's campaigns had the worst unsubscribe rate?
sendfox_list_campaignsok
Then just ask for the work
“Which of last month's campaigns had the worst unsubscribe rate?”
“Add these 400 webinar signups to the Q4 list without creating duplicates”
“Draft a campaign for the beta list announcing the new pricing page”
“Who's on the onboarding list but hasn't opened an email in 60 days?”
One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.
Add the PopMCP URL under Settings → Connectors and the tools appear in every chat.
The same endpoint, registered in the browser. Nothing to install on the machine you are working from.
Register PopMCP as a custom connector, then let ChatGPT read and update the account.
Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.
Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.
Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.
FAQ
What teams ask before putting SendFox behind an AI client.
No. SendFox's API requires a paid plan — Lifetime or Empire — so a free account can't connect. Once you're connected, get_current_user is the fastest sanity check: it returns the authenticated user plus the current contacts_count and the plan's contact_limit.
One field: a Personal access token, which you copy out of SendFox and paste once. There are no OAuth popups and no refresh cycle to keep alive. The token is scoped to a single SendFox account, so the connection can only ever see that account's contacts, lists, campaigns and automations.
Lists — create, rename, soft-delete, and add or remove a contact's membership — plus automations and the individual email steps inside them, custom contact fields, subscription forms, and sender domains. get_automation returns an automation's triggers, its email items and per-campaign stats in one call. create_domain adds a sender domain by creating the SendGrid whitelabel domain behind it.
No. create_contact upserts by email, so an address already in the account is updated rather than duplicated, and batch_import_contacts applies the same rule to as many as 1,000 contacts in a single request. add_contact_to_list is idempotent too, though it only works on a contact that already exists — create the person first. On reads, contacts and campaigns come back 100 per page and custom contact fields 20 per page, so a large account takes several calls to walk.
Only if you allow it. send_campaign delivers a draft immediately, which is why most teams keep approval required for writes, or run the connection read-only when they only want reporting. Also worth knowing: update_campaign edits drafts only, so once a campaign has gone out its content is fixed and the agent can only read it back with get_campaign and get_campaign_stats.
delete_contact is a soft delete, and it also cancels any deliverables already scheduled for that person; delete_list and delete_automation are soft deletes as well, and removing an automation cancels everything it had queued. delete_campaign applies to drafts only. unsubscribe_contact is global — that person stops receiving all future email from the account, not just one list — so if you only want someone off a single list, remove_contact_from_list drops the membership and leaves the contact in place. The exception is delete_contact_field, which removes a custom field permanently.
No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.
Any client that supports a remote Streamable HTTP MCP server — Claude Desktop, Claude Web, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.
Loading 48 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 33-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. You can switch a connection to the full catalog at any time.
A tool is something your AI calls — there are 48 here. A trigger is something PopMCP watches for you: 9 SendFox events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into SendFox.
Launch a hosted MCP endpoint for SendFox, keep tool access under control, and start testing real workflow prompts right away.