MCP App Store
by KeenEthics

Overview

The Attentive MCP server connects your Attentive account to Claude and other AI assistants. Marketers can build, launch, and analyze messaging programs by describing what they want in plain language. Available channels and features depend on your Attentive account and enabled capabilities. If you manage more than one account, you can switch between the Attentive accounts you have access to. The MCP server instructs AI assistants to request your confirmation before creating or changing content, scheduling sends, or changing live programs. Key features: Campaigns: Create campaigns and message groups, write SMS, RCS, push, and email content, and schedule, pause, or resume sends. Journeys: Build automated journeys from templates or supported triggers. Add and edit steps and branches, and publish, pause, or archive journeys. Segments: Create and update audience segments from your account's subscriber and product attributes, and check segment sizes before you send. Email design: Create and edit email templates, apply brand kit styles and fonts, and use your existing brand assets. Copy generation: Draft message copy that follows your brand voice settings or guidance you provide, and create tracked short links. Reporting: Query campaign and journey performance using the metrics available for your account.

Tools

add_brand_asset

ChatGPT
Adds an image to the company's Brand Asset Library from a public Shopify CDN or Google Drive link; Drive files must be shared with "Anyone with the link". The image must be a PNG, JPEG or GIF of at most 5 MB. Each call creates a new asset, even for the same image; repeated uploads are not deduplicated. Check list_brand_assets before retrying. Returns the created asset and a link to the Brand Asset Library in the Attentive UI.

add_journey_node

ChatGPT
Add a new node to the journey graph (e.g., DELAY, SEND_MESSAGE, SEND_EMAIL, BRANCHING_ROOT, EXPERIMENT, SAVE_USER_ATTRIBUTE). Call get_journey_configuration first to learn which node types are allowed (allowedSteps). Specify the parent node to attach it after; the correct insertion point is resolved automatically. Edits the journey's draft revision; call create_journey_draft first if it has none. For a BRANCHING_ROOT also pass dimension and branches — selections are filled in from the journey configuration, and update_journey_branch can refine them afterwards. For a SAVE_USER_ATTRIBUTE node, add it here, then configure which attribute/value to set via update_journey_node using the IDs returned by list_user_attributes.

archive_journey

ChatGPT
Archive a draft or paused (inactive) journey. Archived journeys are removed from the active list but their performance stays viewable, and they can be restored at any time with unarchive_journey. A live (active) journey must be paused with pause_journey before it can be archived.

create_campaign

ChatGPT
Create a campaign shell (SMS, email, push, or RCS). Returns campaignId, messageGroupId, and messageId. For email campaigns, optionally provide a templateId to pre-populate the message with template content. Set isRecurring to create a recurring SMS, RCS, or email campaign.

create_campaign_message

ChatGPT
Add an A/B test variant to an existing message group, using the group's channel. For SMS and RCS, provide body. For push, provide pushDescription (required), and optionally pushTitle. For email, omit content fields to add a design variant (edit it with update_email_message), or provide emailSubjectLine and optionally emailPreviewText for a subject line test. Adding a variant to a one-time message group turns it into an A/B test. For a message group that uses Send Time AI, the A/B test sends to the full audience instead of picking a winner. To test a specified send time against Send Time AI, set sendTimeAiVariant instead of content fields. Send-time experiment message groups take only a Send Time AI variant, and recurring campaigns take no variants.

create_campaign_message_group

ChatGPT
Add a draft SMS, email, push, or RCS message group to an existing campaign. Not available in recurring campaigns. Returns the created group, including message IDs. CAMPAIGN_MESSAGE_GROUP_TYPE_ONE_TIME creates one message. CAMPAIGN_MESSAGE_GROUP_TYPE_EXPERIMENT creates two content A/B test variants; additional variants can be added with create_campaign_message. CAMPAIGN_MESSAGE_GROUP_TYPE_SEND_TIME_EXPERIMENT creates two send-time variants with shared content and default send times; only the primary message is editable. Change send times with update_campaign_message_group, which creates or removes send-time variant messages so there is one per send time. This tool does not send messages.

create_email_template

ChatGPT
Create a new email template. Set contentMode to 'html' (default) to provide raw HTML via htmlContent or htmlContentUrl, or 'json' to provide BEE editor JSON via jsonContent. To create a template based on an existing one, first use get_email_template with includeJsonContent=true to get the JSON, modify it, then pass it here with contentMode='json'.

create_journey

