Skip to main content
Glama

create_ad

Create a new ad for a project from one of the channels in list_ad_channels. Use this when the user asks to add an ad channel for their products. Ads are product-listing channels (Google Shopping, Meta catalog, Microsoft, price comparison) for the merchant's physical products, not marketplaces: they publish products to the channel and have no order sync. channel_code is the channelCode from list_ad_channels. Returns {integrationId, action:'create', status, kind:'ads', editUrl, nextStepType, message}. status is 'created' (the ad exists; continue with configure_ad_step starting at nextStepType) or 'prerequisite_not_met' (HTTP 409 — message explains what must be done first, e.g. an offer/primary feed must exist first, or another ad is not included in this Koongo account (the message explains it); nextStepType names the step). multichannel_code links a multichannel definition when the channel offers one. definition_code picks a SPECIFIC definition of the channel when it has more than one — take it from get_ad_channel definitions[].definitionCode; omit it for the channel's default/primary definition. name is an OPTIONAL human-readable label so you can later find this ad by name (names are not unique — set_ad_name can change it later). project_id is OPTIONAL (inferred for a single-project customer; if project_id_required is returned, call list_projects and pass project_id). The returned integrationId is the ad_id for get_ad / configure_ad_step and other ads tools.

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": {
      "channel_code": "<channel_code>"
    },
    "name": "create_ad"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameNoOptional human-readable name for the new ad.
project_idNo
channel_codeYeschannelCode of the ad channel (from list_ad_channels).
definition_codeNoPick a specific definition (definitionCode from get_ad_channel) when the channel has more than one; omit for the default/primary definition.
multichannel_codeNoDefinition code of a multichannel option when the channel offers one.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only declare it is a non-destructive, non-idempotent write; the description goes well beyond that by spelling out the return object, both status values, the HTTP 409 'prerequisite_not_met' failure mode with concrete examples (offer/primary feed must exist), and how nextStepType is used. It also documents the project_id inference behavior and the recovery path when project_id is needed.

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?

Purpose and the ads-vs-marketplaces distinction are front-loaded, and nearly every clause carries operative detail (statuses, error semantics, ID chaining). The single dense paragraph with nested parentheses makes it harder to scan than a short bulleted layout would, which is the only real cost.

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 supplies the return shape itself and maps integrationId to the ad_id used by get_ad, configure_ad_step and other ads tools, so the agent knows how to continue. Prerequisite failure handling and the optional-parameter defaults are all covered for a 5-parameter mutation tool.

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

Parameters5/5

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

Adds real meaning beyond the 80%-covered schema: channel_code is pinned to channelCode from list_ad_channels, definition_code only when multiple definitions exist (from get_ad_channel definitions[].definitionCode), multichannel_code only when the channel offers one, name is explicitly optional and non-unique (set_ad_name can change it), and project_id's inference rule is explained though the schema leaves it bare.

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 ('Create a new ad for a project') and ties the input to a named source tool ('channels in list_ad_channels'). It also sharply distinguishes ads from marketplaces ('product-listing channels ... not marketplaces'), which resolves the create_ad vs create_marketplace ambiguity in the sibling list.

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?

Gives an explicit trigger ('when the user asks to add an ad channel for their products') and an explicit exclusion (not marketplaces, no order sync). It routes the agent onward for follow-up steps (configure_ad_step with nextStepType, list_projects when project_id is required) rather than leaving flow inference to the agent.

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