Brands tools
A brand is one business you send for, with its own contacts, sending domain and texting number. One account key works across every brand you own; pass the brand's slug as team on each call.
create_team
Create a team (brand) under your account. Returns the team (with its slug). Operate it afterwards by passing `team` (the slug) to the other tools — your access works for every brand you own.
namestringrequiredslugstringfrom_namestringfrom_emailstringreply_tostringsending_domainstringphysical_addressstringcallrail_phonestring
list_teams
List the brands (teams) under your account — name, slug, and sending identity. Includes teams you're a member of.
No inputs.
update_team
Update a brand's name, sending identity (from_name, from_email, reply_to, sending_domain, physical_address, callrail_phone), and/or its SMS consent mapping (sms_consent_property + sms_consent_value) in place. The consent mapping is how a website form grants SMS consent WITHOUT any change to the site's markup: capture already forwards every checked checkbox as a contact property, and this names which property means "consented". Use this to configure an existing brand — get team_id from list_teams. Leaves sequences/templates untouched.
team_idstringrequiredsignature_templatestring | null- Key of one of this brand's email templates used as the signature on one-to-one emails (Inbox replies and responder answers). Its html may use {{author_name}}, {{author_first_name}}, {{author_email}}, {{author_<property>}} (a staff responder's contact properties) and the team footer tokens; values are HTML-escaped. null clears; omit to leave it.
timezonestring | null- IANA time zone, e.g. America/New_York. Used for anchored local-time steps and as the SMS quiet-hours fallback after the phone area-code lookup; null uses America/New_York. Existing enrollments retain their captured time zone.
namestringfrom_namestringfrom_emailstringreply_tostringsending_domainstringphysical_addressstringcallrail_phonestringsms_consent_propertystring | null- Contact property whose presence on an inbound submission grants SMS consent — e.g. a website form checkbox named "sms_optin" whose disclosure covers every kind of message you send. Match the FINAL property key: the capture script lowercases field names and collapses non-alphanumerics to '_' (so "SMS-Transactional" arrives as "sms_transactional"). REQUIRES sms_consent_value to be set too. Pass null to disable; omitting the field preserves the current value. IMPORTANT: a match grants consent for EVERY SMS Sequence sends that contact, marketing included — consent scope is not modelled. Only map a field whose disclosure covers every kind of message you send.
sms_consent_valuestring | null- EXACT required value for sms_consent_property, compared trimmed + case-insensitively. Required — null disables the mapping. There is no 'any value grants' mode, because nothing proves an inbound payload came from the capture script rather than a direct post carrying a declining answer like "no". A checkbox with no `value` attribute submits the string "on"; builders vary ("yes"/"1"/"true") — call list_contact_fields to see what a given form actually sends. Omitting this field preserves the current value.
delete_team
Permanently delete a brand (team) and ALL its data — sequences, steps, enrollments, sends, contacts, audiences, templates, public assets, domains, suppressions. Irreversible (database cascades plus Storage cleanup). Get team_id from list_teams. Owner only.
team_idstringrequiredabort_social_teardownboolean- Abort an unfinished deletion and restore social access; completed removals remain.
pause_sending
Stop ALL live sending for a brand (every sequence and broadcast, email and SMS) until someone resumes it — the manual kill switch of the send circuit breaker, which also pauses a brand by itself on a complaint/bounce/unsubscribe/STOP/carrier-filtering spike. Ingest, enrollment, editing and test sends keep working; due sends wait. The owner and the platform operator get an alert email. Owner only. 409 if already paused.
team_idstringrequired
resume_sending
Resume a paused brand's live sending, in two calls. 1) Call WITHOUT paused_at: nothing changes; it returns the current pause (sending_paused_at, sending_pause_reason = what tripped) and held_broadcasts — the 'sending' broadcasts and past-due 'scheduled' ones that WILL send on resume. Show these to the user; cancel unwanted ones with delete_broadcast. Due sequence steps also go out on the next sweep. 2) Call again with paused_at = the exact sending_paused_at you reviewed. A 409 means the pause changed — review again. Owner only.
team_idstringrequiredpaused_atstring- Omit to review. To resume: the sending_paused_at returned by the review call, verbatim.