Skip to main content
Glama
get-mcp-ads

ChatGPT Ads MCP server

openai ads get custom audiences

openai_ads_get_custom_audiences
Read-onlyIdempotent

List an ad account's custom audiences with native filters and pagination. Retrieve audience IDs, types, and inclusion/exclusion settings for targeting.

Instructions

List the account's custom audiences. Native fields and pagination are preserved. See openai_ads_get_write_schema for nested request fields.

Input Schema

NameRequiredDescriptionDefault
queryNoDocumented native query parameters. Each call reads one page unless the tool says otherwise.
adAccountIdYesThe adacct_ ID configured in OPENAI_ADS_ACCOUNT_ID. The API key is scoped to this one account; another ID is refused.

Output Schema

NameRequiredDescriptionDefault
resultYesOriginal tool result: parsed JSON when the text is JSON, otherwise the text or multiple MCP content blocks. Provider fields depend on the selected query.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • addedInput schema / properties / query / properties / intended_use / anyOf
      Added value: +[
      +  {
      +    "const": "inclusion",
      +    "type": "string"
      +  },
      +  {
      +    "const": "exclusion",
      +    "type": "string"
      +  },
      +  {
      +    "const": "bid_multiplier",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / properties / query / properties / intended_use / enum
      Removed value: -[
      -  "inclusion",
      -  "exclusion",
      -  "bid_multiplier"
      -]
    • removedInput schema / properties / query / properties / intended_use / type
      Removed value: -"string"
    • addedInput schema / properties / query / properties / order / anyOf
      Added value: +[
      +  {
      +    "const": "asc",
      +    "type": "string"
      +  },
      +  {
      +    "const": "desc",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / properties / query / properties / order / enum
      Removed value: -[
      -  "asc",
      -  "desc"
      -]
    • removedInput schema / properties / query / properties / order / type
      Removed value: -"string"
    • changedOutput schema / properties / result / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "properties": {},
      -    "type": "object"
      -  },
      -  {
      -    "items": {},
      -    "type": "array"
      -  },
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "number"
      -  },
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {},
      +    "type": "object"
      +  },
      +  {
      +    "items": {},
      +    "type": "array"
      +  },
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "number"
      +  },
      +  {
      +    "type": "boolean"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. First observedv1.0.0

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. "Native fields and pagination are preserved" adds some behavioral context about pass-through results and paging, but it is vague about page size, cursor semantics, and the fact that each call returns only one page (that detail appears only in the schema).

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 first two sentences are tight and front-loaded. The third sentence, "See openai_ads_get_write_schema for nested request fields," is a stock cross-reference that is poorly targeted for a read/list operation and spends a full sentence on tangential information.

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

Completeness3/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 values need not be described, and the adAccountId scoping is handled in the schema. However, for a paginated tool exposing eight query filters (intended_use, custom_audience_ids, policy_revision, etc.), the description says nothing about filtering capability, leaving the agent to discover it from the schema alone.

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 coverage is 100% and the nested query object is fully documented in the schema, so the baseline is 3. The description only gestures at pagination and defers filter semantics to another tool, adding little beyond what the schema already states.

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?

"List the account's custom audiences" gives a specific verb (list) and resource, which clearly separates it from the singular openai_ads_get_custom_audience in the sibling set. It stops short of naming that sibling explicitly, so the plural-vs-singular distinction is left for the agent to infer from the names.

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

Usage Guidelines3/5

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

Usage is only implied: the word "List" suggests enumeration versus the single-record getter, and the closing pointer redirects to openai_ads_get_write_schema rather than to a competing read tool. There is no explicit statement of when to prefer this over openai_ads_get_custom_audience or when to page instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.