100+ integrations are ready to connect to your AI.Connect your first MCP

Braze MCP server for your AI

See how a campaign or Canvas performed, look up a customer's profile, update users and their events, send what you built in Braze, keep catalogs current, and pull engagement numbers.

PopMCPBraze

How did our newest campaign do over the last 30 days? Break it down by channel

Supported Braze tools

Every documented Braze REST endpoint with a working route, with the everyday tools loaded by default and the rest one search away. When a call is refused, the answer names the key permission it needs.

154 tools in the full catalog: 71 read and 83 write. 48 load by default, and the rest are found with tool search.

braze_delete_scheduled_message

Cancel a message scheduled with braze_schedule_message.

braze_list_scheduled_broadcasts

List campaigns and Canvases scheduled to send between now and end_time (a date).

braze_schedule_campaign

Schedule an API-triggered campaign for later.

braze_schedule_canvas

Schedule an API-triggered Canvas for later.

braze_schedule_message

Schedule a message for later, without a dashboard campaign.

braze_send_campaign

Send a campaign that uses API-triggered delivery.

braze_send_canvas

Start a Canvas that uses API-triggered delivery.

braze_send_message

Send a message now without a dashboard campaign.

braze_send_transactional_email

Send one person a Transactional Email campaign.

braze_add_catalog_items

Add up to 50 items to a catalog: {"items":[{"id":"sku-1","price":10}]}.

braze_list_catalog_items

List items in a catalog, 50 at a time.

braze_list_catalogs

List the workspace's catalogs: name, description, fields, item count.

braze_update_catalog_items

Change fields on up to 50 existing items: {"items":[{"id":"sku-1","price":12}]}.

braze_create_user_aliases

Add aliases: {"user_aliases":[{"external_id":"u1","alias_name":"visitor-1","alias_label":"web_session"}]}.

braze_delete_users

Delete users and all their data for good.

braze_find_user

Find one customer and read their profile by external_id, email, phone or braze_id.

braze_identify_users

Attach an external_id to users known only by an alias, email or phone.

braze_merge_users

Merge user profiles: each identifier_to_merge goes into its identifier_to_keep, then is removed.

braze_track_users

Create or update users and record their events and purchases.

braze_get_engagement_overview

The workspace's health over a period: daily and monthly active users, new users, uninstalls and sessions, each with total, daily average and latest day.

braze_list_email_unsubscribes

List email addresses that unsubscribed.

braze_list_hard_bounces

List email addresses that hard bounced.

braze_set_email_subscription_status

Set an address's global email state: subscription_state is opted_in, subscribed or unsubscribed.

braze_get_campaign

Get one campaign: name, channels, schedule, messages and their variation ids, conversion behaviors.

braze_get_campaign_analytics

Get a campaign's daily stats (sends, opens, clicks, bounces, revenue, conversions per channel and variation).

braze_get_campaign_overview

One campaign's details and its totals over a period: overall and per channel, with every number Braze reports summed (sent, opens, clicks, bounces, revenue, conversions).

braze_get_canvas

Get one Canvas: name, variants, steps with their channels, schedule type.

braze_get_canvas_analytics_summary

Get a Canvas's stats rolled up over a period (entries, revenue, conversions per variant and step).

braze_get_canvas_overview

One Canvas's details and its results over up to 14 days, broken down by variant and step.

braze_list_campaigns

List campaigns (id, name, is_api_campaign, tags, last_edited), 100 at a time, oldest first unless sort_direction=desc.

braze_list_canvases

List Canvases (id, name, tags, last_edited), 100 at a time.

braze_create_email_template

Create an email template.

braze_export_segment_users

Export every user in a segment to a file.

braze_export_users_by_id

Read user profiles by identifier: up to 50 external_ids or user_aliases, or one device_id, braze_id, email_address or phone.

braze_get_content_block

Get one Content Block with its content.

braze_get_custom_event_analytics

Get how often a custom event happened as a series.

braze_get_email_template

Get one email template: subject, preheader, body, plaintext_body, tags.

braze_list_content_blocks

List Content Blocks (content_block_id, name, content_type, tags, timestamps), up to 1,000 at a time.

braze_list_custom_event_names

List custom event names only, 250 at a time, alphabetically.

braze_list_email_templates

List email templates (email_template_id, template_name, created_at, updated_at, tags), up to 1,000 at a time.

braze_list_user_subscription_groups

List the subscription groups one user is in.

