Skip to main content
Glama

Generate campaign

generate_campaign

Creates a new marketing campaign for a brand and generates its first batch of draft posts (copy + image briefs per channel). Posts land as drafts awaiting human approval in the Rebbel dashboard — this tool never publishes or schedules anything. If the brand already has a campaign with exactly this objective and angle, that campaign comes back instead (with a choice: open it, or generate anyway) and nothing new is created — pass generateAnyway:true only after the user asks for a second one. channels takes these ids: meta_facebook (Facebook), meta_instagram (Instagram), x, threads, bluesky, linkedin_personal, pinterest. TikTok posts are made in the Rebbel dashboard. A requested channel this brand can't use yet (for example, one its plan doesn't include) is left out and named in the response while the rest go ahead; if none of the requested channels can be used, nothing is created.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
makeNoLeave this out to use the brand's own setting (get_make_posts_default). 'first' writes one post now and plans the rest, which the user can then have written with make_rest_of_campaign; 'all' writes every post now. Pass it only when the user says which they want.
angleYesThe creative angle or hook the campaign should take.
brandIdYesThe brand's id, from list_brands.
channelsYesChannels to generate content for — meta_facebook is Facebook, meta_instagram is Instagram.
objectiveYesWhat this campaign is for, in plain English. For organic campaigns, phrase the objective as what the audience should know or feel after the campaign (e.g. 'people starting Sober October know HALT before October 1'); the business result (signups, follows) is tracked, not written into posts. For a promotional/launch campaign, name the thing being promoted (e.g. 'promote the fall product launch').
campaignTypeNo'launch' for an introduction/who-we-are campaign (recommended when the brand's marketing-presence audit shows a thin footprint), 'standard' otherwise. Defaults to 'standard'.
generateAnywayNoDefault false: if this brand already has a campaign with exactly this objective and angle, the existing one is returned instead of a copy being created. Pass true only after the user has seen that and explicitly wants a second campaign on the same brief.
referenceLinksNoExisting pages on the brand's own site worth linking to when a concept's angle genuinely calls for it (a blog post, a guide, a product page) — e.g. {url: 'https://example.com/guides/x', label: 'the X guide'}. Optional; omit if none apply. Not forced into every post.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / make
      Added value: +{
      +  "description": "Leave this out to use the brand's own setting (get_make_posts_default). 'first' writes one post now and plans the rest, which the user can then have written with make_rest_of_campaign; 'all' writes every post now. Pass it only when the user says which they want.",
      +  "enum": [
      +    "first",
      +    "all"
      +  ],
      +  "type": "string"
      +}
  2. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing the draft-only, never-publishes/never-schedules guarantee, the duplicate-objective/angle short-circuit with a user choice, and partial-failure behavior where unusable channels are dropped and named in the response (nothing created if none are usable). It does not cover permission/auth requirements or rate limits, keeping it just short of the top.

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?

Front-loaded with the core action and the never-publishes guarantee, then layers in edge cases in a readable order. The inline channel id enumeration and the TikTok note are somewhat redundant against the schema enum, adding length without new information for that portion.

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?

With no output schema, the description takes on the burden of explaining what comes back: the existing campaign on a duplicate match, the choice presented to the user, and channel names in the response. For an 8-parameter mutation tool it covers creation, duplication, and partial failure adequately.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real semantics: it explains the plan-gated channel behavior, why some channels may silently be omitted, and reinforces generateAnyway's duplicate-detection meaning. The channel id list duplicates the schema enum, which caps the value slightly.

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?

States a specific verb and resource (creates a marketing campaign and its first batch of draft posts) with exact scope: copy plus image briefs per channel, landing as drafts. An agent can distinguish this from create_post, create_adhoc_post, and generate_strategy without reading further.

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

Usage Guidelines5/5

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

Explicit conditions throughout: pass generateAnyway:true only after the user asks for a second campaign on the same brief, and it states that an existing identical campaign is returned instead. It also carves out TikTok as dashboard-only and explains the plan-gated channel fallback, leaving little 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.