Skip to main content
Glama

Update a campaign

campaigns_update

Changes the settings of an existing campaign: its name, its keywords, the DM it sends, its link button, its public reply, its follow-up. Only the fields you pass are changed, and every change is reversible by calling this again with the old values. It cannot switch a campaign on or off — use campaigns_pause and campaigns_resume for that. Turning on a paid-only feature here is refused by the plan exactly as it would be in the dashboard; pass the refusal back as written.

Input Schema

NameRequiredDescriptionDefault
adIdNoAD only. The id of the one ad to watch.
goalNoOne line on what the campaign is for. Shown to the customer only.
nameNoWhat the customer will see this campaign called in their dashboard.
postIdNoThe Instagram media id of the one post or reel to watch.
postUrlNoThe public permalink of that post, so the dashboard can show it.
keywordsNoThe words that trigger the DM, up to ten. Not needed when matchAnyWord or matchAnyReply is true.
dmMessageNoThe direct message sent to whoever comments.
campaignIdYesThe id of the campaign to change.
matchAnyAdNoAD only. True to answer comments on any ad.
triggerTypeNoWhat starts the campaign. POST (the default) is a comment on a post or reel. STORY_REPLY is a reply to a story, STORY_MENTION a story that mentions the account, DM a direct message, LIVE a comment on a live video, AD a comment on an ad.
matchAnyLiveNoLIVE only. True to answer every live video rather than the current one.
matchAnyPostNoTrue to watch every post on the account instead of one.
matchAnyWordNoTrue to DM everyone who comments, whatever they wrote.
matchAnyReplyNoTrue to answer any story reply.
requireFollowNoTrue to ask a non-follower to follow before the DM is sent. A paid feature on some plans.
wholeWordMatchNoTrue (the default) matches a keyword only as a whole word, so PRICE does not fire on 'pricey'.
followUpEnabledNoTrue to send a second message later. A paid feature on some plans.
followUpMessageNoThat second message's text.
linkButtonLabelNoThe label on the button under the DM, at most 50 characters.
pendingNextReelNoTrue to attach the campaign to the next reel the customer posts, before that reel exists.
instagramAccountIdNoWhich connected Instagram account this runs for. Leave it out and the most recently connected account is used.
leadCaptureEnabledNoTrue to ask for an email address in the DM. A paid feature on some plans.
publicReplyEnabledNoTrue to also reply publicly under the comment.
publicReplyMessageNoThe public reply's text.
followUpDelayMinutesNoHow long to wait before the follow-up, in minutes. At most 1440, because Instagram closes the messaging window after a day.
trackedDestinationUrlNoWhere that button goes. Clicks on it are counted.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only supply readOnlyHint=false and destructiveHint=false; the description goes well beyond them by stating partial-update semantics ('Only the fields you pass are changed'), reversibility ('every change is reversible by calling this again with the old values'), and, most valuably, that paid-feature refusals come back from the plan and should be 'pass[ed] back as written.' That last point is real behavioral guidance an agent cannot get from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the mutation scope, then the partial-update/reversibility semantics, then the routing exclusion and the plan-refusal rule. No sentence is filler and each adds a distinct, decision-relevant fact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 26-parameter partial-update tool with 100% schema coverage and no output schema, the description supplies the mutation semantics, reversibility, sibling routing for on/off, and plan-refusal handling an agent needs. The only gap is not addressing the overlapping set_* siblings, which is a genuine but secondary omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every one of the 26 properties is documented in-schema, including enums and paid-feature flags, so the schema carries the parameter burden. The description's field list (name, keywords, DM, link button, public reply, follow-up) lightly mirrors that without adding syntax, formats, or default semantics beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Changes the settings of an existing campaign') and enumerates the field families it touches (name, keywords, DM, link button, public reply, follow-up). It also explicitly distinguishes itself from campaigns_pause/campaigns_resume, so an agent can separate it from the most confusable siblings without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-not with the correct alternative: 'It cannot switch a campaign on or off — use campaigns_pause and campaigns_resume for that.' However, it is silent on the many overlapping set_* siblings (campaigns_set_public_reply, campaigns_set_links, campaigns_set_trigger, campaigns_set_keyword_buttons, campaigns_set_steps), whose fields this tool also appears to change, leaving that routing ambiguity unresolved.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources