add_brand_asset
ChatGPTAdds 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
ChatGPTAdd 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
ChatGPTArchive 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
ChatGPTCreate 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
ChatGPTAdd 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
ChatGPTAdd 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
ChatGPTCreate 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
ChatGPTCreate 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
ChatGPTCreate 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
ChatGPTCreate a new segment from a search definition.
create_short_link
ChatGPTCreate a tracked short link for a message. A short link must exist before it can be referenced in body text: create it here, then pass it in the shortLinkProperties array of update_sms_message or update_rcs_message. Editing an existing short link is not supported — remove it and create a new one. Do not add global link tracking parameters to redirectTargetUrl; they are applied to the redirect targets at click time using the parameters stored on the message level.
delete_campaign
ChatGPTDelete a campaign by ID.
delete_campaign_message
ChatGPTRemove 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
ChatGPTDelete a message group from a campaign. Not available in recurring campaigns.
delete_journey
ChatGPTPermanently 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
ChatGPTRemove a node from the journey graph. Edits the journey's draft revision; call create_journey_draft first if it has none.
delete_segment
ChatGPTDelete a segment.
generate_copy
ChatGPTGenerate 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
ChatGPTGet 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
ChatGPTGet detailed campaign info by ID, including message groups and messages.
get_campaign_message_group
ChatGPTGet a campaign message group by ID, including its status, schedule, and A/B test variants.
get_campaign_metrics
ChatGPTGet 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
ChatGPTGet detailed creative info by ID, including status, type, template config, display rules, and related resources.
get_email_branding_styles
ChatGPTGet 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
ChatGPTGet 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
ChatGPTGet detailed information for a single journey by ID, including name, state, trigger, tags, schedules, and category.
get_journey_branch
ChatGPTRead 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
ChatGPTRead 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
ChatGPTGet 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
ChatGPTGet the content of a journey message by its GraphQL message ID. Returns the message body text (SMS/RCS) or subject/preheader (email).
get_message
ChatGPTGet 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
ChatGPTRead a journey revision's settings, including entry frequency (eligibilityDurationSeconds and eligibilityDurationUnits). Defaults to the draft revision if no revisionId is specified.
get_segment
ChatGPTGet detailed segment info by ID.
get_segment_counts
ChatGPTGet subscriber counts for a segment, broken down by channel with fatigue information.
get_user
ChatGPTGet the Attentive user and company information associated with the current session
list_brand_assets
ChatGPTList brand assets (images, folders) for a company.
list_campaigns
ChatGPTList campaigns for a company with optional name, status, and recurring filters, and pagination.
list_creatives
ChatGPTList creatives for a company with optional search, status filter, type filter, and pagination.
list_email_brand_kit_compatible_fonts
ChatGPTReturns 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
ChatGPTList 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
ChatGPTList 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
ChatGPTList 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
ChatGPTList 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
ChatGPTList 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
ChatGPTList 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
ChatGPTList all subscribers in a segment. Returns up to 20 subscribers.
list_segments
ChatGPTList segments for a company with filtering, search, and pagination.
list_user_attributes
ChatGPTList 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
ChatGPTList 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
ChatGPTMove 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
ChatGPTPause a campaign send. Pausing a specific message group will also pause all subsequent groups.
pause_journey
ChatGPTPause (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
ChatGPTPublish 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
ChatGPTQuery 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
ChatGPTResume a paused campaign send. Only works on campaigns with a paused status.
resume_journey
ChatGPTResume (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
ChatGPTSchedule 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
ChatGPTSets the company ID for the current user session. Subsequent tool calls will be scoped to the ID of the selected company.
unarchive_journey
ChatGPTRestore a previously archived journey back to the active list. The journey returns to the state it had before being archived.
update_campaign
ChatGPTUpdate a campaign name or reorder its message groups. Message groups in recurring campaigns cannot be reordered.
update_campaign_message_group
ChatGPTUpdate 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
ChatGPTPersist 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
ChatGPTUpdate 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
ChatGPTUpdate 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
ChatGPTConfigure 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
ChatGPTUpdate a journey's name, description, or category. Does not modify the journey graph.
update_journey_node
ChatGPTUpdate 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
ChatGPTConfigure 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
ChatGPTUpdate 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
Claudearchive_journey
Claudecreate_campaign
Claudecreate_campaign_message
Claudecreate_campaign_message_group
Claudecreate_email_template
Claudecreate_journey
Claudecreate_journey_draft
Claudecreate_segment
Claudecreate_short_link
Claudedelete_campaign
Claudedelete_campaign_message
Claudedelete_campaign_message_group
Claudedelete_journey
Claudedelete_journey_node
Claudedelete_segment
Claudegenerate_copy
Claudeget_campaign
Claudeget_campaign_message_group
Claudeget_campaign_metrics
Claudeget_creative
Claudeget_email_branding_styles
Claudeget_email_template
Claudeget_journey
Claudeget_journey_branch
Claudeget_journey_configuration
Claudeget_journey_graph
Claudeget_journey_message
Claudeget_message
Claudeget_revision_settings
Claudeget_segment
Claudeget_segment_counts
Claudeget_user
Claudelist_brand_assets
Claudelist_campaigns
Claudelist_creatives
Claudelist_email_brand_kit_compatible_fonts
Claudelist_email_templates
Claudelist_journey_templates
Claudelist_journey_triggers
Claudelist_journeys
Claudelist_metrics
Claudelist_product_attribute_values
Claudelist_segment_subscribers
Claudelist_segments
Claudelist_user_attributes
Claudelist_user_companies
Claudemove_journey_node
Claudepause_campaign_send
Claudepause_journey
Claudepublish_journey
Claudequery_metrics
Clauderesume_campaign_send
Clauderesume_journey
Claudeschedule_campaign_send
Claudeswitch_company
Claudeunarchive_journey
Claudeupdate_campaign
Claudeupdate_campaign_message_group
Claudeupdate_email_branding_styles
Claudeupdate_email_message
Claudeupdate_email_template
Claudeupdate_journey_branch
Claudeupdate_journey_message
Claudeupdate_journey_metadata
Claudeupdate_journey_node
Claudeupdate_push_message
Claudeupdate_rcs_message
Claudeupdate_revision_settings
Claudeupdate_segment
Claudeupdate_sms_message
Claude