“How many opted-in contacts do we have tagged vip?”
“Make a segment of everyone who tapped Book now in the last 30 days.”
“Draft a utility template telling people we’re closed on the 24th.”
“Put together a campaign for that segment using the closed_notice template, for Friday at 9am.”
What it can do
Answer questions
Explains your broadcasts, segments, templates, and audience sizes — with real numbers pulled live, never guessed.
Check an audience
Counts how many contacts an audience reaches before you commit. The number it gives is the same one a real send would use.
Build segments
Creates and edits saved segments, including targeting by buttons people tapped — something the Segments form can’t do.
Author templates
Drafts a template, shows it to you, and only submits it to Meta once you say so — then tells you whether Meta has approved it yet.
Assemble campaigns
Combines an audience, a template, its variables, and a schedule into one campaign, held for your approval.
Enforce opt-in
Refuses to assemble a marketing campaign to an audience that isn’t restricted to opted-in contacts.
The tools it uses
The agent’s own system prompt groups its eleven tools into two tiers: tools that only read your data, and tools that write — creating segments, authoring templates, and staging a campaign. Nothing in either tier ever sends a message.Read
list_broadcasts
Lists your broadcasts newest-first, with their status and delivery counts (queued, sent, delivered, read, failed, canceled).
list_segments
Lists your saved audience segments, each with its filter and a live contact count.
list_templates
Lists your WhatsApp templates from Meta with their approval status — only APPROVED templates can actually be sent.
preview_audience
Returns the live count of contacts an audience would reach right now, for a saved segment or an ad-hoc filter. Opted-out and not-on-WhatsApp contacts are always excluded.
get_template_status
Looks up the current Meta approval status of a template (PENDING, APPROVED, REJECTED) by name and language.
list_button_interactions
Lists the buttons and list items your contacts have actually tapped, with labels and tap counts — so you can pick one to target.
Write
create_segment
Saves a new reusable segment from a filter (opt-in, tags, or a button-tap criterion) and returns its live count.
update_segment
Updates a saved segment’s name or filter, then re-resolves its live count.
draft_template
Composes a new template and returns a structured preview. This never touches Meta — it only validates and formats the draft.
submit_template
Submits an approved draft to Meta, which creates it on your WhatsApp Business Account. Meta approval is asynchronous — minutes to hours.
assemble_campaign
Stages a complete campaign — audience, template, variables, schedule — and holds it in a pending approval state. This never sends and never schedules a real send.
It never sends anything
The agent cannot send, launch, approve, cancel, or retry a broadcast. There’s no tool for it, and the system refuses to send a campaign in the state the agent leaves it in.
assemble_campaign only builds the campaign and holds it as pending approval — it never arms a real send. Approving is yours to do.The approval card
When you ask it to assemble a campaign, a card appears in the chat with everything laid out: the name, how many recipients, the estimated cost, the schedule, a preview of the template as your customers will see it, and each variable with what it resolves to. Three buttons:- Approve — you’re happy. The campaign is scheduled and sends at its time.
- Edit — tell the agent what to change and it reassembles.
- Reject — discard it.
Marketing templates and opt-in
The agent refuses to assemble a marketing campaign to an audience that isn’t restricted to opted-in contacts, and tells you to fix the audience. Marketing messages to people who never opted in are exactly the thing that gets a WhatsApp number restricted.The manual wizard doesn’t enforce this — you can untick Opted in only and pick a marketing template there. The agent is stricter than the form on purpose. Being stopped here is a reason to reconsider the audience, not to go and do it by hand.
