Skip to content

Connectors · Email & messaging

Constant Contact MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Constant Contact and the rest of your systems. It gives your agent 115 Constant Contact actions (61 reads, 39 writes and 15 that wait for a confirmation) and holds the Constant Contact credential itself, so the agent never does. It paces Constant Contact's limits and records every call. Connecting Constant Contact needs your own Constant Contact OAuth app and one admin sign-in.

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

claude mcp add --transport http actionlake https://connect.actionlake.com/mcp
the first call
do {  action: "constant_contact.account.get",  intent: "check which Constant Contact account is connected"}# Get account summary · read · 1 upstream call
  • 115actionsin one signed file
  • 61readlook, never change
  • 39writecreate and update
  • 15wait for a yesdestructive, confirmed first

Set up

Connect Constant Contact in three steps.

  1. 01

    Add actionlake to Claude.

    Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.

    https://connect.actionlake.com/mcp
  2. 02

    Connect Constant Contact.

    OAuth 2.0, authorization code with PKCE. You register your own OAuth app with Constant Contact, an admin signs in once, and you paste the app's client id and secret and the tokens from that sign-in; actionlake renews the access token from then on. actionlake stores what you paste write-only, sealed under your tenant's key.

    Before the first sign-in, Constant Contact needs an OAuth app of your own, registered in its developer portal. actionlake has no Constant Contact app to lend you.

    • access_tokenAccess token from one sign-in with your own OAuth app
    • refresh_tokenRefresh token from the same sign-in; the access token is renewed from it
    • client_idConstant Contact app API key (client id)
    • client_secretConstant Contact app secret
    account { op: "connections.requirements", service: "constant_contact" }
    # free: exactly what to paste, and what is found for you
  3. 03

    Make the first call. Check before a write.

    Ask in plain words; Claude picks the action. Before anything changes, check validates the call and prices it, for free.

    do    { action: "constant_contact.account.get" }# get account summary · read · 1 upstream callcheck { action: "constant_contact.events.create", input: { … } }# free: inputs, permissions, cost and confirmations, nothing sent

Constant Contact at a glance

Sign-in
OAuth 2.0, authorization code with PKCE. You register your own OAuth app with Constant Contact, an admin signs in once, and you paste the app's client id and secret and the tokens from that sign-in; actionlake renews the access token from then on.
You provide
access_tokenrefresh_tokenclient_idclient_secret
Limits we pace to
4 calls a second and 10,000 a day, per connection
API covered
Constant Contact V3 API API v3api.cc.email/v3
Built from
Constant Contact's documentation, read 20 September 2026developer.constantcontact.comdeveloper.constantcontact.com
Service file
Version 1.0.0, signed (Ed25519)
Cached reads
61 of 61 reads, for up to an hour; a write clears what it affects
Ready-made plans
8 in the store
Shared entities
4, so ask can line Constant Contact up with your other systems
Data
Processed and stored in Sydney, Australia. No US region yet

Capabilities

What an AI agent can do in Constant Contact.

115 actions in 8 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

  • 61readlook, never change
  • 39writecreate and update
  • 15destructivewait for a confirmation
  1. Contacts

    32

    14 read · 13 write · 5 destructive

    List contacts · List tags · List contact lists · Create a contact

  2. Reports

    22

    22 read · 0 write · 0 destructive

    List email campaign summaries · Get a contact's activity details · Get a contact's activity summary · Get an email bounces report

  3. Campaigns

    20

    9 read · 7 write · 4 destructive

    List email campaigns · Create an email campaign · Get an email campaign · Rename an email campaign

  4. Bulk

    12

    2 read · 4 write · 6 destructive

    Delete contacts in bulk · Delete tags in bulk · Delete contact lists in bulk · Import contacts from JSON

  5. Events

    11

    4 read · 7 write · 0 destructive

    List events · Create an event · Get an event · Update an event

  6. Account

    10

    5 read · 5 write · 0 destructive

    List the account user's privileges · List account email addresses · Get account summary · Get account physical address

  7. Automations

    4

    2 read · 2 write · 0 destructive

    List automations · Create an automation · Get an automation · Update an automation

  8. Social

    4

    3 read · 1 write · 0 destructive

    Create a social media post · List social network connections · List social media profiles · List social hashtag groups

