MCP tools — Templates

Six tools to list, inspect, create, update, delete, and sync WhatsApp templates with Meta.

Templates round-trip with Meta. Create and update tools submit to Meta; the approval state arrives asynchronously. Use sync_templates to pull the latest state.

Tool Annotation Purpose
list_templates IsReadOnly, IsIdempotent Filter by status / category
get_template IsReadOnly, IsIdempotent All translations
create_template IsDestructive(false) Submit new to Meta
update_template IsDestructive(false), IsIdempotent Re-submit translations
delete_template IsDestructive Delete on Meta + locally
sync_templates IsDestructive(false), IsIdempotent Pull latest approval state

list_templates

List WhatsApp message templates. Filter by approval status or category.

Input Type Notes
status string APPROVED, PENDING, REJECTED
category string UTILITY, MARKETING, AUTHENTICATION
page, per_page integer

get_template

Get full template details including all translations with header, body, footer, buttons.

Input Type
id UUID

Returns every translation regardless of approval state.

create_template

Create a WhatsApp template and submit it to Meta for approval. Supports text headers and buttons (quick_reply, call_to_action_url, call_to_action_phone). For media headers (image/video/document) provide a public header_url. Use {{1}}, {{2}} placeholders in body/header for variables. Templates are created as pending until Meta approves them.

Input Type Notes
name string snake_case, unique per tenant
category string UTILITY, MARKETING, AUTHENTICATION
language string en, fr, …
body string required, may contain {{1}}, {{2}}
header_type string TEXT, IMAGE, VIDEO, DOCUMENT (optional)
header_content string text for TEXT
header_url string required for IMAGE/VIDEO/DOCUMENT — must be public HTTPS
footer string up to 60 chars
buttons array `{type: 'quick_reply'

Returns the created template with status: PENDING. Meta typically approves utility templates in minutes; marketing templates can take hours.

update_template

Update a template's translations (body, header, footer, buttons). Each provided translation is upserted by language; existing languages not in the payload are kept. Submits the changes back to Meta. Name and category cannot be changed on Meta.

Use this to add a new language, fix a typo, or re-submit a rejected translation.

delete_template

Delete a template both on Meta/360Dialog and locally. The template name will be released and can be reused after Meta processes the deletion.

IsDestructive — name release on Meta is asynchronous (a few minutes).

sync_templates

Force sync templates with Meta/360Dialog. Pulls latest statuses.

Use it after submitting a template to refresh its PENDING → APPROVED transition without waiting for the next scheduled sync.