ChatGPT
Create a new journey from exactly one source: a templateId from list_journey_templates, a triggerId from list_journey_triggers, or a customEventType from list_journey_triggers for a custom event that does not have a trigger yet. Creating from a custom event trigger also requires eligibleSubscriptionType (TYPE_MARKETING or TYPE_TRANSACTIONAL), and its trigger is created or reused automatically; a created trigger is always named after its custom event. name and description only apply to the journey. Returns the new journey details including journeyId, draftRevisionId, and triggerCreated.

create_journey_draft

ChatGPT
Create a new draft revision for a published journey by cloning the published (or specified) revision. This is equivalent to clicking "Edit" or "Turn On" in the UI on a published journey. The new revision has its own node and message ids, so call get_journey_graph afterwards to read them — ids from the revision it was cloned from will not resolve. Journeys already in draft state do not need this: the editing tools work directly on the existing draft.

create_segment

ChatGPT
Create a new segment from a search definition.

delete_campaign

ChatGPT
Delete a campaign by ID.

delete_campaign_message

ChatGPT
Remove a message from a message group. Use this to remove an A/B test variant. Removing one of the two variants of a draft A/B test or send time test turns it back into a one-time message group, as in Attentive UI, when the company has that enabled. For a send time test against Send Time AI, removing the Send Time AI variant keeps the specified send time, and removing the specified variant keeps Send Time AI. Otherwise, to go back to a single message, delete the message group and create a new one. Not available in recurring campaigns.

delete_campaign_message_group

ChatGPT
Delete a message group from a campaign. Not available in recurring campaigns.

delete_journey

ChatGPT
Permanently delete an unpublished (draft) journey. This cannot be undone. Only journeys that have never been published can be deleted; published or live journeys must be archived instead.

delete_journey_node

ChatGPT
Remove a node from the journey graph. Edits the journey's draft revision; call create_journey_draft first if it has none.

delete_segment

ChatGPT
Delete a segment.

generate_copy

ChatGPT
Generate AI-powered text suggestions for marketing messages. Provide a prompt describing the desired content, and receive multiple text options. Supports style adjustments like adding emojis, urgency, or making text shorter/funnier.

get_brand_voice_settings

ChatGPT
Get the company's AI brand voice settings: tone keywords, excluded words, emoji frequency, all-caps usage, urgency, product-title casing, and target message length (character/word/emoji/all-caps counts). Read these before drafting or planning email or SMS copy so generated content matches the brand voice.

get_campaign

ChatGPT
Get detailed campaign info by ID, including message groups and messages.

get_campaign_message_group

ChatGPT
Get a campaign message group by ID, including its status, schedule, and A/B test variants.

get_campaign_metrics

ChatGPT
Get SMS, email, or push campaign performance metrics for a company over a date range (defaults to the last 30 days). Returns query-wide aggregate values and one page of grouped rows, broken down by campaign, message group, or variant. SMS returns delivered, clicks, click rate, conversions, conversion rate, revenue, AOV, revenue per send, unsubscribes, unsubscribe rate, and fatigues. Email returns sends, delivered, unique and total opens and open rates, unique and total clicks and click rate, conversions, conversion rate, revenue, AOV, revenue per send, unsubscribes, unsubscribe rate, hard bounces, hard bounce rate, and spam reports. Push returns delivered, clicks, click rate, conversions, conversion rate, revenue, AOV, revenue per send, unsubscribes, and unsubscribe rate. These figures come from aggregated reporting data and may differ slightly from the realtime stats shown on campaign pages. To retrieve another page, pass pageInfo.endCursor as after, pass the previous response dateRange as startDate and endDate, and keep campaignName, campaignId, channel, and groupBy unchanged. Continue until pageInfo.hasNextPage is false. Optionally filter by campaign name or campaign ID.

get_creative

ChatGPT
Get detailed creative info by ID, including status, type, template config, display rules, and related resources.

get_email_branding_styles

ChatGPT
Get the company's email brand kit styles (buttons, headings, paragraphs, dividers, images, rows, spacers, titles, and template-wide defaults). Use initialized=false to detect a company that has never customized brand styles.

get_email_template

ChatGPT
Get details of a specific email template by its GraphQL ID. Returns template name, subject, preview/content URLs, and optionally the full JSON content for editing.

get_journey

ChatGPT
Get detailed information for a single journey by ID, including name, state, trigger, tags, schedules, and category.

get_journey_branch

ChatGPT
Read how a branching node is currently configured: the dimension it tests, each branch's conditions with a readable label and node id, the steps under each branch, and the selection schemas for that dimension. Call this before update_journey_branch to edit a branch without dropping the others or the steps beneath them.

get_journey_configuration

ChatGPT
Read the configuration options available for a journey: which node types can be added/copied/moved (allowedSteps), and the valid branching dimensions for its trigger (each with its dimensionValue, branch count limits, and required selection schemaTypes). Call this before adding nodes or configuring branches to discover valid values for this specific journey/trigger instead of guessing.

get_journey_graph

ChatGPT
Get a summarized view of a journey's graph structure, including all steps (triggers, delays, messages, branches, experiments) with message text content. Filters out internal structural nodes for a clean readable flow. Returns the draft revision by default, whose node ids are the ones the journey write tools accept; revisionKind reports which revision was read.

get_journey_message

ChatGPT
Get the content of a journey message by its GraphQL message ID. Returns the message body text (SMS/RCS) or subject/preheader (email).

get_message

ChatGPT
Get a message by ID, including its content. Works for campaign and journey messages alike — for a campaign message the ID comes from get_campaign_message_group, for a journey message from get_journey_graph.

get_revision_settings

ChatGPT
Read a journey revision's settings, including entry frequency (eligibilityDurationSeconds and eligibilityDurationUnits). Defaults to the draft revision if no revisionId is specified.

get_segment

ChatGPT
Get detailed segment info by ID.

get_segment_counts

ChatGPT
Get subscriber counts for a segment, broken down by channel with fatigue information.

get_user

ChatGPT
Get the Attentive user and company information associated with the current session

list_brand_assets

ChatGPT
List brand assets (images, folders) for a company.

list_campaigns

ChatGPT
List campaigns for a company with optional name, status, and recurring filters, and pagination.

list_creatives

ChatGPT
List creatives for a company with optional search, status filter, type filter, and pagination.

list_email_brand_kit_compatible_fonts

ChatGPT
Returns the company's selected brand fonts in the exact shape the email brand kit form persists. Use a fonts[].fontFamily value verbatim as the fontFamily field of an EmailBrandingStylesInput module (button, paragraph, h1, h2, h3) or as general.defaultFont. Use a fonts[].weights[].fontWeight value verbatim as the fontWeight field of the same module. Empty fonts means the company has not configured brand fonts.

list_email_templates

ChatGPT
List email templates for the current company. Supports filtering by name and template type, with cursor-based pagination. Returns template names, subjects, preview URLs, and IDs for use with get_email_template.

list_journey_templates

ChatGPT
List available journey templates that can be used when creating a new journey. Templates provide pre-built journey flows for common use cases. Filter by language or channel (SMS, EMAIL, MULTI, PUSH).

list_journey_triggers

ChatGPT
List available journey triggers that can be used when creating a new journey with create_journey. Returns existing journey triggers, identified by their "id", as well as custom events that do not yet have a trigger, whose "id" is null and which are identified by their "customEventType" instead.

list_journeys

ChatGPT
List journeys for the company. Returns a paginated, summarized list of journeys (journeyId, name, description, state, triggerId, category, lastUpdated, tag display names). Supports filtering by status (LIVE, INACTIVE, DRAFT), trigger ID, and default flag. Use get_journey for full details on a specific journey.

list_metrics

ChatGPT
List analytics metrics for this company from the metrics catalog. Returns each metric's ID (for query_metrics), name, description, data type, domain, and dimensions (including date granularities). Call before query_metrics. Optional metricIds: filter to specific metrics and receive commonDateGranularities — the date granularities valid for a single batch query_metrics call (intersection across all listed metrics; matches metrics-api validation).

list_product_attribute_values

ChatGPT
List the real values available for a product attribute (product names, categories, tags, colors, brands, sizes, collections, options, sales channels). Use it to fill a DYNAMIC_MULTI_SELECT branch selection — product branching needs the company's actual values, which cannot be guessed. Supports search and paging.

list_segment_subscribers

ChatGPT
List all subscribers in a segment. Returns up to 20 subscribers.

list_segments

ChatGPT
List segments for a company with filtering, search, and pagination.

list_user_attributes

ChatGPT
List the company's custom user attributes and their allowed values. Pass a searchTerm to find a specific attribute by name (recommended when there are many attributes). Use this to discover the IDs required to configure a SAVE_USER_ATTRIBUTE journey node or a CUSTOM_USER_PROPERTY_TYPE branch: each attribute returns userAttributeId, userAttributeName, the raw propertyType, and a branchPropertyType (the value to use in a branch selection), and each enumerated value returns userAttributeValueId and userAttributeValueName. For a branch, pass userAttributeId as the selection's userProperty.property and branchPropertyType as its propertyType. For a SAVE_USER_ATTRIBUTE node, pass the four userAttribute* fields to update_journey_node.

list_user_companies

ChatGPT
List companies which the current user belongs to with optional search filtering and pagination. Use this to find exact company IDs before company-scoped work.