Top actions

The Constant Contact API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 72 of Constant Contact's 72 action names are shared with at least one other connector, so an agent learns them once.

ActionWhat it doesEffectSame name in
constant_contact.events.listList eventsList the account's events with status, dates and registration URL.readcomm.event.list61 connectors
constant_contact.contacts.listList contactsList or search contacts by status, email, list, tag, segment or date range.readcrm.contact.list177 connectors
constant_contact.contact_tags.listList tagsList the account's contact tags, optionally with tagged-contact counts.readcrm.tag.list65 connectors
constant_contact.contact_lists.listList contact listsList the account's contact lists, optionally with membership counts.readcrm.contact_list.list34 connectors
constant_contact.events.createCreate an eventCreate a new event with default settings; name and times are optional query parameters.writecomm.event.create52 connectors
constant_contact.contacts.createCreate a contactCreate a contact with an email address, names, lists, tags, custom fields and consent.writecrm.contact.create161 connectors
constant_contact.contact_tags.createCreate a tagCreate a contact tag.writecrm.tag.create49 connectors
constant_contact.contacts.deleteDelete a contactDelete (unsubscribe and remove) a contact. Answers 204 with no body.destructivecrm.contact.delete147 connectors
constant_contact.contact_lists.createCreate a contact listCreate a contact list with a name and optional description.writecrm.contact_list.create29 connectors
constant_contact.email_campaigns.listList email campaignsList email campaigns with status and type, filterable by updated date.readcomm.campaign.list41 connectors
constant_contact.email_campaigns.createCreate an email campaignCreate an email campaign with its primary email campaign activity (from, subject, HTML content).writecomm.campaign.create38 connectors
constant_contact.segments.createCreate a segmentCreate a contact segment from a name and segment criteria (a JSON string).writecomm.audience_segment.create16 connectors

Try it

Prompts to paste into Claude.

Each one names the Constant Contact actions it will call, so you know what it reads and what it changes before you send it.

  1. Readread

    Find the Constant Contact contacts with no email address, so we can clean them up.

    callsconstant_contact.contacts.list

  2. Planread

    Build a performance digest for a recent email campaign in Constant Contact.

    callsconstant_contact.email_campaigns.getconstant_contact.campaign_activities.getconstant_contact.email_reports.sendsconstant_contact.email_reports.unique_opensconstant_contact.email_reports.clicks+3 more

  3. Planwrite

    Review how one contact has engaged and retag them in Constant Contact.

    callsconstant_contact.contacts.getconstant_contact.contact_reports.open_and_click_ratesconstant_contact.contact_reports.activity_detailsconstant_contact.contact_sms_engagement.listconstant_contact.taggings.bulk_add+1 more

  4. Writewrite

    Create an event in Constant Contact. Show me exactly what you will send before you save it.

    callsconstant_contact.events.create

  5. Across systemsread

    Which contacts are in both Constant Contact and HaloPSA, and how many are in only one of them?

    callsconstant_contact.contacts.listhalopsa.users.list

Across your systems

Constant Contact, joined to the rest of your business.

One ask fetches from Constant Contact and another system, joins the rows on the same customer on our side, and hands your agent the answer, not every row.

  • Which contacts are in both Constant Contact and HaloPSA, and how many are in only one of them?

    constant_contact.contacts.list + halopsa.users.list, on crm.contact · HaloPSA

  • Which contacts are in both Constant Contact and NetSuite, and how many are in only one of them?

    constant_contact.contacts.list + netsuite.views.contacts, on crm.contact · NetSuite

