MCP Braze
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Port for HTTP server. | 3000 |
| NODE_ENV | No | Node environment. | production |
| LOG_LEVEL | No | Logging level. | info |
| SENTRY_DSN | No | Optional Sentry DSN. | |
| BRAZE_APP_ID | No | Optional Braze app identifier. | |
| BRAZE_API_KEY | Yes | Your Braze API key. | |
| CACHE_ENABLED | No | Enable caching. | true |
| CACHE_MAX_SIZE | No | Maximum cache size. | 1000 |
| CACHE_TTL_SECONDS | No | Cache TTL in seconds. | 300 |
| RATE_LIMIT_ENABLED | No | Enable rate limiting. | true |
| SENTRY_ENVIRONMENT | No | Sentry environment. | production |
| BRAZE_REST_ENDPOINT | Yes | Your Braze REST endpoint (e.g., https://rest.iad-01.braze.com). | |
| CIRCUIT_BREAKER_ENABLED | No | Enable circuit breaker. | true |
| CIRCUIT_BREAKER_THRESHOLD | No | Circuit breaker failure threshold. | 5 |
| CIRCUIT_BREAKER_RESET_TIMEOUT | No | Circuit breaker reset timeout in ms. | 60000 |
| RATE_LIMIT_REQUESTS_PER_SECOND | No | Rate limit requests per second. | 10 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| users_trackB | Track user data including attributes, custom events, and purchases. Use this to update user profiles, log events, and record purchases in Braze. |
| users_identifyA | Identify an alias-only user profile with an external_id. This merges the alias profile into the identified user. |
| users_alias_newC | Create new user aliases for existing users or create alias-only profiles. |
| users_deleteA | Delete user profiles from Braze. This is permanent and cannot be undone. Use for GDPR/CCPA compliance. |
| users_mergeC | Merge one user profile into another. Data from the merged user will be combined into the target user. |
| users_alias_updateC | Update existing user aliases. Changes the alias_name for a given alias_label. |
| users_external_id_renameB | Rename external IDs for users. Use for migrating to a new ID scheme. |
| users_external_id_removeB | Remove deprecated external IDs that were previously renamed. Cleans up old ID references. |
| messages_sendC | Send messages immediately to users via push, email, webhook, or content cards. |
| campaigns_trigger_sendB | Trigger an API-triggered campaign. The campaign must be configured as API-triggered in Braze. |
| canvas_trigger_sendB | Trigger an API-triggered Canvas. The Canvas must be configured as API-triggered in Braze. |
| transactional_email_sendB | Send a transactional email via an API-triggered campaign. Used for order confirmations, password resets, etc. |
| send_id_createA | Create a send ID for tracking message sends. Use to correlate sends with analytics. |
| live_activity_updateB | Update an iOS Live Activity. Used for real-time updates like sports scores, delivery tracking. |
| scheduled_broadcasts_listC | List upcoming scheduled campaigns and Canvases. |
| messages_schedule_createC | Schedule a message to be sent at a specific time. |
| messages_schedule_updateC | Update a previously scheduled message. |
| messages_schedule_deleteC | Delete a previously scheduled message. |
| campaigns_schedule_createC | Schedule an API-triggered campaign for future delivery. |
| campaigns_schedule_updateC | Update a scheduled API-triggered campaign. |
| campaigns_schedule_deleteC | Delete a scheduled API-triggered campaign. |
| canvas_schedule_createC | Schedule an API-triggered Canvas for future delivery. |
| canvas_schedule_updateC | Update a scheduled API-triggered Canvas. |
| canvas_schedule_deleteC | Delete a scheduled API-triggered Canvas. |
| campaigns_listC | List all campaigns in the workspace. |
| campaigns_detailsC | Get details for a specific campaign. |
| campaigns_analyticsC | Get campaign performance analytics over time. |
| sends_analyticsC | Get analytics for a specific send ID. |
| canvas_listC | List all Canvases in the workspace. |
| canvas_detailsC | Get details for a specific Canvas. |
| canvas_analyticsC | Get Canvas performance analytics over time. |
| canvas_summaryC | Get summary analytics for a Canvas. |
| segments_listC | List all segments in the workspace. |
| segments_detailsC | Get details for a specific segment. |
| segments_analyticsC | Get segment size analytics over time. |
| users_exportC | Export user profiles by identifier (external_id, user_alias, or braze_id). |
| users_export_segmentC | Export all user profiles in a segment (async job). |
| users_export_control_groupC | Export users in the Global Control Group. |
| kpi_dauC | Get daily active users (DAU) over time. |
| kpi_mauC | Get monthly active users (MAU) over time. |
| kpi_new_usersC | Get new users count over time. |
| kpi_uninstallsC | Get app uninstalls over time. |
| events_listC | List all custom events tracked in the app. |
| events_analyticsC | Get custom event analytics over time. |
| purchases_productsC | List all product IDs from purchase events. |
| purchases_quantityC | Get purchase quantity analytics over time. |
| purchases_revenueC | Get revenue analytics over time. |
| sessions_analyticsC | Get app session analytics over time. |
| email_hard_bouncesC | Query emails that have hard bounced within a date range. |
| email_unsubscribesC | Query emails that have unsubscribed within a date range. |
| email_subscription_statusC | Change email subscription status for users. |
| email_bounce_removeC | Remove email addresses from the hard bounce list. |
| email_spam_removeC | Remove email addresses from the spam list. |
| email_blocklistB | Add email addresses to the blocklist. Blocked emails will not receive any messages. |
| email_blacklistA | [DEPRECATED: Use email_blocklist] Add email addresses to the blacklist. |
| sms_invalid_phonesC | Query phone numbers that have been marked as invalid within a date range. |
| sms_invalid_phones_removeC | Remove phone numbers from the invalid phone list. |
| subscription_status_getC | Get the subscription group status for users. |
| subscription_user_statusC | List all subscription groups for a specific user. |
| subscription_status_setB | Update subscription group status for users (email or SMS/WhatsApp). |
| subscription_status_set_v2C | Update subscription group status for users (V2 API with more options). |
| email_templates_listC | List all email templates in the workspace. |
| email_templates_infoC | Get details for a specific email template. |
| email_templates_createC | Create a new email template. |
| email_templates_updateC | Update an existing email template. |
| content_blocks_listC | List all content blocks in the workspace. |
| content_blocks_infoC | Get details for a specific content block. |
| content_blocks_createC | Create a new content block. |
| content_blocks_updateC | Update an existing content block. |
| catalogs_listC | List all catalogs in the workspace. |
| catalogs_createC | Create a new catalog. |
| catalogs_deleteC | Delete a catalog and all its items. |
| catalog_items_listC | List items in a catalog. |
| catalog_items_createB | Create multiple items in a catalog. |
| catalog_items_updateB | Update multiple items in a catalog (replaces entire item). |
| catalog_items_editC | Edit multiple items in a catalog (partial update). |
| catalog_items_deleteC | Delete multiple items from a catalog. |
| catalog_item_getB | Get a single catalog item by ID. |
| catalog_item_createC | Create a single catalog item. |
| catalog_item_updateA | Update a single catalog item (replaces entire item). |
| catalog_item_editC | Edit a single catalog item (partial update). |
| catalog_item_deleteC | Delete a single catalog item. |
| preference_centers_listC | List all preference centers in the workspace. |
| preference_center_getC | Get details for a specific preference center. |
| preference_center_urlC | Generate a preference center URL for a specific user. |
| preference_center_createC | Create a new preference center. |
| preference_center_updateC | Update an existing preference center. |
| scim_users_searchC | Search for dashboard users by email address. |
| scim_users_createC | Create a new dashboard user account. |
| scim_users_getA | Get a dashboard user account by SCIM ID. |
| scim_users_updateC | Update a dashboard user account. |
| scim_users_deleteB | Delete a dashboard user account. This is permanent. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 92 tools
Multiple tools have overlapping or confusing boundaries: catalog singular vs plural variants (catalog_item_create vs catalog_items_create), subscription_status_set vs subscription_status_set_v2, email_blocklist vs deprecated email_blacklist, and several message-sending tools (messages_send, campaigns_trigger_send, canvas_trigger_send, transactional_email_send). Descriptions help somewhat, but an agent could easily misselect.
Mostly snake_case with a resource_action pattern, but inconsistent resource plurality (preference_center_get vs preference_centers_list), action verbs (get vs details vs info), a version suffix (_v2), and deprecated blacklist vs blocklist spelling. Readable but not fully predictable.
92 tools is an extreme mismatch for a single MCP server, far beyond the ideal 3-15 range and exceeding the 50+ threshold. Many tools are redundant (e.g., singular/plural catalog item operations, v1/v2 subscription status), bloating the surface.
Coverage is broad across Braze domains (users, messages, campaigns, canvas, analytics, catalogs, SCIM), but notable gaps exist: no delete for email templates, content blocks, or preference centers; no subscription groups list; SMS send is ambiguous. Core workflows are covered, but dead ends remain.