move_journey_node

ChatGPT
Move a node to a new position in the journey graph by specifying a new parent node. Edits the journey's draft revision; call create_journey_draft first if it has none.

pause_campaign_send

ChatGPT
Pause a campaign send. Pausing a specific message group will also pause all subsequent groups.

pause_journey

ChatGPT
Pause (deactivate) a live journey so it stops enrolling and sending to subscribers. The journey stays published and can be reactivated later with resume_journey. By default, subscribers already moving through the journey are allowed to finish; set evictSubscribers to remove them immediately. This affects real subscribers — confirm intent before calling.

publish_journey

ChatGPT
Publish a journey to make it live: applies the current draft revision and starts enrolling and sending to subscribers. Use this to launch a new journey or to apply draft edits to an existing one. This affects real subscribers — confirm intent before calling.

query_metrics

ChatGPT
Query analytics metrics for this company over a date range. Returns aggregate totals and, if groupByTime or groupByDimensions is set, all grouped rows (the server paginates metricsTable in pages of 1000 edges until complete; paginationPagesFetched reports how many GraphQL calls were used). Use list_metrics first to discover valid metric IDs; when batching multiple metrics with groupByTime, every metric must support that granularity on the date dimension (call list_metrics with metricIds to get commonDateGranularities). IMPORTANT: Some metrics (e.g. creative_impressions_v2, _v2 metrics) require a dimension grouping to return non-null aggregates — add groupByDimensions: ["creative_id"] if aggregates are null. Check aggregateErrors in the response to understand why any metric returned null.

resume_campaign_send

ChatGPT
Resume a paused campaign send. Only works on campaigns with a paused status.

resume_journey

ChatGPT
Resume (reactivate) a previously paused journey so it starts enrolling and sending to subscribers again. This affects real subscribers — confirm intent before calling.

schedule_campaign_send

ChatGPT
Schedule a campaign send. Scheduling also resumes any paused message groups in the campaign. The campaign must be fully configured with message groups and messages before scheduling.

switch_company

ChatGPT
Sets the company ID for the current user session. Subsequent tool calls will be scoped to the ID of the selected company.

unarchive_journey

ChatGPT
Restore a previously archived journey back to the active list. The journey returns to the state it had before being archived.

update_campaign

ChatGPT
Update a campaign name or reorder its message groups. Message groups in recurring campaigns cannot be reordered.

update_campaign_message_group

ChatGPT
Update a message group's name, scheduling, smart sending, audience segments, or experiment settings. Supports content A/B tests, send-time experiments, and Send Time AI. Supports partial updates. In recurring campaigns only the name and audience can change; set the schedule with set_campaign_recurring_schedule.

update_email_branding_styles

ChatGPT
Persist the company's email brand kit styles (buttons, headings, paragraphs, dividers, images, rows, spacers, titles, and template-wide defaults). Replaces the entire styles tree — first call get_email_branding_styles to read the current values, modify what you need to change, then pass the full result here. When picking fontFamily / fontWeight values, use list_email_brand_kit_compatible_fonts. Returns the persisted styles on success. Field-level validation matches the backend (hex colors, 0px-60px padding, 0px-99px letter spacing, 120%/150%/180%/200% line heights, 100-900 font weights).

update_email_message

ChatGPT
Update an email message's subject, preheader, sender info, and body content. Works for campaign and journey messages alike. Provide content via templateId (applies an existing email template), jsonContent (BEE editor JSON), or htmlContent (raw HTML). Only one content source can be used at a time. Editing a message leaves it in draft. For a journey message prefer update_journey_message, which targets the draft revision the API will accept. Use update_sms_message for SMS, update_rcs_message for RCS, and update_push_message for push.

update_email_template

ChatGPT
Update an existing email template's name and/or content. Set contentMode to 'html' (default) to provide raw HTML via htmlContent or htmlContentUrl, or 'json' to provide BEE editor JSON via jsonContent. To modify a template, first use get_email_template with includeJsonContent=true to get the current content, then pass the updated content here.

update_journey_branch

ChatGPT
Configure a branching node's conditions: what to branch on, and the condition for each branch. Anything the journey's configuration can supply — comparators, currencies, option defaults — is filled in automatically, so pass only the parts that matter. Call get_journey_configuration for the valid dimensions, and get_journey_branch to read the existing branch expression node ids and their selections before editing. Refuses changes that would orphan steps already placed under a branch.

update_journey_message

