Skip to main content
Glama

get_ad

Read-onlyIdempotent

Get the full detail of one ad: identity + state + the configuration wizard steps. CRITICAL — read activationBehavior in the RESULT: 'summary_step_activates_and_submits_all' means activate_ad ACTIVATES the ad and publishes EVERY matching product to the LIVE channel, so to test safely set MANUAL mode FIRST (set_ad_manual_mode) — it then reads 'summary_step_activates_no_auto_submit' and activation auto-submits nothing; 'already_active' = already live. 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. Returns {integrationId, projectId, name, channelCode, kind:'ads', definitionCode, status, ready, lastStep, isReady, isConnected, isOverlimit, primarySync, orderSync, productMode, orderMode, taxonomyCode, categoryMappingRequired, connectionStatus, connectionMessage, connectionExpiresAt, steps:[{type, label, sort, index, ready, current, fields:[{code, label, type, required, options, optionsSource, optionsPending, htmlAttributes, value, help, showIf, hiddenIf}]}], editUrl, activationBehavior}. steps describe the setup wizard: 'current' is the next step to configure (via configure_ad_step, targeting it by its index — two steps can share a type) and 'ready' marks completed steps. fields is the step's input schema: for a form/order-settings step, build configure_ad_step payload {items:{code:value}} from it — required marks mandatory fields, options is the allowed value set (value→label), htmlAttributes carry constraints, value is Some field metadata comes from the channel connection and does NOT exist before the auth step is done: optionsPending=true means the option list could not be resolved yet (an empty options array is a state, not permission to send anything), and a disabled field whose default could not be resolved arrives without that flag because you have to supply the value yourself. Do not cache this schema across the auth step — re-read it once the connection exists. the current value. Steps with an empty fields list take a structured payload instead. The connection/auth step (OAuth or credentials) is NOT configurable via MCP: the user completes it in the browser / Koongo UI, and configure_ad_step returns oauth_required / credentials_in_ui for it — terminal, never retry it with a payload. Each ad owns exactly ONE connection (never shared): connectionStatus is its health (NEW / OK / WARNING / ERROR / EXPIRED), connectionMessage/connectionExpiresAt add detail, and test_ad_connection re-checks it live. taxonomyCode is set AUTOMATICALLY from the channel and is READ-ONLY — it cannot be changed via MCP; category mapping (a wizard step) maps your store categories TO this fixed taxonomy, and categoryMappingRequired says whether that step applies. Secrets are never returned. ad_id is the id from list_ads / create_ad. project_id is OPTIONAL (inferred for a single-project customer; project_id_required otherwise — then call list_projects). Use this to read an ad's configuration; use ad_status for run progress.

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": {
      "ad_id": "<ad_id>"
    },
    "name": "get_ad"
  }
}

Input Schema

NameRequiredDescriptionDefault
ad_idYes
project_idNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, yet the description adds a great deal beyond them: activationBehavior value semantics, connectionStatus health states, taxonomyCode being read-only, secrets never returned, the OAuth step being terminal for MCP calls, and the 'do not cache schema across the auth step' warning. That is exactly the kind of operational context annotations cannot carry.

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

Conciseness3/5

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

The content is dense and mostly front-loaded around the CRITICAL activationBehavior warning, but it is a very long single block with at least one visibly garbled passage ('value is Some field metadata comes from… the current value. Steps with an empty fields list…'), which damages readability and implies a text defect.

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 carries the full burden of describing the return shape and does so field by field (integrationId through activationBehavior, plus steps/fields structure). For a read tool whose result drives subsequent configure_ad_step calls, this is complete enough to act on.

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 0%, so the description must compensate, and it does: ad_id is sourced from list_ads/create_ad, project_id is optional, inferred for single-project customers, and triggers project_id_required otherwise with a pointer to list_projects. It stops short of describing the integer/validation constraints, but the meaning of both parameters is clear.

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 opening sentence names a specific verb and resource — 'Get the full detail of one ad: identity + state + the configuration wizard steps' — and the closing sentence distinguishes it from ad_status ('use ad_status for run progress'). An agent can immediately separate this from configure_ad_step, list_ads, and ad_status.

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 routing: use this to read configuration, use ad_status for run progress, use configure_ad_step to change a step, use list_projects when project_id_required. It also states the safe sequence (set_ad_manual_mode before activate_ad) and that the auth step is never retryable with a payload — genuine when/when-not guidance.

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