Also mapped by other connectorscrm.contact 192comm.event 47crm.tag 47crm.contact_list 22
ask
ask {  intent: "which contacts are in both Constant Contact and HaloPSA, and how many are in only one of them",  steps: [    { action: "constant_contact.contacts.list", as: "people", input: {}, limit: 100, max_pages: 5 },    { action: "halopsa.users.list", as: "people2", input: {}, limit: 100, max_pages: 5 },    { join: {        left: "people",        right: "people2",        on: "crm.contact",        group_by: "people.email",        select: ["people.email", "count(people2.id) as in_halopsa"]    } }  ]}
Example. Run it through check first: it validates the steps and prices them, and it is free.

The plan store

Ready-made plans for Constant Contact.

8 plans in the store. Install one and your agent runs it by name; the reply says which connections are still missing. A schedule can run a plan on a timetable. There are no triggers or webhooks, by design.

  1. Build a performance digest for a recent email campaign

    Use it when Someone asks how a specific Constant Contact email campaign performed.

    Effect
    read
    Steps
    8
    Needs
    campaign id and campaign activity id
    Install
    constant_contact-campaign-performance-digest
  2. Check in the registrants who paid for an event track

    Use it when Staff are on the door at an event and want the paid registrants for a track checked in together.

    A person decidesMark every paid registrant on this event track as checked in.

    Effect
    write
    Steps
    5 · loops
    Needs
    event id and track id
    Install
    constant_contact-event-checkin-sweep
  3. Export a segment of contacts and wait for the file

    Use it when Someone needs a contact export file for a segment and wants to be handed the finished job, not a ticket number.

    Effect
    write
    Steps
    6
    Needs
    segment id
    Install
    constant_contact-export-contacts-and-wait
  4. Resend a campaign to the contacts who never opened it

    Use it when A campaign has been sent and someone wants a second attempt aimed at the people who did not open it.

    A person decidesResend this campaign to every contact who did not open it.

    Effect
    write
    Steps
    6
    Needs
    campaign activity id and resend body
    Install
    constant_contact-resend-to-non-openers
  5. Review how one contact has engaged and retag them

    Use it when Someone asks whether a particular contact is still engaged and wants the answer recorded on the contact.

    Effect
    write
    Steps
    7
    Needs
    contact id, tag id, start, end and contact body
    Install
    constant_contact-contact-engagement-review
  6. Import new subscribers onto a welcome list and tag them

    Use it when A batch of new subscribers has been collected elsewhere and needs loading into Constant Contact with a welcome list and tag.

    Effect
    write
    Steps
    7
    Needs
    list id, tag id and import body
    Install
    constant_contact-onboard-new-subscribers
  7. Tag stale contacts on a list and remove them from it

    Use it when A mailing list has gone stale and someone wants the inactive contacts tagged and taken off it.

    A person decidesTag the stale contacts on this list and remove them from it.

    Effect
    destructive
    Steps
    6 · loops
    Needs
    list id, tag id, updated before, window start and window end
    Install
    constant_contact-list-hygiene-sweep
  8. Archive a segment's membership before deleting it

    Use it when A segment is no longer used and should be deleted, but its membership must be captured first.

    A person decidesDelete this segment permanently now that its membership has been exported.

    Effect
    destructive
    Steps
    6
    Needs
    segment id
    Install
    constant_contact-retire-old-segment
install a plan
account { op: "plans.install", slug: "constant_contact-campaign-performance-digest" }
# then ask for it by name; a schedule can run it on a timetable

Governance for Constant Contact

Destructive actions wait for a yes.

15 Constant Contact actions are destructive. These are all of them:

  • Delete a contactconstant_contact.contacts.delete
  • Delete a tagconstant_contact.contact_tags.delete
  • Delete a contact listconstant_contact.contact_lists.delete
  • Delete contacts in bulkconstant_contact.contacts.bulk_delete
  • Delete an email campaignconstant_contact.email_campaigns.delete
  • Delete tags in bulkconstant_contact.contact_tags.bulk_delete
  • Delete a segmentconstant_contact.segments.delete
  • Delete contact lists in bulkconstant_contact.contact_lists.bulk_delete
  • Delete a resend to non-openersconstant_contact.non_opener_resends.delete
  • Unschedule an email campaign activityconstant_contact.campaign_activity_schedules.delete
  • Delete a custom fieldconstant_contact.custom_fields.delete
  • Remove contacts from listsconstant_contact.list_memberships.bulk_remove
  • Delete an A/B testconstant_contact.campaign_activity_ab_tests.delete
  • Delete custom fields in bulkconstant_contact.custom_fields.bulk_delete
  • Remove tags from contactsconstant_contact.taggings.bulk_remove

