Skip to main content
Glama
get-mcp-ads

X Ads by Get MCP Ads

X Ads MCP server

Bring your X Ads accounts into your MCP client.

Read campaigns and performance, inspect targeting and prepare changes for explicitly selected accounts.

Release CI License: Apache 2.0 Node

Watch the demo · What's new · Install · Tool reference · Try hosted getmcpads

Watch the getmcpads product demo: campaign review in Claude

Play the 27-second product film

The film demonstrates hosted getmcpads with staged data. Its creative galleries and MCP Apps interface belong to the hosted product. This repository provides the standalone native API tools.

25 read tools · 19 write tools, disabled by default.

Run locally with your own platform credentials and a client that supports stdio MCP, such as Claude Desktop, Claude Code or Cursor. Your requests go directly to the platform. For managed connections, including supported ChatGPT setups, use the hosted option.

What's new

v1.0.1: First standalone release · September 20, 2026

  • Create the first runnable standalone server using the reviewed native tool subset.

  • Require explicit account IDs, default to read-only, preview writes and preserve native pagination.

  • Use fixed X endpoints, bounded responses, timeouts and credential redaction without automatic write retries.

  • Require Node.js 22.12 or newer and check Node 22/24 in CI.

  • Update vulnerable dependencies and regenerate the MCP catalog.

Full changelog · Source synchronization details · All releases

Upgrade notes

Requires Node.js 22.12 or newer. CI covers Node 22 and 24. Read the current tool schemas before reusing saved arguments. Writes remain optional and require explicit confirmation. Hosted creative integrations and MCP Apps UI are outside this release.

Related MCP server: Meta Ads by Get MCP Ads

Install this release

This is a GitHub source release. npm and MCP Registry versions are published separately. The commands below select this exact version; unpinned npx examples later in this document select the version currently available on npm.

git clone --branch v1.0.1 --depth 1 https://github.com/get-mcp-ads/x-ads-mcp-server.git
cd x-ads-mcp-server
npm ci
npm run build

Configure your MCP client to run node with the absolute path to dist/cli.js and the platform credentials documented below.

Prefer a managed connection? Use X Ads with hosted getmcpads. Connect your account, select the data your assistant may access and use the hosted MCP connection. See the site for current features and plans.

Configuration

Provide these environment variables through the client's secret configuration:

Variable

Purpose

X_ADS_ACCESS_TOKEN

Your user OAuth 2.0 access token. An app-only bearer token is not sufficient.

X_ADS_ACCOUNT_IDS

Required comma-separated account IDs, restricted to accounts the token may access.

X_ADS_SCOPES

Scopes actually granted to the token. Defaults to ads.read.

X_ADS_ENABLE_WRITES

Defaults to false. Only the exact value true exposes writes.

Obtain your token and Ads Project access using X's official setup guide. Use ads.read for reporting, ads.write for campaign changes and media.write for uploads and media-library writes. Setting X_ADS_SCOPES does not grant permissions. This package accepts a token; it does not run an OAuth browser flow or persist rotating refresh tokens. When the token expires, renew it securely and restart the server.

Safety and coverage

Writes preview by default. Review the exact account, target and parameters before repeating the call with confirm: true. Campaigns and line items are created paused. Activation can spend advertising budget. Media uploads can consume X API credits and are limited to 4 MB. Do not retry a write automatically when its result is uncertain. Read the account and reconcile it first. Selected-account checks apply before dispatch and filter account discovery responses. Unknown arguments are rejected. Native pagination, attribution and monetary _micro fields are preserved. A micro unit is one millionth of the account currency.

This server exposes a reviewed subset of the official API. It does not automatically expose new upstream tools. Native media reads and writes are included. Hosted creative galleries, visual editors and MCP Apps UI are excluded. Use tools/list or server-card.json for exact schemas and the official API reference for provider details.

Hosted option

getmcpads for X Ads manages the hosted connection and account selection. Hosted and source releases can differ. Contact: hello@getmcpads.com.

Development

npm run typecheck
npm run lint
npm run build
npm test
npm run catalog

All tests run offline with synthetic responses. No live account is changed.

Tools

Every tool is listed below. See server-card.json for complete parameter and output schemas.

Tool

Purpose

x_ads_list_ads_accounts

List the ads accounts the authenticated user can access

x_ads_list_campaigns

List campaigns for an account

x_ads_get_campaign

Get a single campaign by ID

x_ads_list_funding_instruments

List funding instruments (payment sources) for an ads account

x_ads_list_line_items

List line items (ad groups) for an ads account

x_ads_get_line_item

Get a single line item by ID

x_ads_list_promoted_posts

List promoted posts (promoted tweets) for an ads account

x_ads_list_targeting_criteria

List targeting criteria for an ads account's line items

x_ads_list_account_posts

List posts (tweets) usable for promotion by an ads account

x_ads_list_web_event_tags

List the website conversion event tags (pixels) in an ads account; a tag's id is what a conversion line item takes as its primary_web_event_tag

x_ads_list_line_item_placements

List valid placement combinations per line item product type

x_ads_get_account_stats

Get synchronous analytics (impressions, engagements, spend) for an ads account

x_ads_get_active_entities

List which ads entities had metrics change in a time window (use before requesting account stats)

x_ads_get_campaign_reach

Get reach and average-frequency metrics for campaigns

x_ads_search_targeting_interests

Search targetable interest categories by name.

x_ads_search_targeting_locations

Search targetable locations by name.

x_ads_list_cards

List the cards in an ads account

x_ads_get_card

Get a single card by ID

x_ads_list_media_library

List the media library objects in an ads account

x_ads_get_media_library_item

Get a single media library object by media key

x_ads_get_promoted_post

Get a single promoted post by ID

x_ads_get_targeting_criterion

Get a single targeting criterion by ID

x_ads_list_post_previews

Get rendered HTML previews for published or scheduled posts

x_ads_get_web_event_tag

Get a single website conversion event tag by ID

x_ads_get_media_upload_status

Read processing status of an upload owned by the connected X user.

Disabled by default. Calls preview unless explicitly confirmed. Check the configuration and exact schema before use.

Tool

Purpose

x_ads_create_campaign

Create a campaign in an ads account.

x_ads_update_campaign

Rename a campaign or pause it (entity_status=PAUSED).

x_ads_activate_campaign

Activate a campaign (set entity_status=ACTIVE).

x_ads_create_line_item

Create a line item (ad group) under a campaign.

x_ads_update_line_item

Update a line item's bid, budget, name, schedule, placements, goal, pacing, audience expansion (set audience_expansion=EXPANDED to turn on Optimized Targeting) or entity_status.

x_ads_activate_line_item

Activate a line item (set entity_status=ACTIVE).

x_ads_promote_post

Attach post(s) to a line item as its ad creative(s).

x_ads_add_targeting_criterion

Add one targeting criterion to a line item (call once per criterion).

x_ads_remove_targeting

Remove a targeting criterion from its line item (undo a targeting mistake).

x_ads_create_ad_post

Compose a promoted-only ("nullcasted") post to use as an ad creative.

x_ads_create_card

Create a card from a JSON components payload.

x_ads_delete_card

Delete a card from an ads account.