ChatGPT
Update the content of a message on a journey, identified by its journey and node rather than by message ID - Always edits the draft revision, which is the only editable one; call create_journey_draft first if the journey has none. The published revision is untouched until publish_journey - For SMS, RCS and push: update body. For email: update subject, preheader, and optionally the body via templateId (from list_email_templates), jsonContent (BEE editor JSON) or htmlContent (raw HTML) - Fields that are not provided keep their current values - Editing a message leaves it in draft

update_journey_metadata

ChatGPT
Update a journey's name, description, or category. Does not modify the journey graph.

update_journey_node

ChatGPT
Update a node's parameters in the journey graph. Use this to change delay durations, message content, branch conditions, experiment settings, etc. Edits the journey's draft revision; call create_journey_draft first if it has none.

update_push_message

ChatGPT
Update a push message's name, title, description and open action (home screen or deep link URL) - Works for campaign and journey messages alike, and for A/B test variants - Fields that are not provided keep their current values - Editing a message leaves it in draft - For a journey message prefer update_journey_message, which targets the draft revision the API will accept - Campaigns: for send time experiment message groups, only update the composeMessage associated with the mainCampaignMessageMember - Use update_sms_message for SMS, update_rcs_message for RCS, and update_email_message for email

update_rcs_message

ChatGPT
Update an RCS message's name, content, suggestion chips and SMS/MMS fallback - An RCS message holds one piece of content: plain text, a single rich card, or a carousel of cards. Set content.type to pick which - Card layout (alignment, orientation, carousel width, media height) is not configurable and is carried over from the message - Fields that are not provided keep their current values, so changing only the fallback or the name leaves the content intact - Editing a message leaves it in draft - Works for campaign and journey messages alike, and for A/B test variants - For a journey message prefer update_journey_message, which targets the draft revision the API will accept - Use update_sms_message for SMS, update_push_message for push, and update_email_message for email

update_revision_settings

ChatGPT
Configure a journey revision's entry frequency — how often a subscriber can re-enter the journey. For example, "once every 7 days" would be eligibilityDurationSeconds=604800, eligibilityDurationUnits=DAYS. Entry frequency belongs to a revision, and only the draft revision can be edited; call create_journey_draft first if the journey has none.

update_segment

ChatGPT
Update an existing segment.

update_sms_message

ChatGPT
Update an SMS/MMS message's name, body, media and short links - Works for campaign and journey messages alike, and for A/B test variants - Fields that are not provided keep their current values - Editing a message leaves it in draft - For a journey message prefer update_journey_message, which targets the draft revision the API will accept - Campaigns: for send time experiment message groups, only update the composeMessage associated with the mainCampaignMessageMember - Use update_rcs_message for RCS, update_push_message for push, and update_email_message for email

add_journey_node

Claude

archive_journey

Claude

create_campaign

Claude

create_campaign_message

Claude

create_campaign_message_group

Claude

create_email_template

Claude

create_journey

Claude

create_journey_draft

Claude

create_segment

Claude

delete_campaign

Claude

delete_campaign_message

Claude

delete_campaign_message_group

Claude

delete_journey

Claude

delete_journey_node

Claude

delete_segment

Claude

generate_copy

Claude

get_campaign

Claude

get_campaign_message_group

Claude

get_campaign_metrics

Claude

get_creative

Claude

get_email_branding_styles

Claude

get_email_template

Claude

get_journey

Claude

get_journey_branch

Claude

get_journey_configuration

Claude

get_journey_graph

Claude

get_journey_message

Claude

get_message

Claude

get_revision_settings

Claude

get_segment

Claude

get_segment_counts

Claude

get_user

Claude

list_brand_assets

Claude

list_campaigns

Claude

list_creatives

Claude

list_email_brand_kit_compatible_fonts

Claude

list_email_templates

Claude

list_journey_templates

Claude

list_journey_triggers

Claude

list_journeys

Claude

list_metrics

Claude

list_product_attribute_values

Claude

list_segment_subscribers

Claude

list_segments

Claude

list_user_attributes

Claude

list_user_companies

Claude

move_journey_node

Claude

pause_campaign_send

Claude

pause_journey

Claude

publish_journey

Claude

query_metrics

Claude

resume_campaign_send

Claude

resume_journey

Claude

schedule_campaign_send

Claude

switch_company

Claude

unarchive_journey

Claude

update_campaign

Claude

update_campaign_message_group

Claude

update_email_branding_styles

Claude

update_email_message

Claude

update_email_template

Claude

update_journey_branch

Claude

update_journey_message

Claude

update_journey_metadata

Claude

update_journey_node

Claude

update_push_message

Claude

update_rcs_message

Claude

update_revision_settings

Claude

update_segment

Claude

update_sms_message

Claude

Capabilities

Writes

Similar Apps