Skip to main content
Glama

campaign_manage

Destructive

Read campaigns and stage page-scale, content-sweep, or bulk-edit campaigns and blog articles. All staging is proposal-based and approval-gated; nothing publishes without the user. Already scoped to the connected workspace and its site; call directly, no domain or site parameter is needed. Cost: list/get reads are FREE. Creating/approving a campaign bills AI credits per page only as the staged work actually executes; nothing is spent at staging time.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
kindNopropose_page_scale only (required): page kind, e.g. "location pages".
rowsNopropose_page_scale, rowSourceKind=user: one object per page.
urlsNopropose_bulk_edit, selectorKind=urls: the pages.
briefNomanage+update_brief: replacement brief. Also propose_page_scale (template brief) and propose_content_sweep (shared direction).
titleNopropose_page_scale (required), propose_content_sweep (required), propose_bulk_edit (optional).
actionYesWhich operation to run. list (campaigns with status + task counts); manage (approve/pause/resume/abandon/update a campaign); propose_page_scale (programmatic landing pages at scale); propose_content_sweep (N distinct blog articles as a campaign); propose_bulk_edit (one instruction across many pages); write_articles (direct N-article staging).
statusNolist only: filter campaigns by status.
topicsNopropose_content_sweep (required, up to 50) and write_articles (required, 2-50). One distinct article per topic.
confirmNomanage only, approve + abandon: must be true - attests the user explicitly asked for this (approve releases work + spend; abandon is irreversible).
maxPagesNopropose_bulk_edit only: cap the sweep size.
segmentsNopropose_bulk_edit: advanced mixed-template selectors (overrides selectorKind/instruction).
taskTypeNopropose_bulk_edit only (required): the sweep type, e.g. ctr_fix, schema, content_refresh.
rowPromptNopropose_page_scale, rowSourceKind=ai: dataset to generate.
rowTargetNopropose_page_scale only: target number of rows/pages.
campaignIdNomanage only: the campaign to act on.
pathPrefixNopropose_bulk_edit, selectorKind=path_prefix: the prefix.
autoPublishNowrite_articles only: default false (stage as drafts).
instructionNopropose_bulk_edit only: shared per-page brief.
user_intentNoOptional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.
allowGenTextNopropose_page_scale only: allow per-row AI text (costs credits).
manageActionNomanage only: what to do to the campaign. approve releases the campaign to execution (the USER must have explicitly said yes first).
pageTemplateNopropose_page_scale only: built-in template id.
selectorKindNopropose_bulk_edit only: how to select pages.
rowSourceKindNopropose_page_scale only (required): where page rows come from.
publishAsDraftNopropose_page_scale only: publish pages as drafts.
libraryDatasetIdNopropose_page_scale, rowSourceKind=library: dataset id to attach.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / confirm / description
      Previous value: -"manage only, approve + abandon: must be true — attests the user explicitly asked for this (approve releases work + spend; abandon is irreversible)."New value: +"manage only, approve + abandon: must be true - attests the user explicitly asked for this (approve releases work + spend; abandon is irreversible)."
  2. Changed9 schema fields changed
    • changedInput schema / properties / action / description
      Previous value: -"Which operation to run. manage (approve/pause/resume/abandon/update a campaign); propose_page_scale (programmatic landing pages at scale); propose_content_sweep (N distinct blog articles as a campaign); propose_bulk_edit (one instruction across many pages); write_articles (direct N-article staging); save_article (save a full article draft (pass title/content/slug) for one-click publish)."New value: +"Which operation to run. list (campaigns with status + task counts); manage (approve/pause/resume/abandon/update a campaign); propose_page_scale (programmatic landing pages at scale); propose_content_sweep (N distinct blog articles as a campaign); propose_bulk_edit (one instruction across many pages); write_articles (direct N-article staging)."
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "manage",
      -  "propose_page_scale",
      -  "propose_content_sweep",
      -  "propose_bulk_edit",
      -  "write_articles",
      -  "save_article"
      -]New value: +[
      +  "list",
      +  "manage",
      +  "propose_page_scale",
      +  "propose_content_sweep",
      +  "propose_bulk_edit",
      +  "write_articles"
      +]
    • removedInput schema / properties / content
      Removed value: -{
      -  "description": "save_article only (required): full Markdown body.",
      -  "type": "string"
      -}
    • removedInput schema / properties / excerpt
      Removed value: -{
      -  "description": "save_article only (required): the excerpt.",
      -  "type": "string"
      -}
    • removedInput schema / properties / featuredImagePrompt
      Removed value: -{
      -  "description": "save_article only (required): image prompt.",
      -  "type": "string"
      -}
    • removedInput schema / properties / metaDescription
      Removed value: -{
      -  "description": "save_article only: meta description.",
      -  "type": "string"
      -}
    • removedInput schema / properties / metaTitle
      Removed value: -{
      -  "description": "save_article only: meta title.",
      -  "type": "string"
      -}
    • removedInput schema / properties / slug
      Removed value: -{
      -  "description": "save_article only (required): the URL slug.",
      -  "type": "string"
      -}
    • addedInput schema / properties / status
      Added value: +{
      +  "description": "list only: filter campaigns by status.",
      +  "enum": [
      +    "proposed",
      +    "approved",
      +    "active",
      +    "paused",
      +    "done",
      +    "abandoned"
      +  ],
      +  "type": "string"
      +}
  3. Changed3 schema fields changed
    • changedInput schema / properties / confirm / description
      Previous value: -"manage + abandon only: must be true to confirm the irreversible action."New value: +"manage only, approve + abandon: must be true — attests the user explicitly asked for this (approve releases work + spend; abandon is irreversible)."
    • changedInput schema / properties / manageAction / description
      Previous value: -"manage only: what to do to the campaign."New value: +"manage only: what to do to the campaign. approve releases the campaign to execution (the USER must have explicitly said yes first)."
    • changedInput schema / properties / manageAction / enum
      Previous value: -[
      -  "pause",
      -  "resume",
      -  "abandon",
      -  "update_brief"
      -]New value: +[
      +  "approve",
      +  "pause",
      +  "resume",
      +  "abandon",
      +  "update_brief"
      +]
  4. Changed1 schema field changed
    • changedInput schema / properties / action / description
      Previous value: -"Which operation to run. manage (pause/resume/abandon/update a campaign); propose_page_scale (programmatic landing pages at scale); propose_content_sweep (N distinct blog articles as a campaign); propose_bulk_edit (one instruction across many pages); write_articles (direct N-article staging); save_article (save a full article draft (pass title/content/slug) for one-click publish)."New value: +"Which operation to run. manage (approve/pause/resume/abandon/update a campaign); propose_page_scale (programmatic landing pages at scale); propose_content_sweep (N distinct blog articles as a campaign); propose_bulk_edit (one instruction across many pages); write_articles (direct N-article staging); save_article (save a full article draft (pass title/content/slug) for one-click publish)."
  5. Changed1 schema field changed
    • addedInput schema / properties / user_intent
      Added value: +{
      +  "description": "Optional: one short sentence describing what the user is ultimately trying to achieve with this request. Used by SEOmatic to tailor answers and improve the product; never required.",
      +  "maxLength": 300,
      +  "type": "string"
      +}
  6. Added

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already mark this as destructive/non-read-only, but the description adds valuable behavioral context: all staging is approval-gated, nothing publishes without user consent, reads are free, and credits are only billed per page when staged work executes. This meaningfully shapes agent behavior beyond the annotations and does not contradict them.

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?

Four sentences, front-loaded with the main verbs and resource, and every sentence adds unique context: scope, approval gating, and cost behavior. There is no filler or redundant repetition of schema content.

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 tool with six action modes, the description provides the essential safety, scoping, and cost context while relying on the rich schema and output schema for specifics. It is complete enough for initial selection and invocation, though action-specific prerequisites are left to the schema.

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%, with each parameter already explained per action, so the baseline is 3. The description adds a mild clarification that workspace/site scoping is implicit and no domain/site parameter is needed, but it does not elaborate on parameter usage beyond the schema.

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 states specific operations: read campaigns and stage page-scale, content-sweep, or bulk-edit campaigns and blog articles, with the proposal-based model made explicit. It identifies the resource and action scope clearly. It doesn't explicitly differentiate from siblings like task_manage or generate_article, so it is not a 5.

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?

The description gives clear guidance on when to call: for reading campaigns and staging proposal-based work, with the approval gate and no-domain-parameter context stated. It does not name alternatives or explicitly say when not to use the tool, but the context is strong enough for safe routing.

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.