braze_set_subscription_status_batch

Subscribe or unsubscribe up to 50 users from a subscription group: {"subscription_group_id":"id","subscription_state":"subscribed","emails":["a@example.com"]}.

braze_update_email_template

Change an email template by email_template_id.

braze_get_purchase_revenue

Return the total money spent in your app over a time range.

braze_get_segment

Get one segment: name, description, filters, tags.

braze_get_segment_analytics

Get a segment's estimated size per day.

braze_list_segments

List segments (id, name, analytics_tracking_enabled, tags), 100 at a time.

braze_get_workspace_overview

A map of this Braze workspace: newest campaigns, Canvases and segments, custom event names, email templates, catalogs and what is scheduled for the next 14 days, plus missingPermissions naming anything this key cannot read.

braze_create_data_object

Create one data object for a type.

braze_create_object_relationship

Create one directional relationship edge between two data objects.

braze_create_user_relationship

Link one Braze user to one data object.

braze_delete_data_object

Delete one data object.

braze_delete_object_relationship

Delete one object-to-object relationship edge.

braze_delete_user_relationship

Remove one user-to-object relationship.

braze_get_data_object

Return one data object.

braze_get_data_object_type

Return one data object type and its schema definition.

braze_list_data_object_types

List data object types in a workspace.

braze_list_data_objects

List objects for a specific data object type.

braze_list_object_relationship_types

List relationship kinds available for object-to-object links for a given anchor direction.

braze_list_object_relationships

List related data objects from one object anchor.

braze_list_user_relationship_types

List valid rel_kind values for user relationships on a data object type.

braze_list_user_relationships

List users linked to one data object.

braze_replace_data_object

Create or replace a data object with full-attribute replacement semantics.

braze_replace_object_relationship

Create or replace an object relationship.

braze_replace_user_relationship

Create or replace one user relationship.

braze_update_data_object

Merge attributes into an existing data object.

braze_update_object_relationship

Merge attributes onto an existing object relationship.

braze_update_user_relationship

Merge attributes into an existing user relationship.

braze_create_send_id

Create a send_id so one batch of an API campaign can be measured on its own with braze_get_send_analytics.

braze_delete_scheduled_campaign

Cancel a scheduled API-triggered campaign.

braze_delete_scheduled_canvas

Cancel a scheduled API-triggered Canvas.

braze_duplicate_campaign

Duplicate campaigns.

braze_duplicate_canvas

Duplicate Canvases.

braze_start_live_activity

Remotely start Live Activities displayed in your iOS app.

braze_update_live_activity

Update and end Live Activities displayed by your iOS app.

braze_update_scheduled_campaign

Update scheduled API-triggered campaigns created in the dashboard, allowing you to decide what action should trigger the message to be sent.

braze_update_scheduled_canvas

Update scheduled API-triggered Canvases that were created in the dashboard.

braze_update_scheduled_message

Update scheduled messages.

braze_create_catalog

Create a catalog.

braze_create_catalog_fields

Create multiple fields in your catalog.

braze_create_catalog_item

Create an item in your catalog.

braze_create_catalog_selection

Create a selection in your catalog.

braze_delete_catalog

Delete a catalog and all its items.

braze_delete_catalog_field

Delete a catalog field.

braze_delete_catalog_item

Delete an item in your catalog.

braze_delete_catalog_items

Delete up to 50 items: {"items":[{"id":"sku-1"}]}.

braze_delete_catalog_selection

Delete a catalog selection.

braze_get_catalog_item

Return a catalog item and its content.

braze_replace_catalog_item

Replace an item in your catalog.

braze_replace_catalog_items

Fully replace up to 50 items, creating any that are missing.

braze_update_catalog_item

Edit an existing item in your catalog.

braze_get_campaign_translation_source

View all the default translation sources for a campaign's translation tags.

braze_get_campaign_translations

View all the translations for each message variant in a campaign.

braze_get_canvas_translation_source

View all the default translation sources for a canvas's translation tags.

braze_get_canvas_translations

Preview a translated message for a Canvas.

braze_get_content_block_translation_source

View all the default translation sources for a Content Block's translation tags.

braze_get_content_block_translations

View all the translations for a Content Block.

braze_get_email_template_translation_source

View the source translations for an email template.

braze_get_email_template_translations

View all translations and locales for an email template.

braze_get_webhook_template_translation_source

View the default source translations for a webhook template.

braze_get_webhook_template_translations

