174 operations. Call each with POST https://app.chirply.io/api/v1/actions/<name> and a bearer token; the response is { "data": { "action", "summary", "result" } }. A read badge means the operation changes nothing; write requires the credential’s write scope.
Campaign delivery controls
meta.account_campaign_controlwriteconfirmadmin only
Pause a campaign in a connected Meta account, or resume it and its eligible ads and ad sets, including individually paused ads. Resume can immediately spend the existing real advertising budget. Works for Chirply-built and other Facebook campaigns; preserves budgets and targeting. Returns verified campaign status; partial errors require a refresh before retrying.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
account_id
string
required
Connected Meta ad account ID.
campaign_id
string
required
Campaign in this workspace's connected Meta account.
action
"pause" | "resume"
required
Pause campaign delivery, or enable the campaign and eligible ads/ad sets. Resume can immediately spend its existing budget; no budget or targeting changes.
Over MCP the same operation is the tool meta_account_campaign_control at https://app.chirply.io/api/mcp, same bearer token, same input.
Refresh from Facebook
meta.account_campaigns_readread
Read a page of campaigns with delivery status, exact ad/ad-set counts, a representative creative image, live purchases, attributed revenue, ROAS and ad-spend return from a connected Meta ad account. Ad-spend return excludes non-ad costs and is not profit ROI. Filter source to chirply for campaigns created or duplicated in this account, or external for other Facebook campaigns. Omit source for both. Pass campaign_id to read its ads. A filtered page can be empty with a next cursor. Does not change ads or spend money.
Filter this loaded page by current ad eligibility or impressions/spend during reporting dates. Eligible checks campaign, ad set, ad, schedule and advertiser status; it does not prove an impression right now. Counts and filtering are page-scoped; follow the next cursor even when no matches are returned.
source
"chirply" | "external"
optional
Show only campaigns created or duplicated in this Chirply workspace, or other Facebook campaigns. Omit for both sources. Pagination may include an empty filtered page with a next cursor.
Over MCP the same operation is the tool meta_account_campaigns_read at https://app.chirply.io/api/mcp, same bearer token, same input.
List Meta ad accounts
meta.ad_accounts_listread
List the account's connected Meta ad accounts, their currency, Business Manager owner, account status, and minimum daily budget. This does not spend money.
Over MCP the same operation is the tool meta_ad_accounts_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Activate ad — can spend
meta.ad_activatewriteconfirmadmin only
Activate a real Meta ad. If its campaign and ad set are also active, it may immediately deliver to real people and spend the connected organization's money.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Over MCP the same operation is the tool meta_ad_activate at https://app.chirply.io/api/mcp, same bearer token, same input.
View comments
meta.ad_comments_readread
Read the public comments people left on the Facebook and Instagram posts one Meta ad runs on, newest first, with each comment's author, text, time, like count, the replies underneath it, and whether the advertiser's own Page or Instagram account answered. Read live from Meta on every call, all-time rather than a reporting window, and reported per underlying post because a dynamic-creative ad has one post per placement and Meta never merges their comments. Posts whose Facebook Page is not connected to this account, or whose connection lacks permission to read Page content, are returned as unreadable with the reason rather than as zero comments. Publishes nothing: no reply is sent, nothing is hidden, liked or deleted, and no money is spent.
Parameters
Field
Type
Required
Description
account_id
string
required
Connected Meta ad account containing the ad.
campaign_id
string
required
Parent campaign ID, verified against the ad before any comment is read.
ad_id
string
required
Exact Meta ad ID whose underlying Facebook or Instagram post comments are read.
limit
integer
optional
Maximum top-level comments to read per underlying post, newest first. Replies to each are included and do not count toward this limit. Default: 50
Over MCP the same operation is the tool meta_ad_comments_read at https://app.chirply.io/api/mcp, same bearer token, same input.
View leads
meta.ad_contacts_readread
Read a page of existing Chirply contacts with this exact Meta ad ID recorded in first or last website attribution or synced Facebook lead-form metadata. Returns names, email, phone and match evidence, scoped to this account and verified ad account/campaign. All-time recorded matches, independent of Meta insight dates; distinct contacts are not equivalent to Meta's aggregate lead events. Does not import contacts, send messages, change ads or spend money.
Parameters
Field
Type
Required
Description
account_id
string
required
Connected Meta ad account containing the ad.
campaign_id
string
required
Parent campaign ID, verified against the ad before reading contacts.
ad_id
string
required
Exact Meta ad ID recorded on the matched contacts.
page
integer
optional
Zero-based page of fifty matched contacts, ordered by creation date and ID. These are all-time recorded matches, independent of the Meta reporting window. Default: 0
Over MCP the same operation is the tool meta_ad_contacts_read at https://app.chirply.io/api/mcp, same bearer token, same input.
Create paused ad
meta.ad_createwriteconfirmadmin only
Create a real Meta ad in PAUSED state from an existing ad set and creative. It cannot deliver or spend until separately activated in Meta.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
account_id
string
required
Connected Meta ad account id, normally beginning with act_.
Over MCP the same operation is the tool meta_ad_create at https://app.chirply.io/api/mcp, same bearer token, same input.
Turn campaign, ad set or ad on or off
meta.ad_object_status_setwriteconfirmadmin only
Turn exactly one campaign, ad set or ad on or off in its connected Meta account. Turning on can immediately spend the existing real ad budget. Parent and child switches are preserved; paused parents still block delivery. Verifies ownership, hierarchy and the resulting status. No budgets or targeting are changed.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
account_id
string
required
Connected Meta ad account ID.
campaign_id
string
required
Parent campaign ID used to verify the target hierarchy.
object_id
string
required
Exact campaign, ad set, or ad to change.
level
"campaign" | "adset" | "ad"
required
Kind of target object; only that object is changed.
status
"ACTIVE" | "PAUSED"
required
Turn only this object on or off. ACTIVE may spend existing budget. Parents and children keep their individual settings.
Over MCP the same operation is the tool meta_ad_pause at https://app.chirply.io/api/mcp, same bearer token, same input.
Compare ad performance
meta.ad_performance_listread
Compare each ad's last-30-day spend, impressions, reach, clicks, leads, and cost per lead in one connected Meta ad account. This reads Meta reporting data and does not change delivery or spend money.
Parameters
Field
Type
Required
Description
account_id
string
required
Connected Meta ad account id, normally beginning with act_.
Over MCP the same operation is the tool meta_ad_performance_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Resume ad
meta.ad_resume_deliverywriteconfirmadmin only
Resume one ad from a campaign launched by this account, also enabling its ad set and campaign. Can immediately spend real money at existing Meta budgets; other already-enabled ads under these parents may deliver too. Other individually paused ads stay paused. Review and schedules still apply.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
ad_id
string
required
Meta ID of the individual Chirply-launched ad to resume with its parents.
Over MCP the same operation is the tool meta_ad_resume_delivery at https://app.chirply.io/api/mcp, same bearer token, same input.
Activate ad set — can spend
meta.ad_set_activatewriteconfirmadmin only
Activate a real Meta ad set. If its campaign and ads are also active, it may immediately begin spending the connected organization's money up to its configured budget.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Over MCP the same operation is the tool meta_ad_set_activate at https://app.chirply.io/api/mcp, same bearer token, same input.
Create paused ad set
meta.ad_set_createwriteconfirmadmin only
Create a real PAUSED Meta ad set with a daily budget and targeting. It cannot spend until activated, but its budget becomes live if its campaign and delivery are later activated.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
account_id
string
required
Connected Meta ad account id, normally beginning with act_.
campaign_id
string
required
Parent Meta campaign id.
name
string
required
Ad-set name shown in Meta Ads Manager.
daily_budget
integer
required
Daily budget in the ad account currency's minor units, such as cents or paise.
billing_event
string
optional
Meta billing event, normally IMPRESSIONS. Default: "IMPRESSIONS"
optimization_goal
string
required
Meta optimization goal appropriate for the campaign objective, such as LINK_CLICKS or LEAD_GENERATION.
bid_strategy
string
optional
Meta bid strategy. Default: "LOWEST_COST_WITHOUT_CAP"
targeting
map of string → object
required
Meta targeting object, including geo_locations and any audience constraints.
promoted_object
map of string → object
optional
Meta promoted_object required by objectives such as conversions or lead generation.
Over MCP the same operation is the tool meta_ads_list at https://app.chirply.io/api/mcp, same bearer token, same input.
View ad accounts and Pages
meta.advertising_identity_getreadadmin only
Read its connected ad accounts with account IDs and business portfolio details, and Pages with advertising permission and current profile photos. Inbox routing ownership does not restrict website advertising. Read-only; spends no money and changes no ads or messaging routes.
Over MCP the same operation is the tool meta_advertising_identity_get at https://app.chirply.io/api/mcp, same bearer token, same input.
Saved audiences
meta.audiences_listread
List every custom audience on one connected Meta ad account — website visitors, lead-form activity, Page and Instagram engagement, and uploaded customer lists — with its rough size and whether Meta considers it ready to advertise to. Use it to pick an audience to retarget or to exclude. Read-only: it creates no audience, changes no delivery, and spends no money.
Parameters
Field
Type
Required
Description
account_id
string
required
Connected Meta ad account id, normally beginning with act_.
Over MCP the same operation is the tool meta_audiences_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Activate campaign — can spend
meta.campaign_activatewriteconfirmadmin only
Activate a real Meta campaign. If its ad sets and ads are eligible, this may immediately begin spending the connected organization's money according to their budgets.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Over MCP the same operation is the tool meta_campaign_activate at https://app.chirply.io/api/mcp, same bearer token, same input.
Generate AI recommendations
meta.campaign_analyzewriteconfirmadmin only
Fetch a campaign's current Meta performance and send it to the account's OpenRouter reasoning model for saved recommendations. Billed to its own OpenRouter account. Advice only: never changes ads or budgets. Reuse request_id on retries.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Filter this loaded page by current ad eligibility or impressions/spend during reporting dates. Eligible checks campaign, ad set, ad, schedule and advertiser status; it does not prove an impression right now. Counts and filtering are page-scoped; follow the next cursor even when no matches are returned.
Over MCP the same operation is the tool meta_campaign_analyze at https://app.chirply.io/api/mcp, same bearer token, same input.
Create paused campaign
meta.campaign_createwriteconfirmadmin only
Create a real campaign in Meta Ads Manager in PAUSED state. It cannot spend until separately activated, but it permanently creates an external advertising object.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
account_id
string
required
Connected Meta ad account id, normally beginning with act_.
name
string
required
Campaign name shown in Meta Ads Manager.
objective
string
required
Meta campaign objective, such as OUTCOME_TRAFFIC, OUTCOME_LEADS, or OUTCOME_SALES.
special_ad_categories
string[]
optional
Applicable regulated categories such as HOUSING, EMPLOYMENT, CREDIT, or ISSUES_ELECTIONS_POLITICS; empty only when none apply. Default: []
Over MCP the same operation is the tool meta_campaign_create at https://app.chirply.io/api/mcp, same bearer token, same input.
Archive draft
meta.campaign_draft_archivewriteadmin only
Move one unpublished Magic Ads draft out of the current campaign list and into the reversible archive. This does not delete creative records, contact Meta, change delivery, publish anything, message anyone, or spend money. Published campaigns cannot be archived here.
Parameters
Field
Type
Required
Description
draft_id
string (uuid)
required
Unpublished Magic Ads draft to move into the archive.
Over MCP the same operation is the tool meta_campaign_draft_archive at https://app.chirply.io/api/mcp, same bearer token, same input.
Delete permanently
meta.campaign_draft_deletewriteconfirmadmin only
PERMANENTLY delete one unpublished or archived Magic Ads draft and cascade-delete its saved creative metadata from Chirply. This cannot be undone. Generated image files, funnels, and automations remain in their own libraries, and this does not delete or pause anything in Meta. Published campaign records are refused.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
draft_id
string (uuid)
required
Unpublished or archived Magic Ads draft to permanently delete after explicit confirmation.
Over MCP the same operation is the tool meta_campaign_draft_delete at https://app.chirply.io/api/mcp, same bearer token, same input.
Resume campaign
meta.campaign_draft_getread
Load one tenant-scoped Magic Ads campaign account exactly where it was saved, including its brief, generated plan, creative versions, delivery settings, funnel choice, and automation choice. This is read-only and does not contact Meta or change delivery.
Parameters
Field
Type
Required
Description
draft_id
string (uuid)
required
Saved Magic Ads campaign id to reopen in the current account.
Over MCP the same operation is the tool meta_campaign_draft_get at https://app.chirply.io/api/mcp, same bearer token, same input.
Restore draft
meta.campaign_draft_restorewriteadmin only
Restore one archived Magic Ads draft to the current campaign list with its brief, creative records, and saved builder state intact. This does not contact Meta, change delivery, publish anything, message anyone, or spend money.
Parameters
Field
Type
Required
Description
draft_id
string (uuid)
required
Archived Magic Ads draft to return to the current campaign list.
Over MCP the same operation is the tool meta_campaign_draft_restore at https://app.chirply.io/api/mcp, same bearer token, same input.
Save draft
meta.campaign_draft_savewriteadmin only
Create or update a private, tenant-scoped Magic Ads draft with the exact resumable builder state. This stores data in Chirply only; it does not generate media, publish a funnel, contact Meta, launch ads, message leads, or spend money.
Parameters
Field
Type
Required
Description
draft_id
string (uuid)
optional
Existing draft to update; omit to create a new saved campaign.
campaign_name
string
required
Human-readable campaign name shown in the campaign library.
plan
map of string → object
optional
Current generated campaign plan, or an empty object when saving before generation. Default: {}
workspace
map of string → object
required
Exact builder selections to restore, such as intake, creative, targeting, destination, funnel, and automation settings.
Over MCP the same operation is the tool meta_campaign_draft_save at https://app.chirply.io/api/mcp, same bearer token, same input.
All campaigns
meta.campaign_drafts_listread
List every unarchived Magic Ads campaign in the current account, including drafts and launched campaigns, their objective, destination, creative count, and whether a companion funnel or automation exists. This is read-only and does not contact Meta or change delivery.
Parameters
Field
Type
Required
Description
limit
integer
optional
Maximum number of recently updated campaign accounts to return. Default: 100
view
"active" | "archived"
optional
Return current draft/published campaigns or the reversible archive. Default: "active"
Over MCP the same operation is the tool meta_campaign_drafts_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Copy campaign
meta.campaign_duplicatewriteconfirmadmin only
Create a real paused copy of an existing Meta campaign including its ad sets and ads. Permanently creates external advertising objects, but does not activate delivery or spend ad budget. Requires ads management access. Reuse request_id on retries; an uncertain outcome must be checked in Ads Manager before attempting another copy.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Filter this loaded page by current ad eligibility or impressions/spend during reporting dates. Eligible checks campaign, ad set, ad, schedule and advertiser status; it does not prove an impression right now. Counts and filtering are page-scoped; follow the next cursor even when no matches are returned.
Over MCP the same operation is the tool meta_campaign_duplicate at https://app.chirply.io/api/mcp, same bearer token, same input.
View ad sets and ads
meta.campaign_hierarchy_readread
Read one page of ad sets or ads within a connected campaign, with individual configured and effective delivery status, creative images, ad counts and performance for the chosen account-timezone date range. Optionally restrict ads to one ad set. Does not change delivery or spend money.
Over MCP the same operation is the tool meta_campaign_hierarchy_read at https://app.chirply.io/api/mcp, same bearer token, same input.
Saved analysis & copies
meta.campaign_operations_listread
Read the latest thirty saved AI analyses and campaign duplication outcomes for one connected Meta ad account in this account. Does not generate new analysis, change ads, or spend money.
Over MCP the same operation is the tool meta_campaign_operations_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Pause campaign
meta.campaign_pausewriteadmin only
Pause a real Meta campaign, stopping new delivery and spend as Meta applies the status change. The campaign and its configuration remain available to reactivate later.
Over MCP the same operation is the tool meta_campaign_pause at https://app.chirply.io/api/mcp, same bearer token, same input.
How my ads are doing
meta.campaign_resultsread
Report how every Facebook and Instagram campaign this account launched through the app is actually doing: whether each one is still in Meta's review queue, live and delivering, paused, or rejected, plus impressions, people reached, clicks, click-through rate, cost per click, amount spent, leads, and cost per lead for the chosen window — broken down per creative version. Campaigns run directly in Ads Manager are deliberately excluded, because this account did not launch them here. Read-only: it never changes delivery, never turns anything on or off, and never spends money.
Over MCP the same operation is the tool meta_campaign_results at https://app.chirply.io/api/mcp, same bearer token, same input.
Resume ads
meta.campaign_resume_adswriteconfirmadmin only
Resume a campaign launched by this account together with all its resumable ads and their ad sets, including individually paused ads. Can immediately spend real money from the connected Meta ad account at existing budgets. Leaves targeting, schedules, rejected and archived ads unchanged; reports partial failures.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
campaign_id
string
required
Meta ID of the campaign launched by this account whose ads should resume.
Over MCP the same operation is the tool meta_campaign_resume_ads at https://app.chirply.io/api/mcp, same bearer token, same input.
Build the rest of this campaign
meta.campaign_system_buildwriteconfirmadmin only
Optionally generate and immediately PUBLISH a complete public conversion funnel for one saved Magic Ads draft, mount it below a route on a connected domain, and/or create a PAUSED editable follow-up automation using the exact Facebook Page/form and funnel triggers. AI generation consumes the account's OpenRouter credits. Publishing makes the generated pages public; the workflow does not contact anyone until a person reviews and activates it.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
draft_id
string (uuid)
required
Saved Magic Ads campaign draft that owns the creatives, funnel, automation, and later Meta ids.
business_name
string
required
Business name used consistently across the generated pages and follow-up copy.
campaign_name
string
required
Campaign name used to name the generated funnel and automation.
offer
string
required
The exact offer the ads and generated funnel must fulfill.
audience
string
required
Who should respond to the campaign.
strategy
string
required
Approved campaign strategy the funnel and automation must continue.
form_promise
string
required
What happens after the visitor submits or responds.
Meta objective the companion funnel should support.
lead_destination
"INSTANT_FORM" | "WEBSITE"
optional
Whether a lead responds inside Meta or on the generated/existing website. Default: "INSTANT_FORM"
page_id
string
required
Connected Facebook Page used to narrow the generated workflow trigger.
form_id
string
optional
Existing Meta instant-form id, __auto__ for the form launch will create, or blank when not applicable. Default: ""
current_destination_url
string
optional
Existing public HTTPS destination, used when no funnel is generated. Default: ""
build_funnel
boolean
optional
Generate and publish a matching multi-page funnel. Default: true
build_automation
boolean
optional
Create a paused editable follow-up workflow using every relevant configured channel. Default: true
domain_id
string (uuid)
optional
Active connected domain to host the funnel below a collision-safe offer route. Omit for the Chirply-hosted URL.
automation_brief
string
optional
Optional natural-language instructions stored on the workflow canvas and used to shape the safe draft.
brain_scope
object
optional
Which part of the AI Knowledge Brain the generated funnel pages are written from. Use the same scope the ad copy was written with so the page and the ad tell one story.
brain_scope.mode
"none" | "all" | "selection"
required
none = write from the brief alone; all = use the whole Knowledge Brain; selection = use only the topics and entries named below.
brain_scope.topic_ids
array of (string (uuid))
optional
Knowledge Brain topic ids to use in full, including every entry inside them. Ignored unless mode is 'selection'. Get ids from brain.list_topics. Default: []
brain_scope.item_ids
array of (string (uuid))
optional
Individual knowledge-entry ids to use, for topics not taken in full. Combines with topic_ids. Ignored unless mode is 'selection'. Get ids from brain.list_knowledge. Default: []
Over MCP the same operation is the tool meta_campaigns_list at https://app.chirply.io/api/mcp, same bearer token, same input.
View comment-to-DM
meta.comment_dm_getreadadmin only
Show the comment-to-DM settings for one connected Instagram account: whether it is on, the keyword a comment must contain, the message that gets sent, and whether each commenter is messaged only once.
Parameters
Field
Type
Required
Description
page_id
string
required
The connected Instagram account id (or Facebook Page id) whose settings to read.
Over MCP the same operation is the tool meta_comment_dm_get at https://app.chirply.io/api/mcp, same bearer token, same input.
Save comment-to-DM
meta.comment_dm_updatewriteconfirmadmin only
Set whether an Instagram direct message is sent automatically to people who comment on this account's posts. Turning this on causes REAL DIRECT MESSAGES TO BE SENT AUTOMATICALLY TO REAL PEOPLE who have not messaged the business first, every time a matching comment is posted, with no further human approval. Instagram permits one such message per comment, within 7 days of it being posted.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
shared_page_acknowledged
boolean
optional
Set true only after acknowledging that this Page is connected to another Chirply account and enabling automation may send duplicate messages, replies or comments.
page_id
string
required
The connected Instagram account id (or Facebook Page id) these settings apply to.
enabled
boolean
required
True starts auto-messaging commenters immediately. False keeps the settings but sends nothing.
keyword
string
optional
Only comments containing this text trigger the message. Case-insensitive, matched anywhere in the comment. Omit or leave empty to message everyone who comments.
message
string
optional
The direct message to send, word for word. Required when enabled is true.
once
boolean
optional
True (the default) messages each person only once no matter how often they comment.
Over MCP the same operation is the tool meta_comment_dm_update at https://app.chirply.io/api/mcp, same bearer token, same input.
List posts you can automate
meta.comment_posts_listread
List the recent posts from one connected Facebook Page and its linked Instagram account, with the id each one is identified by. Use it to find the post id a per-post comment rule targets.
Parameters
Field
Type
Required
Description
page_id
string
required
The connected Facebook Page id (or linked Instagram account id) whose posts to list. Get valid ids from meta.pages_list.
limit
integer
optional
Maximum posts to return per surface, newest first. Default: 15
Over MCP the same operation is the tool meta_comment_posts_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Delete comment rule
meta.comment_rule_deletewriteconfirmadmin only
Permanently delete one comment automation rule. It stops running immediately and cannot be recovered; comments it used to handle fall through to the next matching rule, or to the Page's own comment settings.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Over MCP the same operation is the tool meta_comment_rule_delete at https://app.chirply.io/api/mcp, same bearer token, same input.
Save comment rule
meta.comment_rule_savewriteconfirmadmin only
Create or update one comment automation rule on a connected Facebook Page. An active rule causes REAL PUBLIC COMMENT REPLIES and REAL PRIVATE MESSAGES TO BE SENT AUTOMATICALLY TO REAL PEOPLE, from its own connected account, every time a matching comment is posted and with no further human approval. Meta permits one private reply per comment within 7 days, so a rule either sends a fixed message or starts a flow, never both. When several rules match, the most specific one runs: a rule for one post beats a rule for every post, and a keyword rule beats a catch-all.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
shared_page_acknowledged
boolean
optional
Set true only after acknowledging that this Page is connected to another Chirply account and enabling automation may send duplicate messages, replies or comments.
page_id
string
required
The connected Facebook Page id (or linked Instagram account id) this rule belongs to. Ignored when rule_id is given.
rule_id
string (uuid)
optional
Omit to create a new rule. Provide the id from meta.comment_rules_list to replace an existing one.
name
string
optional
Optional label shown in the app, for example 'Launch post - DROP'.
platform
"any" | "facebook" | "instagram"
optional
Which surface the rule answers on. 'any' covers Facebook Page comments and the linked Instagram account's comments. Default: "any"
post_id
string
optional
Omit for the Page-wide default. Give a Facebook post id or Instagram media id (from meta.comment_posts_list) to override that one post.
keywords
string[]
optional
Any-of list a comment must contain. Empty means every comment in this scope, which makes the rule its catch-all. Default: []
match_type
"contains" | "word" | "exact"
optional
How each keyword is compared, always case-insensitively: anywhere in the comment, as a whole word, or as the entire comment. Default: "contains"
reply_mode
"inherit" | "off" | "text" | "ai"
optional
The PUBLIC reply posted under the comment. 'inherit' leaves it to the Page's own comment setting, 'off' posts nothing, 'text' posts reply_text, 'ai' has an AI agent write it. Default: "inherit"
reply_text
string
optional
The public reply, word for word. Required when reply_mode is 'text'. One variant per line: Meta hides comments that repeat verbatim, so Chirply picks a line per comment.
reply_agent_id
string (uuid)
optional
The AI agent that writes the public reply. Required when reply_mode is 'ai'.
reply_instructions
string
optional
Extra channel instructions for the AI agent, used only when reply_mode is 'ai'.
dm_mode
"off" | "text" | "workflow"
optional
The PRIVATE reply sent to the commenter. 'off' sends nothing, 'text' sends dm_text once, 'workflow' starts a flow whose first conversation step sends the opening message instead. Default: "off"
dm_text
string
optional
The private message, word for word. Required when dm_mode is 'text'. Text only - Meta does not accept media on a comment private reply.
workflow_id
string (uuid)
optional
The flow this comment enters. Required when dm_mode is 'workflow'. A paused flow is not started.
once_per_actor
boolean
optional
True (the default) privately messages each person only once on this Page, however often they comment. Applies to dm_mode 'text'; a flow enrols per comment and is bounded by the comment claim instead. Default: true
priority
integer
optional
Breaks ties between rules of the same shape; higher wins. Leave at 0 unless two equally specific rules overlap. Default: 0
is_active
boolean
optional
True starts running this rule against new comments immediately. False keeps it saved but dormant. Default: true
Over MCP the same operation is the tool meta_comment_rule_save at https://app.chirply.io/api/mcp, same bearer token, same input.
View comment rules
meta.comment_rules_listread
List the comment automation rules on one connected Facebook Page: what each one matches (every post or one post, which keywords), what it replies publicly, and whether it sends a private message or starts a flow. Rules cover Messenger and the Page's linked Instagram account together.
Parameters
Field
Type
Required
Description
page_id
string
required
The connected Facebook Page id (or linked Instagram account id) whose rules to read.
Over MCP the same operation is the tool meta_comment_rules_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Connected assets
meta.connected_assetsread
Read this account's connected Facebook profile name, saved permission snapshot, ad accounts and business portfolios, Pages and Instagram IDs. Read live Meta Pixels for the selected connected ad account, including each ID, last-event date, availability and copyable website installation code. The code reports browser PageView events to Meta when installed and allowed by the site's marketing consent; installation and lead/purchase event setup are separate. Returns explicit read errors and a cursor for more than 100 pixels. This read installs nothing, changes no ads, sends no messages and spends no money. Never returns credentials.
Parameters
Field
Type
Required
Description
account_id
string
optional
Connected Meta ad account ID, with or without act_. Omit to select the first connected ad account.
pixel_after
string
optional
Opaque nextPixels cursor returned by an earlier read for the same ad account. Omit for the first 100 pixels.
Over MCP the same operation is the tool meta_connected_assets at https://app.chirply.io/api/mcp, same bearer token, same input.
Disconnect Facebook
meta.connection_disconnectwriteconfirmadmin only
Disconnect Facebook and Instagram from this account, uninstall Chirply from its Pages, revoke the Meta user grant, and remove locally stored Page/ad assets. Existing CRM contacts and messages remain. Reconnecting is required to restore service.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
confirm
true
required
Must be true to confirm the disconnection and Meta grant revocation.
Over MCP the same operation is the tool meta_connection_disconnect at https://app.chirply.io/api/mcp, same bearer token, same input.
View Facebook connection
meta.connection_getreadadmin only
Show whether Facebook, Instagram, and WhatsApp are connected to this account, which permissions were granted, and whether Meta requires the owner to reconnect. Tokens and other secrets are never returned.
Over MCP the same operation is the tool meta_connection_get at https://app.chirply.io/api/mcp, same bearer token, same input.
Pixels and conversions
meta.conversion_sources_listread
List Meta Pixels (datasets), received custom Pixel events from the last 28 days when pixel_id is supplied, and custom conversions on one connected ad account, with each Pixel's name and whether it has ever received an event. These are what a website campaign optimizes around: the Pixel watching the site, and the thing happening on it that counts as success. Read-only — it creates nothing, changes no delivery, and spends no money.
Parameters
Field
Type
Required
Description
account_id
string
required
Connected Meta ad account id, normally beginning with act_.
pixel_id
string
optional
Pixel on this account whose received custom event names should be queried for the last 28 days.
Over MCP the same operation is the tool meta_conversion_sources_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Create link ad creative
meta.creative_create_linkwriteconfirmadmin only
Create a real unpublished Meta link-ad creative for a connected Facebook Page. This does not deliver or spend until attached to an active ad.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
account_id
string
required
Connected Meta ad account id, normally beginning with act_.
page_id
string
required
Connected Facebook Page id used as the ad identity.
name
string
required
Creative name shown in Meta Ads Manager.
message
string
required
Primary ad text visible to real people once delivered.
link_url
string (uri)
required
Public destination URL for the ad.
image_hash
string
optional
Optional image hash already uploaded to this Meta ad account.
image_url
string (uri)
optional
Public image URL Meta can fetch when no uploaded image hash is supplied.
call_to_action_type
string
optional
Optional Meta CTA type such as LEARN_MORE, SIGN_UP, or SHOP_NOW.
Over MCP the same operation is the tool meta_creative_create_link at https://app.chirply.io/api/mcp, same bearer token, same input.
List Instagram profiles
meta.instagram_accounts_listread
List Instagram Professional profiles linked to this account's Facebook Pages, including current usernames, follower counts, media counts, webhook delivery, and live direct-message access status. This is read-only.
Over MCP the same operation is the tool meta_instagram_accounts_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Publish image
meta.instagram_image_publishwriteconfirmadmin only
Publish a REAL PUBLIC IMAGE POST to one Instagram Professional account assigned to this account. The image and caption become visible to that account's audience immediately; this does not buy ads but permanently creates external content until someone deletes it in Instagram.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
instagram_id
string
required
Instagram Professional account id assigned to this account.
image_url
string (uri)
required
Public HTTPS URL Meta can download for the image post.
caption
string
optional
Caption published with the Instagram image, up to 2,200 characters. Default: ""
Over MCP the same operation is the tool meta_instagram_image_publish at https://app.chirply.io/api/mcp, same bearer token, same input.
List Instagram media
meta.instagram_media_listread
List recent posts from one Instagram Professional profile assigned to this account, including captions, permalinks, likes, and comment counts. This is read-only.
Parameters
Field
Type
Required
Description
instagram_id
string
required
Instagram Professional account id assigned to this account.
limit
integer
optional
Maximum recent media items to return, from 1 to 25. Default: 12
Over MCP the same operation is the tool meta_instagram_media_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Create lead form
meta.instant_form_createwriteconfirmadmin only
Create and activate a real Meta instant lead form on a connected Facebook Page, collecting full name, email, and phone. New submissions enter this account and may trigger its contact-created automations. This permanently creates an external Meta object but does not launch an ad or spend ad money.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page that will own the new instant form.
name
string
required
Form name shown in Meta's Page and Ads Manager tools.
privacy_policy_url
string (uri)
required
Advertiser's public privacy-policy URL shown inside the form.
follow_up_action_url
string (uri)
required
Public business website opened from the form's follow-up action.
Over MCP the same operation is the tool meta_instant_form_create at https://app.chirply.io/api/mcp, same bearer token, same input.
Launch status
meta.launch_progress_readread
Read saved launch steps, created Meta object IDs, and the latest failure for a campaign draft in this account. Shows completed, running and uncertain outcomes without creating ads, changing delivery, or spending money. Completed provider steps are reused when the existing launch action is retried with identical settings.
Parameters
Field
Type
Required
Description
draft_id
string (uuid)
required
Saved campaign draft in the current workspace whose launch progress should be read.
Over MCP the same operation is the tool meta_launch_progress_read at https://app.chirply.io/api/mcp, same bearer token, same input.
Start a fresh launch
meta.launch_resetwriteconfirmadmin only
Reset a failed campaign launch after verifying that its old Meta campaign is archived or deleted. Preserves the draft, settings, creative assets and prior launch history. Does not delete Meta objects, create ads, activate delivery or spend money. A separate launch action and budget approval are still required. Refuses active, uncertain, successful or concurrently changed attempts.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
draft_id
string (uuid)
required
Saved campaign draft in the current workspace whose launch progress should be read.
run_id
string (uuid)
required
The failed launch run ID currently displayed; prevents resetting a newer or concurrent attempt.
Over MCP the same operation is the tool meta_launch_reset at https://app.chirply.io/api/mcp, same bearer token, same input.
Save uploaded creative
meta.lead_campaign_asset_savewriteadmin only
Save an already-public image URL as a durable creative version in a saved Meta campaign draft, preserving the exact copy, direction, and references. This stores metadata but does not generate an image, contact anyone, create a Meta object, or spend ad money.
Parameters
Field
Type
Required
Description
draft_id
string (uuid)
required
Saved campaign draft that owns this creative version.
concept_id
string
required
Stable concept id that owns this creative version.
angle
string
required
Human-readable strategic angle for this creative version.
primary_text
string
optional
Ad primary text snapshot retained with the image. Default: ""
headline
string
optional
Ad headline snapshot retained with the image. Default: ""
description
string
optional
Ad description snapshot retained with the image. Default: ""
visual_prompt
string
optional
Visual prompt or description retained with the uploaded image. Default: ""
why_it_works
string
optional
Strategic rationale retained with the creative version. Default: ""
image_url
string (uri)
required
Public HTTPS URL of the image to retain and later send to Meta.
creative_direction
string
optional
Specific visual qualities the advertiser wants. Default: ""
avoid_direction
string
optional
Visual treatments the advertiser does not want. Default: ""
reference_urls
array of (string (uri))
optional
Public reference images associated with this version. Default: []
Over MCP the same operation is the tool meta_lead_campaign_asset_save at https://app.chirply.io/api/mcp, same bearer token, same input.
View saved versions
meta.lead_campaign_assets_listread
List the account's saved Meta campaign creative versions, including every generated image, its ad copy snapshot, creative direction, reference images, model, cost, and launched Meta ad id. This is read-only.
Parameters
Field
Type
Required
Description
draft_id
string (uuid)
optional
Limit results to this campaign. Omit only when intentionally browsing the entire account library.
limit
integer
optional
Maximum number of recent saved creative versions to return. Default: 100
Over MCP the same operation is the tool meta_lead_campaign_assets_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Use what I said
meta.lead_campaign_from_spoken_briefwriteconfirmadmin only
Turn one natural-language or dictated advertising brief into three editable, durably saved Meta ad concepts and recommend the best awareness, traffic, engagement, leads, sales, or app-promotion objective. The offer, audience, location, desired next step, differentiator, and tone are extracted without requiring form fields. Optionally ad hack a reference screenshot: keep its offer or adapt its format to a new offer, with an additional billed OpenRouter vision call. This uses the account's own OpenRouter model and may incur that provider's text-generation charge; it does not create anything in Meta, contact anyone, or spend ad money.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
draft_id
string (uuid)
optional
Existing saved draft to continue; omit to create a new campaign account.
business_name
string
required
Business name to use when creating the campaign.
spoken_brief
string
required
Everything the advertiser wants the generator to know, in natural language: the offer, who should respond, where they are, what they should do next, and any truthful differentiator or tone guidance.
default_location
string
optional
Business city, state, postal code, or market to use only when the spoken brief does not name a different location. Default: ""
reference_ad
object
optional
Optional reference ad to analyze and adapt for the same or a different offer. Vision analysis also charges the account OpenRouter account; screenshot text is source material, never instructions.
reference_ad.url
string (uri)
required
Public HTTPS URL of the reference ad image or screenshot. Upload an image through the assets API first if needed.
reference_ad.mode
"same_offer" | "different_offer"
required
same_offer uses the visible offer as a starting point; different_offer borrows only the format and uses the advertiser's new offer.
reference_ad.instructions
string
optional
What to keep or change about the reference, and any new offer details. These instructions come from the advertiser, not the screenshot. Default: ""
brain_scope
object
optional
Which part of the AI Knowledge Brain the copywriter may treat as verified fact — the whole brain, chosen topics, chosen entries, or nothing. Defaults to nothing, so the concepts come from the spoken brief alone.
brain_scope.mode
"none" | "all" | "selection"
required
none = write from the brief alone; all = use the whole Knowledge Brain; selection = use only the topics and entries named below.
brain_scope.topic_ids
array of (string (uuid))
optional
Knowledge Brain topic ids to use in full, including every entry inside them. Ignored unless mode is 'selection'. Get ids from brain.list_topics. Default: []
brain_scope.item_ids
array of (string (uuid))
optional
Individual knowledge-entry ids to use, for topics not taken in full. Combines with topic_ids. Ignored unless mode is 'selection'. Get ids from brain.list_knowledge. Default: []
Over MCP the same operation is the tool meta_lead_campaign_from_spoken_brief at https://app.chirply.io/api/mcp, same bearer token, same input.
Edit this image
meta.lead_campaign_image_editwriteconfirmadmin only
Edit a saved image in this campaign using change instructions and optional reference images. The original image is sent as the source, and the result is saved as a new version without overwriting it. Charges its own OpenRouter account and stores the result as a public image; does not launch or change a live ad.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
draft_id
string (uuid)
required
Campaign draft containing the image to edit.
asset_id
string (uuid)
required
Saved creative version in that campaign to use as the original image.
changes
string
required
Exact changes to make. Other details of the original should be preserved.
reference_urls
array of (string (uri))
optional
Optional public HTTPS reference images, in order. Explain how each should guide the changes. Default: []
Over MCP the same operation is the tool meta_lead_campaign_image_edit at https://app.chirply.io/api/mcp, same bearer token, same input.
Generate with AI
meta.lead_campaign_image_generatewriteconfirmadmin only
Generate one real square advertising image through its own OpenRouter account and store it as a public asset that Meta can fetch. This incurs the image model's provider charge and permanently stores the generated image, but does not create or launch a Meta ad.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
draft_id
string (uuid)
optional
Saved campaign draft id; omit only for a standalone asset.
concept_id
string
optional
Stable concept id that owns this generated version.
angle
string
optional
Human-readable strategic angle for this creative version.
primary_text
string
optional
Ad primary text snapshot to retain with the generated image.
headline
string
optional
Ad headline snapshot to retain with the generated image.
description
string
optional
Ad description snapshot to retain with the generated image.
visual_prompt
string
required
Truthful visual direction for a square, text-free lead-ad photograph.
why_it_works
string
optional
Strategic rationale retained with the saved version.
creative_direction
string
optional
Specific qualities, composition, mood, subject, or style the advertiser wants.
avoid_direction
string
optional
Visual clichés, subjects, treatments, or details the advertiser explicitly does not want.
reference_urls
array of (string (uri))
optional
Up to six public reference-image URLs used to guide the generation. Default: []
Over MCP the same operation is the tool meta_lead_campaign_image_generate at https://app.chirply.io/api/mcp, same bearer token, same input.
Launch lead campaign
meta.lead_campaign_launchwriteconfirmadmin only
Create and activate one real Meta awareness, traffic, engagement, leads, sales, or app-promotion campaign with a validated destination, CTA, and placement strategy. This immediately makes the campaign eligible to reach real people and spend the selected ad account's money up to the daily budget; Meta bills the advertiser directly. The campaign is created paused and activated last so an incomplete setup cannot spend.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
account_id
string
required
Connected Meta ad account id, normally beginning with act_.
page_id
string
required
Connected Facebook Page id used as the public ad identity.
form_id
string
optional
Active instant-form id on the selected Facebook Page; required only when lead_destination is INSTANT_FORM. Default: ""
campaign_name
string
required
Campaign name shown in Meta Ads Manager.
primary_text
string
required
Main ad copy shown to real people.
headline
string
required
Ad headline shown under the creative.
description
string
optional
Short supporting description shown when the placement allows it. Default: ""
Website event Meta should optimize for when the campaign uses a Pixel or dataset. Default: "PURCHASE"
custom_event_name
string
optional
Exact custom Pixel event name returned by meta.conversion_sources_list for the chosen Pixel. Optimizes for this event instead of conversion_event; do not combine with custom_conversion_id.
custom_conversion_id
string
optional
A custom conversion defined on the ad account, optimized for INSTEAD of conversion_event. Use meta.conversion_sources_list to find its id.
app_id
string
optional
Meta application id required for app-promotion campaigns.
app_store_url
string (uri)
optional
Public Apple App Store or Google Play URL required for app-promotion campaigns.
image_url
string (uri)
required
Public HTTPS image URL Meta can fetch for the ad creative.
website_url
string
optional
Public HTTPS destination linked from the ad; optional only for app-promotion campaigns, which use app_store_url instead. Default: ""
daily_budget_minor
integer
required
Maximum daily budget in the ad account currency's minor units, such as cents; Meta may spend up to this amount per day.
location_key
string
optional
Exact Meta location key returned by meta.locations_search. Required when the query matches multiple locations; pass the same query used for that search.
location_query
string
required
Country, state/region, city or postal code Meta should resolve for geographic targeting.
country_code
string
required
Two-letter ISO country code used to disambiguate the target location.
radius_miles
integer
optional
City targeting radius from 10 to 50 miles; ignored for whole countries, states/regions and postal-code boundaries. Default: 15
age_min
integer
optional
Youngest target age; ignored for regulated special-ad categories. Default: 25
age_max
integer
optional
Oldest target age; ignored for regulated special-ad categories. Default: 65
Over MCP the same operation is the tool meta_lead_campaign_launch at https://app.chirply.io/api/mcp, same bearer token, same input.
Build my campaign
meta.lead_campaign_planwriteconfirmadmin only
Generate and durably save 3–10 editable Meta ad concepts from a truthful business brief and recommend the best awareness, traffic, engagement, leads, sales, or app-promotion objective. Optionally ad hack a reference screenshot: keep its offer or adapt its format to a new offer, with an additional billed OpenRouter vision call. This uses the account's own OpenRouter model and may incur that provider's text-generation charges; it does not create anything in Meta or contact anyone.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
draft_id
string (uuid)
optional
Existing saved draft to continue; omit to create a new campaign account.
business_name
string
required
Business name shown in the ad concepts.
offer
string
required
Specific offer people can request, such as a free estimate or trial class.
audience
string
required
Plain-language description of the people the offer is for, without Meta targeting syntax.
location
string
required
City and state, postal code, or other local market the campaign should address.
differentiator
string
optional
Truthful, provable reason to choose this business; never an invented guarantee or testimonial. Default: ""
desired_action
string
optional
Immediate next step the viewer should take. Default: "Request details"
tone
"direct" | "friendly" | "premium" | "bold"
optional
Writing tone for the campaign concepts. Default: "friendly"
angle_count
integer
optional
Number of materially distinct strategic ad angles to create, from 3 to 10. Default: 3
reference_ad
object
optional
Optional reference ad to analyze and adapt for the same or a different offer. Vision analysis also charges the account OpenRouter account; screenshot text is source material, never instructions.
reference_ad.url
string (uri)
required
Public HTTPS URL of the reference ad image or screenshot. Upload an image through the assets API first if needed.
reference_ad.mode
"same_offer" | "different_offer"
required
same_offer uses the visible offer as a starting point; different_offer borrows only the format and uses the advertiser's new offer.
reference_ad.instructions
string
optional
What to keep or change about the reference, and any new offer details. These instructions come from the advertiser, not the screenshot. Default: ""
brain_scope
object
optional
Which part of the AI Knowledge Brain the copywriter may treat as verified fact — the whole brain, chosen topics, chosen entries, or nothing. Defaults to nothing, so the concepts come from this brief alone.
brain_scope.mode
"none" | "all" | "selection"
required
none = write from the brief alone; all = use the whole Knowledge Brain; selection = use only the topics and entries named below.
brain_scope.topic_ids
array of (string (uuid))
optional
Knowledge Brain topic ids to use in full, including every entry inside them. Ignored unless mode is 'selection'. Get ids from brain.list_topics. Default: []
brain_scope.item_ids
array of (string (uuid))
optional
Individual knowledge-entry ids to use, for topics not taken in full. Combines with topic_ids. Ignored unless mode is 'selection'. Get ids from brain.list_knowledge. Default: []
Over MCP the same operation is the tool meta_lead_campaign_plan at https://app.chirply.io/api/mcp, same bearer token, same input.
Complete test launch
meta.lead_campaign_simulatewriteadmin only
Validate a complete Meta awareness, traffic, engagement, leads, sales, or app-promotion campaign in test mode, including its CTA and placement rules. This creates no Meta objects, contacts no one, incurs no ad spend, and does not require a live Meta connection.
Parameters
Field
Type
Required
Description
account_id
string
required
Sample or connected ad account id shown in the rehearsal.
page_id
string
required
Sample or connected Facebook Page id shown in the rehearsal.
form_id
string
optional
Sample or connected instant-form id; required only when the leads destination is INSTANT_FORM. Default: ""
campaign_name
string
required
Campaign name to validate in the simulation.
primary_text
string
required
Main ad copy to validate and show in the test preview.
headline
string
required
Ad headline to validate and show in the test preview.
description
string
optional
Supporting description to show in the test preview. Default: ""
Website event Meta should optimize for when the campaign uses a Pixel or dataset. Default: "PURCHASE"
custom_event_name
string
optional
Exact custom Pixel event name returned by meta.conversion_sources_list for the chosen Pixel. Optimizes for this event instead of conversion_event; do not combine with custom_conversion_id.
custom_conversion_id
string
optional
A custom conversion defined on the ad account, optimized for INSTEAD of conversion_event. Use meta.conversion_sources_list to find its id.
app_id
string
optional
Meta application id required for app-promotion campaigns.
app_store_url
string (uri)
optional
Public Apple App Store or Google Play URL required for app-promotion campaigns.
image_url
string
optional
Optional public image URL; an empty value uses the built-in test visual. Default: ""
website_url
string
optional
Optional website URL used only for rehearsal; no request is made to it. Default: ""
daily_budget_minor
integer
required
Simulated daily budget in minor currency units; no account is charged.
location_key
string
optional
Exact Meta location key returned by meta.locations_search. Required when the query matches multiple locations; pass the same query used for that search.
location_query
string
required
City, state, or postal code shown in the simulated audience.
country_code
string
required
Two-letter ISO country code used to validate the rehearsal.
radius_miles
integer
optional
Simulated targeting radius from 10 to 50 miles. Default: 15
Over MCP the same operation is the tool meta_lead_campaign_simulate at https://app.chirply.io/api/mcp, same bearer token, same input.
Launch selected ads
meta.lead_campaign_variations_launchwriteconfirmadmin only
Create and activate one real Meta campaign using the selected awareness, traffic, engagement, leads, sales, or app-promotion objective, then launch every selected saved creative as a separate real ad using the shared CTA and placement strategy. If an instant-form lead destination uses form_id __auto__, this also permanently creates an active Meta form. The campaign becomes eligible to reach real people and spend the selected ad account's money up to the shared daily budget; Meta bills the advertiser directly.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
draft_id
string (uuid)
optional
Saved campaign draft whose creative launch ids should be recorded.
account_id
string
required
Connected Meta ad account id, normally beginning with act_.
page_id
string
required
Connected Facebook Page used as the public identity for every ad.
form_id
string
optional
Active instant-form id, or __auto__ to create a form; required only for an instant-form lead destination. Default: ""
form_name
string
optional
Name for the new form when form_id is __auto__.
privacy_policy_url
string (uri)
optional
Advertiser privacy-policy URL required when form_id is __auto__.
Website event Meta should optimize for when the campaign uses a Pixel or dataset. Default: "PURCHASE"
custom_event_name
string
optional
Exact custom Pixel event name returned by meta.conversion_sources_list for the chosen Pixel. Optimizes for this event instead of conversion_event; do not combine with custom_conversion_id.
custom_conversion_id
string
optional
A custom conversion defined on the ad account, optimized for INSTEAD of conversion_event. Use meta.conversion_sources_list to find its id.
app_id
string
optional
Meta application id required for app-promotion campaigns.
app_store_url
string (uri)
optional
Public Apple App Store or Google Play URL required for app-promotion campaigns.
creatives
object[]
required
One to twenty selected creative versions, each launched as a separate ad in the shared campaign.
creatives[].audience
"all" | "prospecting" | "retargeting"
optional
Which ad set receives this creative: both, new people, or returning people only. Default: "all"
creatives[].destination_url
string (uri)
optional
Optional HTTPS destination for this individual follow-up ad; otherwise uses the campaign destination.
creatives[].asset_id
string (uuid)
optional
Saved creative version id to stamp with the resulting Meta ad id.
creatives[].angle
string
required
Strategic angle used in the Meta creative and ad names.
creatives[].primary_text
string
required
Main ad copy shown to real people for this version.
creatives[].headline
string
required
Headline shown under this creative.
creatives[].description
string
optional
Supporting description for this creative when placement allows it. Default: ""
creatives[].image_url
string (uri)
required
Saved public HTTPS image URL Meta fetches for this creative.
retargeting
object
optional
Optional second ad set aimed at people who already showed interest. Creates real, durable custom audiences on the ad account when sources are supplied.
PROSPECTING uses prospecting delivery and ignores saved retargeting sources, audience IDs, converter exclusions and retargeting budget. PROSPECTING_AND_RETARGETING adds a second ad set aimed at people who already reacted, splitting the same daily budget. RETARGETING_ONLY spends the whole budget on them. Default: "PROSPECTING"
Audiences to build (or reuse) and target: website_visitors needs a Pixel, lead_form_opened and lead_form_submitted need an existing lead form on the Page, page_engaged and instagram_engaged need no website at all. Default: []
retargeting.days
integer
optional
How far back the audience reaches, in days. Meta caps website audiences at 180 days and engagement audiences at 365. Default: 30
retargeting.audience_ids
string[]
optional
Ids of custom audiences that already exist on the ad account, targeted in addition to any built here. Default: []
retargeting.website_scope
"DESTINATION" | "CUSTOM_URL" | "ALL_PIXEL"
optional
Website visitors: campaign destination page, a custom page, or every page on the selected Pixel. Default: "DESTINATION"
retargeting.website_url
string
optional
HTTPS page to match when website_scope is CUSTOM_URL. Tracking parameters are ignored.
retargeting.exclude_converters
boolean
optional
Exclude recent instant-form submissions, or the selected website conversion event on the Pixel, from every ad set. Custom conversion rules are not supported by this exclusion. Default: true
retargeting.daily_budget_minor
integer
optional
Share of the campaign's daily budget given to the retargeting ad set, in the account currency's minor units. Defaults to 30%; the total spend never exceeds daily_budget_minor.
website_url
string
optional
Public HTTPS destination linked from every ad; optional only for app-promotion campaigns, which use app_store_url instead. Default: ""
daily_budget_minor
integer
required
Shared maximum daily budget in the ad account currency's minor units; Meta may spend up to this amount per day across the ads.
location_key
string
optional
Exact Meta location key returned by meta.locations_search. Required when the query matches multiple locations; pass the same query used for that search.
location_query
string
required
Country, state/region, city or postal code Meta should resolve for geographic targeting.
country_code
string
required
Two-letter ISO country code used to disambiguate the target location.
radius_miles
integer
optional
City targeting radius from 10 to 50 miles; ignored for whole countries, states/regions and postal-code boundaries. Default: 15
age_min
integer
optional
Youngest target age; ignored for regulated special-ad categories. Default: 25
age_max
integer
optional
Oldest target age; ignored for regulated special-ad categories. Default: 65
Over MCP the same operation is the tool meta_lead_campaign_variations_launch at https://app.chirply.io/api/mcp, same bearer token, same input.
Create and map field
meta.lead_field_createwriteadmin only
Create a typed contact custom field for one question on a connected Facebook Lead Ads form, then save that form mapping immediately. Future submissions fill the field; matching existing choice fields gain the supplied choices. This changes CRM data only and sends no messages.
Over MCP the same operation is the tool meta_lead_field_create at https://app.chirply.io/api/mcp, same bearer token, same input.
Save form settings
meta.lead_form_updatewriteadmin only
Turn CRM capture on or off for one connected Facebook Lead Ads form and map each submitted question into a contact field. Pausing a form causes future submissions from it to be retained as ignored webhook events instead of contacts.
Parameters
Field
Type
Required
Description
form_id
string
required
Facebook Lead Ads form id connected to this account.
enabled
boolean
required
Whether new submissions from this form may create or enrich contacts.
field_mapping
map of string → object
required
Question-key to CRM-field mappings; omitted questions use automatic matching.
Over MCP the same operation is the tool meta_lead_form_update at https://app.chirply.io/api/mcp, same bearer token, same input.
Discover forms
meta.lead_forms_discoverwriteadmin only
Read the connected Facebook Pages' Lead Ads form catalogs and questions, then refresh the tenant-scoped form list. Newly discovered forms stay paused until an account manager enables them. This makes Graph API reads but does not create ads, spend money, or contact anyone.
Over MCP the same operation is the tool meta_lead_forms_discover at https://app.chirply.io/api/mcp, same bearer token, same input.
List Lead Ads forms
meta.lead_forms_listread
List the Facebook Lead Ads forms discovered for this account, optionally narrowed to one Page or searched by form name, including questions, field mappings, capture status, and latest sync health. This only reads the saved form catalog and does not contact leads.
Parameters
Field
Type
Required
Description
limit
integer
optional
Max rows to return (1–100). Default: 25
offset
integer
optional
Rows to skip. Default: 0
page_id
string
optional
Optional connected Facebook Page id whose Lead Ads forms should be returned.
search
string
optional
Optional case-insensitive search text matched against the form name.
Over MCP the same operation is the tool meta_lead_forms_list at https://app.chirply.io/api/mcp, same bearer token, same input.
View original submissions
meta.lead_submissions_listread
Read every saved original Facebook Lead Ads submission attached to one contact, including the source field_data array and readable answers. Earlier contacts without a submission record return their saved contact data as legacy_custom. This returns personal lead information without changing any data.
Parameters
Field
Type
Required
Description
contact_id
string (uuid)
required
Contact id whose original Facebook submissions should be returned.
Over MCP the same operation is the tool meta_lead_submissions_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Import existing leads
meta.leads_import_pagewriteconfirmadmin only
Queue a resumable import of all Facebook Lead Ads submissions Meta currently makes available across every form on one connected Page, including forms paused for future capture. New contacts use the Facebook submission time for First added; matched contacts keep their existing First added date and retain the Facebook submission timestamp separately. Creates or enriches CRM contacts without changing future form capture settings or starting live follow-up automations. Existing contacts are matched by phone or email. Sends no messages and spends no provider money.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose every discovered Lead Ads form should be imported.
Over MCP the same operation is the tool meta_leads_import_page at https://app.chirply.io/api/mcp, same bearer token, same input.
Check Page lead import
meta.leads_import_statusread
Read saved progress and any errors for historical Facebook Lead Ads imports across all forms on a connected Page. Reads Chirply job records only and makes no Facebook request, sends no messages, and changes no contacts.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose form import progress should be returned.
Over MCP the same operation is the tool meta_leads_import_status at https://app.chirply.io/api/mcp, same bearer token, same input.
Sync recent leads
meta.leads_sync_recentwriteconfirmadmin only
Import up to 25 recent real submissions from one connected Facebook Lead Ads form. New contacts use their original Facebook submission time for First added by default. This creates or enriches real CRM contacts without starting live follow-up automations or sending messages. Existing form capture settings are unchanged.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
form_id
string
required
Facebook Lead Ads form id whose recent submissions should be imported.
limit
integer
optional
Maximum recent submissions to inspect and import, from 1 to 25. Default: 25
First added date: facebook_time uses the original Meta submission time for new contacts; import_time uses now; facebook_time_overwrite also replaces this date on matched contacts. A missing Meta timestamp fails that lead instead of assigning an inaccurate date. Default: "facebook_time"
Over MCP the same operation is the tool meta_leads_sync_recent at https://app.chirply.io/api/mcp, same bearer token, same input.
Search target locations
meta.locations_searchreadadmin only
Search Meta for whole countries, states/regions, cities and postal codes within the supplied country. Returns exact location keys and labels to choose before launching ads. Pass the chosen key and original query to launch. Read-only; does not create ads or spend money.
Parameters
Field
Type
Required
Description
query
string
required
Country, state/region, city or postal code to search.
Over MCP the same operation is the tool meta_locations_search at https://app.chirply.io/api/mcp, same bearer token, same input.
Report conversion to Meta
meta.messenger_app_event_logwriteconfirmadmin only
Immediately sends a real Messenger App Event to Meta for one Page-scoped person, including the Page id, that person's PSID, the event name, optional purchase value and currency, and the two supplied tracking declarations. It sends no Messenger message and charges no money, but the signal can affect Meta analytics, attribution, optimization, and advertising, so an account owner or admin must confirm it.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger performance to read or report.
conversation_id
string (uuid)
required
Chirply conversation id for the person whose Page-scoped Messenger identity converted.
event_kind
"lead" | "purchase" | "custom"
required
Meta App Event to report: lead uses lead_submitted, purchase uses fb_mobile_purchase, and custom uses custom_event_name.
custom_event_name
string (or null)
optional
Custom Meta event name when event_kind is custom; ignored for lead and purchase.
value
number (or null)
optional
Non-negative purchase amount reported to Meta. Required for purchase and ignored for lead or custom events.
currency
string (or null)
optional
Three-letter ISO currency code for a purchase value, such as USD. Required for purchase and ignored otherwise.
advertiser_tracking_enabled
boolean
optional
Explicit declaration sent to Meta: true only when advertising tracking is permitted for this event and person. Default: false
application_tracking_enabled
boolean
optional
Explicit declaration sent to Meta: true only when application-level tracking is enabled for this event. Default: false
Over MCP the same operation is the tool meta_messenger_app_event_log at https://app.chirply.io/api/mcp, same bearer token, same input.
Create reusable attachment
meta.messenger_attachment_createwriteconfirmadmin only
Ask Meta to fetch one public HTTPS image, video, audio, or file and create a real reusable attachment id owned by a connected Facebook Page. This sends no message and Chirply persists neither the source URL nor returned id, but the external Meta asset cannot be listed or deleted through the supported Attachment Upload API; copy the returned id immediately and expect it to expire after 90 days.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that will own the reusable Messenger attachment.
type
"image" | "video" | "audio" | "file"
required
Messenger attachment type matching the remote media: image, video, audio, or file.
source_url
string
required
Complete public HTTPS URL for the image, video, audio, or file Meta should fetch. Private-network hosts and embedded credentials are rejected; Chirply does not retain this URL.
Over MCP the same operation is the tool meta_messenger_attachment_create at https://app.chirply.io/api/mcp, same bearer token, same input.
View reusable attachment upload
meta.messenger_attachment_upload_inforead
Check whether one connected Facebook Page is ready to create reusable Messenger image, video, audio, and file attachment ids. This reads Page readiness and Meta's provider limits, sends no message, returns no previous attachment ids, and makes no change. Meta's Attachment Upload API does not provide supported list or delete operations, and reusable ids expire after 90 days.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that will own the reusable Messenger attachment.
Over MCP the same operation is the tool meta_messenger_attachment_upload_info at https://app.chirply.io/api/mcp, same bearer token, same input.
Get Messenger link
meta.messenger_bot_flow_link_generateread
Get the permanent m.me URL, QR value, and current Page delivery readiness for one saved Messenger-compatible Bot Flow. Opening the URL does not immediately send a message; after a person enters Messenger and taps Get Started when required, the link starts exactly that live flow and its real outbound messages. Draft flows remain inert until published.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Bot Flow and receives the Messenger conversation.
bot_flow_id
string (uuid)
required
Saved Facebook Bot Flow id whose permanent Messenger referral URL should be returned.
Over MCP the same operation is the tool meta_messenger_bot_flow_link_generate at https://app.chirply.io/api/mcp, same bearer token, same input.
Accept Messenger call
meta.messenger_calling_acceptwriteconfirmadmin only
Accept a real inbound Messenger call to the connected Facebook Page using the provider call id and supplied WebRTC SDP offer. Meta requires acceptance within 60 seconds, and the calling client must remain connected to carry the media.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger Calling setup to use.
call_id
string
required
Provider-owned Messenger call id returned by Meta or a calls webhook.
sdp
string
required
Complete non-trickle WebRTC SDP offer generated by the calling client, beginning with v=0 and no larger than 128 KiB.
Over MCP the same operation is the tool meta_messenger_calling_accept at https://app.chirply.io/api/mcp, same bearer token, same input.
Start Messenger call
meta.messenger_calling_connectwriteconfirmadmin only
Immediately place a real outbound Messenger audio/video call from the connected Facebook Page to one known person using the supplied WebRTC SDP offer. The person must have live call permission and Meta must report start_call is allowed; the calling client must remain connected to carry the media.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger Calling setup to use.
psid
string
required
Page-scoped Messenger person id already known to this account and Facebook Page.
sdp
string
required
Complete non-trickle WebRTC SDP offer generated by the calling client, beginning with v=0 and no larger than 128 KiB.
Over MCP the same operation is the tool meta_messenger_calling_connect at https://app.chirply.io/api/mcp, same bearer token, same input.
Prepare Messenger DTMF tone
meta.messenger_calling_dtmf_preparewriteconfirmadmin only
Validate and prepare one RFC4733 touch tone for a real active Messenger call. The returned browser command always uses Meta's required 500 ms duration and 100 ms inter-tone gap; it does not falsely claim that the server injected RTP because the live WebRTC sender exists only in the open softphone, which must consume the command. Meta emits no DTMF webhook.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger Calling setup to use.
call_id
string
required
Provider-owned Messenger call id returned by Meta or a calls webhook.
tone
"0" | "1" | "2" | "3" | "4" | "5" | … 6 more
required
One RFC4733 touch tone supported by Messenger Calling: a digit from 0 through 9, #, or *.
Over MCP the same operation is the tool meta_messenger_calling_dtmf_prepare at https://app.chirply.io/api/mcp, same bearer token, same input.
View Messenger Calling
meta.messenger_calling_getread
Read one connected Facebook Page's live Meta Calling eligibility, current audio/video/icon/hours/routing settings, webhook and permission readiness, known Messenger people, and recent call events. This sends no message and changes nothing; Meta's messenger_api_calling status remains the authoritative review/availability gate.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger Calling setup to use.
Over MCP the same operation is the tool meta_messenger_calling_get at https://app.chirply.io/api/mcp, same bearer token, same input.
Update Messenger call media
meta.messenger_calling_media_updatewriteconfirmadmin only
Renegotiate the live audio/video tracks of a real active Messenger call using increasing media versions, the actual browser MediaStreamTrack ids, and a new WebRTC SDP offer containing those ids. This can immediately mute, unmute, enable, or disable camera media for both participants' live call experience.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger Calling setup to use.
call_id
string
required
Provider-owned Messenger call id returned by Meta or a calls webhook.
from_version
integer
required
Current Messenger call media version.
to_version
integer
required
Next Messenger call media version; it must be greater than from_version.
audio_enabled
boolean
required
Whether the default audio track should be enabled after renegotiation.
video_enabled
boolean
required
Whether the default video track should be enabled after renegotiation.
audio_track_id
string (or null)
optional
Actual browser MediaStreamTrack.id for the local audio track; it must match an a=msid line in the supplied SDP offer. Omit only when that track does not exist.
video_track_id
string (or null)
optional
Actual browser MediaStreamTrack.id for the local video track; it must match an a=msid line in the supplied SDP offer. Omit only when that track does not exist.
sdp
string
required
Complete non-trickle WebRTC SDP offer generated by the calling client, beginning with v=0 and no larger than 128 KiB.
Over MCP the same operation is the tool meta_messenger_calling_media_update at https://app.chirply.io/api/mcp, same bearer token, same input.
Submit Messenger call metrics
meta.messenger_calling_metrics_submitwriteconfirmadmin only
Submit the finished real Messenger call's end reason and optional browser audio-quality counters to Meta. Meta accepts this once per call, only after the call ends, and only within 24 hours; it changes provider analytics rather than contacting the person.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger Calling setup to use.
call_id
string
required
Provider-owned Messenger call id returned by Meta or a calls webhook.
Over MCP the same operation is the tool meta_messenger_calling_metrics_submit at https://app.chirply.io/api/mcp, same bearer token, same input.
Check Messenger call permission
meta.messenger_calling_permission_getread
Read Meta's live outbound-calling permission and per-action limits for one known person in a connected Facebook Page's Messenger thread. This sends no message and does not infer permission from Chirply data.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger Calling setup to use.
psid
string
required
Page-scoped Messenger person id already known to this account and Facebook Page.
Over MCP the same operation is the tool meta_messenger_calling_permission_get at https://app.chirply.io/api/mcp, same bearer token, same input.
Request Messenger call permission
meta.messenger_calling_permission_requestwriteconfirmadmin only
Send a real Messenger calling_optin template to one known person, asking them to approve outbound calls from the connected Facebook Page. Meta allows at most two permission requests per thread in 24 hours and grants expire after seven days; the person may reject the request.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger Calling setup to use.
psid
string
required
Page-scoped Messenger person id already known to this account and Facebook Page.
Over MCP the same operation is the tool meta_messenger_calling_permission_request at https://app.chirply.io/api/mcp, same bearer token, same input.
Send Messenger call prompt
meta.messenger_calling_prompt_sendwriteconfirmadmin only
Send a real Messenger call_prompt template that lets one known person call the connected Facebook Page for one to seven days, including when its persistent call icon is hidden. This immediately messages a real person and Meta rejects it until Calling is enabled.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger Calling setup to use.
psid
string
required
Page-scoped Messenger person id already known to this account and Facebook Page.
ttl_days
integer
required
Number of days, from 1 through 7, that the Messenger call prompt remains active.
Over MCP the same operation is the tool meta_messenger_calling_prompt_send at https://app.chirply.io/api/mcp, same bearer token, same input.
Decline Messenger call
meta.messenger_calling_rejectwriteconfirmadmin only
Immediately decline a real inbound Messenger call to the connected Facebook Page. The caller's ringing attempt ends and this action cannot be undone.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger Calling setup to use.
call_id
string
required
Provider-owned Messenger call id returned by Meta or a calls webhook.
Over MCP the same operation is the tool meta_messenger_calling_reject at https://app.chirply.io/api/mcp, same bearer token, same input.
Update Messenger screen share
meta.messenger_calling_screen_share_updatewriteconfirmadmin only
Immediately start, stop, or restore screen-share video in a real active Messenger call by sending Meta's current media_update contract with increasing versions, a browser-created SDP offer, and the exact getDisplayMedia or restored-camera MediaStreamTrack ids. The browser must obtain the person's screen-sharing permission and keep the live WebRTC peer connected; this operation changes what the other participant sees.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger Calling setup to use.
call_id
string
required
Provider-owned Messenger call id returned by Meta or a calls webhook.
from_version
integer
required
Current Messenger call media version before changing screen sharing.
to_version
integer
required
Next Messenger call media version; it must be greater than from_version.
audio_enabled
boolean
required
Whether the current default audio track remains enabled.
video_enabled
boolean
required
Whether the display or restored-camera video track should be enabled after this update.
audio_track_id
string (or null)
optional
Actual browser MediaStreamTrack.id for the local audio track; it must match an a=msid line in the supplied SDP offer. Omit only when that track does not exist.
video_track_id
string
required
Exact browser MediaStreamTrack.id for the selected display track, restored camera track, or disabled display track; it must appear in the SDP offer's a=msid line.
sharing
boolean
required
True when switching to getDisplayMedia output; false when restoring camera or disabling display video.
sdp
string
required
Complete non-trickle WebRTC SDP offer generated by the calling client, beginning with v=0 and no larger than 128 KiB.
Over MCP the same operation is the tool meta_messenger_calling_screen_share_update at https://app.chirply.io/api/mcp, same bearer token, same input.
End Messenger call
meta.messenger_calling_terminatewriteconfirmadmin only
Immediately terminate a real active Messenger call on the connected Facebook Page. The other participant is disconnected and this action cannot be undone.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger Calling setup to use.
call_id
string
required
Provider-owned Messenger call id returned by Meta or a calls webhook.
Over MCP the same operation is the tool meta_messenger_calling_terminate at https://app.chirply.io/api/mcp, same bearer token, same input.
Update Messenger Calling
meta.messenger_calling_update_settingswriteconfirmadmin only
Immediately replace the connected Facebook Page's live Messenger Calling audio, video, call-icon, weekly-hours, timezone, and ring-target settings. META rings Meta's native surface; PARTNERS sends real inbound calls to Chirply's browser softphone and requires the calls webhooks. Meta rejects this operation until the Page and app pass its Calling access/review gate.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger Calling setup to use.
audio_enabled
boolean
required
Whether people may place audio Messenger calls to the Page.
video_enabled
boolean
required
Whether people may place video Messenger calls to the Page.
icon_enabled
boolean
required
Whether Messenger displays the persistent call icon in the Page thread.
timezone_id
string
required
IANA timezone used to interpret the Page's calling hours, such as America/Chicago.
weekly_operating_hours
object[]
required
Zero to seven unique weekday call windows. Omitted weekdays are closed; saving replaces the full weekly schedule.
Over MCP the same operation is the tool meta_messenger_calling_update_settings at https://app.chirply.io/api/mcp, same bearer token, same input.
List Messenger capabilities
meta.messenger_capabilitiesread
List Meta's current Facebook Messenger Platform features and Chirply's exact implementation state for each one, including supported controls, permission-gated products, Meta previews, policy limits, known build gaps, and retired legacy features. This is read-only and sends no message.
Parameters
Field
Type
Required
Description
page_id
string
optional
Optional connected Facebook Page id used to turn each product surface into a Page-scoped Chirply link.
Over MCP the same operation is the tool meta_messenger_capabilities at https://app.chirply.io/api/mcp, same bearer token, same input.
Ban Messenger person
meta.messenger_conversation_banwriteconfirmadmin only
Immediately applies Meta's ban_user moderation action to one real Page-scoped Messenger person on one connected Facebook Page. This changes the live Page conversation and may prevent further interaction; it sends no message. Meta exposes no current moderation-state read, so verify the intended person and Page before confirming.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger labels and conversation.
psid
string
required
Page-scoped Messenger user id (PSID) for a person already known on this exact Facebook Page in the account.
confirm
true
required
Must be true to confirm applying this moderation action to the live Page conversation.
Over MCP the same operation is the tool meta_messenger_conversation_ban at https://app.chirply.io/api/mcp, same bearer token, same input.
Block Messenger person
meta.messenger_conversation_blockwriteconfirmadmin only
Immediately applies Meta's block_user moderation action to one real Page-scoped Messenger person on one connected Facebook Page. This changes the live Page conversation and may prevent further interaction; it sends no message. Meta exposes no current moderation-state read, so verify the intended person and Page before confirming.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger labels and conversation.
psid
string
required
Page-scoped Messenger user id (PSID) for a person already known on this exact Facebook Page in the account.
confirm
true
required
Must be true to confirm applying this moderation action to the live Page conversation.
Over MCP the same operation is the tool meta_messenger_conversation_block at https://app.chirply.io/api/mcp, same bearer token, same input.
Assign Messenger custom label
meta.messenger_conversation_label_assignwriteconfirmadmin only
Immediately assigns one real Page-owned Messenger custom label to one known Page-scoped person in Meta. This changes shared inbox organization but sends no message.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger labels and conversation.
psid
string
required
Page-scoped Messenger user id (PSID) for a person already known on this exact Facebook Page in the account.
label_id
string
required
Meta custom-label id that belongs to the connected Facebook Page.
Over MCP the same operation is the tool meta_messenger_conversation_label_assign at https://app.chirply.io/api/mcp, same bearer token, same input.
Remove Messenger custom label
meta.messenger_conversation_label_removewriteconfirmadmin only
Immediately removes one real Page-owned Messenger custom label from one known Page-scoped person in Meta. This changes shared inbox organization but sends no message.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger labels and conversation.
psid
string
required
Page-scoped Messenger user id (PSID) for a person already known on this exact Facebook Page in the account.
label_id
string
required
Meta custom-label id that belongs to the connected Facebook Page.
Over MCP the same operation is the tool meta_messenger_conversation_labels_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Move Messenger conversation to spam
meta.messenger_conversation_move_to_spamwriteconfirmadmin only
Immediately applies Meta's move_to_spam action to one real Page-scoped Messenger person's conversation, moving it to Spam in Meta Business Suite Inbox. This changes a live external inbox and sends no message. Meta documents no restore-from-spam action on this API, so confirm the intended person and Page first.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger labels and conversation.
psid
string
required
Page-scoped Messenger user id (PSID) for a person already known on this exact Facebook Page in the account.
confirm
true
required
Must be true to confirm applying this moderation action to the live Page conversation.
Over MCP the same operation is the tool meta_messenger_conversation_move_to_spam at https://app.chirply.io/api/mcp, same bearer token, same input.
Unban Messenger person
meta.messenger_conversation_unbanwriteconfirmadmin only
Immediately applies Meta's unban_user moderation action to one real Page-scoped Messenger person on one connected Facebook Page. This changes the live Page conversation and may allow interaction again; it sends no message. Meta exposes no current moderation-state read, so verify the intended person and Page before confirming.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger labels and conversation.
psid
string
required
Page-scoped Messenger user id (PSID) for a person already known on this exact Facebook Page in the account.
confirm
true
required
Must be true to confirm applying this moderation action to the live Page conversation.
Over MCP the same operation is the tool meta_messenger_conversation_unban at https://app.chirply.io/api/mcp, same bearer token, same input.
Unblock Messenger person
meta.messenger_conversation_unblockwriteconfirmadmin only
Immediately applies Meta's unblock_user moderation action to one real Page-scoped Messenger person on one connected Facebook Page. This changes the live Page conversation and may allow interaction again; it sends no message. Meta exposes no current moderation-state read, so verify the intended person and Page before confirming.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger labels and conversation.
psid
string
required
Page-scoped Messenger user id (PSID) for a person already known on this exact Facebook Page in the account.
confirm
true
required
Must be true to confirm applying this moderation action to the live Page conversation.
Over MCP the same operation is the tool meta_messenger_conversation_unblock at https://app.chirply.io/api/mcp, same bearer token, same input.
Create Messenger custom label
meta.messenger_custom_label_createwriteconfirmadmin only
Immediately creates a real Page-owned Messenger custom label in Meta. It sends no message, but the new label becomes available to every app and teammate managing that Page.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger labels and conversation.
name
string
required
Name for the new Page-owned Messenger custom label.
Over MCP the same operation is the tool meta_messenger_custom_label_create at https://app.chirply.io/api/mcp, same bearer token, same input.
Delete Messenger custom label
meta.messenger_custom_label_deletewriteconfirmadmin only
Immediately deletes a real Page-owned Messenger custom label from Meta, removing it from every person who has it. This cannot be undone and sends no message.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger labels and conversation.
label_id
string
required
Meta custom-label id that belongs to the connected Facebook Page.
Over MCP the same operation is the tool meta_messenger_custom_label_delete at https://app.chirply.io/api/mcp, same bearer token, same input.
View Messenger custom label
meta.messenger_custom_label_getread
Read one Page-owned Messenger custom label after verifying that the label belongs to the connected Facebook Page. This changes nothing and sends no message.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger labels and conversation.
label_id
string
required
Meta custom-label id that belongs to the connected Facebook Page.
Over MCP the same operation is the tool meta_messenger_custom_labels_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Send human support reply
meta.messenger_human_agent_sendwriteconfirm
SENDS A REAL FACEBOOK MESSENGER HUMAN_AGENT REPLY. This is only for a literal support reply written and approved by a real person within seven days of that person's last Page message; it pauses automation on the conversation, reaches the recipient immediately with no undo, and must never carry automated, unrelated, or marketing content. Chirply requires an explicit human-authored attestation, while Meta separately requires HUMAN_AGENT App Review approval.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected numeric Facebook Page id that owns the Messenger product setup.
Over MCP the same operation is the tool meta_messenger_human_agent_send at https://app.chirply.io/api/mcp, same bearer token, same input.
Prepare Login Connect contact
meta.messenger_login_connect_identity_preparewriteadmin only
Derive Meta's Page-specific Login Connect login_id on Chirply's server and attach the website's authenticated app-scoped user id to one CRM contact. This stores no PSID and sends no message; the identity remains unable to send until Meta's signed user_messenger_contact opt-in webhook is captured.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected numeric Facebook Page id selected during website login.
contact_id
string (uuid)
required
CRM contact id authenticated by the calling website session.
asid
string
required
App-scoped user id returned by this Meta app's successful Facebook Login callback.
Over MCP the same operation is the tool meta_messenger_login_connect_identity_prepare at https://app.chirply.io/api/mcp, same bearer token, same input.
Send Login Connect message
meta.messenger_login_connect_initial_message_sendwriteconfirmadmin only
Immediately sends one real Facebook Messenger message to the CRM contact through Meta recipient.login_id. Chirply requires a signed user_messenger_contact opt-in for the same Page and contact, enforces Meta's 24-hour first-message deadline, records the consent basis, and permanently fences duplicate or indeterminate sends.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected numeric Facebook Page id sending the consented first message.
contact_id
string (uuid)
required
Exact CRM contact id already bound to this Login Connect identity.
identity_id
string (uuid)
required
Opaque Chirply Login Connect identity id already bound to this Page and CRM contact; Meta's login_id remains server-only.
text
string
required
Initial Messenger message, which must match what the person agreed to receive.
consent_basis
string
required
Audit note describing the disclosure and content the person agreed to receive.
quick_replies
object[]
optional
Optional Messenger quick replies shown under the consented first message (maximum 13). Default: []
quick_replies[].type
"text" | "user_phone_number" | "user_email"
optional
Messenger quick-reply kind: text, user_phone_number, or user_email. Default: "text"
quick_replies[].title
string
optional
Visible label for a text quick reply; ignored for phone/email profile replies. Default: ""
quick_replies[].payload
string
optional
Stable Bot Flow value returned for a text quick reply; ignored for phone/email profile replies. Default: ""
quick_replies[].image_url
string (uri)
optional
Optional public HTTPS icon URL for a text quick reply.
Over MCP the same operation is the tool meta_messenger_login_connect_initial_message_send at https://app.chirply.io/api/mcp, same bearer token, same input.
Attach Login Connect opt-in
meta.messenger_login_connect_optin_attachwriteadmin only
Attach a previously captured, signed messaging_optins.login_id webhook to one authenticated CRM contact through Chirply's opaque identity handle. Meta's login_id remains server-only; this does not accept an unverified opt-in, does not create a PSID, and sends no message.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected numeric Facebook Page id that received the signed opt-in.
contact_id
string (uuid)
required
CRM contact id proven by the caller's authenticated website session.
identity_id
string (uuid)
required
Opaque Chirply Login Connect identity id returned by the prepare operation; this is not a PSID or Meta login_id.
Over MCP the same operation is the tool meta_messenger_login_connect_optin_attach at https://app.chirply.io/api/mcp, same bearer token, same input.
Generate Login Connect setup
meta.messenger_login_connect_setup_generateread
Generate Meta's documented Login Connect OAuth URL and JavaScript SDK call for a connected Facebook Page. This returns setup code only; it creates no Meta object, sends no message, never exposes the server-only Meta client token, and cannot replace App Review or the manual App Dashboard Page toggle.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected numeric Facebook Page id the website login should connect to Messenger.
redirect_uri
string (uri)
required
Exact HTTPS OAuth callback URI already allow-listed in the Meta app.
state
string
required
Unpredictable session-bound CSRF state that the callback must verify before attaching a CRM contact.
reset_admin_test
boolean
optional
Add Meta's reset_messenger_state=1 test flag. Meta permits this only for app administrators, never normal production users. Default: false
Over MCP the same operation is the tool meta_messenger_login_connect_setup_generate at https://app.chirply.io/api/mcp, same bearer token, same input.
Check Login Connect setup
meta.messenger_login_connect_status_getread
Check the connected Page, pages_messaging grant, Page messaging task, messaging_optins webhook subscription, and Chirply server configuration for Meta Login Connect with Messenger. Meta exposes no API for App Review or its Login Connect App Dashboard toggle, so those remain explicitly manual; this sends no message.
Over MCP the same operation is the tool meta_messenger_login_connect_status_get at https://app.chirply.io/api/mcp, same bearer token, same input.
Create customer-list audience
meta.messenger_marketing_audience_createwriteconfirmadmin only
Create a real external Meta Custom Audience dedicated to Messenger Marketing Messages for one Page and ad account. This requires a non-expiring Flow 1/3 system-business access token and changes external ad-account configuration, but uploads no customer data, sends no message, and spends nothing.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger audience.
account_id
string
required
Connected Meta ad account id billed for paid Marketing Message delivery.
name
string
required
Name for the real Messenger Marketing Custom Audience in Meta.
description
string
required
Plain-language description of the consented customer list and its use.
Over MCP the same operation is the tool meta_messenger_marketing_audience_create at https://app.chirply.io/api/mcp, same bearer token, same input.
Unsubscribe Marketing audience
meta.messenger_marketing_audience_unsubscribewriteconfirmadmin only
UNSUBSCRIBE REAL PEOPLE FROM THIS PAGE'S ENTIRE MESSENGER MARKETING MESSAGES AUDIENCE using Meta's current Page-level unsubscribe API. Each row must use phone/email, PSID, or an opaque subscriber handle; this ends Page-level marketing eligibility rather than merely removing one Custom Audience membership. It sends no Messenger message and spends nothing, but the person must opt in again before another paid Marketing Message.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger audience.
rows
object[]
required
People to unsubscribe from this Page's entire Marketing Messages customer base.
rows[].email
string (or null)
optional
Lowercase raw email or SHA-256 hashed email; combine only with phone, never PSID or subscriber_handle.
rows[].phone
string (or null)
optional
Raw E.164 phone such as +14155551234 or a SHA-256 hash; combine only with email.
rows[].psid
string (or null)
optional
Page-scoped Messenger person id used alone for this row.
rows[].subscription_handle
string (or null)
optional
Opaque Chirply subscriber handle used alone; Chirply decrypts it server-side and never returns the raw Meta token.
unsubscribe_confirmed
true
required
Approval to end Page-level Marketing Messages eligibility for every valid row now.
Over MCP the same operation is the tool meta_messenger_marketing_audience_unsubscribe at https://app.chirply.io/api/mcp, same bearer token, same input.
Upload audience customers
meta.messenger_marketing_audience_users_addwriteconfirmadmin only
UPLOAD CUSTOMER IDENTIFIERS TO META for matching into one real Messenger Marketing Custom Audience. Chirply normalizes and SHA-256 hashes every email/phone before transmission, sends at most 10,000 rows per confirmed request, and Meta may take up to 24 hours to match them; only matched people with valid marketing consent should be included, and subscription tokens remain hidden until Meta's 100-match privacy threshold is met. This sends no Messenger message and creates no paid delivery.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger audience.
account_id
string
required
Connected Meta ad account id billed for paid Marketing Message delivery.
audience_id
string
required
Meta Messenger Marketing Messages Custom Audience id returned by the customer-list audience API.
rows
object[]
required
Customer rows to hash and add/remove. Rows with email-only, phone-only, and both are safely split into exact Meta schemas.
rows[].email
string (or null)
optional
Raw customer email; Chirply lowercases and SHA-256 hashes it before Meta receives the upload. Use null when this row uses phone only.
rows[].phone
string (or null)
optional
Raw customer phone including country code; Chirply removes symbols, letters, and leading zeroes then SHA-256 hashes it before Meta receives the upload. Use null when this row uses email only.
customer_data_rights_confirmed
true
required
Attestation that the business has the legal right and Meta Custom Audience authority to upload these identifiers.
marketing_consent_confirmed
true
required
Attestation that every row represents a person who agreed to receive this Page's marketing communication.
upload_confirmed
true
required
Approval to hash and transmit this customer data to Meta now for asynchronous identity matching.
Over MCP the same operation is the tool meta_messenger_marketing_audience_users_add at https://app.chirply.io/api/mcp, same bearer token, same input.
Remove audience customers
meta.messenger_marketing_audience_users_removewriteconfirmadmin only
REMOVE SHA-256-HASHED CUSTOMER IDENTIFIERS FROM ONE REAL META CUSTOM AUDIENCE. This changes external audience membership after a confirmed request, but does not unsubscribe the people at Page level or remove them from other audiences; call the Page-level unsubscribe operation when marketing permission itself must end. It sends no Messenger message and spends nothing.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger audience.
account_id
string
required
Connected Meta ad account id billed for paid Marketing Message delivery.
audience_id
string
required
Meta Messenger Marketing Messages Custom Audience id returned by the customer-list audience API.
rows
object[]
required
Customer rows to hash and add/remove. Rows with email-only, phone-only, and both are safely split into exact Meta schemas.
rows[].email
string (or null)
optional
Raw customer email; Chirply lowercases and SHA-256 hashes it before Meta receives the upload. Use null when this row uses phone only.
rows[].phone
string (or null)
optional
Raw customer phone including country code; Chirply removes symbols, letters, and leading zeroes then SHA-256 hashes it before Meta receives the upload. Use null when this row uses email only.
removal_confirmed
true
required
Approval to remove these hashed identifiers from this one external Custom Audience now.
Over MCP the same operation is the tool meta_messenger_marketing_audience_users_remove at https://app.chirply.io/api/mcp, same bearer token, same input.
List customer-list audiences
meta.messenger_marketing_audiences_listreadadmin only
List the live Messenger Marketing Messages Custom Audiences for one connected Page and ad account using Meta's exact subtype-1010 filter. This requires a non-expiring Flow 1/3 system-business access token; it sends nothing, uploads no customer data, and spends nothing.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger audience.
account_id
string
required
Connected Meta ad account id billed for paid Marketing Message delivery.
Over MCP the same operation is the tool meta_messenger_marketing_audiences_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Create Marketing campaign
meta.messenger_marketing_campaign_createwriteconfirmadmin only
Create a real paid Marketing Messages campaign for one connected Facebook Page and billed Meta ad account. Creating it does not send a message or create a charge, but it creates external ad infrastructure and establishes a real daily, lifetime, or Meta-estimated spend cap; the campaign remains inert until explicitly resumed and the send API is called.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger audience.
account_id
string
required
Connected Meta ad account id billed for paid Marketing Message delivery.
name
string
required
Name visible for the paid Marketing Messages campaign in Meta and Chirply.
daily_budget
integer (or null)
optional
Optional average daily budget in the ad account's minor currency unit; Meta may spend up to 75% more on one day while honoring the documented weekly cap. Default: null
lifetime_budget
integer (or null)
optional
Optional total campaign budget in the ad account's minor currency unit; do not set together with daily_budget. Default: null
pixel_id
string (or null)
optional
Optional accessible Meta Pixel id used for offsite conversion attribution. Default: null
start_time
string (date-time) (or null)
optional
Optional ISO start time, now or in the future and no more than 30 days away. Default: null
end_time
string (date-time) (or null)
optional
Optional ISO end time after start_time; lifetime campaigns default to 30 days when omitted. Default: null
Over MCP the same operation is the tool meta_messenger_marketing_campaign_create at https://app.chirply.io/api/mcp, same bearer token, same input.
Delete Marketing campaign
meta.messenger_marketing_campaign_deletewriteconfirmadmin only
Permanently delete one real direct Marketing Message campaign after proving its connected Page and billed ad-account ownership. This cannot be undone, removes external campaign history/configuration, and does not recall messages already delivered.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger audience.
account_id
string
required
Connected Meta ad account id billed for paid Marketing Message delivery.
campaign_id
string
required
Meta Marketing Message campaign id returned by the simplified message_campaign endpoint.
Over MCP the same operation is the tool meta_messenger_marketing_campaign_delete at https://app.chirply.io/api/mcp, same bearer token, same input.
View Marketing campaign
meta.messenger_marketing_campaign_getread
Read one live direct Marketing Message campaign after proving its Page and billed ad-account ownership, including all three Meta delivery objects, budget, schedule, status, and Pixel attribution. This sends nothing and spends nothing.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger audience.
account_id
string
required
Connected Meta ad account id billed for paid Marketing Message delivery.
campaign_id
string
required
Meta Marketing Message campaign id returned by the simplified message_campaign endpoint.
Over MCP the same operation is the tool meta_messenger_marketing_campaign_get at https://app.chirply.io/api/mcp, same bearer token, same input.
Pause Marketing campaign
meta.messenger_marketing_campaign_pausewriteconfirmadmin only
Pause the real message, message set, and campaign behind one direct Messenger Marketing campaign, stopping future paid sends from being accepted. This changes external Meta state but does not recall messages already delivered.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger audience.
account_id
string
required
Connected Meta ad account id billed for paid Marketing Message delivery.
campaign_id
string
required
Meta Marketing Message campaign id returned by the simplified message_campaign endpoint.
Over MCP the same operation is the tool meta_messenger_marketing_campaign_pause at https://app.chirply.io/api/mcp, same bearer token, same input.
Resume Marketing campaign
meta.messenger_marketing_campaign_resumewriteconfirmadmin only
Activate the real campaign, message set, and message behind one direct Messenger Marketing campaign. Activation does not itself send, but it enables later approved sends that message real subscribers and charge the billed ad account; Meta requires about 10 minutes after activation before sending.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger audience.
account_id
string
required
Connected Meta ad account id billed for paid Marketing Message delivery.
campaign_id
string
required
Meta Marketing Message campaign id returned by the simplified message_campaign endpoint.
Over MCP the same operation is the tool meta_messenger_marketing_campaign_resume at https://app.chirply.io/api/mcp, same bearer token, same input.
Update Marketing campaign
meta.messenger_marketing_campaign_updatewriteconfirmadmin only
Update the name, same-mode budget, or schedule of a real direct Marketing Message campaign after proving its Page and ad-account ownership. This changes external paid-campaign configuration and can raise how much a later approved send may spend, but it does not itself send a message; Meta does not document switching a live campaign between daily and lifetime budget modes, so Chirply refuses that guess.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger audience.
account_id
string
required
Connected Meta ad account id billed for paid Marketing Message delivery.
campaign_id
string
required
Meta Marketing Message campaign id returned by the simplified message_campaign endpoint.
name
string (or null)
optional
Replacement campaign name, or null to keep it. Default: null
daily_budget
integer (or null)
optional
Replacement daily budget in minor units for an existing daily-budget or unbudgeted campaign, or null. Default: null
lifetime_budget
integer (or null)
optional
Replacement lifetime budget in minor units for an existing lifetime-budget or unbudgeted campaign, or null. Default: null
start_time
string (date-time) (or null)
optional
Replacement ISO start time, or null to keep it. Default: null
end_time
string (date-time) (or null)
optional
Replacement ISO end time, or null to keep it. Default: null
Over MCP the same operation is the tool meta_messenger_marketing_campaign_update at https://app.chirply.io/api/mcp, same bearer token, same input.
List Marketing campaigns
meta.messenger_marketing_campaigns_listread
Read the live direct Marketing Message campaigns owned by one connected Facebook Page and billed through one connected Meta ad account, including the underlying campaign, message-set, and message statuses, budget, schedule, and Pixel attribution. This sends nothing and spends nothing.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger audience.
account_id
string
required
Connected Meta ad account id billed for paid Marketing Message delivery.
Over MCP the same operation is the tool meta_messenger_marketing_campaigns_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Estimate Marketing delivery
meta.messenger_marketing_delivery_estimatereadadmin only
Ask Meta for the estimated lower and upper number of paid Messenger Marketing send calls supported by one daily or lifetime budget for a connected Page/ad account. This is an estimate, not a guarantee; it sends nothing, changes no budget, and incurs no delivery charge.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger audience.
account_id
string
required
Connected Meta ad account id billed for paid Marketing Message delivery.
daily_budget
integer (or null)
optional
Daily budget in the ad account's minor currency unit, or null when estimating a lifetime budget. Default: null
lifetime_budget
integer (or null)
optional
Lifetime budget in the ad account's minor currency unit, or null when estimating a daily budget. Default: null
Over MCP the same operation is the tool meta_messenger_marketing_delivery_estimate at https://app.chirply.io/api/mcp, same bearer token, same input.
View Marketing performance
meta.messenger_marketing_insightsread
Read Meta's live paid Messenger Marketing delivered count, reads, link clicks, spend, cost per delivery/click, and attributed Pixel or Conversions API actions, values, and purchase ROAS for one Page-owned campaign. Metrics may be estimated or region-excluded exactly as Meta documents; this sends nothing and spends nothing.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger audience.
account_id
string
required
Connected Meta ad account id billed for paid Marketing Message delivery.
campaign_id
string
required
Meta Marketing Message campaign id returned by the simplified message_campaign endpoint.
Over MCP the same operation is the tool meta_messenger_marketing_insights at https://app.chirply.io/api/mcp, same bearer token, same input.
Ask for marketing opt-in
meta.messenger_marketing_optin_requestwriteconfirmadmin only
SEND A REAL IN-THREAD FACEBOOK MESSENGER OPT-IN REQUEST to a person who recently started a Page conversation. The notification_messages template asks for explicit Marketing Messages consent; it does not itself grant consent, spend paid-delivery budget, or authorize a later send until Meta returns a subscription token. Chirply enforces the current 24-hour thread window and writes a durable receipt first.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger audience.
conversation_id
string (uuid)
required
Recent Page-owned Messenger conversation whose participant receives the real opt-in request.
title
string
required
Consent card title explaining the updates or promotions the person is choosing.
payload
string
required
Opaque workflow or attribution payload Meta returns in the messaging_optins webhook.
timezone
string
optional
IANA timezone shown/stored with the opt-in request, such as America/Chicago or UTC. Default: "UTC"
image_url
string (uri) (or null)
optional
Optional public HTTP/HTTPS image URL for the consent card, or null. Default: null
Over MCP the same operation is the tool meta_messenger_marketing_optin_request at https://app.chirply.io/api/mcp, same bearer token, same input.
Preview Marketing message
meta.messenger_marketing_previewreadadmin only
Ask Meta to render a safe hosted preview for one documented rich Marketing Message against a connected Page and ad account. This sends nothing to a subscriber, changes no campaign, and incurs no delivery charge; Chirply returns only Meta's verified facebook.com preview URL, never executable iframe HTML.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger audience.
account_id
string
required
Connected Meta ad account id billed for paid Marketing Message delivery.
message_json
string
required
JSON object for one documented Marketing Message: text, button, generic/carousel, media, product, receipt, or coupon, optionally with quick replies.
Over MCP the same operation is the tool meta_messenger_marketing_preview at https://app.chirply.io/api/mcp, same bearer token, same input.
Send paid Marketing message
meta.messenger_marketing_sendwriteconfirmadmin only
SENDS A REAL PAID FACEBOOK MESSENGER MARKETING MESSAGE immediately to one explicitly opted-in subscriber using an active direct campaign. Meta bills the selected ad account for billable delivery. Chirply re-reads live token eligibility, enforces the 12-hour cooldown and 10-minute activation delay, validates current rich-message formats, requires geography/opt-in/payment attestations, and writes a fenced durable receipt before calling Meta so a crash cannot silently duplicate the send.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger audience.
account_id
string
required
Connected Meta ad account id billed for paid Marketing Message delivery.
campaign_id
string
required
Meta Marketing Message campaign id returned by the simplified message_campaign endpoint.
subscription_handle
string
required
Opaque Chirply-sealed subscriber handle returned by the subscriber list; the underlying Meta subscription token is never returned.
message_json
string
required
JSON object for one documented Marketing Message: text, button, generic/carousel, media, product, receipt, or coupon, optionally with quick replies.
min_conversation_gap_seconds
integer (or null)
optional
Optional minimum seconds since organic thread activity; Meta refuses with 2300052 instead of sending inside this gap. Default: null
request_key
string
required
Caller-generated idempotency key reused for every retry of this exact real-message request.
business_region_confirmed
true
required
Attestation that the sending business is in Meta's currently supported Marketing Messages regions.
recipient_region_confirmed
true
required
Attestation that the subscriber is not in Meta's currently blocked recipient regions: EU, Japan, South Korea, Australia, or United Kingdom.
opt_in_confirmed
true
required
Attestation that this opaque handle represents the subscriber's current explicit Page-specific Marketing Messages opt-in.
paid_send_confirmed
true
required
Approval that this sends now to a real person and Meta charges the selected ad account for billable delivery.
Over MCP the same operation is the tool meta_messenger_marketing_send at https://app.chirply.io/api/mcp, same bearer token, same input.
Check Marketing Messages
meta.messenger_marketing_statusreadadmin only
Inspect one connected Facebook Page's current paid Marketing Messages readiness: required Meta permissions, access-token lifetime, spendable ad accounts, subscriber API probe, required delivery webhooks, documented business and recipient geographies, and honest boundaries for One-Time Notification, NPI news, Sponsored Messages, and legacy Recurring Notifications. This sends nothing and spends nothing; Meta does not expose Tech Provider review, Terms acceptance, or geography as a single inspectable flag.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger audience.
Over MCP the same operation is the tool meta_messenger_marketing_status at https://app.chirply.io/api/mcp, same bearer token, same input.
View marketing subscriber
meta.messenger_marketing_subscriber_getreadadmin only
Read one live Marketing Message subscriber token's status, expiration, next eligible send time, re-opt-in state, timezone, Page-scoped recipient id when Meta exposes it, and matched Custom Audiences. The input and output use an opaque encrypted handle rather than the raw Meta send token; this sends nothing and spends nothing.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger audience.
subscription_handle
string
required
Opaque Chirply-sealed subscriber handle returned by the subscriber list; the underlying Meta subscription token is never returned.
Over MCP the same operation is the tool meta_messenger_marketing_subscriber_get at https://app.chirply.io/api/mcp, same bearer token, same input.
List marketing subscribers
meta.messenger_marketing_subscribers_listreadadmin only
Read up to 1,000 current Marketing Message subscription records for one connected Facebook Page directly from Meta, deduplicating recipients and optionally filtering Custom Audiences. Raw subscription tokens are encrypted into opaque Chirply handles before being returned; this sends nothing and incurs no delivery charge, but the result contains sensitive subscriber status and eligibility data.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger audience.
limit
integer
optional
Maximum subscriber records to return, from 1 through 1,000. Default: 100
custom_audience_ids
string[]
optional
Optional Meta Custom Audience ids used to filter matched subscription tokens; audiences below Meta's 100-match privacy threshold are omitted. Default: []
Over MCP the same operation is the tool meta_messenger_marketing_subscribers_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Enable Marketing delivery tracking
meta.messenger_marketing_webhooks_enablewriteconfirmadmin only
After Meta proves this exact Facebook Page is onboarded for Marketing Messages, add the five current paid-product delivery, failure, echo, read, and click webhook fields to both the app and Page subscriptions while preserving all existing Page fields. This changes external Meta webhook configuration but sends no person a message and creates no paid delivery; Chirply deliberately keeps these gated fields out of the base subscription so an ineligible Page cannot break its working webhooks.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger audience.
Over MCP the same operation is the tool meta_messenger_marketing_webhooks_enable at https://app.chirply.io/api/mcp, same bearer token, same input.
View Messenger performance
meta.messenger_measurement_getread
Read one connected Facebook Page's Bot Flow entries, completions, node drop-offs, human handoffs, entry attribution, message delivery/read receipts, customer-shared native cart events, and current Meta Messaging Insights. This sends no message, records no conversion, and changes nothing; Meta Insights can remain unavailable until the Page grants ANALYZE plus the documented permissions and Advanced Access.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger performance to read or report.
days
integer
optional
Inclusive reporting lookback in days, from 1 through 90. Defaults to 30. Default: 30
Over MCP the same operation is the tool meta_messenger_measurement_get at https://app.chirply.io/api/mcp, same bearer token, same input.
Generate Message Us embed
meta.messenger_message_us_embed_generateread
Generate Meta's Page-scoped Message Us JavaScript SDK embed for a connected Facebook Page. This only returns website code; it creates no Meta object and sends no message.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected numeric Facebook Page id opened by the Message Us plugin.
locale
string
optional
Meta JavaScript SDK locale, such as en_US. Default: "en_US"
color
"blue" | "white"
optional
Button color rendered by Meta's Message Us plugin. Default: "blue"
size
"standard" | "large" | "xlarge"
optional
Button size rendered by Meta's Message Us plugin. Default: "large"
Over MCP the same operation is the tool meta_messenger_message_us_embed_generate at https://app.chirply.io/api/mcp, same bearer token, same input.
Send NPI news message
meta.messenger_news_sendwriteconfirmadmin only
SENDS A REAL FACEBOOK MESSENGER NEWS MESSAGE outside the 24-hour window using Meta's NON_PROMOTIONAL_SUBSCRIPTION tag. Only a Page currently registered in Meta's News Page Index may use it, and the content must be strictly non-promotional news—no subscription offer, deal, coupon, discount, branded content, affiliate promotion, or third-party promotion. Chirply requires both attestations and writes a fenced durable receipt before sending.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger audience.
conversation_id
string (uuid)
required
Page-owned Messenger conversation whose participant receives the real news message.
message_json
string
required
JSON object for one documented Marketing Message: text, button, generic/carousel, media, product, receipt, or coupon, optionally with quick replies.
request_key
string
required
Caller-generated idempotency key reused for every retry of this exact real-message request.
npi_registered_confirmed
true
required
Attestation that Meta currently lists this Facebook Page in the News Page Index.
non_promotional_news_confirmed
true
required
Attestation that this content is news only and contains no promotional, affiliate, branded, discount, coupon, or subscription-offer content.
Over MCP the same operation is the tool meta_messenger_news_send at https://app.chirply.io/api/mcp, same bearer token, same input.
Search Messenger people
meta.messenger_people_searchread
Search known Facebook Messenger people and Page conversations in this account by name, email, business name, or Page-scoped person id. This is read-only, sends no message, and never returns Login Connect login ids.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected numeric Facebook Page id whose known Messenger people to search.
query
string
optional
Optional name, email, business-name, or exact PSID search; leave blank for the most recent people. Default: ""
limit
integer
optional
Maximum people to return, from 1 through 50. Default: 20
Over MCP the same operation is the tool meta_messenger_people_search at https://app.chirply.io/api/mcp, same bearer token, same input.
Create Messenger persona
meta.messenger_personas_createwriteadmin only
Create a named human or bot identity on a real connected Facebook Page using a public profile-picture URL. Creating it does not send a message, but it becomes available for future Page messages and is stored by Meta.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger persona.
name
string
required
Clear persona name shown above messages, up to 50 characters; do not use a deceptive or generic identity.
profile_picture_url
string (uri)
required
Public HTTPS image URL Meta should download for this persona; Meta limits the image to 8 MB.
Over MCP the same operation is the tool meta_messenger_personas_create at https://app.chirply.io/api/mcp, same bearer token, same input.
Remove Messenger persona
meta.messenger_personas_deletewriteconfirmadmin only
Soft-delete one persona from a real connected Facebook Page. It can no longer send new messages, while historical messages retain their attribution; this cannot be undone in Chirply.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger persona.
persona_id
string
required
Meta persona id returned by meta.messenger_personas_list.
confirm
true
required
Must be true to confirm soft-deleting this live Page persona.
Over MCP the same operation is the tool meta_messenger_personas_delete at https://app.chirply.io/api/mcp, same bearer token, same input.
List Messenger personas
meta.messenger_personas_listread
List the named human and bot personas currently available on one connected Facebook Page. This reads Meta's live Persona API, changes nothing, and sends no message.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Messenger persona.
Over MCP the same operation is the tool meta_messenger_personas_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Remove from Messenger
meta.messenger_profile_deletewriteconfirmadmin only
Immediately removes Get Started, greetings, ice breakers, persistent menus, commands, and account linking from a real connected Facebook Page. Existing Chirply Bot Flows remain. Messenger Extensions domains stay saved unless remove_whitelisted_domains is explicitly true.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger profile controls to remove.
confirm
true
required
Must be true to confirm removing the Page's live Messenger Profile controls.
remove_whitelisted_domains
boolean
optional
Set true to also delete every Messenger Extensions whitelisted domain. Omit or false to preserve them.
Over MCP the same operation is the tool meta_messenger_profile_delete at https://app.chirply.io/api/mcp, same bearer token, same input.
View Messenger setup
meta.messenger_profile_getread
Read the live localized greetings, Get Started action, ice breakers, persistent menus and composer state, commands, account-linking URL, complete webview settings, and whitelisted domains for one connected Facebook Page. This reads Meta's live Messenger Profile configuration and sends no message.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose live Messenger setup to read.
Over MCP the same operation is the tool meta_messenger_profile_get at https://app.chirply.io/api/mcp, same bearer token, same input.
Publish Messenger setup
meta.messenger_profile_updatewriteconfirmadmin only
Immediately publishes current Messenger Profile controls on a real connected Facebook Page: localized greetings, Get Started or ice breakers, localized persistent menus and composer state, URL webview behavior, commands, HTTPS account linking, and optionally the domain whitelist. Chirply postbacks are bound to exact Page Bot Flows. Get Started takes display priority over ice breakers. This changes a live customer-facing surface but sends no message by itself.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose live Messenger experience to replace.
greeting
string
optional
Legacy/default-locale greeting shown before the first Messenger conversation. Use greetings for a fully localized replacement.
greetings
object[]
optional
Full localized greeting replacement. Omit to change only the default greeting while preserving other live locales; send [] to remove all greetings.
greetings[].locale
string
required
Meta locale for this localized profile block, such as default or en_US.
greetings[].text
string
required
Greeting shown before the first conversation for this locale, 1–160 characters.
get_started_enabled
boolean
optional
Whether to publish Get Started. Defaults to true for compatibility. Disable it to let ice breakers appear instead; Meta gives Get Started display priority when both exist.
get_started_workflow_id
string (uuid) (or null)
optional
Chirply workflow id to start when a person taps Get Started. Omit or set null when preserving an external payload or using the general Messenger trigger.
get_started_payload
string (or null)
optional
Existing non-Chirply Get Started payload to preserve exactly. Omit or set null when linking a Chirply workflow or using the general Messenger trigger.
menu
object[]
optional
Legacy/default-locale persistent-menu actions. Omit or send [] to remove the default menu while preserving other live locales; use persistent_menus for a full localized replacement.
persistent_menus
object[]
optional
Full localized persistent-menu replacement, including composer state and every URL webview setting. Send [] to remove every menu.
persistent_menus[].locale
string
required
Meta locale for this localized profile block, such as default or en_US.
persistent_menus[].composer_input_disabled
boolean
required
Whether Messenger hides the text composer while this localized persistent menu is active.
persistent_menus[].items
object[]
required
Ordered URL or postback actions for this locale. Nested menu actions are not supported by the current profile contract.
ice_breakers
object[]
optional
Full localized ice-breaker replacement. Omit to preserve Meta's current ice breakers; send [] to remove them. Get Started takes display priority if both are enabled.
ice_breakers[].locale
string
required
Meta locale for this localized profile block, such as default or en_US.
ice_breakers[].items
object[]
required
One to four ice-breaker questions for this locale. Get Started takes display priority when both are published.
account_linking_url
string (uri) (or null)
optional
HTTPS URL Messenger opens to link a person's account. Omit to preserve it; send null to remove it.
commands
object[]
optional
Full localized Messenger command replacement. Omit to preserve current commands; send [] to remove them.
commands[].locale
string
required
Meta locale for this localized profile block, such as default or en_US.
commands[].items
object[]
required
One to 100 commands for this locale.
commands[].items[].name
string
required
Command name shown in Messenger, 1–32 characters.
commands[].items[].description
string
required
Plain-language description shown beside the command, 1–64 characters.
whitelisted_domains
string[]
optional
Full replacement list of domains allowed to use the Messenger Extensions SDK for this Page. Omit to preserve Meta's existing list; send an empty list to remove every whitelisted domain. Basic website buttons do not need this.
Over MCP the same operation is the tool meta_messenger_profile_update at https://app.chirply.io/api/mcp, same bearer token, same input.
Generate Messenger link
meta.messenger_referral_link_generateread
Generate a Page-scoped m.me Messenger link for a connected Facebook Page, optionally carrying a Bot Flow referral and attribution value. This is read-only, creates no Meta object, and sends no message.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that should receive the Messenger conversation.
ref
string
optional
Optional stable referral value matched by a Messenger referral Bot Flow trigger and preserved for attribution. Meta limits the URL-encoded value to 2,083 characters.
Over MCP the same operation is the tool meta_messenger_referral_link_generate at https://app.chirply.io/api/mcp, same bearer token, same input.
List reviewed-message recipients
meta.messenger_reviewed_conversationsread
List recent account-owned Facebook Messenger conversations for one connected Page and show which are inside Meta's 24-hour standard window or seven-day HUMAN_AGENT window. This reads local inbox state only, exposes no Page access token or PSID, and sends no message.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected numeric Facebook Page id that owns the Messenger product setup.
limit
integer
optional
Maximum recent Messenger conversations to return, from 1 through 100. Default: 50
Over MCP the same operation is the tool meta_messenger_reviewed_conversations at https://app.chirply.io/api/mcp, same bearer token, same input.
View reviewed messaging setup
meta.messenger_reviewed_messaging_statusread
Read one connected Facebook Page's live permission and webhook readiness for Utility Messages, the non-inspectable App Review gate for HUMAN_AGENT, and the separate paid limited-beta onboarding status for Marketing Messages. This sends no message, spends no money, and explicitly identifies retired Messenger products that Chirply will not call.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected numeric Facebook Page id that owns the Messenger product setup.
Over MCP the same operation is the tool meta_messenger_reviewed_messaging_status at https://app.chirply.io/api/mcp, same bearer token, same input.
View Messenger routing
meta.messenger_routing_getread
Read Meta's live Conversation Routing feature status for one connected Facebook Page, Chirply's own Meta app id, the granted pages_messaging permission, Page messaging task, and required routing webhook subscriptions. This does not reveal a selected default-app id or a live per-thread owner because Meta's current status API does not return either; it sends no message and changes nothing.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger routing status or conversation control to use.
Over MCP the same operation is the tool meta_messenger_routing_get at https://app.chirply.io/api/mcp, same bearer token, same input.
Send and pass Messenger conversation
meta.messenger_routing_passwriteconfirmadmin only
Send one real customer-visible Facebook Messenger RESPONSE message, then pass that conversation to a specified connected Meta app or the Page's default app. This immediately pauses Chirply automation for the local thread so a bot cannot speak after control leaves; Meta may reject the send unless pages_messaging has Advanced Access through App Review, the authorizing person retains Page messaging access, Chirply currently owns the thread, or the Page explicitly allows Chirply to take control.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger routing status or conversation control to use.
conversation_id
string (uuid)
required
Chirply Facebook Messenger conversation to transfer. Chirply resolves the Page-scoped recipient from this account-owned thread rather than accepting an arbitrary PSID.
target_app_id
string (or null)
optional
Connected Meta app id that should receive control. Omit or send null to pass to the Page's default app configured in Meta Page Settings.
message
string
required
Customer-visible Messenger text sent in the same RESPONSE request as the routing control, 1–2,000 characters. This is a real outbound message and requires an open 24-hour standard messaging window.
Over MCP the same operation is the tool meta_messenger_routing_pass at https://app.chirply.io/api/mcp, same bearer token, same input.
Send and release Messenger conversation
meta.messenger_routing_releasewriteconfirmadmin only
Send one real customer-visible Facebook Messenger RESPONSE message, then release the conversation to the Page's default app without asking Meta to notify that app. This immediately pauses Chirply automation for the local thread so a bot cannot speak after release; Meta may reject the send unless pages_messaging has Advanced Access through App Review, the authorizing person retains Page messaging access, Chirply currently owns the thread, or the Page explicitly allows Chirply to take control.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger routing status or conversation control to use.
conversation_id
string (uuid)
required
Chirply Facebook Messenger conversation to transfer. Chirply resolves the Page-scoped recipient from this account-owned thread rather than accepting an arbitrary PSID.
message
string
required
Customer-visible Messenger text sent in the same RESPONSE request as the routing control, 1–2,000 characters. This is a real outbound message and requires an open 24-hour standard messaging window.
Over MCP the same operation is the tool meta_messenger_routing_release at https://app.chirply.io/api/mcp, same bearer token, same input.
List Messenger sticker packs
meta.messenger_sticker_packs_listread
Browse Meta's public free first-party Messenger sticker packs with localized names, descriptions, previews, and counts. This is read-only, does not include custom/paid/avatar/GIF catalogs, and sends no sticker.
Parameters
Field
Type
Required
Description
locale
string
optional
Supported Messenger locale used for translated pack/sticker names, such as en_US, vi_VN, ja_JP, or ko_KR. Default: "en_US"
Over MCP the same operation is the tool meta_messenger_sticker_packs_list at https://app.chirply.io/api/mcp, same bearer token, same input.
List stickers in pack
meta.messenger_stickers_listread
List every public free first-party Messenger sticker in one Meta sticker pack, including preview image, dimensions, and animation state. This is read-only and sends no sticker.
Parameters
Field
Type
Required
Description
pack_id
string
required
Numeric Meta sticker-pack id returned by meta.messenger_sticker_packs_list.
locale
string
optional
Supported Messenger locale used for translated pack/sticker names, such as en_US, vi_VN, ja_JP, or ko_KR. Default: "en_US"
Over MCP the same operation is the tool meta_messenger_stickers_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Search Messenger stickers
meta.messenger_stickers_searchread
Search Meta's public free first-party Messenger sticker catalog by a localized keyword of at least two characters. This is read-only and sends no sticker; custom, paid, avatar stickers and GIF search are not available through this API.
Parameters
Field
Type
Required
Description
query
string
required
Sticker keyword or short phrase; Meta requires at least two characters.
locale
string
optional
Supported Messenger locale used for translated pack/sticker names, such as en_US, vi_VN, ja_JP, or ko_KR. Default: "en_US"
Over MCP the same operation is the tool meta_messenger_stickers_search at https://app.chirply.io/api/mcp, same bearer token, same input.
Extend Messenger thread control
meta.messenger_thread_control_extendwriteconfirmadmin only
Extend Chirply's current control of one account-owned Facebook Messenger conversation by a chosen duration without sending a customer message. Meta allows at most 604,800 seconds (7 days); this changes live routing but does not alter the local automation pause state.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger routing status or conversation control to use.
conversation_id
string (uuid)
required
Chirply Facebook Messenger conversation to transfer. Chirply resolves the Page-scoped recipient from this account-owned thread rather than accepting an arbitrary PSID.
duration_seconds
integer
required
Additional thread-control duration in whole seconds, from 1 second through Meta's 7-day maximum of 604,800 seconds.
Over MCP the same operation is the tool meta_messenger_thread_control_extend at https://app.chirply.io/api/mcp, same bearer token, same input.
Pass Messenger thread control
meta.messenger_thread_control_passwriteconfirmadmin only
Immediately pass one account-owned Facebook Messenger conversation to a specified connected Meta app without sending a customer message. Chirply automation is paused before the provider call so it cannot speak after ownership leaves, and Meta emits a messaging_handovers webhook to subscribed apps.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger routing status or conversation control to use.
conversation_id
string (uuid)
required
Chirply Facebook Messenger conversation to transfer. Chirply resolves the Page-scoped recipient from this account-owned thread rather than accepting an arbitrary PSID.
target_app_id
string
required
Connected Meta app id that should become the thread owner after this standalone pass operation.
metadata
string
optional
Optional opaque handover context sent to the receiving Meta app, up to 1,000 characters. It is not shown to the customer.
Over MCP the same operation is the tool meta_messenger_thread_control_pass at https://app.chirply.io/api/mcp, same bearer token, same input.
Release Messenger thread control
meta.messenger_thread_control_releasewriteconfirmadmin only
Immediately release one account-owned Facebook Messenger conversation to idle/default routing without sending a customer message or notifying another app. Chirply automation is paused before the provider call so it cannot speak after ownership leaves.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger routing status or conversation control to use.
conversation_id
string (uuid)
required
Chirply Facebook Messenger conversation to transfer. Chirply resolves the Page-scoped recipient from this account-owned thread rather than accepting an arbitrary PSID.
metadata
string
optional
Optional opaque handover context sent to the receiving Meta app, up to 1,000 characters. It is not shown to the customer.
Over MCP the same operation is the tool meta_messenger_thread_control_release at https://app.chirply.io/api/mcp, same bearer token, same input.
Request Messenger thread control
meta.messenger_thread_control_requestwriteconfirmadmin only
Ask the current Meta app owner to pass one account-owned Facebook Messenger conversation to Chirply without sending a customer message. This request is supported when Chirply is the Page's default receiver; ownership and automation do not change until Meta later delivers the handover.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger routing status or conversation control to use.
conversation_id
string (uuid)
required
Chirply Facebook Messenger conversation to transfer. Chirply resolves the Page-scoped recipient from this account-owned thread rather than accepting an arbitrary PSID.
metadata
string
optional
Optional opaque handover context sent to the receiving Meta app, up to 1,000 characters. It is not shown to the customer.
Over MCP the same operation is the tool meta_messenger_thread_control_request at https://app.chirply.io/api/mcp, same bearer token, same input.
Take Messenger thread control
meta.messenger_thread_control_takewriteconfirmadmin only
Immediately take control of one account-owned Facebook Messenger conversation for Chirply without sending a customer message. This changes the live owner at Meta and resumes Chirply automation after Meta confirms success.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger routing status or conversation control to use.
conversation_id
string (uuid)
required
Chirply Facebook Messenger conversation to transfer. Chirply resolves the Page-scoped recipient from this account-owned thread rather than accepting an arbitrary PSID.
metadata
string
optional
Optional opaque handover context sent to the receiving Meta app, up to 1,000 characters. It is not shown to the customer.
Over MCP the same operation is the tool meta_messenger_thread_control_take at https://app.chirply.io/api/mcp, same bearer token, same input.
View Messenger thread owner
meta.messenger_thread_owner_getread
Read Meta's current owner for one account-owned Facebook Messenger conversation, including the owning app id, expiration, idle state, and whether Chirply owns it. This sends no message and changes nothing.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id whose Messenger routing status or conversation control to use.
conversation_id
string (uuid)
required
Chirply Facebook Messenger conversation to transfer. Chirply resolves the Page-scoped recipient from this account-owned thread rather than accepting an arbitrary PSID.
Over MCP the same operation is the tool meta_messenger_thread_owner_get at https://app.chirply.io/api/mcp, same bearer token, same input.
View person menu
meta.messenger_user_menu_getread
Reads Meta's live person-specific persistent-menu override and the inherited Page-level menu for one known Facebook Messenger PSID. It sends no message and does not support Instagram or WhatsApp identities.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Page-scoped person id.
psid
string
required
Known Facebook Messenger Page-scoped person id (PSID) on this exact Page and account.
Over MCP the same operation is the tool meta_messenger_user_menu_get at https://app.chirply.io/api/mcp, same bearer token, same input.
Publish person menu
meta.messenger_user_menu_publishwriteconfirmadmin only
Immediately replaces the live persistent menu for one real Facebook Messenger person on one connected Page, including localized composer state and complete webview behavior. Chirply postbacks are bound to exact Page Bot Flows. This changes a customer-facing surface but sends no message.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns both this Page-scoped person id and the live menu.
psid
string
required
Known Facebook Messenger Page-scoped person id (PSID) on this exact Page and account.
persistent_menus
object[]
required
Full localized person-menu replacement. Use the remove capability, not an empty list, to restore the Page-level menu.
persistent_menus[].locale
string
required
Meta locale for this menu, such as default or en_US.
persistent_menus[].composer_input_disabled
boolean
required
Whether Messenger hides the text composer for this person while this localized override is active.
persistent_menus[].items
object[]
required
One to 20 ordered flat URL or postback actions. The current person-menu API does not support nested menu actions.
Over MCP the same operation is the tool meta_messenger_user_menu_publish at https://app.chirply.io/api/mcp, same bearer token, same input.
Remove person menu
meta.messenger_user_menu_removewriteconfirmadmin only
Immediately deletes one real Facebook Messenger person's custom persistent-menu override. The person falls back to the Page-level menu; existing Bot Flows remain and no message is sent.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected Facebook Page id that owns the Page-scoped person id and menu override.
psid
string
required
Known Facebook Messenger Page-scoped person id (PSID) whose custom menu to remove.
confirm
true
required
Must be true to confirm removing this person's live menu override and restoring the Page menu.
Over MCP the same operation is the tool meta_messenger_user_menu_remove at https://app.chirply.io/api/mcp, same bearer token, same input.
Search Meta utility templates
meta.messenger_utility_library_searchread
Search Meta's current prebuilt Utility Message template library by name or content and language for one connected Page. This is read-only, sends no message, creates no template, and incurs no Meta messaging charge.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected numeric Facebook Page id that owns the Messenger product setup.
search
string
required
Name or content phrase to search in Meta's utility template library.
Over MCP the same operation is the tool meta_messenger_utility_library_search at https://app.chirply.io/api/mcp, same bearer token, same input.
Send utility message
meta.messenger_utility_sendwriteconfirmadmin only
SENDS A REAL FACEBOOK MESSENGER MESSAGE outside or inside the standard reply window using one live Meta-approved UTILITY template. Delivery reaches the selected account-owned conversation immediately with no undo and may be billed or rate-limited by Meta. The message must be a transactional order, account, appointment, or event update—not marketing—and Meta enforces page_utility_messaging plus Page and recipient geography.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected numeric Facebook Page id that owns the Messenger product setup.
Over MCP the same operation is the tool meta_messenger_utility_send at https://app.chirply.io/api/mcp, same bearer token, same input.
Clone Meta utility template
meta.messenger_utility_template_clonewriteconfirmadmin only
Clone one current prebuilt Meta Utility Message template into a real Facebook Page's reviewed library, with optional documented body and URL-button inputs. This changes external Page configuration but sends no customer message and incurs no send charge; Meta still controls review status and availability.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected numeric Facebook Page id that owns the Messenger product setup.
name
string
required
Lowercase Meta utility template name containing letters, numbers, and underscores only.
language
string
required
Meta template language code such as en or en_US.
library_template_name
string
required
Exact template name returned by meta.messenger_utility_library_search.
body_text
string (or null)
optional
Optional complete body input required by the selected Meta library template; omit when it needs no body override.
url_button_text
string (or null)
optional
Optional URL-button label required by the selected Meta library template.
url_button_base_url
string (uri) (or null)
optional
Optional HTTP or HTTPS base URL required by the selected Meta library template.
Over MCP the same operation is the tool meta_messenger_utility_template_clone at https://app.chirply.io/api/mcp, same bearer token, same input.
Create utility template
meta.messenger_utility_template_createwriteconfirmadmin only
Submit a Page-owned transactional Utility Message template to Meta for real review. This creates external Page configuration but sends no customer message and incurs no send charge. Marketing or promotional content is prohibited; Meta can reject or later disable the template, and Utility Messages currently require page_utility_messaging plus supported Page and recipient geography.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected numeric Facebook Page id that owns the Messenger product setup.
name
string
required
Lowercase Meta utility template name containing letters, numbers, and underscores only.
language
string
required
Meta template language code such as en or en_US.
body
string
required
Transactional body text with optional sequential {{1}}, {{2}}, and later placeholders; no marketing content.
body_examples
string[]
optional
One concrete review example for each sequential body placeholder. Default: []
header
object (or null)
optional
Optional reviewed text or image header. Image headers require an existing Meta resumable-upload handle.
buttons
object[]
optional
Up to three current URL or POSTBACK buttons submitted with the utility template. Default: []
Over MCP the same operation is the tool meta_messenger_utility_template_create at https://app.chirply.io/api/mcp, same bearer token, same input.
List utility templates
meta.messenger_utility_templates_listread
Read Meta's live Page-owned Utility Message template library, including language, review status, components, and whether a template was cloned from Meta's library. This requires page_utility_messaging, changes nothing, sends no message, and incurs no Meta messaging charge.
Parameters
Field
Type
Required
Description
page_id
string
required
Connected numeric Facebook Page id that owns the Messenger product setup.
name
string
optional
Optional template-name search sent to Meta; omit to list the Page's current utility templates.
Over MCP the same operation is the tool meta_messenger_utility_templates_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Page activity
meta.page_activity_getread
Report recent Messenger, linked Instagram Direct, and public-comment activity for each connected Facebook Page: how many messages and visitor comments arrived, how many an AI agent answered on its own, how many a person answered, how many threads are still waiting on a human, and how many comment replies were skipped or failed. Read-only — it sends nothing and spends nothing.
Parameters
Field
Type
Required
Description
days
integer
optional
How many days back to count, from 1 to 90. Defaults to 30, which is what the Facebook Pages screen shows. Default: 30
page_id
string
optional
Only this Facebook Page id. Omit to report every connected Page.
Over MCP the same operation is the tool meta_page_activity_get at https://app.chirply.io/api/mcp, same bearer token, same input.
Save automation
meta.page_automation_updatewriteconfirmadmin only
Set how one connected Facebook Page handles incoming Messenger messages, linked Instagram Direct messages, and public post comments. Enabling a channel causes the assigned AI agent to send REAL REPLIES TO REAL PEOPLE automatically using the business identity and its own OpenRouter account. Public comment replies are visible to everyone who can see the post.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
shared_page_acknowledged
boolean
optional
Set true only after acknowledging that this Page is connected to another Chirply account and enabling automation may send duplicate messages, replies or comments.
page_id
string
required
Connected Facebook Page id to configure.
message_mode
"off" | "ai"
required
'off' leaves incoming Messenger and linked Instagram Direct messages for the team; 'ai' replies automatically.
message_agent_id
string (uuid) (or null)
required
Active AI agent assigned to Messenger and linked Instagram Direct, or null when message_mode is off.
message_instructions
string (or null)
required
Extra instructions used for this Page's Messenger and linked Instagram Direct replies, or null.
comment_mode
"off" | "questions" | "all"
required
'off' never auto-replies; 'questions' answers only questions/help requests; 'all' replies to every new visitor comment.
comment_agent_id
string (uuid) (or null)
required
Active AI agent assigned to public comments, or null when comment_mode is off.
comment_instructions
string (or null)
required
Extra instructions used only for public comment replies, or null.
Over MCP the same operation is the tool meta_page_automation_update at https://app.chirply.io/api/mcp, same bearer token, same input.
List Page automation
meta.page_automations_listread
List each Facebook Page's current Messenger, linked Instagram Direct, and public-comment autoresponder settings, including which AI agents are assigned. This does not send any replies.
Over MCP the same operation is the tool meta_page_automations_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Re-subscribe
meta.page_resubscribewriteadmin only
Reinstall the webhook subscription on one Facebook Page. For Instagram accounts connected through Facebook Login, that Page installation is also the delivery link. This changes Meta configuration but does not publish content or send a message.
Over MCP the same operation is the tool meta_page_resubscribe at https://app.chirply.io/api/mcp, same bearer token, same input.
List Facebook Pages
meta.pages_listread
List Facebook Pages and linked Instagram Professional accounts available to this account, including permissions, inbound delivery health, and whether a Page is also connected to another account. Other account identities are never exposed.
Over MCP the same operation is the tool meta_pages_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Build a retargeting audience
meta.retargeting_audience_createwriteconfirmadmin only
Create a real, durable custom audience on the connected Meta ad account for people who already showed interest — visited the website (needs a Pixel), opened or submitted a lead form, or engaged with the Facebook Page or Instagram account. Meta backfills it from history, so it is populated with real people and is immediately usable for targeting or exclusion. It costs nothing and shows no ads by itself, but it permanently creates an advertising object on the advertiser's account and counts against Meta's per-account audience limits. An audience Chirply already built for the same source and window is reused rather than duplicated.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
account_id
string
required
Connected Meta ad account id, normally beginning with act_.
Which activity makes someone a member: website_visitors, lead_form_opened, lead_form_submitted, page_engaged, or instagram_engaged.
days
integer
optional
Membership window in days. Meta keeps a different amount of history per source, and a longer request is rejected with error 2654, so Chirply clamps to the source's own ceiling: 90 days for lead_form_opened and lead_form_submitted, 180 for website_visitors, 365 for page_engaged and instagram_engaged. The audience name states the window actually used. Default: 30
pixel_id
string
optional
Meta Pixel or dataset id; required for website_visitors.
page_id
string
optional
Connected Facebook Page id; required for page_engaged.
instagram_id
string
optional
Instagram business account id connected to the Page; required for instagram_engaged.
form_ids
string[]
optional
Lead form ids whose activity defines the audience; required for lead_form_opened and lead_form_submitted. Default: []
url_contains
string
optional
Narrow a website audience to visitors whose page URL contains this text, such as a pricing or checkout path.
Over MCP the same operation is the tool meta_retargeting_audience_create at https://app.chirply.io/api/mcp, same bearer token, same input.
Remove sample conversations
meta.sample_threads_clearwriteconfirmadmin only
Delete this account's seeded sample conversations and the sample contacts created alongside them. Only ever removes demonstration data — real customer conversations and contacts are untouched. Omit the channel to clear both Instagram and WhatsApp samples.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
channel
"instagram" | "whatsapp"
optional
Limit the removal to one channel. Omit to clear every sample thread in the account.
Over MCP the same operation is the tool meta_sample_threads_clear at https://app.chirply.io/api/mcp, same bearer token, same input.
Add sample conversations
meta.sample_threads_seedwriteadmin only
Add a small set of clearly-labelled example Instagram or WhatsApp conversations to this account's inbox so the messaging features can be demonstrated before real customers write in. The threads are fictional, are shown with a “Sample” badge, and replies sent to them are recorded but never delivered to anyone. It also creates matching CRM contacts marked as sample data. Running this again replaces the existing samples for that channel.
Over MCP the same operation is the tool meta_social_events_list at https://app.chirply.io/api/mcp, same bearer token, same input.
View source ad
meta.source_ad_readread
Resolve a recorded Facebook or Instagram ad ID to its exact ad report in Chirply. Verifies that the ad and campaign belong to an ad account connected to the active account. Returns a link to the correct campaign screen; unavailable or unconnected ads return an error. Does not change ads, send messages or spend money.
Parameters
Field
Type
Required
Description
ad_id
string
required
Facebook ad ID recorded on the contact's acquisition source.
Over MCP the same operation is the tool meta_source_ad_read at https://app.chirply.io/api/mcp, same bearer token, same input.
Discover business numbers
meta.whatsapp_accounts_discoverwriteadmin only
Read the connected Meta businesses, discover their WhatsApp Business accounts and phone numbers, subscribe this account to inbound WhatsApp Cloud API webhooks, and refresh this account's saved number catalog. This changes webhook configuration but sends no message and incurs no messaging charge.
Over MCP the same operation is the tool meta_whatsapp_accounts_discover at https://app.chirply.io/api/mcp, same bearer token, same input.
List WhatsApp numbers
meta.whatsapp_accounts_listread
List the WhatsApp Business phone numbers assigned to this account, including verified display names, quality ratings, webhook delivery status, setup errors, and current grounded-AI routing. This is read-only and sends no messages.
Over MCP the same operation is the tool meta_whatsapp_accounts_list at https://app.chirply.io/api/mcp, same bearer token, same input.
Save WhatsApp AI
meta.whatsapp_ai_automation_updatewriteconfirmadmin only
Turn the tenant-grounded AI fallback on or off for one connected WhatsApp Business number. Turning it on causes future inbound messages that no visual workflow handles to receive REAL AUTOMATIC REPLIES from the selected agent, spending the account's own OpenRouter credits and WhatsApp provider resources; unknown, sensitive, upset, or human-requested conversations are handed to the team.
Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.
Parameters
Field
Type
Required
Description
phone_number_id
string
required
Connected WhatsApp Business phone-number id to configure.
ai_reply_mode
"off" | "ai"
required
'off' leaves unmatched inbound messages for the team; 'ai' sends grounded automatic replies.
ai_agent_id
string (uuid) (or null)
required
Active account AI agent assigned to this number, or null when ai_reply_mode is off.
ai_instructions
string (or null)
required
Optional per-number instructions added to the agent's persona and Knowledge Brain, or null.
Over MCP the same operation is the tool meta_whatsapp_ai_automation_update at https://app.chirply.io/api/mcp, same bearer token, same input.
List WhatsApp templates
meta.whatsapp_templates_listread
List approved and pending WhatsApp message templates for one WhatsApp Business account assigned to this account. This is read-only and sends no message.
Parameters
Field
Type
Required
Description
waba_id
string
required
WhatsApp Business Account id assigned to this account.