x_ads_create_media_library_item

Register an existing media key as a named item in the account's media library.

x_ads_delete_media_library_item

Delete a media library object from an ads account Preview by default.

x_ads_update_media_library_item

Update a media library object's metadata (e.g. name, title, description) Preview by default.

x_ads_create_web_event_tag

Create a website conversion event tag (pixel); the returned id can be set as a line item's primary_web_event_tag Preview by default.

x_ads_delete_web_event_tag

Delete a website conversion event tag Preview by default.

x_ads_update_web_event_tag

Update a website conversion event tag Preview by default.

x_ads_upload_media

Upload an image, GIF or MP4 clip to X.

License

Apache License 2.0. See NOTICE.

More from getmcpads

Meta Ads · Google Ads · Google Analytics 4 · Google Search Console · TikTok Ads · Pinterest Ads

Maintained by Emmanuel at getmcpads. Questions: hello@getmcpads.com.

Available Tools

25 tools
x_ads_get_account_statsx ads get account statsA
Read-onlyIdempotent

Get synchronous analytics (impressions, engagements, spend) for an ads account Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
entityYesEntity type to fetch metrics for.
end_timeYesISO 8601 end of the metrics window (exclusive).
placementYesPlacement to scope the metrics to.
account_idYesX Ads account ID from X_ADS_ACCOUNT_IDS.
entity_idsYesComma-separated IDs of the entities to fetch metrics for (max 20).
start_timeYesISO 8601 start of the metrics window, e.g. 2026-07-01T00:00:00Z.
granularityYesGranularity of the returned time series.
metric_groupsYesComma-separated metric groups, e.g. ENGAGEMENT,BILLING,VIDEO (max 10; MOBILE_CONVERSION groups mu...

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds valuable context: it is synchronous (immediate response), preserves pagination, and explains the _micro suffix for monetary values. These details go beyond the structured hints and help the agent interpret results correctly.

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?

Two dense, front-loaded sentences. The first states the core function and data types; the second adds crucial formatting and pagination notes. No filler or redundancy, making it easy to scan quickly.

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

Completeness4/5

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

With an output schema present and annotations covering safety and idempotency, the description sufficiently covers the essential operational aspects: synchronous behavior, data types, currency interpretation, and pagination. It does not mention rate limits or authentication, but those are typically not required in tool descriptions when other signals exist. Minor gap: no mention of result count or typical response size, but overall complete for a stats-fetching tool.

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?

All 8 parameters have complete descriptions in the schema, covering entity types, time windows, granularity, and placement. The description does not need to add parameter details; it adds only a note about output currency interpretation, which is not parameter-specific. Baseline 3 is appropriate given full schema coverage.

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 clearly states the tool fetches synchronous analytics (impressions, engagements, spend) for an ads account, naming the resource and data types. It also notes preserved Native X fields and micro currency formatting, distinguishing it from sibling tools that focus on campaigns, line items, or other entities.

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?

The description implies account-level analytics but does not explicitly state when to prefer this tool over alternatives. It does not name any sibling or exclusion criteria, leaving the agent to infer based on the resource name. Some guidance on when not to use it (e.g., for campaign-level metrics) would improve clarity.

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

x_ads_get_active_entitiesx ads get active entitiesA
Read-onlyIdempotent

List which ads entities had metrics change in a time window (use before requesting account stats) Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
entityYesEntity type to check for metric activity.
end_timeYesISO 8601 end of the activity window (exclusive); must be a whole hour (minutes and seconds 0).
account_idYesX Ads account ID from X_ADS_ACCOUNT_IDS.
start_timeYesISO 8601 start of the activity window; must be a whole hour (minutes and seconds 0).
campaign_idsNoComma-separated campaign IDs to scope the check to (max 200; exclusive with the other ids filters).
line_item_idsNoComma-separated line item IDs to scope the check to (max 200; exclusive with the other ids filters).
funding_instrument_idsNoComma-separated funding instrument IDs to scope the check to (max 200; exclusive with the other i...

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds useful behavioral context: 'Native X fields and pagination are preserved' and that monetary fields ending in _micro are millionths of the account currency. This goes beyond the annotations without contradicting them.

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?

The description is two concise, front-loaded sentences. The first states the core purpose and usage context; the second adds necessary output-format caveats. Every clause earns its place with no fluff or repetition of schema details.

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 a complete input schema, clear annotations, an output schema, and a description that explains the tool's role and key output conventions, nothing essential is missing for an agent to select and invoke this tool 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%, so the schema already documents all seven parameters, including the entity enum, ISO 8601 time constraints, and ID filter exclusivity. The description's _micro unit note is relevant to output values, not input parameters, so it adds little to parameter semantics beyond the baseline.

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 uses a specific verb and resource: 'List which ads entities had metrics change in a time window.' This clearly distinguishes the tool from siblings like x_ads_get_account_stats and x_ads_list_campaigns, and the phrase 'use before requesting account stats' reinforces its role.

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

Usage Guidelines4/5

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

The description explicitly tells the agent when to use this tool: before requesting account stats. It does not spell out when not to use it or name alternative tools, but the intended context is clear and actionable.

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

x_ads_get_campaignx ads get campaignA
Read-onlyIdempotent

Get a single campaign by ID Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesX Ads account ID from X_ADS_ACCOUNT_IDS.
campaign_idYesCampaign ID belonging to the selected X Ads account.
with_deletedNoInclude the campaign even if soft-deleted (default false).

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already indicate this is a safe, read-only, idempotent operation, so the description does not need to repeat that. It adds useful behavioral detail not in the annotations: native X fields and pagination are preserved, and monetary fields ending in _micro are in millionths of the account currency.

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?

The description is brief and front-loads the core purpose. The second sentence adds useful behavioral context, though the phrase 'Native X fields and pagination are preserved' is slightly awkward and could be misinterpreted for a single-object fetch.

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

Completeness4/5

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

Given that an output schema existsasi, the annotations cover the safety profile, and all parameters are documented, the description is largely complete. The only minor gap is explicit routing guidance to sibling list tools, but that is not critical for correct invocation.

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%, so the parameter descriptions in the schema already explain account_id and campaign_id. The tool description adds no parameter-level meaning beyond the schema, so the baseline score of 3 is appropriate.

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 uses a specific verb and resource: 'Get a single campaign by ID.' This clearly distinguishes it from sibling tools like x_ads_list_campaigns without needing to open any schemas.

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?

The phrase 'by ID' implies this is for fetching a specific campaign when its ID is known, which gives some usage context. However, it does not explicitly mention alternatives such as x_ads_list_campaigns for retrieving multiple campaigns or when not to use this tool.

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

x_ads_get_campaign_reachx ads get campaign reachA
Read-onlyIdempotent

Get reach and average-frequency metrics for campaigns Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_timeYesISO 8601 end of the metrics window (exclusive); must be in the past (a future end_time is rejected).
account_idYesX Ads account ID from X_ADS_ACCOUNT_IDS.
start_timeYesISO 8601 start of the metrics window.
campaign_idsYesComma-separated campaign IDs to fetch reach for (max 20).

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds useful context beyond that by noting that native fields and pagination are preserved and by clarifying that `_micro` monetary fields are millionths of the account currency. This extra detail is genuinely helpful for interpreting responses.

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?

The description is compact and front-loaded with the primary purpose. The second part about native fields, pagination, and `_micro` units is valuable but slightly awkwardly phrased due to the missing separator between the purpose and the field notes, making it less clean than it could be.

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

Completeness4/5

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

For a read-only metrics tool with fully documented parameters, annotations, and an output schema, the description covers the essential semantics. It explains the scope and unit conventions that are not obvious from the schema alone. It does not discuss auth or rate limits, but these are less critical given the read-only annotations and output schema.

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%, so the input schema already documents all four parameters thoroughly, including account ID source, ISO 8601 time format, and the max 20 campaign IDs. The description adds no parameter-specific guidance beyond the general metric context, so the baseline of 3 is appropriate.

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 clearly states the tool's function: retrieving reach and average-frequency metrics for campaigns. This specific metric and resource focus distinguishes it from sibling tools like get_campaign or get_account_stats without needing to open schemas.

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

Usage Guidelines2/5

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

The description gives no explicit guidance about when to choose this tool over siblings, nor does it mention exclusions or alternatives. While the purpose implies a read-only metrics use case, it does not help an agent decide between this and other campaign or stat tools.

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

x_ads_get_cardx ads get cardA
Read-onlyIdempotent

Get a single card by ID Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
card_idYesCard ID belonging to the selected X Ads account.
account_idYesX Ads account ID from X_ADS_ACCOUNT_IDS.
with_deletedNoInclude the card even if soft-deleted (default false).

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish this as read-only, idempotent, and non-destructive. The description adds useful behavioral context beyond that by noting that Native X fields and pagination are preserved and that monetary fields ending in _micro are millionths of the account currency. This gives the agent meaningful response-shape expectations.

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?

The description is short and front-loaded with the core purpose in the first phrase. The second sentence is compact and informative, though slightly jargony with 'Native X fields' and lacks punctuation after 'ID', which prevents a perfect score.

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

Completeness4/5

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

For a simple read-only getter with a robust output schema, full parameter descriptions, and strong annotations, the description is largely complete. It adds response semantics like pagination preservation and micro-unit handling, which are valuable for correct interpretation. Minor ambiguity around what 'Native X fields' specifically refers to keeps it from being fully complete.

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%, so every parameter is already documented with meaningful descriptions. The tool description does not add parameter-level detail, but it does not need to; the baseline of 3 is appropriate when the schema carries the load.

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 opens with a specific verb and resource: 'Get a single card by ID.' This clearly distinguishes the tool from sibling list endpoints such as x_ads_list_cards, and leaves no ambiguity about what operation is performed.

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?

The usage context is implied through 'Get a single card by ID' — an agent can infer this is for fetching one specific card when an ID is known, rather than listing cards. However, no explicit alternative or when-not-to-use guidance is provided, such as pointing to x_ads_list_cards for enumeration.

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

x_ads_get_line_itemx ads get line itemA
Read-onlyIdempotent

Get a single line item by ID Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesX Ads account ID from X_ADS_ACCOUNT_IDS.
line_item_idYesLine item ID belonging to the selected X Ads account.
with_deletedNoInclude the line item even if soft-deleted (default false).

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds valuable context about the response: native X fields and pagination are preserved, and monetary fields ending in _micro are millionths of the account currency. This goes beyond annotations and helps the agent interpret results correctly.

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?

The description is a single sentence that leads with the primary action and then adds relevant details. It is efficient and front-loaded, though the second clause about monetary fields adds length without sacrificing clarity. No filler or redundancy.

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

Completeness4/5

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

Given the output schema is present and parameter coverage is 100%, the description does not need to explain return values or parameters. It supplements with the important detail about _micro monetary units and preserved pagination. The description is complete enough for a simple get-by-ID tool, though it does not mention error behavior or the with_deleted flag, which are minor gaps.

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%, so the schema fully documents account_id, line_item_id, and with_deleted. The description does not add any parameter-specific meaning, so it provides no value beyond the schema, matching the baseline of 3.

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?

The description clearly states 'Get a single line item by ID', which specifies the verb and resource. It implicitly differentiates from the sibling x_ads_list_line_items by focusing on a single item, but it does not explicitly name alternatives, so it stops short of a 5.

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?

The description implies usage when you need one specific line item by ID, but it provides no explicit guidance on when to prefer this over the list tool or other alternatives. The 'by ID' phrasing gives context, but no exclusions or alternatives are named, so it meets only the 'implied usage' level.

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

x_ads_get_media_library_itemx ads get media library itemA
Read-onlyIdempotent

Get a single media library object by media key Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
media_keyYesUploaded media key registered in the selected account's media library.
account_idYesX Ads account ID from X_ADS_ACCOUNT_IDS.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already establish the tool as read-only, idempotent, and non-destructive, so the description does not need to repeat that. It adds useful behavioral context about preserved native fields/pagination and clarifies that monetary fields ending in _micro are expressed in millionths of the account currency, which is valuable beyond the annotations.

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?

The core purpose is front-loaded, and the description is short with no filler. The only minor flaw is a missing punctuation break between 'media key' and 'Native X fields', but the overall structure is efficient and easy to scan.

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

Completeness4/5

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

With an output schema, annotations, and fully documented parameters, the description is largely complete. It adds the important micro-units caveat and preserves-field note, which are not derivable from the schema alone. Nothing critical is missing for an agent to invoke this tool 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%, so the baseline is 3. The description's reference to account currency subtly relates to account_id, but it does not meaningfully expand on either parameter beyond what the schema already states.

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 begins with a specific verb and resource: 'Get a single media library object by media key.' This clearly distinguishes the tool from its siblings, especially x_ads_list_media_library, by emphasizing singular retrieval and the identifying media key.

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

Usage Guidelines2/5

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

The description provides no explicit guidance about when to choose this tool over alternatives. It does not mention that x_ads_list_media_library should be used for multiple items, nor does it describe any prerequisites or context for when retrieval by media key is appropriate.

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

x_ads_get_media_upload_statusx ads get media upload statusA
Read-onlyIdempotent

Read processing status of an upload owned by the connected X user. Media uploads are user-owned until registered in the selected account's media library.

ParametersJSON Schema
NameRequiredDescriptionDefault
media_idYesNumeric media ID returned by this connected user's upload.
account_idYesX Ads account from X_ADS_ACCOUNT_IDS. Register the resulting media in this account's media library.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. The description adds meaningful lifecycle context: media uploads are user-owned until registered in the selected account's media library, clarifying the relationship between uploads and library items. No contradiction with annotations.

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?

Two concise sentences with the core action front-loaded. The second sentence provides important ownership context without redundancy.

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

Completeness4/5

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

For a simple read-status tool with full schema coverage, rich annotations, and an output schema, the description is nearly complete. It could explicitly mention sibling tools for registered media, but that omission is not a critical gap.

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% with both media_id and account_id already described in detail. The tool description reinforces the account/media relationship but does not add new parameter-level semantics beyond the schema.

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?

The description clearly states the verb 'Read' and the resource 'processing status of an upload' owned by the connected X user. It distinguishes from media library tools through ownership context, but does not explicitly name siblings.

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?

The ownership/registration sentence implies when this tool is appropriate (pre-registration status checks) but does not explicitly state when to use this tool versus alternatives like x_ads_get_media_library_item. No explicit exclusions or alternative recommendations are provided.

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

x_ads_get_promoted_postx ads get promoted postA
Read-onlyIdempotent

Get a single promoted post by ID Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesX Ads account ID from X_ADS_ACCOUNT_IDS.
with_deletedNoInclude the promoted post even if soft-deleted (default false).
promoted_tweet_idYesPromoted post association ID belonging to the selected X Ads account.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish that this is a read-only, idempotent, non-destructive operation. The description adds useful behavioral context beyond those hints: it states that native X fields and pagination are preserved, and clarifies that monetary fields ending in '_micro' are expressed in millionths of the account currency. This helps the agent interpret response values correctly.

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?

The description is compact and front-loads the core purpose before adding behavioral notes. It contains no filler. It loses a point for awkward structure: the transition between 'by ID' and 'Native X fields' is missing a punctuation break, making the sentence slightly harder to parse.

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

Completeness4/5

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

For a simple read-only getter, the description is largely complete: it names the resource, the lookup key, unit semantics, and response preservation behavior. Required parameters are fully detailed in the schema, and an output schema exists, so return structure does not need to be described. It could be more complete by mentioning that for bulk retrieval the list tool should be used, but that gap is minor.

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%, so the input schema already documents all three parameters, including the source of account_id and the meaning of with_deleted. The tool description does not add parameter-level detail beyond the schema; its extra semantic note concerns response field units rather than parameters. A baseline of 3 is appropriate.

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 opens with a specific verb and resource: 'Get a single promoted post by ID'. This clearly separates it from sibling list tools like x_ads_list_promoted_posts, which retrieve multiple posts, and from other getters targeting different resources. The scope is unambiguous.

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

Usage Guidelines4/5

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

The phrase 'by ID' conveys a clear precondition: the caller must already have a specific promoted post ID. This implies the tool is for single-resource lookup rather than listing, which provides useful context for selection among siblings. However, it does not explicitly name alternatives or state when not to use the tool, so it stops short of full guidance.

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

x_ads_get_targeting_criterionx ads get targeting criterionB
Read-onlyIdempotent

Get a single targeting criterion by ID Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoBCP-47 language code; adds a localized_name response attribute for localizable criteria.
account_idYesX Ads account ID from X_ADS_ACCOUNT_IDS.
with_deletedNoInclude the criterion even if soft-deleted (default false).
targeting_criterion_idYesTargeting criterion ID belonging to the selected X Ads account.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds one useful behavioral detail: monetary fields ending in _micro are millionths of the account currency, which helps interpret response data. However, the phrase 'Native X fields and pagination are preserved' is vague and does not clarify behavior beyond what annotations imply.

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 description is short and mostly concise, but the first sentence is poorly structured: 'Get a single targeting criterion by ID Native X fields and pagination are preserved' reads as a run-on with unclear punctuation. It front-loads the purpose but the second part is ambiguous. It earns a middling score because brevity is good but structure suffers.

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

Completeness2/5

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

For a simple get-by-ID tool with an output schema, the description omits critical usage context. It does not explain when to use this versus the list or search variants, and the vague 'Native X fields' adds little. While the output schema covers return structure, the lack of usage guidance and the ambiguous phrasing make the description incomplete for reliable tool selection.

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%, so each parameter is already well-documented in the schema. The description does not add any additional meaning to parameters like lang or with_deleted. The baseline of 3 applies because the schema carries the full burden, and the description adds no extra value.

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 clear verb ('Get') and resource ('single targeting criterion by ID'), which distinguishes it from list and search siblings. The scope is explicit: a single criterion identified by ID, so an agent can immediately tell this from x_ads_list_targeting_criteria or the search tools.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives. It does not mention that this is for retrieving a specific criterion when you already have the ID, nor does it reference the list or search tools as alternatives. The usage context is only implied by the tool's purpose.

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

x_ads_get_web_event_tagx ads get web event tagA
Read-onlyIdempotent

Get a single website conversion event tag by ID Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idYesX Ads account ID from X_ADS_ACCOUNT_IDS.
with_deletedNoInclude the tag even if soft-deleted (default false).
web_event_tag_idYesWebsite conversion event ID belonging to the selected X Ads account.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds useful context about preserved native X fields, pagination, and `_micro` monetary semantics, but it does not disclose anything about auth, rate limits, or response shape beyond what annotations and schema imply.

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?

The description is compact and front-loads the core purpose in the first clause. The secondary sentence adds valuable information about response fields and currency semantics, though the missing punctuation between 'ID' and 'Native' makes it slightly awkward.

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

Completeness4/5

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

Given the rich annotations, full parameter schema coverage, and presence of an output schema, the description provides sufficient context for an agent to call the tool correctly. The additional `_micro` and pagination hints are useful, and no critical information appears to be missing.

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 schema already documents all parameters including `with_deleted`. The description adds general field-semantics context but no per-parameter meaning beyond the schema, so the baseline score of 3 applies.

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?

The description clearly identifies the action ('Get') and the specific resource ('a single website conversion event tag by ID'). It distinguishes itself from sibling tools like x_ads_list_web_event_tags by emphasizing single-tag retrieval, though it does not explicitly name the sibling.

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?

The phrase 'by ID' implies this tool is for fetching one specific tag when its ID is known, rather than listing all tags. However, the description gives no explicit when-to-use or when-not-to-use guidance, nor does it reference alternative tools.

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

x_ads_list_account_postsx ads list account postsA
Read-onlyIdempotent

List posts (tweets) usable for promotion by an ads account Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of records to return per page (1-1000).
cursorNoPagination cursor from a previous response.
user_idNoPromotable user whose posts to list (defaults to the account's own user).
trim_userNoReturn only the author's user ID instead of the full user object (default false).
tweet_idsNoComma-separated post (tweet) IDs to scope the response to.
account_idYesX Ads account ID from X_ADS_ACCOUNT_IDS.
tweet_typeYesPost type to list (the legacy API requires this filter).
timeline_typeNoScope to promoted-only, organic or all posts (default NULLCAST).
include_mentions_and_repliesNoInclude mentions and replies in the results (default false).

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already establish that the operation is read-only and non-destructive. The description adds useful behavioral detail beyond annotations: 'Native X fields and pagination are preserved' and 'monetary fields ending in _micro are millionths of the account currency.' This helps the agent interpret responses without contradicting the annotations.

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?

The description is short and front-loads the primary purpose in the first clause. However, the second sentence is slightly run-on and unclear ('account Native X fields') which prevents a perfect structure score.

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

Completeness4/5

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

Given the rich input schema, full parameter descriptions, output schema, and strong annotations, the description covers the essential purpose and adds important response caveats. It does not discuss sibling selection or edge cases, but the structured data fills most of those gaps.

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%, so the schema already documents all nine parameters thoroughly. The description adds no new parameter-level meaning; the _micro note concerns response fields, not input parameters. The baseline of 3 applies because the schema carries the burden.

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?

The description names a specific resource ('posts (tweets) usable for promotion by an ads account') and a clear action ('List'), so an agent knows what the tool does. It does not explicitly name or contrast siblings like x_ads_list_promoted_posts, but 'usable for promotion' provides some differentiation.

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?

The purpose phrase implies the natural use case: retrieving posts that are eligible for promotion via an ads account. However, there is no explicit when-to-use guidance, no mention of alternatives, and no exclusions such as 'use list_promoted_posts for already-promoted posts'.

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

x_ads_list_ads_accountsx ads list ads accountsA
Read-onlyIdempotent

List the ads accounts the authenticated user can access Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idsNoOptional comma-separated IDs, restricted to selected accounts. Returns all selected accounts when omitted.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds value beyond annotations by noting that Native X fields and pagination are preserved and that _micro fields are denominated in millionths of the account currency, which is important for interpreting monetary values.

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?

The description is compact, with the core purpose front-loaded in the first sentence. The second sentence adds important behavioral detail about field preservation and unit semantics, though the phrasing is slightly dense and would benefit from a comma after 'access.'

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

Completeness4/5

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

With only one optional parameter, full schema coverage, and annotations covering safety, the description is largely complete. The added details about pagination preservation and _micro units fill the most significant gaps an agent would need to interpret results 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?

The schema covers the only parameter 'account_ids' with a clear description, so schema coverage is 100%. The tool description does not itself explain the parameter, but the baseline of 3 applies because the schema already carries the semantic weight.

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 opens with a specific verb and resource: 'List the ads accounts the authenticated user can access.' This clearly distinguishes the tool from sibling list tools targeting other resources (campaigns, line items, funding instruments, etc.). The additional note about Native X fields and pagination reinforces that it returns a list of account objects.

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?

The description clarifies that the tool returns accounts accessible to the authenticated user, which implies an appropriate context for use. However, it does not explicitly mention alternatives or when-not-to-use it relative to sibling tools. The distinction is mostly inferable from the resource name rather than stated guidance.

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

x_ads_list_campaignsx ads list campaignsA
Read-onlyIdempotent

List campaigns for an account Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch by campaign name (1-255 characters).
countNoNumber of records to return per page (1-1000).
cursorNoPagination cursor from a previous response.
sort_byNoSort order as attribute-direction, e.g. created_at-asc or updated_at-desc.
account_idYesX Ads account ID from X_ADS_ACCOUNT_IDS.
with_draftNoInclude draft campaigns in the response (default false).
campaign_idsNoComma-separated campaign IDs to scope the response to.
with_deletedNoInclude soft-deleted campaigns in the response (default false).
with_total_countNoInclude the total_count response attribute (default false; exclusive with cursor).
funding_instrument_idsNoComma-separated funding instrument IDs to scope the results to (max 200).

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, and non-destructive behavior. The description adds useful context beyond those annotations by disclosing that native X fields and pagination are preserved and that monetary fields ending in _micro are millionths of the account currency. This helps the agent interpret response data without contradicting the annotations.

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?

The description is short, front-loads the core purpose, and the second sentence adds meaningful behavioral detail. The transition between 'account' and 'Native X fields' is slightly awkward and could mislead on first read, but overall every sentence earns its place.

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

Completeness4/5

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

Given the rich input schema, output schema, and annotations, this description is sufficient for a listing operation. It communicates the core scope and important response quirks. The main missing piece is explicit routing guidance relative to sibling tools, but the schema and names provide enough context for correct invocation.

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?

All 10 parameters have descriptions in the schema, so the schema carries the heavy lifting for parameter semantics. The description's note about pagination and _micro monetary fields is more about response interpretation than input parameters. Since schema coverage is 100%, the baseline of 3 is appropriate.

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?

The description states the action and target: 'List campaigns for an account'. This clearly identifies a batch read operation for campaign data and distinguishes it from singular get tools and other resource listers. It does not explicitly contrast with x_ads_get_campaign, which would make sibling differentiation even stronger.

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?

The description implies the intended context: use this when you need campaigns for an account. However, it provides no explicit guidance about when to prefer this over x_ads_get_campaign or when filters such as campaign_ids or with_deleted should be used. Usage is conveyed mostly by the verb and resource rather than by stated exclusions or alternatives.

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

x_ads_list_cardsx ads list cardsA
Read-onlyIdempotent

List the cards in an ads account Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch query matching against the card name.
countNoNumber of records to return per page (default 100, max 200).
cursorNoPagination cursor from a previous response.
sort_byNoSort order as attribute-direction, e.g. created_at-asc or updated_at-desc.
card_idsNoComma-separated card IDs to fetch specific cards (max 200).
card_urisNoComma-separated card URIs to fetch specific cards (max 200).
account_idYesX Ads account ID from X_ADS_ACCOUNT_IDS.
card_typesNoComma-separated unified card types to filter by, e.g. IMAGE_WEBSITE, VIDEO_WEBSITE, IMAGE_APP, VI...
with_deletedNoInclude soft-deleted cards (default false).
with_total_countNoInclude the total_count response attribute (default false; exclusive with cursor).
include_legacy_cardsNoInclude legacy (non-unified) cards in the response (default false).

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare the operation read-only, idempotent, and non-destructive. The description adds useful behavioral context beyond that: native X fields and pagination are preserved, and monetary _micro fields represent millionths of the account currency. There is no contradiction with the annotations.

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 two sentences are short and front-load the primary action, but the second sentence is a grammatical run-on ('account Native X fields') and reads awkwardly. Both sentences carry useful information, but the structure could be cleaner.

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

Completeness4/5

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

Given the rich input schema, safety annotations, and presence of an output schema, the description is largely complete. It adds valuable response-format details about pagination and _micro units, though it could be more complete with explicit alternative routing or clarification of 'Native X fields'.

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%, so all 11 parameters are already documented with descriptions, including pagination and filtering semantics. The description's _micro note relates to response fields rather than input parameters, so it adds little parameter-level meaning beyond the schema.

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 clearly states the verb 'List', the resource 'cards', and the scope 'in an ads account'. This distinguishes it from siblings like x_ads_get_card, which retrieves a single card, and from other list tools operating on different resources.

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

Usage Guidelines2/5

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

No explicit guidance is given on when to use this tool versus alternatives, such as x_ads_get_card for a single card. The listing action is implied by the name and first clause, but the description does not provide exclusions or routing context.

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

x_ads_list_funding_instrumentsx ads list funding instrumentsA
Read-onlyIdempotent

List funding instruments (payment sources) for an ads account Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of records to return per page (1-1000).
cursorNoPagination cursor from a previous response.
sort_byNoSort order as attribute-direction, e.g. created_at-asc or updated_at-desc.
account_idYesX Ads account ID from X_ADS_ACCOUNT_IDS.
with_deletedNoInclude soft-deleted funding instruments (default false).
with_total_countNoInclude the total_count response attribute (default false; exclusive with cursor).
funding_instrument_idsNoComma-separated funding instrument IDs to fetch specific records (max 200).

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already convey read-only, idempotent, non-destructive behavior. The description adds useful context beyond annotations: pagination is preserved and monetary fields ending in _micro are expressed in millionths of the account currency. This helps the agent correctly interpret response values.

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?

The description is compact and front-loaded with the core action and resource. The phrase 'Native X fields and pagination are preserved' is slightly awkward but still short; every clause adds information without redundancy.

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

Completeness4/5

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

Annotations, schema coverage, and output schema all carry substantial weight. The description adds the key non-obvious detail about _micro units and pagination. It does not explain return structure, but that is covered by the output schema, so no critical gap remains.

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%, so the baseline is 3. The description adds no parameter-specific meaning beyond the schema, but it does add context about field units and pagination that indirectly aids parameter interpretation. This meets the baseline without exceeding it.

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 uses a specific verb ('List') and resource ('funding instruments (payment sources)') scoped to an ads account. The parenthetical clarifies the domain term, and the resource name is distinct from all sibling tools, making selection unambiguous.

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

Usage Guidelines4/5

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

The description clearly implies this is the tool for reading payment sources for an ads account, and notes that pagination is preserved. It does not explicitly name alternatives or exclusion conditions, but none of the siblings overlap with funding instruments, so context is sufficient.

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

x_ads_list_line_item_placementsx ads list line item placementsB
Read-onlyIdempotent

List valid placement combinations per line item product type Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_typeNoRestrict placements to one product type.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

B3.2/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 the safety profile is covered. The description adds useful formatting notes about pagination and _micro monetary fields, though the phrase 'Native X fields and pagination are preserved' is somewhat cryptic.

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?

The description is short and front-loads the core purpose in the first clause. However, it reads as a run-on sentence because the first statement lacks punctuation before 'Native X fields,' which slightly reduces structural clarity.

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

Completeness4/5

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

For a simple one-optional-parameter read-only tool with an output schema, the description covers the main purpose, pagination behavior, and monetary unit semantics. It lacks explicit sibling differentiation, but nothing critical is missing for a correct call.

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 single parameter already has a descriptive enum with three values. The description references product_type but does not add significant semantic detail beyond the schema, so the baseline of 3 is appropriate.

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?

The description states a specific action and resource: 'List valid placement combinations per line item product type.' This is clear enough to distinguish it from most siblings, though it does not explicitly contrast it with related list tools like x_ads_list_line_items.

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

Usage Guidelines2/5

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

No when-to-use guidance or alternatives are provided. The description implies the tool is for retrieving placement combinations, but it does not explain when to choose this over sibling tools or how the optional product_type filter should be used in practice.

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

x_ads_list_line_itemsx ads list line itemsC
Read-onlyIdempotent

List line items (ad groups) for an ads account Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch by line item name (1-255 characters).
countNoNumber of records to return per page (1-1000).
cursorNoPagination cursor from a previous response.
sort_byNoSort order as attribute-direction, e.g. created_at-asc or updated_at-desc.
account_idYesX Ads account ID from X_ADS_ACCOUNT_IDS.
with_draftNoInclude line items of draft campaigns in the response (default false).
campaign_idsNoComma-separated campaign IDs to scope the line items to.
with_deletedNoInclude soft-deleted line items in the response (default false).
line_item_idsNoComma-separated line item IDs to fetch specific records (max 200).
with_total_countNoInclude the total_count response attribute (default false; exclusive with cursor).
funding_instrument_idsNoComma-separated funding instrument IDs to scope the results to (max 200).

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the description adds marginal safety context. It does disclose that pagination is preserved and that monetary fields ending in _micro are millionths of the account currency, which is useful. However, the meaning of 'Native X fields' is vague, and the description does not explain behavior like default returns or relationship to drafts/deleted records beyond what the schema provides.

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 description is short but poorly punctuated and structurally confusing. 'Native X fields and pagination are preserved' reads as a run-on fragment after 'ads account.' A period or restructured phrasing would improve clarity. It conveys only two main ideas in roughly 30 words, so it is not verbosely long, but the awkward structure hurts readability.

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?

Given the tool has 11 parameters, a full output schema, and rich annotations, the description is mostly adequate because the schema covers parameter semantics. However, the vague phrase 'Native X fields' and lack of sibling differentiation create uncertainty about expected usage. Completeness is acceptable for a list operation but leaves room for clarification of field/pagination behavior.

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%, with every parameter already documented including descriptions for q, count, cursor, sort_by, and boolean filters. The description adds a caveat about _micro monetary fields and pagination preservation, but it does not map this to any specific parameter. Baseline 3 is appropriate since the schema already carries the heavy lifting.

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?

The description states a clear action ('List line items (ad groups) for an ads account') with a specific verb and resource. It does not explicitly distinguish from sibling tools like x_ads_get_line_item or x_ads_list_campaigns, but the name and phrasing make the purpose evident. The awkward 'Native X fields' interrupt the sentence but do not obscure the core intent.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as x_ads_get_line_item or x_ads_list_campaigns. The description does not mention exclusions, prerequisites, or selection criteria. The most one can infer is that 'list' suggests retrieval of multiple records, but that is implied by the name rather than stated.

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

x_ads_list_media_libraryx ads list media libraryA
Read-onlyIdempotent

List the media library objects in an ads account Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch query matching against name, title, file_name and description.
countNoNumber of records to return per page (default 20, max 50).
cursorNoPagination cursor from a previous response.
account_idYesX Ads account ID from X_ADS_ACCOUNT_IDS.
media_typeNoRestrict to one media type: IMAGE, VIDEO or GIF.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already communicate that the operation is read-only, idempotent, and non-destructive. The description adds meaningful behavioral context: Native X fields and pagination are preserved, and monetary fields ending in _micro are millionths of the account currency, which helps the agent interpret results correctly.

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?

The description is concise and front-loaded with the primary action. The second sentence adds useful output semantics without redundancy, though the phrasing 'in an ads account Native X fields' is slightly awkward and would benefit from a punctuation break.

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

Completeness4/5

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

For a list tool with a fully documented schema, annotations, and an output schema, the description covers the essential behavior: resource scope, field preservation, pagination, and monetary unit conventions. It lacks explicit usage guidance and sibling differentiation, but the core operational context is present.

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%, so the baseline is 3 even without additional parameter guidance. The description does not add input-specific meaning; the notes about pagination and _micro fields concern response interpretation rather than parameter semantics.

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?

The description clearly states the operation: 'List the media library objects in an ads account', identifying both the verb and the resource. It is distinguishable from the sibling x_ads_get_media_library_item because this is explicitly a list operation, though it does not name or explicitly contrast that sibling.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. The description does not mention x_ads_get_media_library_item for single-item retrieval or explain when listing media library objects is appropriate, so the agent must infer usage context solely from the name and generic wording.

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

x_ads_list_post_previewsx ads list post previewsA
Read-onlyIdempotent

Get rendered HTML previews for published or scheduled posts Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNoPromotable user the posts belong to (defaults to the account's own user); needed when previewing ...
tweet_idsYesComma-separated post IDs (or scheduled post IDs, per tweet_type) to preview (max 200).
account_idYesX Ads account ID from X_ADS_ACCOUNT_IDS.
tweet_typeYesType of the IDs in tweet_ids.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds meaningful behavioral context beyond those hints: previews are rendered HTML, native fields and pagination are preserved, and _micro monetary fields are millionths of the account currency. This helps the agent interpret returned data correctly.

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?

Two dense sentences front-load the core purpose and then add valuable behavioral details with no filler. Every phrase earns its place, and key information is presented early.

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?

Annotations and output schema cover safety and return structure, and parameter descriptions are complete. However, the description's scope statement conflicts with the tweet_type enum by excluding DRAFT, which is a notable gap that could lead an agent to believe drafts cannot be previewed.

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%, so the schema already documents all parameters. The description does not meaningfully add per-parameter semantics; the 'published or scheduled' phrasing aligns with tweet_type but is incomplete because it omits DRAFT.

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?

The description states a specific action and resource: 'Get rendered HTML previews for published or scheduled posts.' This clearly identifies the tool's purpose and differentiates it from generic post-listing siblings like x_ads_list_promoted_posts. However, it omits the DRAFT tweet_type that the schema accepts, so the stated scope is slightly incomplete.

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?

The description implies usage: use this tool when rendered HTML previews of posts are needed, as opposed to plain post metadata. It does not explicitly name alternatives or state when not to use the tool, leaving sibling selection mostly to inference.

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

x_ads_list_promoted_postsx ads list promoted postsA
Read-onlyIdempotent

List promoted posts (promoted tweets) for an ads account Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of records to return per page (1-1000).
cursorNoPagination cursor from a previous response.
sort_byNoSort order as attribute-direction, e.g. created_at-asc or updated_at-desc.
account_idYesX Ads account ID from X_ADS_ACCOUNT_IDS.
with_deletedNoInclude soft-deleted promoted posts in the response (default false).
line_item_idsNoComma-separated line item IDs to scope the promoted posts to.
with_total_countNoInclude the total_count response attribute (default false; exclusive with cursor).
promoted_tweet_idsNoComma-separated promoted post IDs to fetch specific records (max 200).

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

A3.5/5.0
Behavior4/5

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

The annotations already establish readOnly, idempotent, and non-destructive behavior; the description adds value by disclosing that native X fields and pagination are preserved and that _micro fields are millionths of the account currency. This is useful response behavior beyond the structured hints, though 'native X fields' is left a bit undefined.

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?

The description is compact and front-loads the purpose before behavioral notes, with no filler. It loses a point for the missing separator between 'ads account' and 'Native X fields,' which makes the sentence boundary unclear and slightly hurts readability.

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

Completeness4/5

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

With rich annotations, a 100%-documented schema, and an output schema present, the description covers the essential behavioral context: pagination is preserved and monetary fields are scaled. It stops short of complete because it does not help route the agent between this list tool and its singular getter or other related list tools, though that gap is largely a usage-guidance issue.

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?

All eight parameters are already fully described in the input schema (100% coverage), so the baseline applies. The description contributes the _micro currency convention and preserved pagination, but those are response-field semantics rather than additional meaning for the input parameters themselves.

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?

The description names a specific operation ('List'), resource ('promoted posts (promoted tweets)'), and scope ('for an ads account'), so the core purpose is unmistakable. It does not explicitly differentiate itself from sibling tools such as x_ads_get_promoted_post or x_ads_list_account_posts, so it falls just short of full sibling-level distinction.

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

Usage Guidelines2/5

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

No guidance is given about when to prefer this list operation over x_ads_get_promoted_post for a single record, x_ads_list_line_items, or x_ads_list_account_posts. The word 'List' implies batch retrieval, but the description never states prerequisites, exclusions, or alternative selection criteria.

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

x_ads_list_targeting_criteriax ads list targeting criteriaB
Read-onlyIdempotent

List targeting criteria for an ads account's line items Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoBCP-47 language code; adds a localized_name response attribute for localizable criteria.
countNoNumber of records to return per page (1-1000).
cursorNoPagination cursor from a previous response.
sort_byNoSort order as attribute-direction, e.g. created_at-asc or updated_at-desc.
account_idYesX Ads account ID from X_ADS_ACCOUNT_IDS.
with_deletedNoInclude soft-deleted targeting criteria (default false).
line_item_idsYesComma-separated line item IDs to scope the targeting criteria to (the legacy API requires this fi...
with_total_countNoInclude the total_count response attribute (default false; exclusive with cursor).
targeting_criterion_idsNoComma-separated targeting criterion IDs to fetch specific records (max 200).

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds useful behavioral context beyond those annotations by noting pagination is preserved and that monetary fields ending in _micro are millionths of the account currency, though 'Native X fields' remains vague.

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?

The description is compact and front-loaded with the core purpose. The second clause about pagination and _micro fields is non-obvious and worth keeping, though the phrase 'Native X fields and pagination are preserved' is grammatically awkward.

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?

Given the annotations, full schema coverage, and an output schema, the description covers the most essential behavioral details but lacks any guidance on when to prefer this tool over related siblings. It is minimally complete but leaves some ambiguity around what 'Native X fields' means.

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%, so the schema documents every parameter clearly. The description does not repeat or augment the parameter semantics beyond the _micro field convention note, so the baseline of 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 opens with a specific verb and resource: 'List targeting criteria for an ads account's line items'. This clearly identifies the tool's function and distinguishes it from sibling tools like get_targeting_criterion (single record) and search_targeting_* (search-focused).

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

Usage Guidelines2/5

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

The description does not provide any when-to-use guidance or mention alternatives such as x_ads_get_targeting_criterion for fetching a single criterion. Usage context is only implied by the word 'List' and the resource phrasing.

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

x_ads_list_web_event_tagsx ads list web event tagsA
Read-onlyIdempotent

List the website conversion event tags (pixels) in an ads account; a tag's id is what a conversion line item takes as its primary_web_event_tag Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of records to return per page (default 200, max 1000).
cursorNoPagination cursor from a previous response.
sort_byNoSort order as attribute-direction, e.g. created_at-asc or updated_at-desc.
account_idYesX Ads account ID from X_ADS_ACCOUNT_IDS.
with_deletedNoInclude soft-deleted records (default false).
with_total_countNoInclude the total_count response attribute (default false; exclusive with cursor).
web_event_tag_idsNoComma-separated web event tag IDs to fetch specific records (max 200).

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover readOnlyHint, idempotentHint, and destructiveHint, so the bar is lower. The description adds useful response behavior: 'Native X fields and pagination are preserved' and that '_micro' fields are millionths of the account currency. No contradiction with annotations.

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 description is mostly tight and front-loaded with purpose, but it is written as a run-on with semicolons, and 'Native X fields and pagination are preserved' is cryptic and missing a separator before it. The overall content is not wasteful, but structure hurts readability.

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

Completeness4/5

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

With full schema coverage, an output schema, and safety annotations, the description provides adequate scope and response context for a list tool. Minor gaps include no explicit sibling routing and vague 'Native X fields' phrasing, but nothing critical is missing for correct invocation.

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%, so the baseline is 3. The description's notes about primary_web_event_tag and _micro fields relate to output/resource semantics, not parameter behavior, so it does not add meaning beyond the schema's parameter descriptions.

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 uses a specific verb and resource: 'List the website conversion event tags (pixels) in an ads account.' It clearly differentiates from the singular sibling x_ads_get_web_event_tag by the action 'list' and defines the resource's role ('a tag's id is what a conversion line item takes as its primary_web_event_tag').

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?

The description implies a use case (finding tag IDs for conversion line items) but does not explicitly state when to use this list variant over x_ads_get_web_event_tag or other list tools. No exclusions, alternatives, or when-not-to-use guidance are provided.

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

x_ads_search_targeting_interestsx ads search targeting interestsA
Read-onlyIdempotent

Search targetable interest categories by name. Use this to find the targeting_value IDs required by add_targeting_criterion for INTEREST-type criteria. Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFree-text interest name to search for, e.g. "motorsports". Omit to list interests unfiltered.
countNoNumber of records to return per page (1-1000).
cursorNoPagination cursor from a previous response.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive hints. The description adds useful behavioral details beyond annotations: native X fields and pagination are preserved, and monetary fields ending in _micro are millionths of the account currency. These are meaningful for correct interpretation of results.

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?

Three sentences, each earning its place: the first states the core action, the second gives the downstream purpose, and the third adds crucial behavioral caveats. Information is front-loaded and nothing is redundant.

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?

For a simple search tool with three optional, fully documented parameters, an output schema, and complete safety annotations, the description covers the essential context. The preserved-native-fields and _micro caveats handle the main surprise a caller might encounter.

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%, so the schema thoroughly documents q, count, and cursor. The description does not add parameter-level detail beyond the schema; its mention of preserved pagination lightly relates to cursor but does not meaningfully compensate or extend the schema.

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 specific verb and resource: search targetable interest categories by name. It further clarifies the purpose by connecting results to the targeting_value IDs required by add_targeting_criterion, and the INTEREST-type qualifier distinguishes it from sibling location searches.

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

Usage Guidelines4/5

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

The description explicitly says to use this tool to find targeting_value IDs for INTEREST-type criteria, giving a concrete downstream consumer. It does not explicitly name the sibling x_ads_search_targeting_locations or state when not to use it, but the INTEREST-type framing provides clear context for the main use case.

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

x_ads_search_targeting_locationsx ads search targeting locationsA
Read-onlyIdempotent

Search targetable locations by name. Use this to find the targeting_value IDs required by add_targeting_criterion for LOCATION-type criteria. Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFree-text location name to search for, e.g. "united states" or "london". Omit to list locations u...
countNoNumber of records to return per page (1-1000).
cursorNoPagination cursor from a previous response.
country_codeNoTwo-letter ISO country code to scope results to, e.g. US.
location_typeNoScope results to one location granularity.

Output Schema

ParametersJSON Schema
NameRequiredDescription
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.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful operational context: 'Native X fields and pagination are preserved; monetary fields ending in _micro are millionths of the account currency.' This goes beyond the annotations by warning about response field semantics and pagination behavior.

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?

Three sentences with no filler. The first sentence states the core action, the second gives the concrete use case, and the third adds behavioral nuance about pagination and micro fields. Information is front-loaded and each sentence earns its place.

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?

The tool has a complete input schema, an output schema, strong annotations, and a description that clarifies purpose and response semantics. An agent has everything needed to decide when to call it, which parameters to provide, and what behavior to expect. Nothing important is missing.

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%: all five parameters have descriptive text, examples, constraints, and an enum. The description does not add parameter-level semantics beyond the schema, so the baseline 3 is appropriate. It does not need to compensate for gaps because the schema already documents each parameter clearly.

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 opens with a specific verb and resource: 'Search targetable locations by name.' It then explains the purpose, finding targeting_value IDs for add_targeting_criterion, and distinguishes itself from the sibling search_targeting_interests by specifying LOCATION-type criteria. This makes the tool's role immediately clear.

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

Usage Guidelines4/5

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

It gives an explicit use case: 'Use this to find the targeting_value IDs required by add_targeting_criterion for LOCATION-type criteria.' This provides clear context on when to call it. However, it does not explicitly name the alternative for non-location criteria (e.g., search_targeting_interests), so the guidance is strong but not fully explicit about when-not-to-use.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 25 tool updatesv1.0.1
    • First observedx_ads_get_account_stats
    • First observedx_ads_get_active_entities
    • First observedx_ads_get_campaign
    • First observedx_ads_get_campaign_reach
    • First observedx_ads_get_card
    • First observedx_ads_get_line_item
    • First observedx_ads_get_media_library_item
    • First observedx_ads_get_media_upload_status
    • First observedx_ads_get_promoted_post
    • First observedx_ads_get_targeting_criterion
    • First observedx_ads_get_web_event_tag
    • First observedx_ads_list_account_posts
    • First observedx_ads_list_ads_accounts
    • First observedx_ads_list_campaigns
    • First observedx_ads_list_cards
    • First observedx_ads_list_funding_instruments
    • First observedx_ads_list_line_item_placements
    • First observedx_ads_list_line_items
    • First observedx_ads_list_media_library
    • First observedx_ads_list_post_previews
    • First observedx_ads_list_promoted_posts
    • First observedx_ads_list_targeting_criteria
    • First observedx_ads_list_web_event_tags
    • First observedx_ads_search_targeting_interests
    • First observedx_ads_search_targeting_locations

TDQS

A3.5/5.0

Scored across 25 tools

Disambiguation4/5

Tools are generally distinct by resource and action, with list/get/search clearly separated. Minor confusion is possible between account posts vs promoted posts and existing targeting criteria vs targeting searches, but descriptions provide enough context.

Naming Consistency5/5

Every tool follows the x_ads_ prefix with a consistent verb_noun pattern: list_ for collections, get_ for single items, and search_ for lookups. No mixed naming conventions or vague verbs.

Tool Count3/5

25 tools is at the heavy end of the range, though each maps to a distinct X Ads resource or action. The set is broad enough to feel justified, but it is larger than ideal and borders on overwhelming.

Completeness3/5

Read coverage is strong across accounts, campaigns, line items, media, cards, posts, and stats. However, there are no create/update/delete tools and multiple references to missing capabilities like add_targeting_criterion and media upload registration, leaving workflow dead ends.

Maintenance

ActivityNo data
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Self-hosted Google Ads MCP server: 35 read tools and 10 opt-in, preview-first write tools. Maintained source relocated from getmcpads-com/google-ads-mcp-server; npm package remains @getmcpads/google-ads-mcp-server.
    35
    248 npm
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    Self-hosted Meta Ads MCP server with 41 read tools and 23 opt-in, preview-first write tools. Maintained source relocated from getmcpads-com/meta-ads-mcp-server; npm package remains @getmcpads/meta-ads-mcp-server.
    41
    255 npm
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Self-hosted Pinterest Ads MCP server with 28 read tools and 25 opt-in, preview-first write tools. Maintained source relocated to get-mcp-ads/pinterest-ads-mcp-server; npm package remains @getmcpads/pinterest-ads-mcp-server.
    229 npm
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    Self-hosted Google Analytics 4 MCP server with 27 read-only tools for the Google Analytics Data and Admin APIs. Maintained source relocated to get-mcp-ads/google-analytics-mcp-server; npm package remains @getmcpads/google-analytics-mcp-server.
    27
    219 npm
    Apache 2.0