A destructive action runs only with confirm: true. Under the human policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

doconstant_contact.contacts.deleteconfirm_policy: human

Delete a contact?

intent: the user asked me to delete a contact

run suspended · waiting for a named person · key constant-contact-agent cannot confirm itself
In the console, or from an emailed signed link.
a key for this connector
account {  op: "keys.create", name: "constant-contact-agent",  allowed_actions: ["constant_contact.*"], cap_calls: 2000,  confirm_policy: "human_for_writes",  approval_rules: [    { match: "constant_contact.contacts.delete", approver: "[email protected]" },    { match: "constant_contact.contact_tags.delete", approver: "[email protected]" },    { match: "constant_contact.contact_lists.delete", approver: "[email protected]" }  ]}
Illustrative. Scoped to Constant Contact only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

What Constant Contact costs on actionlake.

Every Constant Contact action is one upstream call, the only thing actionlake bills. Searching, check, cost, account and any call Constant Contact refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

  • 1upstream call per actionall 115 Constant Contact actions
  • 28actions pageeach page of a long list is one call
  • 61reads can be cacheda cache hit costs nothing
  • 100,000calls a month, freepaid plans from US$49 a month for 250,000

See pricing

Action index

Every Constant Contact action.

115 actions by area: the id your agent calls, what it does, and its effect.

Contacts32
  • constant_contact.contact_counts.getGet contact consent countsread
  • constant_contact.contact_id_xrefs.listCross-reference V2 and V3 contact idsread
  • constant_contact.contact_list_id_xrefs.listCross-reference V2 and V3 list idsread
  • constant_contact.contact_lists.createCreate a contact listwrite
  • constant_contact.contact_lists.deleteDelete a contact listdestructive
  • constant_contact.contact_lists.getGet a contact listread
  • constant_contact.contact_lists.listList contact listsread
  • constant_contact.contact_lists.updateUpdate a contact listwrite
  • constant_contact.contact_sms_engagement.listGet a contact's SMS engagement historyread
  • constant_contact.contact_tags.createCreate a tagwrite
  • constant_contact.contact_tags.deleteDelete a tagdestructive
  • constant_contact.contact_tags.getGet a tagread
  • constant_contact.contact_tags.listList tagsread
  • constant_contact.contact_tags.updateRename a tagwrite
  • constant_contact.contacts.createCreate a contactwrite
  • constant_contact.contacts.deleteDelete a contactdestructive
  • constant_contact.contacts.getGet a contactread
  • constant_contact.contacts.listList contactsread
  • constant_contact.contacts.resubscribeResubscribe a contactwrite
  • constant_contact.contacts.updateUpdate a contactwrite
  • constant_contact.contacts.upsertCreate or update a contact by emailwrite
  • constant_contact.custom_fields.createCreate a custom fieldwrite
  • constant_contact.custom_fields.deleteDelete a custom fielddestructive
  • constant_contact.custom_fields.getGet a custom fieldread
  • constant_contact.custom_fields.listList custom fieldsread
  • constant_contact.custom_fields.updateUpdate a custom fieldwrite
  • constant_contact.segments.createCreate a segmentwrite
  • constant_contact.segments.deleteDelete a segmentdestructive
  • constant_contact.segments.getGet a segmentread
  • constant_contact.segments.listList segmentsread
  • constant_contact.segments.renameRename a segmentwrite
  • constant_contact.segments.updateUpdate a segmentwrite
