Skip to main content
Glama

update_email_campaign

Update an email campaign.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "campaign_id": "<campaign_id>"
    },
    "name": "update_email_campaign"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameNo
enabledNo
triggerNo
frequencyNoonce_ever
conditionsNo
project_idNoTarget project ID
campaign_idYes
template_idNo
email_designNo
project_slugNoTarget project slug (helpdesk slug)
delay_secondsNo
email_categoryNoEmailCategory key (see list_email_categories), or "all" for every category
skip_unengagedNoSkip contacts who received 5+ emails in the last 180 days without opening, clicking or replying to any (the sunset rule broadcasts use). Ignored for categories people cannot unsubscribe from. Default false.
frequency_scopeNo
next_campaign_idNoCampaign id to trigger after this campaign email is sent, or null to clear
custom_frequency_keyNo
reevaluate_conditions_at_sendNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / definitions / __schema0 / oneOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "align": {
      -        "description": "Defaults to \"left\".",
      -        "enum": [
      -          "left",
      -          "center"
      -        ],
      -        "type": "string"
      -      },
      -      "color": {
      -        "description": "Hex color override for this block only",
      -        "type": "string"
      -      },
      -      "id": {
      -        "description": "Unique within the document",
      -        "type": "string"
      -      },
      -      "layout_width": {
      -        "description": "Defaults to \"full\". Consecutive blocks are grouped into a row when their widths sum to a full row: half+half, third+third+third, third+two-thirds, or two-thirds+third. Any other combination (e.g. two unpaired two-thirds blocks) falls back to full width.",
      -        "enum": [
      -          "full",
      -          "half",
      -          "third",
      -          "two-thirds"
      -        ],
      -        "type": "string"
      -      },
      -      "level": {
      -        "anyOf": [
      -          {
      -            "const": 1,
      -            "type": "number"
      -          },
      -          {
      -            "const": 2,
      -            "type": "number"
      -          }
      -        ],
      -        "description": "Heading level"
      -      },
      -      "spacing_after": {
      -        "description": "Overrides this block's bottom margin (0/8/18/32px, scaled by theme.spacing). Defaults to the block type's own margin.",
      -        "enum": [
      -          "none",
      -          "sm",
      -          "md",
      -          "lg"
      -        ],
      -        "type": "string"
      -      },
      -      "text": {
      -        "description": "Supports **bold**, *italic*, [label](url) inline formatting",
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "heading",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "type",
      -      "text",
      -      "level"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "align": {
      -        "description": "Defaults to \"left\".",
      -        "enum": [
      -          "left",
      -          "center"
      -        ],
      -        "type": "string"
      -      },
      -      "color": {
      -        "description": "Hex color override for this block only",
      -        "type": "string"
      -      },
      -      "id": {
      -        "description": "Unique within the document",
      -        "type": "string"
      -      },
      -      "layout_width": {
      -        "description": "Defaults to \"full\". Consecutive blocks are grouped into a row when their widths sum to a full row: half+half, third+third+third, third+two-thirds, or two-thirds+third. Any other combination (e.g. two unpaired two-thirds blocks) falls back to full width.",
      -        "enum": [
      -          "full",
      -          "half",
      -          "third",
      -          "two-thirds"
      -        ],
      -        "type": "string"
      -      },
      -      "spacing_after": {
      -        "description": "Overrides this block's bottom margin (0/8/18/32px, scaled by theme.spacing). Defaults to the block type's own margin.",
      -        "enum": [
      -          "none",
      -          "sm",
      -          "md",
      -          "lg"
      -        ],
      -        "type": "string"
      -      },
      -      "text": {
      -        "description": "Supports **bold**, *italic*, [label](url) inline formatting",
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "paragraph",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "type",
      -      "text"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "align": {
      -        "description": "Defaults to \"left\".",
      -        "enum": [
      -          "left",
      -          "center"
      -        ],
      -        "type": "string"
      -      },
      -      "full_width": {
      -        "description": "Stretch the button to the full column width",
      -        "type": "boolean"
      -      },
      -      "id": {
      -        "description": "Unique within the document",
      -        "type": "string"
      -      },
      -      "layout_width": {
      -        "description": "Defaults to \"full\". Consecutive blocks are grouped into a row when their widths sum to a full row: half+half, third+third+third, third+two-thirds, or two-thirds+third. Any other combination (e.g. two unpaired two-thirds blocks) falls back to full width.",
      -        "enum": [
      -          "full",
      -          "half",
      -          "third",
      -          "two-thirds"
      -        ],
      -        "type": "string"
      -      },
      -      "size": {
      -        "description": "Defaults to \"md\"",
      -        "enum": [
      -          "sm",
      -          "md",
      -          "lg"
      -        ],
      -        "type": "string"
      -      },
      -      "spacing_after": {
      -        "description": "Overrides this block's bottom margin (0/8/18/32px, scaled by theme.spacing). Defaults to the block type's own margin.",
      -        "enum": [
      -          "none",
      -          "sm",
      -          "md",
      -          "lg"
      -        ],
      -        "type": "string"
      -      },
      -      "text": {
      -        "description": "Button label",
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "button",
      -        "type": "string"
      -      },
      -      "url": {
      -        "description": "https, http, or mailto URL",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "type",
      -      "text",
      -      "url"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "id": {
      -        "description": "Unique within the document",
      -        "type": "string"
      -      },
      -      "spacing_after": {
      -        "description": "Overrides this block's bottom margin (0/8/18/32px, scaled by theme.spacing). Defaults to the block type's own margin.",
      -        "enum": [
      -          "none",
      -          "sm",
      -          "md",
      -          "lg"
      -        ],
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "divider",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "type"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "id": {
      -        "description": "Unique within the document",
      -        "type": "string"
      -      },
      -      "size": {
      -        "description": "Vertical spacer size",
      -        "enum": [
      -          "sm",
      -          "md",
      -          "lg"
      -        ],
      -        "type": "string"
      -      },
      -      "spacing_after": {
      -        "description": "Overrides this block's bottom margin (0/8/18/32px, scaled by theme.spacing). Defaults to the block type's own margin.",
      -        "enum": [
      -          "none",
      -          "sm",
      -          "md",
      -          "lg"
      -        ],
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "spacer",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "type",
      -      "size"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "alt": {
      -        "description": "Alt text; required",
      -        "type": "string"
      -      },
      -      "href": {
      -        "description": "Optional https, http, or mailto URL the image links to when clicked",
      -        "type": "string"
      -      },
      -      "id": {
      -        "description": "Unique within the document",
      -        "type": "string"
      -      },
      -      "layout_width": {
      -        "description": "Defaults to \"full\". Consecutive blocks are grouped into a row when their widths sum to a full row: half+half, third+third+third, third+two-thirds, or two-thirds+third. Any other combination (e.g. two unpaired two-thirds blocks) falls back to full width.",
      -        "enum": [
      -          "full",
      -          "half",
      -          "third",
      -          "two-thirds"
      -        ],
      -        "type": "string"
      -      },
      -      "spacing_after": {
      -        "description": "Overrides this block's bottom margin (0/8/18/32px, scaled by theme.spacing). Defaults to the block type's own margin.",
      -        "enum": [
      -          "none",
      -          "sm",
      -          "md",
      -          "lg"
      -        ],
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "image",
      -        "type": "string"
      -      },
      -      "url": {
      -        "description": "https or http image URL. Call upload_email_image first to host an image and get an absolute URL.",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "type",
      -      "url",
      -      "alt"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "align": {
      -        "description": "Defaults to \"left\".",
      -        "enum": [
      -          "left",
      -          "center"
      -        ],
      -        "type": "string"
      -      },
      -      "id": {
      -        "description": "Unique within the document",
      -        "type": "string"
      -      },
      -      "layout_width": {
      -        "description": "Defaults to \"full\". Consecutive blocks are grouped into a row when their widths sum to a full row: half+half, third+third+third, third+two-thirds, or two-thirds+third. Any other combination (e.g. two unpaired two-thirds blocks) falls back to full width.",
      -        "enum": [
      -          "full",
      -          "half",
      -          "third",
      -          "two-thirds"
      -        ],
      -        "type": "string"
      -      },
      -      "spacing_after": {
      -        "description": "Overrides this block's bottom margin (0/8/18/32px, scaled by theme.spacing). Defaults to the block type's own margin.",
      -        "enum": [
      -          "none",
      -          "sm",
      -          "md",
      -          "lg"
      -        ],
      -        "type": "string"
      -      },
      -      "text": {
      -        "description": "Supports **bold**, *italic*, [label](url) inline formatting",
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "footer_note",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "type",
      -      "text"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "align": {
      -        "description": "Defaults to \"left\".",
      -        "enum": [
      -          "left",
      -          "center"
      -        ],
      -        "type": "string"
      -      },
      -      "id": {
      -        "description": "Unique within the document",
      -        "type": "string"
      -      },
      -      "items": {
      -        "items": {
      -          "description": "Supports **bold**, *italic*, [label](url) inline formatting",
      -          "type": "string"
      -        },
      -        "maxItems": 50,
      -        "minItems": 1,
      -        "type": "array"
      -      },
      -      "layout_width": {
      -        "description": "Defaults to \"full\". Consecutive blocks are grouped into a row when their widths sum to a full row: half+half, third+third+third, third+two-thirds, or two-thirds+third. Any other combination (e.g. two unpaired two-thirds blocks) falls back to full width.",
      -        "enum": [
      -          "full",
      -          "half",
      -          "third",
      -          "two-thirds"
      -        ],
      -        "type": "string"
      -      },
      -      "spacing_after": {
      -        "description": "Overrides this block's bottom margin (0/8/18/32px, scaled by theme.spacing). Defaults to the block type's own margin.",
      -        "enum": [
      -          "none",
      -          "sm",
      -          "md",
      -          "lg"
      -        ],
      -        "type": "string"
      -      },
      -      "style": {
      -        "enum": [
      -          "bullet",
      -          "number"
      -        ],
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "list",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "type",
      -      "style",
      -      "items"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "attribution": {
      -        "description": "Optional \"— attribution\" line under the quote",
      -        "type": "string"
      -      },
      -      "id": {
      -        "description": "Unique within the document",
      -        "type": "string"
      -      },
      -      "layout_width": {
      -        "description": "Defaults to \"full\". Consecutive blocks are grouped into a row when their widths sum to a full row: half+half, third+third+third, third+two-thirds, or two-thirds+third. Any other combination (e.g. two unpaired two-thirds blocks) falls back to full width.",
      -        "enum": [
      -          "full",
      -          "half",
      -          "third",
      -          "two-thirds"
      -        ],
      -        "type": "string"
      -      },
      -      "spacing_after": {
      -        "description": "Overrides this block's bottom margin (0/8/18/32px, scaled by theme.spacing). Defaults to the block type's own margin.",
      -        "enum": [
      -          "none",
      -          "sm",
      -          "md",
      -          "lg"
      -        ],
      -        "type": "string"
      -      },
      -      "text": {
      -        "description": "Supports **bold**, *italic*, [label](url) inline formatting",
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "quote",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "type",
      -      "text"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "background": {
      -        "description": "Hex color; defaults to transparent",
      -        "type": "string"
      -      },
      -      "blocks": {
      -        "description": "Child blocks. Sections cannot contain another section.",
      -        "items": {
      -          "$ref": "#/definitions/__schema0"
      -        },
      -        "minItems": 1,
      -        "type": "array"
      -      },
      -      "corner_radius": {
      -        "description": "Defaults to \"none\"",
      -        "enum": [
      -          "none",
      -          "sm",
      -          "md",
      -          "lg"
      -        ],
      -        "type": "string"
      -      },
      -      "full_bleed": {
      -        "description": "Break out of the card's horizontal padding so the background spans edge to edge",
      -        "type": "boolean"
      -      },
      -      "heading_color": {
      -        "description": "Hex color; overrides heading color for children",
      -        "type": "string"
      -      },
      -      "id": {
      -        "description": "Unique within the document",
      -        "type": "string"
      -      },
      -      "layout_width": {
      -        "description": "Defaults to \"full\". A fractional width lets sibling sections group into a column row - e.g. three sections each with layout_width \"third\" render as a three-column row of intact cards (icon+heading+text stays together per card) instead of stacking icons, then headings, then text on mobile. full_bleed is ignored on a fractional-width section since escaping the card padding makes no sense for a block sitting inside a column cell.",
      -        "enum": [
      -          "full",
      -          "half",
      -          "third",
      -          "two-thirds"
      -        ],
      -        "type": "string"
      -      },
      -      "padding": {
      -        "description": "Defaults to \"md\"",
      -        "enum": [
      -          "none",
      -          "sm",
      -          "md",
      -          "lg"
      -        ],
      -        "type": "string"
      -      },
      -      "spacing_after": {
      -        "description": "Overrides this block's bottom margin (0/8/18/32px, scaled by theme.spacing). Defaults to the block type's own margin.",
      -        "enum": [
      -          "none",
      -          "sm",
      -          "md",
      -          "lg"
      -        ],
      -        "type": "string"
      -      },
      -      "text_color": {
      -        "description": "Hex color; overrides paragraph/list/quote text color for children",
      -        "type": "string"
      -      },
      -      "type": {
      -        "const": "section",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "type",
      -      "blocks"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "align": {
      +        "description": "Defaults to \"left\".",
      +        "enum": [
      +          "left",
      +          "center",
      +          "right"
      +        ],
      +        "type": "string"
      +      },
      +      "color": {
      +        "description": "Hex color override for this block only",
      +        "type": "string"
      +      },
      +      "id": {
      +        "description": "Unique within the document",
      +        "type": "string"
      +      },
      +      "layout_width": {
      +        "description": "Defaults to \"full\". Consecutive blocks are grouped into a row when their widths sum to a full row: half+half, third+third+third, third+two-thirds, or two-thirds+third. Any other combination (e.g. two unpaired two-thirds blocks) falls back to full width.",
      +        "enum": [
      +          "full",
      +          "half",
      +          "third",
      +          "two-thirds"
      +        ],
      +        "type": "string"
      +      },
      +      "level": {
      +        "anyOf": [
      +          {
      +            "const": 1,
      +            "type": "number"
      +          },
      +          {
      +            "const": 2,
      +            "type": "number"
      +          }
      +        ],
      +        "description": "Heading level"
      +      },
      +      "spacing_after": {
      +        "description": "Overrides this block's bottom margin (0/8/18/32px, scaled by theme.spacing). Defaults to the block type's own margin.",
      +        "enum": [
      +          "none",
      +          "sm",
      +          "md",
      +          "lg"
      +        ],
      +        "type": "string"
      +      },
      +      "text": {
      +        "description": "Supports **bold**, *italic*, [label](url) inline formatting",
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "heading",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "type",
      +      "text",
      +      "level"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "align": {
      +        "description": "Defaults to \"left\".",
      +        "enum": [
      +          "left",
      +          "center",
      +          "right"
      +        ],
      +        "type": "string"
      +      },
      +      "color": {
      +        "description": "Hex color override for this block only",
      +        "type": "string"
      +      },
      +      "id": {
      +        "description": "Unique within the document",
      +        "type": "string"
      +      },
      +      "layout_width": {
      +        "description": "Defaults to \"full\". Consecutive blocks are grouped into a row when their widths sum to a full row: half+half, third+third+third, third+two-thirds, or two-thirds+third. Any other combination (e.g. two unpaired two-thirds blocks) falls back to full width.",
      +        "enum": [
      +          "full",
      +          "half",
      +          "third",
      +          "two-thirds"
      +        ],
      +        "type": "string"
      +      },
      +      "spacing_after": {
      +        "description": "Overrides this block's bottom margin (0/8/18/32px, scaled by theme.spacing). Defaults to the block type's own margin.",
      +        "enum": [
      +          "none",
      +          "sm",
      +          "md",
      +          "lg"
      +        ],
      +        "type": "string"
      +      },
      +      "text": {
      +        "description": "Supports **bold**, *italic*, [label](url) inline formatting",
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "paragraph",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "type",
      +      "text"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "align": {
      +        "description": "Defaults to \"left\".",
      +        "enum": [
      +          "left",
      +          "center",
      +          "right"
      +        ],
      +        "type": "string"
      +      },
      +      "full_width": {
      +        "description": "Stretch the button to the full column width",
      +        "type": "boolean"
      +      },
      +      "id": {
      +        "description": "Unique within the document",
      +        "type": "string"
      +      },
      +      "layout_width": {
      +        "description": "Defaults to \"full\". Consecutive blocks are grouped into a row when their widths sum to a full row: half+half, third+third+third, third+two-thirds, or two-thirds+third. Any other combination (e.g. two unpaired two-thirds blocks) falls back to full width.",
      +        "enum": [
      +          "full",
      +          "half",
      +          "third",
      +          "two-thirds"
      +        ],
      +        "type": "string"
      +      },
      +      "size": {
      +        "description": "Defaults to \"md\"",
      +        "enum": [
      +          "sm",
      +          "md",
      +          "lg"
      +        ],
      +        "type": "string"
      +      },
      +      "spacing_after": {
      +        "description": "Overrides this block's bottom margin (0/8/18/32px, scaled by theme.spacing). Defaults to the block type's own margin.",
      +        "enum": [
      +          "none",
      +          "sm",
      +          "md",
      +          "lg"
      +        ],
      +        "type": "string"
      +      },
      +      "text": {
      +        "description": "Button label",
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "button",
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "https, http, or mailto URL",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "type",
      +      "text",
      +      "url"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "id": {
      +        "description": "Unique within the document",
      +        "type": "string"
      +      },
      +      "spacing_after": {
      +        "description": "Overrides this block's bottom margin (0/8/18/32px, scaled by theme.spacing). Defaults to the block type's own margin.",
      +        "enum": [
      +          "none",
      +          "sm",
      +          "md",
      +          "lg"
      +        ],
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "divider",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "id": {
      +        "description": "Unique within the document",
      +        "type": "string"
      +      },
      +      "size": {
      +        "description": "Vertical spacer size",
      +        "enum": [
      +          "sm",
      +          "md",
      +          "lg"
      +        ],
      +        "type": "string"
      +      },
      +      "spacing_after": {
      +        "description": "Overrides this block's bottom margin (0/8/18/32px, scaled by theme.spacing). Defaults to the block type's own margin.",
      +        "enum": [
      +          "none",
      +          "sm",
      +          "md",
      +          "lg"
      +        ],
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "spacer",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "type",
      +      "size"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "alt": {
      +        "description": "Alt text; required",
      +        "type": "string"
      +      },
      +      "href": {
      +        "description": "Optional https, http, or mailto URL the image links to when clicked",
      +        "type": "string"
      +      },
      +      "id": {
      +        "description": "Unique within the document",
      +        "type": "string"
      +      },
      +      "layout_width": {
      +        "description": "Defaults to \"full\". Consecutive blocks are grouped into a row when their widths sum to a full row: half+half, third+third+third, third+two-thirds, or two-thirds+third. Any other combination (e.g. two unpaired two-thirds blocks) falls back to full width.",
      +        "enum": [
      +          "full",
      +          "half",
      +          "third",
      +          "two-thirds"
      +        ],
      +        "type": "string"
      +      },
      +      "spacing_after": {
      +        "description": "Overrides this block's bottom margin (0/8/18/32px, scaled by theme.spacing). Defaults to the block type's own margin.",
      +        "enum": [
      +          "none",
      +          "sm",
      +          "md",
      +          "lg"
      +        ],
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "image",
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "https or http image URL. Call upload_email_image first to host an image and get an absolute URL.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "type",
      +      "url",
      +      "alt"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "align": {
      +        "description": "Defaults to \"left\".",
      +        "enum": [
      +          "left",
      +          "center",
      +          "right"
      +        ],
      +        "type": "string"
      +      },
      +      "id": {
      +        "description": "Unique within the document",
      +        "type": "string"
      +      },
      +      "layout_width": {
      +        "description": "Defaults to \"full\". Consecutive blocks are grouped into a row when their widths sum to a full row: half+half, third+third+third, third+two-thirds, or two-thirds+third. Any other combination (e.g. two unpaired two-thirds blocks) falls back to full width.",
      +        "enum": [
      +          "full",
      +          "half",
      +          "third",
      +          "two-thirds"
      +        ],
      +        "type": "string"
      +      },
      +      "spacing_after": {
      +        "description": "Overrides this block's bottom margin (0/8/18/32px, scaled by theme.spacing). Defaults to the block type's own margin.",
      +        "enum": [
      +          "none",
      +          "sm",
      +          "md",
      +          "lg"
      +        ],
      +        "type": "string"
      +      },
      +      "text": {
      +        "description": "Supports **bold**, *italic*, [label](url) inline formatting",
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "footer_note",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "type",
      +      "text"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "align": {
      +        "description": "Defaults to \"left\".",
      +        "enum": [
      +          "left",
      +          "center",
      +          "right"
      +        ],
      +        "type": "string"
      +      },
      +      "id": {
      +        "description": "Unique within the document",
      +        "type": "string"
      +      },
      +      "items": {
      +        "items": {
      +          "description": "Supports **bold**, *italic*, [label](url) inline formatting",
      +          "type": "string"
      +        },
      +        "maxItems": 50,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "layout_width": {
      +        "description": "Defaults to \"full\". Consecutive blocks are grouped into a row when their widths sum to a full row: half+half, third+third+third, third+two-thirds, or two-thirds+third. Any other combination (e.g. two unpaired two-thirds blocks) falls back to full width.",
      +        "enum": [
      +          "full",
      +          "half",
      +          "third",
      +          "two-thirds"
      +        ],
      +        "type": "string"
      +      },
      +      "spacing_after": {
      +        "description": "Overrides this block's bottom margin (0/8/18/32px, scaled by theme.spacing). Defaults to the block type's own margin.",
      +        "enum": [
      +          "none",
      +          "sm",
      +          "md",
      +          "lg"
      +        ],
      +        "type": "string"
      +      },
      +      "style": {
      +        "enum": [
      +          "bullet",
      +          "number"
      +        ],
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "list",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "type",
      +      "style",
      +      "items"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "attribution": {
      +        "description": "Optional \"— attribution\" line under the quote",
      +        "type": "string"
      +      },
      +      "id": {
      +        "description": "Unique within the document",
      +        "type": "string"
      +      },
      +      "layout_width": {
      +        "description": "Defaults to \"full\". Consecutive blocks are grouped into a row when their widths sum to a full row: half+half, third+third+third, third+two-thirds, or two-thirds+third. Any other combination (e.g. two unpaired two-thirds blocks) falls back to full width.",
      +        "enum": [
      +          "full",
      +          "half",
      +          "third",
      +          "two-thirds"
      +        ],
      +        "type": "string"
      +      },
      +      "spacing_after": {
      +        "description": "Overrides this block's bottom margin (0/8/18/32px, scaled by theme.spacing). Defaults to the block type's own margin.",
      +        "enum": [
      +          "none",
      +          "sm",
      +          "md",
      +          "lg"
      +        ],
      +        "type": "string"
      +      },
      +      "text": {
      +        "description": "Supports **bold**, *italic*, [label](url) inline formatting",
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "quote",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "type",
      +      "text"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "background": {
      +        "description": "Hex color; defaults to transparent",
      +        "type": "string"
      +      },
      +      "blocks": {
      +        "description": "Child blocks. Sections cannot contain another section.",
      +        "items": {
      +          "$ref": "#/definitions/__schema0"
      +        },
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "corner_radius": {
      +        "description": "Defaults to \"none\"",
      +        "enum": [
      +          "none",
      +          "sm",
      +          "md",
      +          "lg"
      +        ],
      +        "type": "string"
      +      },
      +      "full_bleed": {
      +        "description": "Break out of the card's horizontal padding so the background spans edge to edge",
      +        "type": "boolean"
      +      },
      +      "heading_color": {
      +        "description": "Hex color; overrides heading color for children",
      +        "type": "string"
      +      },
      +      "id": {
      +        "description": "Unique within the document",
      +        "type": "string"
      +      },
      +      "layout_width": {
      +        "description": "Defaults to \"full\". A fractional width lets sibling sections group into a column row - e.g. three sections each with layout_width \"third\" render as a three-column row of intact cards (icon+heading+text stays together per card) instead of stacking icons, then headings, then text on mobile. full_bleed is ignored on a fractional-width section since escaping the card padding makes no sense for a block sitting inside a column cell.",
      +        "enum": [
      +          "full",
      +          "half",
      +          "third",
      +          "two-thirds"
      +        ],
      +        "type": "string"
      +      },
      +      "padding": {
      +        "description": "Defaults to \"md\"",
      +        "enum": [
      +          "none",
      +          "sm",
      +          "md",
      +          "lg"
      +        ],
      +        "type": "string"
      +      },
      +      "spacing_after": {
      +        "description": "Overrides this block's bottom margin (0/8/18/32px, scaled by theme.spacing). Defaults to the block type's own margin.",
      +        "enum": [
      +          "none",
      +          "sm",
      +          "md",
      +          "lg"
      +        ],
      +        "type": "string"
      +      },
      +      "text_color": {
      +        "description": "Hex color; overrides paragraph/list/quote text color for children",
      +        "type": "string"
      +      },
      +      "type": {
      +        "const": "section",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "type",
      +      "blocks"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. First observed

TDQS

D1.3/5.0
Behavior1/5

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

No annotations are supplied, so the description carries the full behavioral burden and delivers none of it. It never states whether this is a partial or full-replacement update, whether omitted fields are preserved, whether the campaign must be paused/disabled first, or what happens to a running campaign when its trigger or email_design changes.

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

Conciseness2/5

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

The single sentence is technically concise with no wasted words, but for a 17-parameter nested mutation tool this is under-specification masquerading as brevity rather than genuine conciseness. There is no structure, no front-loading of key constraints, and nothing an agent can act on.

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

Completeness1/5

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

Given the parameter count, nested objects, absence of annotations, and absence of an output schema, the description is completely inadequate. An agent cannot determine update semantics, prerequisites, side effects, or return behavior from this definition.

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

Parameters1/5

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

Seventeen parameters at only 29% schema description coverage, with deeply nested trigger, conditions, and email_design structures, and the description explains none of them. Critical semantics such as how trigger.type interacts with scope/pattern/event_name, or what reevaluate_conditions_at_send and skip_unengaged do, are left undocumented in both the description and the schema.

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

Purpose2/5

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

The description restates the tool name verbatim: 'Update an email campaign.' It gives no indication of what can be updated or what scope the update covers, and does nothing to distinguish this tool from sibling mutators such as update_email_template, update_broadcast, enable_email_campaign, disable_email_campaign, or update_automation.

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

Usage Guidelines1/5

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

There is no guidance whatsoever on when to use this tool, when not to, or which sibling handles adjacent operations. An agent must infer that partial updates are supported and that enable/disable_email_campaign exist as separate routes for the 'enabled' flag purely from the sibling list, not from this text.

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