Skip to main content
Glama

Prepare Ad

postly_prepare_ad

Validates a new ad campaign or a change to an existing one and saves it as a review that expires in 15 minutes. Nothing is published and no money is spent. Show the returned summary (action, budget, currency, countries, destination) to the user and get explicit confirmation before calling postly_apply_ad. Only workspace Owners and Admins can create or change ads with AI agents. Meta ad creation requires a connection with ads management access. Requires ads.write.

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": {
      "workspace_id": "<workspace_id>",
      "provider": "<provider>",
      "account_id": "<account_id>",
      "kind": "<kind>",
      "draft": "<draft>"
    },
    "name": "postly_prepare_ad"
  }
}

Input Schema

NameRequiredDescriptionDefault
kindYescreate for a new campaign, change for an existing campaign, ad group, or ad.
draftYesCreate (Google Search): name, format search, url (public HTTPS), daily_budget and max_cpc in the account currency, headlines (3-15, up to 30 characters each), descriptions (2-4, up to 90 characters), keywords (1-30), countries as ISO codes, optional start_date and end_date as YYYY-MM-DD, launch_status PAUSED (default) or ACTIVE, and non_restricted true only after the user confirms the ad is not political, housing, employment, credit, or another restricted category. Display, Performance Max, and Demand Gen also need business_name, long_headline, and Postly media IDs in media_id, square_media_id, and logo_media_id. Change: entity campaign, group, or ad; campaign_id; resource_id for a group or ad; change status (with status ACTIVE or PAUSED), rename (new_name), budget (daily_budget), schedule (start, end), bid (max_cpc), creative, targeting, or delete. Validation errors explain any missing field.
providerYesAds network from postly_list_ad_accounts, such as google or meta.
account_idYesNative ad account ID from postly_list_ad_accounts.
workspace_idYesPostly workspace ID.

Output Schema

NameRequiredDescriptionDefault
codeNo
dataNo
messageNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (destructiveHint=false but not readOnly, openWorld=true), the description discloses the key traits: nothing is published, no money is spent, and the saved review expires in 15 minutes. It also surfaces authorization requirements (workspace roles, ads.write scope, Meta ads management access) that the annotations do not carry.

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 tight sentences, front-loaded with what the tool does and its safety profile, then the confirmation workflow, then permissions. Every sentence carries actionable information with no filler.

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?

An output schema exists, so return-value explanation is unnecessary, and the description instead covers the safety model, the confirmation step, expiry, and access prerequisites. For a multi-parameter, nested-draft mutation tool, this is complete enough to invoke correctly.

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 the draft object documents its fields in extensive detail, so the schema already carries parameter meaning. The description adds no field-level guidance beyond enumerating which summary fields (action, budget, currency, countries, destination) to surface to the user, so the baseline 3 applies.

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?

The description states a precise verb and resource: it validates a new or changed ad campaign and saves it as a review that expires in 15 minutes. It explicitly contrasts with postly_apply_ad, so the agent can distinguish prepare from apply without opening either schema.

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?

It gives the exact workflow condition: show the returned summary to the user, get explicit confirmation, and only then call postly_apply_ad. It also names the sibling alternative and the prerequisites (Owner/Admin role, ads management connection, ads.write scope), leaving nothing 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