Reports22
  • constant_contact.campaign_activity_stats.listGet email campaign activity statsread
  • constant_contact.contact_reports.activity_detailsGet a contact's activity detailsread
  • constant_contact.contact_reports.activity_summaryGet a contact's activity summaryread
  • constant_contact.contact_reports.open_and_click_ratesGet a contact's open and click ratesread
  • constant_contact.email_campaign_stats.listGet email campaign statsread
  • constant_contact.email_campaign_summaries.listList email campaign summariesread
  • constant_contact.email_reports.bouncesGet an email bounces reportread
  • constant_contact.email_reports.clicksGet an email clicks reportread
  • constant_contact.email_reports.didnotopensGet an email did-not-opens reportread
  • constant_contact.email_reports.forwardsGet an email forwards reportread
  • constant_contact.email_reports.linksGet an email links reportread
  • constant_contact.email_reports.opensGet an email opens reportread
  • constant_contact.email_reports.optoutsGet an email opt-outs reportread
  • constant_contact.email_reports.sendsGet an email sends reportread
  • constant_contact.email_reports.unique_opensGet an email unique opens reportread
  • constant_contact.landing_page_reports.contact_opensGet a landing page contact opens reportread
  • constant_contact.landing_page_reports.unique_contact_addsGet a landing page unique contact adds reportread
  • constant_contact.landing_page_reports.unique_contact_clicksGet a landing page unique contact clicks reportread
  • constant_contact.landing_page_reports.unique_contact_opensGet a landing page unique contact opens reportread
  • constant_contact.landing_page_reports.unique_contact_sms_optinsGet a landing page unique contact SMS opt-ins reportread
  • constant_contact.landing_page_reports.unique_contact_updatesGet a landing page unique contact updates reportread
  • constant_contact.sms_campaign_summaries.listList SMS campaign summariesread
Campaigns20
  • constant_contact.campaign_activities.getGet an email campaign activityread
  • constant_contact.campaign_activities.test_sendSend a test emailwrite
  • constant_contact.campaign_activities.updateUpdate an email campaign activitywrite
  • constant_contact.campaign_activity_ab_tests.createCreate an A/B testwrite
  • constant_contact.campaign_activity_ab_tests.deleteDelete an A/B testdestructive
  • constant_contact.campaign_activity_ab_tests.getGet an A/B testread
  • constant_contact.campaign_activity_previews.getGet an email campaign activity previewread
  • constant_contact.campaign_activity_schedules.createSchedule an email campaign activitywrite
  • constant_contact.campaign_activity_schedules.deleteUnschedule an email campaign activitydestructive
  • constant_contact.campaign_activity_schedules.listGet an email campaign activity's scheduleread
  • constant_contact.campaign_activity_send_history.listGet an email campaign activity's send historyread
  • constant_contact.email_campaign_id_xrefs.listCross-reference V2 and V3 campaign idsread
  • constant_contact.email_campaigns.createCreate an email campaignwrite
  • constant_contact.email_campaigns.deleteDelete an email campaigndestructive
  • constant_contact.email_campaigns.getGet an email campaignread
  • constant_contact.email_campaigns.listList email campaignsread
  • constant_contact.email_campaigns.renameRename an email campaignwrite
  • constant_contact.non_opener_resends.createCreate a resend to non-openerswrite
  • constant_contact.non_opener_resends.deleteDelete a resend to non-openersdestructive
  • constant_contact.non_opener_resends.listGet resend-to-non-openers detailsread
Bulk12
  • constant_contact.activities.getGet bulk activity statusread
  • constant_contact.activities.listList bulk activity statusesread
  • constant_contact.contact_lists.bulk_deleteDelete contact lists in bulkdestructive
  • constant_contact.contact_tags.bulk_deleteDelete tags in bulkdestructive
  • constant_contact.contacts.bulk_deleteDelete contacts in bulkdestructive
  • constant_contact.contacts.bulk_exportExport contacts to a CSV filewrite
  • constant_contact.contacts.bulk_import_jsonImport contacts from JSONwrite
  • constant_contact.custom_fields.bulk_deleteDelete custom fields in bulkdestructive
  • constant_contact.list_memberships.bulk_addAdd contacts to listswrite
  • constant_contact.list_memberships.bulk_removeRemove contacts from listsdestructive
  • constant_contact.taggings.bulk_addAdd tags to contactswrite
  • constant_contact.taggings.bulk_removeRemove tags from contactsdestructive
