Skip to main content
Glama

Create a campaign

campaigns_create

Creates a comment-to-DM campaign. The campaign watches an Instagram post, story or inbox for the keywords you give it and automatically sends the DM you write here to whoever matches. Unless you pass isActive: false it goes live immediately and starts messaging real people on its own, so say what it will do before you create it. Reversible: campaigns_pause switches it off again and keeps everything it has collected. Counts against the customer's plan exactly as creating one in the dashboard does — a paid-only feature (story triggers, the follow gate, lead capture, follow-up messages) or one live campaign too many is refused with a sentence naming the plan, which you should repeat to the customer as it is 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.
nameYesWhat 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.
isActiveNoFalse to save the campaign without switching it on. Left out, it goes live straight away and starts answering comments.
keywordsNoThe words that trigger the DM, up to ten. Not needed when matchAnyWord or matchAnyReply is true.
dmMessageNoThe direct message sent to whoever comments.
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/5.0
Behavior5/5

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

Despite annotations already marking it non-read-only and non-destructive, the description adds rich context: the campaign goes live immediately and messages real people on its own, it is reversible via campaigns_pause, it counts against the customer's plan, and paid-only features or plan limits are refused with a specific sentence the agent should relay verbatim. This goes well beyond the annotations and is exactly the behavioral detail an agent needs.

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

Conciseness4/5

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

The description is a single dense paragraph, but it is front-loaded with the core action and then layers on live behavior, reversibility, and plan constraints. Every sentence carries operational weight for a 26-parameter creation tool, though the lack of structure makes it slightly harder to scan.

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

Completeness5/5

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

For a complex create operation with 26 parameters and no output schema, the description covers the critical agent-facing concerns: immediate live behavior, reversibility, plan accounting, paid feature restrictions, and how to handle refusals. The schema handles parameter details, so the description is complete for correct invocation.

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?

With 100% schema description coverage, the schema already documents all 26 parameters. The description only adds a grouped note that story triggers, the follow gate, lead capture, and follow-up messages are paid-only features, which is useful but does not substantially extend parameter meaning beyond what the schema provides.

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

Purpose4/5

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

The description gives a specific verb and resource: creates a comment-to-DM campaign that watches an Instagram post/story/inbox for keywords and sends a DM. It clearly distinguishes its live-by-default behavior from campaigns_pause as the off-switch, but it does not differentiate itself from the sibling campaigns_create_full, which an agent may need to choose between.

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

Usage Guidelines3/5

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

It implies when to use it by describing the default live behavior and the isActive: false escape hatch, and it names campaigns_pause for reversal. However, it gives no explicit guidance on when to pick this tool over the sibling campaigns_create_full or campaigns_update, leaving that choice to inference.

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