View translations for a webhook template.

braze_update_campaign_translation

Update multiple translations for a campaign.

braze_update_canvas_translation

Update multiple translations for a Canvas.

braze_update_content_block_translation

Update multiple translations for a Content Block.

braze_update_email_template_translation

Update translations for an email template.

braze_update_webhook_template_translation

Update translations for a webhook template.

braze_get_users_track_status

Check how far a group of braze_track_users requests got.

braze_remove_external_ids

Remove old external ids left deprecated by a rename.

braze_rename_external_ids

Give users a new external_id.

braze_track_users_bulk

The same as braze_track_users for large batches, up to 1,000 items a call depending on the account.

braze_track_users_sync

The same as braze_track_users, but the answer comes after Braze has applied the change.

braze_update_user_aliases

Rename aliases on existing users.

braze_blocklist_emails

Mark email addresses as unsubscribed and blocked so Braze never emails them: {"email":["a@example.com"]}.

braze_get_dau_kpi

Get daily active users per day.

braze_get_mau_kpi

Get monthly active users (rolling 30 days) per day.

braze_get_new_users_kpi

Get new users per day.

braze_get_session_analytics

Retrieve a series of the number of sessions for your app over a designated time period.

braze_get_uninstalls_kpi

Get app uninstalls per day.

braze_remove_hard_bounces

Remove addresses from the hard bounce list so Braze will email them again.

braze_remove_spam_entries

Remove addresses from the spam list so Braze will email them again.

braze_create_dashboard_user

Invite a new member of your team to the Braze dashboard.

braze_create_preference_center

Create a preference center to allow users to manage their notification preferences for your email campaigns.

braze_delete_dashboard_user

Remove a member of your team from the Braze dashboard.

braze_find_dashboard_user

Find a Braze dashboard user (a member of your team, not a customer) by email.

braze_get_canvas_analytics

Get a Canvas's stats as a time series.

braze_get_dashboard_user

Get one Braze dashboard user (a member of your team, not a customer) by id.

braze_get_preference_center

View the details for your preference centers, including when it was created and updated.

braze_get_preference_center_url

Make the link to a preference center for one user.

braze_get_send_analytics

Get daily stats for one tracked send of an API campaign, from a send_id you made with braze_create_send_id.

braze_list_preference_centers

List preference centers: name, preference_center_api_id, timestamps.

braze_update_dashboard_user

Change a Braze dashboard user's name, department or permissions.

braze_update_preference_center

Update a preference center.

braze_cancel_segment_export

Cancel every running export of a segment.

braze_create_content_block

Create a Content Block.

braze_create_sdk_auth_key

Create a new SDK Authentication key for your app.

braze_delete_sdk_auth_key

Delete an SDK Authentication key for your app.

braze_export_global_control_group

Export the workspace's Global Control Group to a file.

braze_get_subscription_status

Get users' state in one SMS or email subscription group.

braze_list_custom_attributes

List the workspace's custom attributes: name, description, data type, status, tags.

braze_list_custom_events

List custom events with their details: name, description, status, tags, property names.

braze_list_sdk_auth_keys

Retrieve all SDK Authentication keys for your app.

braze_set_primary_sdk_auth_key

Set an SDK Authentication key as the primary key for your app.

braze_set_subscription_status

Subscribe or unsubscribe up to 50 users from one subscription group.

braze_update_content_block

Change a Content Block by content_block_id.

braze_get_purchase_quantity

Return the total number of purchases in your app over a time range.

braze_list_cdi_integrations

List Cloud Data Ingestion integrations.

braze_list_cdi_sync_status

List a Cloud Data Ingestion integration's recent syncs and their status.

braze_list_purchased_products

List product ids that have been purchased, 250 at a time.

braze_trigger_cdi_sync

Start a sync for a Cloud Data Ingestion integration now.

braze_create_media_asset

Add a file to the media library from a public URL.

braze_list_invalid_phone_numbers

Pull a list of phone numbers that have been marked "invalid" within a certain time frame.

braze_remove_invalid_phone_numbers

Remove "invalid" phone numbers from our invalid list.

braze_replace_media_asset

Replace a media library file from a public URL (asset_url), keeping its id and URL.

braze_update_push_credential

Replace an app's push credentials for one platform.

Connect Braze to Claude, ChatGPT and Claude Code

Credentials off one Braze screen, then an endpoint your client signs into. Nothing to deploy, and nothing to install.

In your Braze dashboard open Settings, APIs and Identifiers, API Keys and choose Create API Key. Name it, tick the permissions you want the AI to use, leave the IP allowlist empty, and create it. Copy the key from the Identifier column into PopMCP. PopMCP works out which Braze instance your workspace is on.

Braze REST API key••••••••••••3f7a
Braze dashboard address (optional)dashboard-01.braze.com
Workspace name (optional)Acme production
ConnectionVerified

Then just ask for the work

  • “How did our newest campaign do over the last 30 days? Break it down by channel”

    • list_campaigns
    • get_campaign_overview
  • “Find jane@northwind.co and show her attributes, purchases and whether she can receive email”

    • find_user
    • list_user_subscription_groups
  • “Which Canvas steps are losing people? Show the results for our onboarding Canvas”

    • list_canvases
    • get_canvas_overview
  • “Send the win-back campaign to these ten customers, and show me the list before it goes”

    • list_campaigns
    • send_campaign
  • “How are daily active users, new users and uninstalls trending this quarter?”

    • get_engagement_overview
  • “Add these new products to our catalog and update the price on these existing ones”

    • list_catalogs
    • add_catalog_items
    • update_catalog_items

Use Braze from the assistant you already open

One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.

Claude DesktopCustom connector

Add the PopMCP URL under Customize → Connectors and the tools appear in every chat.

Claude WebCustom connector

The same endpoint, registered in the browser. Nothing to install on the machine you are working from.

ChatGPTCustom connector

Register PopMCP as a custom connector, then let ChatGPT read and update the account.

CodexDesktop & CLI

Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.

OpenCodeCoding agent

Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.

ZCodeDesktop app

Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.

Braze MCP server questions

What teams ask before putting Braze behind an AI client.

Do I need a Braze account?

Yes. Braze has no free plan, and access comes through its sales team, so you need to be a Braze customer with access to Settings, APIs and Identifiers in your workspace. PopMCP does not provide a Braze account.

What does PopMCP need to connect Braze?

One REST API key. In your Braze dashboard open Settings, APIs and Identifiers, API Keys and choose Create API Key. Tick the permissions you want, create it, and copy the value in the Identifier column. It must be a REST API key, not an SDK key.

Which permissions should I tick?

Every one you want the AI to use. Braze keys cannot be edited after they are made, so adding a permission later means making a new key and reconnecting. PopMCP tells you at connect time what the key could read, and when a tool is refused, the answer names the permission it needs.

Do I have to know which Braze instance I am on?

No. A key works on only one instance, so PopMCP tries it and remembers where it worked. If that ever fails, you can enter your dashboard address under More options, and PopMCP only accepts Braze's own addresses there.

Can one key connect several workspaces?

No. A Braze key belongs to one workspace. Connect each workspace with its own key. You can give each connection a name under More options, since Braze's API does not share workspace names.

Will the AI message customers by accident?

New connections start read-only, and sending needs an owner or admin to allow writes. Send tools tell the AI to confirm first, and PopMCP refuses a call that asks for a whole-segment broadcast and a recipient list together. You can also leave the sending permissions off the key.

Can it manage our team's Braze dashboard users?

Yes, with a separate SCIM token and service origin from Settings, Admin Settings, SCIM Provisioning, added under More options. A REST API key cannot do this, and Braze makes SCIM available depending on your edition. Everything else works without them.

Do I have to run or host the Braze MCP server myself?

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.

Which AI clients can use this MCP server?

Any client that supports a remote Streamable HTTP MCP server: Claude Desktop, Claude Web, Claude Code, 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.

How do I connect Braze to Claude Code?

Connect Braze in PopMCP first, then run claude mcp add --transport http popmcp https://app.popmcp.com/mcp in a terminal. Inside Claude Code, run /mcp and sign in to PopMCP in the browser window it opens, ticking Braze on the consent screen. The Braze tools are then available in that session, and no Braze credential is stored on your machine.

Why do only 48 of the 154 tools load by default?

Loading 154 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 48-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. Every tool stays searchable, and on Scale the owner can load the full catalog for a teammate's connection.

What is the difference between a tool and a trigger?

A tool is something your AI calls, and there are 154 here. A trigger is something PopMCP watches for you: 7 Braze 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 Braze.

Connect Braze to your AI in minutes

Launch a hosted MCP endpoint for Braze, keep tool access under control, and start testing real workflow prompts right away.

Connect your first MCP