Events11
  • constant_contact.event_registrations.getGet an event registrationread
  • constant_contact.event_registrations.listList event registrationsread
  • constant_contact.event_registrations.update_payment_statusUpdate event registration payment statuswrite
  • constant_contact.event_registrations.update_statusUpdate event registration statuswrite
  • constant_contact.event_tickets.check_inCheck in event ticketswrite
  • constant_contact.event_tickets.undo_check_inUndo event ticket check-inwrite
  • constant_contact.events.copyCopy an eventwrite
  • constant_contact.events.createCreate an eventwrite
  • constant_contact.events.getGet an eventread
  • constant_contact.events.listList eventsread
  • constant_contact.events.updateUpdate an eventwrite
Account10
  • constant_contact.account.getGet account summaryread
  • constant_contact.account.updateUpdate account detailswrite
  • constant_contact.account_company_logo.getGet account company logoread
  • constant_contact.account_company_logo.updateUpdate account company logowrite
  • constant_contact.account_emails.createAdd account email addresswrite
  • constant_contact.account_emails.listList account email addressesread
  • constant_contact.account_physical_address.createAdd account physical addresswrite
  • constant_contact.account_physical_address.getGet account physical addressread
  • constant_contact.account_physical_address.updateUpdate account physical addresswrite
  • constant_contact.account_user_privileges.listList the account user's privilegesread
Automations4
  • constant_contact.automations.createCreate an automationwrite
  • constant_contact.automations.getGet an automationread
  • constant_contact.automations.listList automationsread
  • constant_contact.automations.updateUpdate an automationwrite
Social4
  • constant_contact.social_connections.listList social network connectionsread
  • constant_contact.social_hashtag_groups.listList social hashtag groupsread
  • constant_contact.social_posts.createCreate a social media postwrite
  • constant_contact.social_profiles.listList social media profilesread

Questions

The Constant Contact MCP server, answered.

Is there a Constant Contact MCP server for Claude?

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 115 Constant Contact actions across contacts, reports, campaigns and bulk, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Constant Contact.

What do I need to connect Constant Contact?

Your own Constant Contact OAuth app, registered with Constant Contact (its client id and client secret), and the access and refresh tokens from one admin sign-in. actionlake has no Constant Contact app of its own, so this is not a one-step consent. actionlake renews the access token as it expires. The free call account { op: "connections.requirements", service: "constant_contact" } lists exactly what to paste.

Can an AI agent delete or change things in Constant Contact?

Only if its key allows it, and only with an explicit confirmation. 15 Constant Contact actions are destructive, including delete a contact, delete a tag and delete a contact list. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

Will an AI agent use up my Constant Contact API limit?

actionlake paces every call to the limits in the Constant Contact service file: 4 calls a second and 10,000 a day per connection. Repeated reads are answered from cache (61 Constant Contact actions can be), which never reaches Constant Contact.

What does a Constant Contact action cost?

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (28 Constant Contact actions page). Cache hits, searches, dry runs and calls Constant Contact refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

Which Constant Contact API does it cover?

The Constant Contact V3 API API v3 at api.cc.email/v3. It is built from Constant Contact's documentation as read on 20 September 2026. 115 actions in 8 areas, each one in the signed service file (version 1.0.0).

Can I combine Constant Contact with my other systems?

Yes. ask joins Constant Contact to HaloPSA or NetSuite on the same customer and returns the answer rather than every row. Constant Contact maps crm.contact, which 192 other connectors also map.

Does actionlake keep my Constant Contact data, and where?

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to an hour, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Constant Contact credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

Which AI clients can use it?

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

Give your agent Constant Contact today.

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.