crm-lifecycle-ops
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CLO_BRAZE_API_KEY | No | Read-only Braze API key. Omit env settings to use the built-in demo account. | |
| CLO_BRAZE_REST_ENDPOINT | No | Your Braze REST endpoint, for example https://rest.iad-01.braze.com. Omit env settings to use the built-in demo account. |
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 |
|---|---|
| check_emailA | QA one email before it sends, using the team's house rules: HTML structure, Outlook conditionals, Gmail clipping, alt text, links (non-production hosts, unsubscribe, UTMs, approved domains), personalization rendered for several synthetic personas, subject line, sender, brand terms, spelling variant and required footer text. Pass HTML or a local file path. Read-only; sends nothing. |
| check_messageA | QA one push notification, SMS/MMS, in-app message, content card or webhook using the team's house rules: renders personalization for several synthetic personas, then checks length against lock-screen / segment / in-app / card limits, SMS encoding and billed segments, opt-out wording and sender name, deep links and other links (non-production hosts, malformed URIs), buttons, webhook URL, secrets in URLs and JSON bodies that break on quotes, brand terms and spelling. Read-only; sends nothing. |
| check_campaignA | QA every message in a campaign or journey (Canvas/flow): emails with content blocks expanded, push, SMS and in-app, plus its settings: audience, conversion events, naming and journey structure (dead ends, unreachable steps). |
| list_checksA | Every check, with its id, default severity and what it catches, plus which ones are locked (can't be turned off). Use to explain a finding or fill in a problem report. |
| get_house_rulesA | The team's rulebook (what counts as right for them) and where it's stored. Returns defaults if /setup hasn't run. |
| save_house_rulesA | Replace the team's rulebook. Always show the person the changes and get a yes first. Locked checks can't be overridden. Schema: locale, brand, links, compliance, senders, personalization, style, naming, severity, exceptions. |
| add_exceptionA | Record that a finding is acceptable for this team (not a tool bug), with a reason. Optionally scoped by |
| learn_from_emailA | Read an email the team considers correct and propose house rules from it: link domains, UTM params and values, sender, name fallback, US/GB spelling, subject style, footer and postal address. Proposals only; confirm with the person before saving. |
| connection_statusA | Which platforms have keys set (keys themselves are never shown), test each connection, and list the environment variables each platform needs. |
| refresh_accountA | Pull the latest campaigns, journeys, segments, templates and content blocks into a local snapshot (read-only API calls), then report what changed since the previous one. Set demo: true to load the fictional Fernbrook Market demo account instead. |
| list_itemsA | Search the latest snapshot by name. Use it to resolve what the person means before checking, mapping or analysing impact. |
| record_audienceA | Fill an API gap: record which segment/list a campaign or journey targets, as read from the platform's dashboard (e.g. via Claude in Chrome). Stored as 'seen-on-screen' with today's date on the latest snapshot. |
| what_breaksB | Everything that depends on an attribute, segment/list, content block, event, message or piece of text, live items first, each with how we know (api-verified, parsed from template, seen on screen…) and a list of live items we can't rule out. |
| what_changedA | Differences between the latest snapshot and the previous one (or the newest one taken before |
| show_journeyB | A Mermaid diagram of a live journey (Canvas/flow) with subject lines, plus structural problems (dead ends, unreachable steps, empty message steps). |
| find_overlapsA | For a planned journey or campaign: which live campaigns/journeys already target the same segments or lists, trigger on the same events, or use the same attributes, and which live items can't be ruled out. |
| bulk_edit_previewA | Find text (or a regex) across every subject, preheader, body and content block and preview the replacement, live items first. Preview only; nothing is written. |
| how_toA | Step-by-step instructions for a build or edit task in Braze, Klaviyo or Iterable, in that platform's own terms, from a procedure library verified against the vendors' docs (with links). Filled in with the team's house rules (naming, sender, UTMs, fallback syntax, footer, channel limits) and, when a snapshot exists, the account: segments and blocks to reuse, whether the target is live, and shared content that would change other live programs. The plugin never edits the account; a person follows the steps. Tasks: create-campaign (Create a one-off or scheduled campaign); create-journey (Create a multi-step journey); edit-live-journey (Change a journey that's already live); edit-live-message (Change the copy of a live or scheduled message); edit-shared-content (Change a shared content block / snippet used in live messages); change-audience (Change who a campaign or journey targets, or add exclusions); link-tracking (Add UTM parameters and click tracking); frequency-and-quiet-hours (Set frequency caps, rate limits and quiet hours); conversion-tracking (Set the conversion event / metric); ab-test (Run an A/B or multivariate test); test-and-preview (Preview as a user and send tests); pause-stop-duplicate (Pause, stop or duplicate). |
| launch_healthB | Recent delivery numbers for a campaign or journey (sent, delivered, bounces, unsubscribes, spam complaints, opens, clicks) judged against stated thresholds. Needs a connected account. |
| ops_reportB | From the usage log: messages and campaigns checked, blocking problems caught, most common findings, weekly trend and estimated hours saved (assumption stated). With team: true, totals every operator's log in the shared team folder and breaks it down per operator. |
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 20 tools
The channel-specific QA tools and campaign-level aggregator are clearly scoped, while impact, overlap, diff, and rules tools have distinct jobs. Minor ambiguity remains between show_journey and check_campaign for structural findings, and between what_changed and refresh_account's change report.
All names use readable snake_case, but the set mixes verb_noun commands such as check_email and refresh_account with interrogative names, noun phrases, and how_to. The result is understandable but does not follow one predictable naming convention.
Twenty tools is a heavy, borderline surface for one server, although the broad lifecycle, QA, and governance scope gives most tools a clear role. Snapshot refresh/diffing and the various reporting and rules operations add cognitive load and could potentially be grouped.
For a read-only, human-in-the-loop lifecycle operations server, the set covers planning guidance, snapshots, QA, impact analysis, governance, launch monitoring, and reporting. Minor gaps include limited general item-detail retrieval and no direct path from a bulk-edit preview to execution, but these can be worked around in the platform UI.