Google Ads MCP Server
Google Ads management — campaign writes, GAQL reporting, bulk mutate, validation, and previews
Connector by cesteral · GitHub account verified by the MCP Registry
Install
Works with Claude Code, VS Code, Codex, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/cesteral-gads-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Remote endpoint
https://{host}/gads-mcp/mcpRemote (HTTP)
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 26, 2026.
- Tools
- 162 read · 54 write · 91 delete · 5 not yet classified
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Tools by what they do 312
Read from the source code; the running server may list different tools.
Read 162 · Look things up without changing anything.
amazon_dsp_check_report_statusamazon_dsp_download_reportamazon_dsp_get_ad_previewamazon_dsp_get_campaign_forecastamazon_dsp_get_commitmentamazon_dsp_get_commitment_spendamazon_dsp_get_commitmentsamazon_dsp_get_entityamazon_dsp_get_pacing_statusamazon_dsp_get_reportamazon_dsp_get_report_breakdownsamazon_dsp_list_advertisers
Show 150 more tools
amazon_dsp_list_commitmentsamazon_dsp_list_entitiescm360_check_report_statuscm360_download_reportcm360_get_ad_previewcm360_get_entitycm360_get_pacing_statuscm360_get_reportcm360_get_report_breakdownscm360_list_entitiescm360_list_report_schedulescm360_list_targeting_optionscm360_list_user_profilescm360_validate_entitydbm_get_campaign_deliverydbm_get_historical_metricsdbm_get_pacing_statusdbm_get_performance_metricsdbm_run_custom_querydbm_run_custom_query_asyncdv360_get_ad_previewdv360_get_assigned_targetingdv360_get_delivery_estimatedv360_get_entitydv360_get_pacing_statusdv360_list_assigned_targetingdv360_list_custom_bidding_algorithmsdv360_list_entitiesdv360_validate_entitydv360_validate_targeting_configechogads_gaql_searchgads_get_ad_previewgads_get_entitygads_get_insightsgads_get_pacing_statusgads_list_accountsgads_list_entitiesgads_validate_entitylinkedin_get_ad_previewlinkedin_get_analyticslinkedin_get_analytics_breakdownslinkedin_get_audience_countlinkedin_get_delivery_forecastlinkedin_get_entitylinkedin_get_pacing_statuslinkedin_get_targeting_optionslinkedin_list_ad_accountslinkedin_list_entitieslinkedin_search_targetingmeta_check_report_statusmeta_download_reportmeta_get_ad_previewmeta_get_available_metricsmeta_get_delivery_estimatemeta_get_entitymeta_get_insightsmeta_get_insights_breakdownsmeta_get_pacing_statusmeta_get_targeting_optionsmeta_list_ad_accountsmeta_list_entitiesmeta_search_targetingmsads_check_report_statusmsads_download_reportmsads_get_ad_detailsmsads_get_entitymsads_get_pacing_statusmsads_get_reportmsads_get_report_breakdownsmsads_get_targeting_optionsmsads_list_accountsmsads_list_entitiesmsads_list_report_schedulesmsads_search_targetingmsads_validate_entitypinterest_check_report_statuspinterest_download_reportpinterest_get_ad_previewpinterest_get_delivery_estimatepinterest_get_entitypinterest_get_pacing_statuspinterest_get_reportpinterest_get_report_breakdownspinterest_get_targeting_optionspinterest_list_ad_accountspinterest_list_entitiespinterest_search_targetingsa360_check_report_statussa360_download_reportsa360_gaql_searchsa360_get_change_historysa360_get_entitysa360_get_insightssa360_get_insights_breakdownssa360_get_pacing_statussa360_list_accountssa360_list_custom_columnssa360_list_entitiessa360_list_report_columnssa360_search_fieldssa360_validate_conversionsnapchat_check_report_statussnapchat_download_reportsnapchat_get_ad_previewsnapchat_get_audience_estimatesnapchat_get_entitysnapchat_get_pacing_statussnapchat_get_reportsnapchat_get_report_breakdownssnapchat_get_targeting_optionssnapchat_list_ad_accountssnapchat_list_entitiessnapchat_search_targetingtest_elicitationtest_elicitation_sep1034_defaultstest_elicitation_sep1330_enumstest_simple_texttest_tool_with_loggingtiktok_check_report_statustiktok_download_reporttiktok_get_ad_previewtiktok_get_audience_estimatetiktok_get_entitytiktok_get_pacing_statustiktok_get_reporttiktok_get_report_breakdownstiktok_get_targeting_optionstiktok_list_advertiserstiktok_list_entitiestiktok_search_targetingtiktok_validate_entityttd_check_report_statusttd_download_reportttd_get_ad_previewttd_get_contextttd_get_entityttd_get_entity_report_typesttd_get_pacing_statusttd_get_reportttd_get_report_executionsttd_get_report_schedulettd_get_report_templatettd_get_report_type_schemattd_graphql_bulk_jobttd_list_entitiesttd_list_report_schedulesttd_list_report_templatesttd_list_report_typesttd_validate_entity
Write 54 · Create, change, send or run things.
amazon_dsp_bulk_update_entitiesamazon_dsp_bulk_update_statusamazon_dsp_duplicate_entityamazon_dsp_submit_reportamazon_dsp_update_commitmentamazon_dsp_update_entitycm360_create_report_schedulecm360_submit_reportgads_duplicate_entitymeta_manage_budget_schedulemeta_submit_reportmeta_upload_image
Show 42 more tools
meta_upload_videomsads_adjust_bidsmsads_bulk_create_entitiesmsads_bulk_update_entitiesmsads_create_entitymsads_create_report_schedulemsads_duplicate_entitymsads_import_from_googlemsads_submit_reportmsads_update_entitypinterest_bulk_update_entitiespinterest_duplicate_entitypinterest_submit_reportpinterest_update_entitypinterest_upload_videosa360_insert_conversionssa360_submit_reportsa360_update_conversionssnapchat_bulk_update_entitiessnapchat_duplicate_entitysnapchat_submit_reportsnapchat_update_entitysnapchat_upload_imagesnapchat_upload_videotiktok_bulk_update_entitiestiktok_duplicate_entitytiktok_submit_reporttiktok_update_entitytiktok_upload_imagetiktok_upload_videottd_bulk_manage_bid_liststtd_create_report_schedulettd_create_report_templatettd_create_template_schedulettd_duplicate_entityttd_graphql_queryttd_graphql_query_bulkttd_manage_seedttd_rerun_report_schedulettd_submit_reportttd_update_report_schedulevec_key_ordering
Delete 91 · Delete, drop, revoke or wipe things.
amazon_dsp_adjust_bidsamazon_dsp_bulk_create_entitiesamazon_dsp_create_commitmentamazon_dsp_create_entityamazon_dsp_delete_entityamazon_dsp_upload_videocm360_bulk_create_entitiescm360_bulk_update_entitiescm360_bulk_update_statuscm360_create_entitycm360_delete_entitycm360_delete_report_schedule
Show 79 more tools
cm360_update_entitycrossrepo_update_entitydv360_adjust_line_item_bidsdv360_bulk_create_entitiesdv360_bulk_update_entitiesdv360_bulk_update_statusdv360_create_assigned_targetingdv360_create_custom_bidding_algorithmdv360_create_entitydv360_delete_assigned_targetingdv360_delete_entitydv360_duplicate_entitydv360_manage_custom_bidding_rulesdv360_manage_custom_bidding_scriptdv360_update_entitydv360_upload_imagedv360_upload_videogads_adjust_bidsgads_bulk_create_entitiesgads_bulk_mutategads_bulk_update_statusgads_create_entitygads_remove_entitygads_update_entitygads_upload_imagegads_upload_videolinkedin_adjust_bidslinkedin_bulk_create_entitieslinkedin_bulk_update_entitieslinkedin_bulk_update_statuslinkedin_create_entitylinkedin_delete_entitylinkedin_duplicate_entitylinkedin_update_entitylinkedin_upload_imagelinkedin_upload_videometa_adjust_bidsmeta_bulk_create_entitiesmeta_bulk_update_entitiesmeta_bulk_update_statusmeta_create_entitymeta_delete_entitymeta_duplicate_entitymeta_update_entitymsads_bulk_update_statusmsads_delete_entitymsads_delete_report_schedulemsads_manage_ad_extensionsmsads_manage_criterionspinterest_adjust_bidspinterest_bulk_create_entitiespinterest_bulk_update_statuspinterest_create_entitypinterest_delete_entitysnapchat_adjust_bidssnapchat_bulk_create_entitiessnapchat_bulk_update_statussnapchat_create_entitysnapchat_delete_entitytiktok_adjust_bidstiktok_bulk_create_entitiestiktok_bulk_update_statustiktok_create_entitytiktok_delete_entityttd_adjust_bidsttd_archive_entitiesttd_bulk_create_entitiesttd_bulk_update_entitiesttd_bulk_update_statusttd_cancel_report_executionttd_create_entityttd_delete_entityttd_delete_report_schedulettd_graphql_cancel_bulk_jobttd_graphql_mutation_bulkttd_manage_bid_listttd_update_entityttd_update_report_templatettd_upload_video
Not yet classified 5 · We could not tell from the name and description.
ttd_execute_entity_reportvec_bool_nullvec_emptyvec_null_vs_omittedvec_numbers
Network hosts it talks to 49
accounts.snapchat.com· found in codeacme.com· found in codeads-developers.googleblog.com· found in codeadsapi.snapchat.com· found in codeadvertising-api.amazon.com· found in codeadvertising.amazon.com· found in codeanalytics.pinterest.com· found in codeanalytics.snapchat.com· found in codeapi.amazon.com· found in codeapi.anthropic.com· found in codeapi.pinterest.com· found in codeapi.thetradedesk.com· found in codebusiness-api.tiktok.com· found in codecampaign.api.bingads.microsoft.com· found in codeclientcenter.api.bingads.microsoft.com· found in codecorvo-reports.s3.amazonaws.com· found in codedesk.thetradedesk.com· found in codedevelopers.facebook.com· found in codedevelopers.google.com· found in codedevelopers.pinterest.com· found in codedevelopers.snap.com· found in codedfareporting.googleapis.com· found in codedisplayvideo.googleapis.com· found in codedocs.microsoft.com· found in codedownload.api.bingads.microsoft.com· found in codeext-api.sb.thetradedesk.com· found in codegithub.com· found in codegoogle.com· found in codegoogleads.googleapis.com· found in codegoogleapis.com· found in code
Show 19 more hosts
graph.facebook.com· found in codelanding.google.com· found in codelearn.microsoft.com· found in codemarketingapi.snapchat.com· found in codemetadata.google.internal· found in codeoauth2.googleapis.com· found in codeopen.thetradedesk.com· found in codepartner.thetradedesk.com· found in coderaw.githubusercontent.com· found in codereporting.api.bingads.microsoft.com· found in codereports.thetradedesk.com· found in codesearchads360.googleapis.com· found in codesupport.google.com· found in codeturbo.build· found in codeyour-click-url.com· found in codeyour-hosted-banner.jpg· found in codeyour-landing-page.com· found in codeyour-vast-server.com· found in codeyoursite.com· found in code
Files it touches
- Your home directory (~)
- Any path the agent passes to its tools
Tools (312)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
amazon_dsp_adjust_bidsAmazon DSP Line Item Bid Adjustmentcan change or delete dataBatch adjust line item (ad group) base bids with safe read-modify-write via the Amazon Ads Unified API. For each line item: reads the ad group (`POST /adsApi/v1/query/adGroups`), then sets `bid.baseBid` to `bidAmount` (`POST /adsApi/v1/update/adGroups`, keeping `bid.maxAverageBid`), and reports previous/new amounts. Bids are in the advertiser's account currency. **Gotchas:** - `baseBid` is the lower bound bid for the ad group's ads; the ad group's `optimization.bidStrategy` decides how it is used. - Each read + write pair consumes API quota. - Max 50 adjustments per call.
amazon_dsp_bulk_create_entitiesAmazonDsp Bulk Create Entitiescan change or delete dataDescription is built at runtime.
amazon_dsp_bulk_update_entitiesAmazonDsp Bulk Update EntitiesDescription is built at runtime.
amazon_dsp_bulk_update_statusAmazonDsp Bulk Status UpdateDescription is built at runtime.
amazon_dsp_check_report_statusCheck Amazon DSP Report Statusread-onlyCheck the status of a previously submitted Amazon DSP report task. Makes a single API call to GET /accounts/{accountId}/dsp/reports/{taskId}. Does not poll or wait. Pass the same `accountId` (DSP advertiser ID) used to submit the report. **Canonical states:** `pending`, `running`, `complete`, `failed`, `cancelled`. Amazon DSP raw statuses (`IN_PROGRESS`/`SUCCESS`/`FAILURE`) are mapped; the raw string is returned as `rawStatus`. - If state is `complete` with a `downloadUrl` (presigned S3 URL), use `amazon_dsp_download_report` to fetch results. - If not done, call this tool again in ~10 second…
amazon_dsp_create_commitmentCreate an Amazon DSP commitmentcan change or delete dataCreate a new committed-spend agreement on the authenticated DSP account. Single-commitment write. Internally wraps the input into a 1-element `commitments` batch and unwraps `success[0].commitment` from Amazon's multi-status response. Per-item rejections surface as McpError(InvalidParams) with the original Amazon ErrorCode + fieldLocation. Governed write (entity class): the create payload is symbolically validated, and the response carries an `after` canonical snapshot (a create has no `before`) plus `dispatchedCapability`. When `dry_run: true` the call returns a `dryRun` payload (symbolic v…
amazon_dsp_create_entityCreate AmazonDsp Ads Entitycan change or delete dataDescription is built at runtime.
amazon_dsp_delete_entityDelete AmazonDsp Ads Entitycan change or delete dataDescription is built at runtime.
amazon_dsp_download_reportDownload AmazonDsp Reportread-onlyDownload and parse a AmazonDsp report from a download URL. After a report task is COMPLETED (via `amazon_dsp_check_report_status`), use the `downloadUrl` to fetch and parse the report data. **Workflow:** 1. `amazon_dsp_submit_report` → get `taskId` 2. `amazon_dsp_check_report_status` → get `downloadUrl` when COMPLETED 3. `amazon_dsp_download_report` with that URL → get a bounded summary or paged row slice **Options:** - `mode: "summary"` (default) returns headers, counts, and a small preview - `mode: "rows"` returns one bounded page of rows - `columns` projects returned rows to selected col…
amazon_dsp_duplicate_entityDuplicate AmazonDsp Ads EntityDescription is built at runtime.
amazon_dsp_get_ad_previewGet AmazonDsp Ad Previewread-onlyGet a preview of how an Amazon DSP creative will appear to users. Returns preview data for the creative as served via the Amazon DSP platform. Uses the legacy `GET /dsp/creatives/{creativeId}/preview` endpoint — the Unified API has no preview operation, and whether it accepts a Unified `adId` is unverified.
amazon_dsp_get_campaign_forecastGet Amazon DSP campaign forecastread-onlyRetrieve a campaign forecast for one DSP campaign. The Amazon endpoint supports exactly 1 forecast description per call (the multi-status response also caps both `success` and `error` arrays at 1). Forecast warnings are nested at `success[].campaignForecast.flightForecasts[].warnings[]` — the formatter summarises them so callers know whether forecast confidence is degraded.
amazon_dsp_get_commitmentGet a single Amazon DSP commitmentread-onlyFetch one commitment by ID and return its full DSPCommitment record. Used as the read partner for the governed `amazon_dsp_update_commitment` write tool so the governance control plane can capture pre/post snapshots. Internally wraps the batch retrieve endpoint with a 1-element array. If the commitment is missing or rejected, the call throws an McpError with JsonRpcErrorCode.InvalidParams carrying the Amazon ErrorCode + message. For batch reads, use `amazon_dsp_get_commitments` instead.
amazon_dsp_get_commitment_spendGet Amazon DSP commitment spendread-onlyReturn spend accrual + projection for one commitment, optionally broken down by advertiser / campaign / deal via `spendDimension`. The Amazon endpoint caps both request and response at 1 entry per call. Returns: `accruedSpendValue`, `accruedToDateTime`, `projectedSpendValue`, `spendAtRiskValue`, `currencyCode`, and the `spendDimensionType` (ADVERTISER / CAMPAIGN / COMMITMENT / DEAL).
amazon_dsp_get_commitmentsGet Amazon DSP commitments (batch)read-onlyBatch-fetch commitments by ID. Returns Amazon's multi-status response shape unmodified: `success[i].commitment` carries the entity, `error[i].errors` carries one or more per-item errors with their original `fieldLocation` / `code` / `message`. Up to 1000 IDs per call. For a single commitment that returns a clean DSPCommitment (or throws on rejection), use `amazon_dsp_get_commitment`.
Show 297 more tools
amazon_dsp_get_entityGet AmazonDsp Ads Entityread-onlyDescription is built at runtime.
amazon_dsp_get_pacing_statusCalculate Campaign Pacing (Client-Side)read-onlyClient-side pacing calculator — does NOT call the Amazon DSP API. Computes actual vs expected delivery given caller-supplied budget, spend-to-date, and flight dates. To populate spend, first call `amazon_dsp_get_report`; to populate budget and flight dates, first call `amazon_dsp_get_entity` for the campaign.
amazon_dsp_get_reportGet Amazon DSP Reportread-onlySubmit and retrieve an async Amazon DSP performance report (DSP reports v3: /accounts/{accountId}/dsp/reports). Follows the async polling pattern: submit task → poll until SUCCESS → download data. This may take 30s–5 minutes depending on the data volume. `accountId` is the DSP advertiser ID (from `amazon_dsp_list_advertisers`), not the profile ID. **Allowed `type`:** CAMPAIGN, INVENTORY, AUDIENCE, PRODUCTS, TECHNOLOGY, GEOGRAPHY, CONVERSION_SOURCE. **CAMPAIGN `dimensions`:** ORDER, LINE_ITEM, CREATIVE. **Common metrics:** impressions, clickThroughs, totalCost, viewableImpressions, viewabili…
amazon_dsp_get_report_breakdownsGet Amazon DSP Report with Breakdownsread-onlySubmit and retrieve an async Amazon DSP report (DSP reports v3: /accounts/{accountId}/dsp/reports) with additional breakdown dimensions appended to the base set. Like `amazon_dsp_get_report` but the `breakdowns` array is concatenated onto `dimensions` before submitting — convenient when iterating "show me X also broken down by Y". `accountId` is the DSP advertiser ID (from `amazon_dsp_list_advertisers`), not the profile ID. **Allowed `type`:** CAMPAIGN, INVENTORY, AUDIENCE, PRODUCTS, TECHNOLOGY, GEOGRAPHY, CONVERSION_SOURCE. **CAMPAIGN `dimensions` (base + breakdowns):** ORDER, LINE_ITEM, C…
amazon_dsp_list_advertisersList AmazonDsp Advertisersread-onlyList AmazonDsp advertiser accounts accessible to the authenticated user. Returns advertiser IDs, names, and account status information. Pass an `advertiserId` from the results as `accountId` to the entity tools (the Unified API's `Amazon-Ads-AccountId` header) and to the reporting tools. Uses the legacy `GET /dsp/advertisers` endpoint — the Unified DSP API has no advertiser listing. Amazon DSP paginates by offset. When the response's `pagination.nextCursor` is non-null, call again with `startIndex` set to it to fetch the next page.
amazon_dsp_list_commitmentsList Amazon DSP commitmentsread-onlyList committed-spend agreements (upfront / advance commitments) for the authenticated DSP account. Token-cursor paginated via `nextToken`. A commitment defines a guaranteed spend over a date range; line items attached to the commitment draw down against it. See `amazon_dsp_get_commitment` for the single-entity read used by governed updates.
amazon_dsp_list_entitiesList AmazonDsp Ads Entitiesread-onlyDescription is built at runtime.
amazon_dsp_submit_reportSubmit Amazon DSP ReportSubmit an Amazon DSP report (DSP reports v3: POST /accounts/{accountId}/dsp/reports) without waiting for completion. Returns a `taskId` immediately. Use `amazon_dsp_check_report_status` to poll for completion (`SUCCESS` or `FAILURE`), then `amazon_dsp_download_report` to fetch results. **Non-blocking workflow:** 1. `amazon_dsp_submit_report` → get `taskId` 2. `amazon_dsp_check_report_status` (repeat every 10s) → wait for `SUCCESS` 3. `amazon_dsp_download_report` with the `downloadUrl` → parsed data Use `amazon_dsp_get_report` instead for a blocking convenience shortcut. **Report shape:** `…
amazon_dsp_update_commitmentUpdate an Amazon DSP commitmentUpdate a single committed-spend agreement. Only fields included in `data` are sent to Amazon; the underlying endpoint replaces those fields and leaves the rest as-is. Governed write: pre-write snapshot is captured through the `amazon_dsp_get_commitment` read partner, the patch is symbolically validated, and the response carries canonical `before` / `after` / `dispatchedCapability` blocks so the governance control plane can audit the change without an out-of-band pairing. When `dry_run: true` the call returns a `dryRun` payload (symbolic validation + symbolic post-state) without touching the …
amazon_dsp_update_entityUpdate AmazonDsp Ads EntityDescription is built at runtime.
amazon_dsp_upload_videoUpload a Video Asset to Amazon DSP (Creative Asset Library)can change or delete dataUpload a video file to Amazon's Creative Asset Library for use in Amazon DSP video creatives. A DSP video creative references an `assetId` from the account's Creative Asset Library. This tool runs Amazon's documented three-step upload flow for you: 1. `POST /assets/upload` — register a 15-minute presigned upload location. 2. `PUT` the downloaded video bytes to that URL. 3. `POST /assets/register` — register the uploaded file as a `VIDEO` asset. The video must be reachable at a public `mediaUrl` — the server downloads it, then uploads the bytes to Amazon. Returns the registered `assetId`, wh…
cm360_bulk_create_entitiesBulk Create CM360 Entitiescan change or delete dataBatch create multiple CM360 entities of the same type. CM360 has no batch endpoint: each item is one create call, paced by the per-user rate limit (`CM360_RATE_LIMIT_PER_MINUTE`, default 5/min, shared by every profile of the authenticated user). A batch that cannot clear that limit within the 2-minute queue budget is refused before anything is sent, and the error carries `itemsThatFit` and `retryAfterMs`. At the default limit, 15 items fit when nothing else is queued. Run with `dry_run` to check a batch first. The schema accepts up to 50 items.
cm360_bulk_update_entitiesBulk Update CM360 Entitiescan change or delete dataBatch update multiple CM360 entities of the same type. Items are partial updates (CM360 PATCH semantics): send only the fields to change in `data`; omitted fields keep their current values. CM360 has no batch endpoint: each item is one PATCH call, paced by the per-user rate limit (`CM360_RATE_LIMIT_PER_MINUTE`, default 5/min, shared by every profile of the authenticated user). A batch that cannot clear that limit within the 2-minute queue budget is refused before anything is sent, and the error carries `itemsThatFit` and `retryAfterMs`. At the default limit, 15 items fit when nothing else is …
cm360_bulk_update_statusBulk Update CM360 Entity Statuscan change or delete dataBatch update the status of multiple CM360 entities. Each entity is fetched and then written back whole (GET + PUT, because CM360's PUT replaces the entity), so every entity costs two calls. Calls are paced by the per-user rate limit (`CM360_RATE_LIMIT_PER_MINUTE`, default 5/min, shared by every profile of the authenticated user). A batch that cannot clear that limit within the 2-minute queue budget is refused before anything is sent, and the error carries `itemsThatFit` and `retryAfterMs`. At the default limit, 7 entities fit when nothing else is queued. Run with `dry_run` to check a batch fi…
cm360_check_report_statusCheck CM360 Report Statusread-onlyCheck the status of a CM360 report file. Single status check — no polling. Canonical states: `pending`, `running`, `complete`, `failed`, `cancelled`. CM360 source states are mapped: PROCESSING → running, REPORT_AVAILABLE → complete, FAILED → failed, CANCELLED → cancelled. The original string is returned as `rawStatus`. When state is `complete`, a downloadUrl is provided. Use cm360_download_report to fetch the results.
cm360_create_entityCreate CM360 Entitycan change or delete dataDescription is built at runtime.
cm360_create_report_scheduleCreate CM360 Report ScheduleCreate a CM360 report with a recurring schedule. CM360 schedules are embedded in the report resource itself. The returned reportId is your schedule handle — use it with cm360_list_report_schedules and cm360_delete_report_schedule. **Schedule frequency values:** DAILY, WEEKLY, MONTHLY, QUARTERLY, YEARLY **Example schedule object:** ```json { "active": true, "every": 1, "repeats": "WEEKLY", "repeatsOnWeekDays": ["MONDAY"], "startDate": "2026-04-01", "expirationDate": "2026-12-31" } ```
cm360_delete_entityDelete CM360 Entitycan change or delete dataDescription is built at runtime.
cm360_delete_report_scheduleDelete CM360 Report Schedulecan change or delete dataDelete a CM360 scheduled report (and its schedule). This permanently deletes the report resource. Use cm360_list_report_schedules to find the reportId.
cm360_download_reportDownload CM360 Reportread-onlyDownload and parse a CM360 report from its download URL. Use the downloadUrl from cm360_get_report or cm360_check_report_status. Returns a bounded summary or paged row slice.
cm360_get_ad_previewGet CM360 Ad Previewread-onlyGet details for a CM360 ad, including its creative assignments and click-through configuration. Fetches the full ad entity. CM360 does not provide a native ad preview URL — use the returned creative assignments and ad configuration to understand the ad setup.
cm360_get_entityGet CM360 Entityread-onlyDescription is built at runtime.
cm360_get_pacing_statusCalculate Campaign Pacing (Client-Side)read-onlyClient-side pacing calculator — does NOT call the Campaign Manager 360 API. Computes actual vs expected delivery given caller-supplied budget, spend-to-date, and flight dates. To populate spend, first call `cm360_get_report`; to populate flight dates, first call `cm360_get_entity` for the campaign (startDate / endDate). A CM360 campaign has no budget field: take the budget from your media plan, or from the placements' pricingSchedule.
cm360_get_reportGet CM360 Reportread-onlyCreate and run a CM360 report, polling until completion (blocking). Uses the CM360 Reports API async workflow: 1. Create report definition 2. Trigger execution 3. Poll until REPORT_AVAILABLE 4. Return download URL This may take 30-120 seconds depending on report complexity.
cm360_get_report_breakdownsGet CM360 Report with Breakdownsread-onlyCreate and run a CM360 report with additional breakdown dimensions (blocking). Like `cm360_get_report` but merges `breakdownDimensions` into the report criteria alongside any dimensions already specified in `criteria`. Use this to segment results by device, date, geography, creative, or any other CM360 dimension. **Common breakdown dimensions:** date, campaign, advertiser, site, creative, creativeType, device, country This may take 30-120 seconds depending on report complexity. Returns a `downloadUrl`. Use `cm360_download_report` with `includeComputedMetrics: true` to fetch the CSV data wi…
cm360_list_entitiesList CM360 Entitiesread-onlyDescription is built at runtime.
cm360_list_report_schedulesList CM360 Report Schedulesread-onlyList CM360 reports that have an active schedule. Returns canonical ReportScheduleSummary entries for reports in the profile that contain an active schedule object. The original CM360 report envelopes are preserved on the sibling `raw` field for platform-specific debugging. Use a returned schedule's `scheduleId` as the handle for cm360_delete_report_schedule. Reads one page of CM360 reports (`scope=ALL`, so other users' reports in the account are included) and keeps the scheduled ones, so a page can hold no schedules and still have a next page: follow the pagination cursor until it is empty.
cm360_list_targeting_optionsList CM360 Targeting Optionsread-onlyList available targeting options from the CM360 API. Supports browsing browsers, connection types, content categories, countries, languages, metros, operating systems, platform types, and more. Most types take no parameters besides profileId and return their whole list in one response. Only contentCategories paginates (pageToken, maxResults; filters ids, searchString, sortField, sortOrder), and only cities filters (countryDartIds, dartIds, namePrefix, regionDartIds). Any other parameter is refused before the call.
cm360_list_user_profilesList CM360 User Profilesread-onlyList all CM360 user profiles accessible with the current credentials. This is the bootstrap call — profileId is required for all other CM360 operations. Call this first to discover available profiles.
cm360_submit_reportSubmit CM360 ReportSubmit a CM360 report without waiting for completion (non-blocking). Creates the report definition and triggers execution, then returns immediately with the reportId and fileId. Use cm360_check_report_status to poll for completion, then cm360_download_report to fetch results. Three-step async workflow: 1. cm360_submit_report -> get reportId + fileId 2. cm360_check_report_status -> check status 3. cm360_download_report -> download when REPORT_AVAILABLE
cm360_update_entityUpdate CM360 Entitycan change or delete dataDescription is built at runtime.
cm360_validate_entityValidate CM360 Entityread-onlyDry-run validate a CM360 entity payload without making an API call. Checks that the data object has the expected structure for the given entity type and mode (create or update). No credentials or profileId required.
crossrepo_update_entitycan change or delete dataCross-repo golden fixture. Edited in lockstep across both repos.
dbm_get_campaign_deliveryGet Campaign Deliveryread-onlyFetch DV360 delivery metrics (impressions, clicks, spend, conversions) for a campaign within a date range via Bid Manager API
dbm_get_historical_metricsGet Historical Metricsread-onlyFetch time-series historical metrics for trend analysis
dbm_get_pacing_statusGet Pacing Statusread-onlyGet pacing status for a campaign (actual vs expected delivery) from Bid Manager report data, which lags real time by hours. Requires budget and flight dates as inputs; amounts are in the caller's currency.
dbm_get_performance_metricsGet Performance Metricsread-onlyCalculate performance metrics (CPM, CTR, CPA, ROAS) for a campaign within a date range
dbm_run_custom_queryRun Custom Queryread-onlyExecute a custom Bid Manager API query with any combination of filters and metrics. For available options, fetch these MCP Resources: - filter-types://all - Complete list of ~280 filter/dimension types - filter-types://category/{slug} - Category-specific filter subsets (e.g. filter-types://category/time) - metric-types://all - Complete list of ~100 metric types - metric-types://category/{slug} - Category-specific metric subsets (e.g. metric-types://category/video) - report-types://all - Report types and date range presets - query-examples://all - Example queries for common use cases Common g…
dbm_run_custom_query_asyncRun Custom Query (Async)read-onlyExecute a custom Bid Manager API query asynchronously. Returns a task handle immediately — poll via tasks/get for status, retrieve results via tasks/result when complete. Requires a client that supports MCP task-augmented tools/call; otherwise use dbm_run_custom_query. Use this for large or complex queries that may take time to execute. Accepts the same parameters as dbm_run_custom_query.
dv360_adjust_line_item_bidsAdjust Line Item Bidscan change or delete dataDescription is built at runtime.
dv360_bulk_create_entitiesBulk Create DV360 Entitiescan change or delete dataBatch create up to 50 DV360 entities of the same type. Runs creates in parallel batches of up to 5 (DV360 API has no native batch endpoint). Failed items do not block the remaining batch — partial success is returned. Fetch entity-schema://{entityType} and entity-examples://{entityType} before calling.
dv360_bulk_update_entitiesBulk Update DV360 Entitiescan change or delete dataBatch update up to 50 DV360 entities with updateMask discipline. Loops through items individually (DV360 API has no native batch endpoint). Returns partial success results — failed items do not block remaining updates. Fetch entity-fields://{entityType} and entity-examples://{entityType} before calling.
dv360_bulk_update_statusBulk Update Entity Statuscan change or delete dataDescription is built at runtime.
dv360_create_assigned_targetingCreate DV360 Assigned Targeting Optioncan change or delete dataCreate a new assigned targeting option on a DV360 entity (Advertiser, Line Item, or Ad Group). **Important:** Fetch the targeting schema first using the MCP resource `targeting-schema://{targetingType}` to understand required fields. **Example data payloads:** For TARGETING_TYPE_CHANNEL: ```json { "channelDetails": { "channelId": "123456", "negative": true } } ``` For TARGETING_TYPE_GEO_REGION: ```json { "geoRegionDetails": { "targetingOptionId": "2840", "negative": false } } ``` See MCP resource `targeting-types://` for all available targeting types.
dv360_create_custom_bidding_algorithmCreate Custom Bidding Algorithmcan change or delete dataCreate a new custom bidding algorithm in DV360 (Tier 2 workflow tool). **Algorithm Types:** - SCRIPT_BASED: Custom JavaScript-like bidding logic (most common) - RULE_BASED: Declarative rules (restricted to allowlisted customers) **Ownership:** - Advertiser-owned: Algorithm is scoped to a single advertiser - Partner-owned: Algorithm can be shared with multiple advertisers via sharedAdvertiserIds **Important Notes:** - Algorithm type is IMMUTABLE after creation - Ownership (advertiserId/partnerId) is IMMUTABLE after creation - Optionally upload initial script/rules during creation **Example …
dv360_create_entityCreate DV360 Entitycan change or delete dataDescription is built at runtime.
dv360_delete_assigned_targetingDelete DV360 Assigned Targeting Optioncan change or delete dataDelete an assigned targeting option from a DV360 entity. **Warning:** This action is irreversible. The targeting option will be immediately removed from the entity. Use `dv360_list_assigned_targeting` first to find the assignedTargetingOptionId to delete.
dv360_delete_entityDelete Entitycan change or delete dataPermanently delete a DV360 entity. Supported types: advertiser, campaign, insertionOrder, lineItem, adGroup, creative, inventorySourceGroup (DV360 has no delete method for customBiddingAlgorithm, inventorySource or locationList — archive those via dv360_update_entity instead). Deleted entities cannot be recovered (subsequent get returns 404). **Campaigns, insertion orders, line items and creatives must be in ENTITY_STATUS_ARCHIVED before delete** — DV360 rejects the delete otherwise, and this tool refuses before calling it. Use dv360_bulk_update_status with status=ENTITY_STATUS_ARCHIVED first,…
dv360_duplicate_entityDuplicate DV360 Entitycan change or delete dataDuplicate a DV360 insertion order or line item. **Supported entity types:** insertionOrder, lineItem - **lineItem**: uses DV360's native `lineItems:duplicate` method — a server-side copy of the line item. The copy is never left running: if DV360 returns it ACTIVE it is set to PAUSED. Check its assigned targeting with dv360_list_assigned_targeting before activating it. - **insertionOrder**: DV360 has no native duplicate for insertion orders, so the tool reads the source, strips server-assigned fields and creates a new insertion order with the same configuration in **ENTITY_STATUS_DRAF…
dv360_get_ad_previewGet DV360 Creative Previewread-onlyGet the details needed to preview a DV360 creative. DV360's API exposes **no preview URL** for creatives (the v4 Creative resource has no such field), so this returns what can be used to render or inspect one instead: the third-party tag (HTML) for third-party display creatives, the VAST tag URL for third-party video/audio creatives, plus dimensions, creative type, hosting source and review/approval status. Use the DV360 UI to see a rendered preview of a DV360-hosted creative. **Usage:** Use creativeId from dv360_list_entities or dv360_create_entity.
dv360_get_assigned_targetingGet DV360 Assigned Targeting Optionread-onlyGet a single assigned targeting option by ID. Use this to retrieve details of a specific targeting configuration on an Advertiser, Line Item, or Ad Group.
dv360_get_delivery_estimateGet DV360 Delivery Estimateread-onlyGet delivery and targeting information for an existing DV360 line item, for campaign planning. Fetches the line item's configuration (budget, pacing, bid strategy, flight) and all of its assigned targeting options, giving a complete picture of its current delivery settings and targeting scope. This is configuration context, not a volume forecast — DV360's API exposes no advertiser-level default line item or delivery forecast to read here.
dv360_get_entityGet DV360 Entityread-onlyDescription is built at runtime.
dv360_get_pacing_statusCalculate Campaign Pacing (Client-Side)read-onlyClient-side pacing calculator — does NOT call the DV360 API. Computes actual vs expected delivery given caller-supplied budget, spend-to-date, and flight dates. To populate spend, first call `dbm_get_performance_metrics` (Bid Manager API); to populate budget and flight dates, first call `dv360_get_entity` for the campaign.
dv360_list_assigned_targetingList DV360 Assigned Targeting Optionsread-onlyList assigned targeting options for a DV360 entity (Advertiser, Line Item, or Ad Group). **Parent Types:** - advertiser: Advertiser-wide targeting (brand safety, channel exclusions) - lineItem: Targeting at line item level (audience, inventory) - adGroup: Targeting at ad group level (keywords, placements) **Common Targeting Types:** - TARGETING_TYPE_CHANNEL: Channel inclusions/exclusions - TARGETING_TYPE_GEO_REGION: Geographic targeting - TARGETING_TYPE_KEYWORD: Keyword targeting - TARGETING_TYPE_URL: URL/placement targeting See MCP resource `targeting-types://` for full list of all 50 targ…
dv360_list_custom_bidding_algorithmsList Custom Bidding Algorithmsread-onlyList custom bidding algorithms accessible to a partner or advertiser (Tier 2 workflow tool). **Access Patterns:** - By Partner ID: Lists algorithms owned by the partner + shared with partner's advertisers - By Advertiser ID: Lists algorithms owned by or shared with the advertiser **Algorithm Types:** - SCRIPT_BASED: Custom JavaScript-like bidding logic - RULE_BASED: Declarative rules (restricted to allowlisted customers) **Model Readiness States:** - ACTIVE: Algorithm is trained and ready - INSUFFICIENT_DATA: Not enough data to train - TRAINING: Model is being trained - NO_VALID_SCRIPT: No …
dv360_list_entitiesList DV360 Entitiesread-onlyDescription is built at runtime.
dv360_manage_custom_bidding_rulesManage Custom Bidding Rulescan change or delete dataUpload and manage rules for RULE_BASED custom bidding algorithms (Tier 2 workflow tool). **Important:** RULE_BASED algorithms are restricted to allowlisted customers. If your account is not allowlisted, you will receive an error when trying to use this feature. **Actions:** - upload: Upload a new rules version to the algorithm - list: List all rules for an algorithm - get: Get details of a specific rules resource - getActive: Get the currently active rules **Rules States:** - ACCEPTED: Rules are ready for scoring impressions - REJECTED: Rules have errors (check error field for details) **I…
dv360_manage_custom_bidding_scriptManage Custom Bidding Scriptcan change or delete dataUpload and manage scripts for SCRIPT_BASED custom bidding algorithms (Tier 2 workflow tool). **Actions:** - upload: Upload a new script version to the algorithm - list: List all scripts for an algorithm - get: Get details of a specific script - getActive: Get the currently active script **Required scope:** Pass `advertiserId` (algorithm is advertiser-owned) OR `partnerId` (algorithm is partner-owned). DV360 returns 403 'permission for partner 0' otherwise. **Script States:** - PENDING: Script is being processed by backend - ACCEPTED: Script is ready for scoring impressions - REJECTED: Scrip…
dv360_update_entityUpdate Entitycan change or delete dataDescription is built at runtime.
dv360_upload_imageUpload Image to DV360can change or delete dataUpload an image asset to a DV360 advertiser from a URL. The server downloads the image and uploads it via the DV360 asset upload API. Returns the assetId which can be used when creating creatives. **Image requirements:** - Formats: JPEG, PNG, GIF, WEBP - Check DV360 creative specs for size/dimension requirements per creative type **Usage:** The returned assetId is used when creating or updating DV360 creatives.
dv360_upload_videoUpload Video to DV360can change or delete dataUpload a video asset to a DV360 advertiser from a URL. The server downloads the video and uploads it via the DV360 asset upload API. DV360 uses the same /assets endpoint for both images and videos. Returns the assetId which can be used when creating video creatives. **Video requirements:** - Formats: MP4, MOV, AVI, WEBM - Check DV360 creative specs for duration/size requirements per creative type **Usage:** The returned assetId is used when creating or updating DV360 video creatives.
dv360_validate_entityValidate DV360 Entity (Client-Side)read-onlyDescription is built at runtime.
dv360_validate_targeting_configValidate DV360 Targeting Configurationread-onlyValidate targeting configuration across multiple DV360 entities. This workflow tool fetches and validates targeting settings for: - Channel exclusions at Advertiser level - Geographic targeting at Line Item level - Placement settings at Ad Group level - Keyword exclusions at Ad Group level **Use cases:** - Audit targeting before campaign launch - Verify brand safety settings - Check geographic reach Provide entity IDs to check. The tool will fetch targeting for each and report any issues.
echoEchoread-onlyEchoes back the provided message. Used for connectivity testing and conformance validation.
gads_adjust_bidsGoogle Ads Bid Adjustmentcan change or delete dataBatch adjust ad group bids with safe read-modify-write pattern. For each ad group, the tool: 1. Reads the current ad group to capture previous bid values 2. Applies the new CPC and/or CPM bid amounts 3. Writes the update via the :mutate endpoint with a targeted updateMask Returns both previous and new values for audit trail. **Bid amounts are in micros** (1,000,000 = $1.00 USD). For example: - $1.50 CPC = "1500000" - $5.00 CPM = "5000000" Up to 50 ad groups can be adjusted in a single call. **Note:** Uses a read-modify-write pattern. Concurrent bid adjustments to the same ad group may cau…
gads_bulk_create_entitiesBulk Create Google Ads Entitiescan change or delete dataDescription is built at runtime.
gads_bulk_mutateBulk Mutate Google Ads Entitiescan change or delete dataDescription is built at runtime.
gads_bulk_update_statusBulk Update Google Ads Entity Statuscan change or delete dataDescription is built at runtime.
gads_create_entityCreate Google Ads Entitycan change or delete dataDescription is built at runtime.
gads_duplicate_entityDuplicate Google Ads EntityDescription is built at runtime.
gads_gaql_searchGoogle Ads GAQL Searchread-onlyExecute a Google Ads Query Language (GAQL) query against any Google Ads resource. Supports resource fields, segment fields, and metrics with SQL-like syntax. See `gaql-reference://syntax` resource for full reference.
gads_get_ad_previewGet Google Ads Ad Previewread-onlyGet preview information for a Google Ads ad. Fetches the ad entity via GAQL and returns its type, resource name, and final URLs. This is entity data, not a rendered preview: the Google Ads API has no ad-render endpoint. Its only preview method, customers:generateShareablePreviews, returns shareable preview URLs for asset groups (UI preview) or ad group ads (YouTube live preview) and is not called here. **Usage:** Use adId from gads_list_entities with entityType=ad or gads_create_entity. The adId is the numeric ID, not the resource name.
gads_get_entityGet Google Ads Entityread-onlyDescription is built at runtime.
gads_get_insightsGoogle Ads Performance Insightsread-onlyGet performance insights for Google Ads entities using preset parameters. Convenience wrapper around GAQL that constructs queries from simple inputs. For ad-hoc queries, use `gads_gaql_search` directly. **Supported entity types:** campaign, adGroup, ad, keyword **Default metrics:** impressions, clicks, cost_micros, conversions, ctr, average_cpc **Date ranges:** Preset (TODAY, YESTERDAY, LAST_7_DAYS, etc.) OR custom (startDate + endDate) **Computed metrics:** Set includeComputedMetrics=true for derived CPA, ROAS, CPM
gads_get_pacing_statusCalculate Campaign Pacing (Client-Side)read-onlyClient-side pacing calculator — does NOT call the Google Ads API. Computes actual vs expected delivery given caller-supplied budget, spend-to-date, and flight dates. To populate spend, first call `gads_get_insights`; to populate budget and flight dates, first call `gads_get_entity` for the campaign. Note: spendToDate should be in actual currency units (not micros).
gads_list_accountsList Google Ads Accountsread-onlyList all Google Ads customer accounts accessible to the authenticated user. Returns resource names in the format `customers/{customerId}`. Use the customer IDs from this list for all other Google Ads tools.
gads_list_entitiesList Google Ads Entitiesread-onlyList Google Ads entities of a given type with optional GAQL filters. Filters are applied as GAQL WHERE conditions. For complex queries, use `gads_gaql_search` directly.
gads_remove_entityRemove Google Ads Entitycan change or delete dataDescription is built at runtime.
gads_update_entityUpdate Google Ads Entitycan change or delete dataDescription is built at runtime.
gads_upload_imageUpload Image Asset to Google Adscan change or delete dataUpload an image to Google Ads as an ImageAsset from a URL. The server downloads the image and creates an ImageAsset via AssetService (`assets:mutate`, base64 `imageAsset.data`). The returned asset resource name is referenced by image ads and extensions. This is a convenience wrapper over `gads_create_entity` (entityType `asset`) that handles the download + base64 encoding for you. **Image requirements:** - Formats: JPEG, PNG, GIF - Max file size: 5MB Note: video assets reference a YouTube video ID rather than uploaded bytes; create them with `gads_upload_video` (or `gads_create_entity`, ent…
gads_upload_videoCreate a Video Asset in Google Adscan change or delete dataCreate a video asset in Google Ads from a YouTube video ID. **This tool uploads no video file.** A Google Ads video asset is a `YouTubeVideoAsset` that *references* a video already hosted on YouTube — you provide the YouTube video ID, not a file. Google Ads' YouTubeVideoUploadService (`youTubeVideoUploads:create`) can upload a file to YouTube, but no tool on this server wraps it, so host the video on YouTube first, then pass its ID here. This tool creates the asset via AssetService (`assets:mutate`, `type: YOUTUBE_VIDEO`, `youtubeVideoAsset.youtubeVideoId`) and returns the asset resource nam…
gads_validate_entityGoogle Ads Entity Validation (Dry Run)read-onlyDescription is built at runtime.
linkedin_adjust_bidsLinkedIn Ads Bid Adjustmentcan change or delete dataBatch adjust campaign bid amounts. Updates the `unitCost` (bid) for each campaign via PATCH. **bid structure:** `{ "amount": "10.00", "currencyCode": "USD" }` **Gotchas:** - Only applies to campaigns with manual bidding (bidType: CPM, CPC, etc.). - LOWEST_COST campaigns may ignore unitCost. - Each adjustment consumes 3x rate limit tokens (write operation). - Max 50 adjustments per call.
linkedin_bulk_create_entitiesBulk Create LinkedIn Ads Entitiescan change or delete dataDescription is built at runtime.
linkedin_bulk_update_entitiesBulk Update LinkedIn Ads Entitiescan change or delete dataDescription is built at runtime.
linkedin_bulk_update_statusBulk Update LinkedIn Ads Entity Statuscan change or delete dataDescription is built at runtime.
linkedin_create_entityCreate LinkedIn Ads Entitycan change or delete dataDescription is built at runtime.
linkedin_delete_entityDelete LinkedIn Ads Entitycan change or delete dataDescription is built at runtime.
linkedin_duplicate_entityDuplicate LinkedIn Ads Entitycan change or delete dataDescription is built at runtime.
linkedin_get_ad_previewGet LinkedIn Ads Ad Previewread-onlyGet the preview of an existing LinkedIn Ads creative. Returns one preview per placement (e.g. FEED on DESKTOP_WEBSITE and MOBILE_WEBSITE), each an `<iframe>` HTML string to embed. The iframes are valid for about 3 hours; call again for a fresh one. LinkedIn supports previews of single image, carousel, video, single job and event ads. This previews a creative that already exists. Previewing content before a creative is created is a separate LinkedIn call (livePreviewForCreative) that this tool does not make.
linkedin_get_analyticsGet LinkedIn Ads Analyticsread-onlyDescription is built at runtime.
linkedin_get_analytics_breakdownsGet LinkedIn Ads Analytics with Breakdownsread-onlyDescription is built at runtime.
linkedin_get_audience_countGet LinkedIn Ads Audience Countread-onlyCount the LinkedIn members that match a targetingCriteria. Returns `active` (members more likely to visit LinkedIn) and `total` (all matching members, a rounded approximation). LinkedIn reports `total` as 0 when the audience is under 300 members, to protect member privacy; 300 is also the minimum audience needed to run a campaign. So a total of 0 means "too small to report", not necessarily an empty audience. This is the audience size. For impressions, clicks and spend over a period, use linkedin_get_delivery_forecast.
linkedin_get_delivery_forecastGet LinkedIn Ads Delivery Forecastread-onlyForecast impressions, clicks, spend and related metrics for a LinkedIn campaign setup, using LinkedIn's Ad Supply Forecasts API. Give the campaign type, a future date range, the targeting, and a budget (`dailyBudget` or `totalBudget`). With no `optimizationTarget` LinkedIn forecasts manual bidding and needs a `competingBid`; with an auto-bidding `optimizationTarget` it forecasts that. The result is `elements[{ metricType, granularity, timeSeries[{ timestamp, value, adForecastRange }] }]` — IMPRESSION, CLICK, SPENDING, REACH, … at DAILY, SEVEN_DAY, THIRTY_DAY and CUSTOM granularity, each with…
linkedin_get_entityGet LinkedIn Ads Entityread-onlyDescription is built at runtime.
linkedin_get_pacing_statusCalculate Campaign Pacing (Client-Side)read-onlyClient-side pacing calculator — does NOT call the LinkedIn API. Computes actual vs expected delivery given caller-supplied budget, spend-to-date, and flight dates. To populate spend, first call `linkedin_get_analytics`; to populate budget and flight dates, first call `linkedin_get_entity` for the campaign.
linkedin_get_targeting_optionsList LinkedIn Ads Targeting Facetsread-onlyList the targeting facets LinkedIn offers (industries, seniorities, locations, skills, …). Each facet has a `facetName`, an `adTargetingFacetUrn` (urn:li:adTargetingFacet:<facetName>, the key used in targetingCriteria), the `entityTypes` it holds, and the `availableEntityFinders` (AD_TARGETING_FACET = browse all values, TYPEAHEAD = search, SIMILAR_ENTITIES). This is LinkedIn's plain facet list: it takes no parameters and does not depend on the ad account. Use linkedin_search_targeting to get the values inside a facet.
linkedin_list_ad_accountsList LinkedIn Ad Accountsread-onlyList LinkedIn Ads accounts accessible to the authenticated user. Returns ad accounts with their URNs, names, status, and currency. Use the returned URNs as `adAccountUrn` in other tools.
linkedin_list_entitiesList LinkedIn Ads Entitiesread-onlyList LinkedIn Ads entities with offset-based pagination. Most entity types require `adAccountUrn` for scoping. All LinkedIn IDs are URNs (e.g., `urn:li:sponsoredAccount:123`). Use `start` offset for subsequent pages.
linkedin_search_targetingSearch LinkedIn Ads Targeting Entitiesread-onlyFind the values inside a LinkedIn targeting facet — the URNs to put in targetingCriteria. Uses LinkedIn's adTargetingEntities API. The finder is chosen from your arguments: - `facet` alone → every value of the facet (e.g. facet "seniorities") - `facet` + `query` → search within the facet (typeahead, e.g. facet "industries", query "software") - `facet` + `entities` → values similar to the given ones (e.g. employers like urn:li:organization:1003) - `urns` alone → resolve value URNs to names (no facet) `facet` is a camelCase facet name ("locations", "skills", "titles", …) or its URN. Not every …
linkedin_update_entityUpdate LinkedIn Ads Entitycan change or delete dataDescription is built at runtime.
linkedin_upload_imageUpload Image to LinkedIn Adscan change or delete dataUpload an image to LinkedIn Ads from a URL. The server downloads the image and uploads it to LinkedIn's Digital Media Assets library. Two requests after the download: register the upload (`POST /v2/assets?action=registerUpload`), then PUT the bytes to the returned upload URL. No confirm or finalize request is sent; the asset URN comes from the register response. **Image requirements:** - Formats: JPEG, PNG, GIF - Min: 400x400px (Sponsored Content), recommended 1200x627px - Max file size: 5MB - Aspect ratios: 1.91:1 (horizontal), 1:1 (square), 2:3 (vertical) **Usage:** The returned assetUrn …
linkedin_upload_videoUpload Video to LinkedIn Adscan change or delete dataUpload a video to LinkedIn Ads from a URL. The server downloads the video and uploads it to LinkedIn's Digital Media Assets library. Two requests after the download: register the upload (`POST /v2/assets?action=registerUpload`), then PUT the bytes to the returned upload URL. No confirm or finalize request is sent; the asset URN comes from the register response. **Video requirements:** - Formats: MP4 (H.264) - Max file size: 200MB - Duration: 3 seconds to 30 minutes - Recommended: 1920x1080px (16:9), 1080x1080px (1:1) **Usage:** The returned assetUrn is referenced in creative → content → med…
meta_adjust_bidsMeta Ads Bid Adjustmentcan change or delete dataBatch adjust ad set bid amounts with safe read-modify-write. Reads current bids, applies new values, and reports previous/new amounts. Amounts are in cents (100 = $1.00 USD). **Gotchas:** - Only applies to ad sets with manual bidding (bid_amount field). - Ad sets using auto-bidding strategies (e.g., LOWEST_COST_WITHOUT_CAP) may ignore bid_amount. - A warning is included in results for ad sets that appear to use auto-bidding. - Budget values are in cents (100 = $1.00 USD). - Each read + write pair consumes 4x rate limit tokens total. - Max 50 adjustments per call.
meta_bulk_create_entitiesBulk Create Meta Ads Entitiescan change or delete dataDescription is built at runtime.
meta_bulk_update_entitiesBulk Update Meta Ads Entitiescan change or delete dataDescription is built at runtime.
meta_bulk_update_statusBulk Update Meta Ads Entity Statuscan change or delete dataDescription is built at runtime.
meta_check_report_statusCheck Meta Report Statusread-onlyCheck the status of an async Meta Ads insights report job. Poll this tool after `meta_submit_report` until `isComplete` is true, then call `meta_download_report`. **Canonical states:** `pending`, `running`, `complete`, `failed`, `cancelled`. Meta source states are mapped — "Job Completed" → `complete`, "Job Failed" → `failed`, "Job Started"/"Job Running" → `running`, everything else → `pending`. The original Meta status string is returned as `rawStatus`.
meta_create_entityCreate Meta Ads Entitycan change or delete dataDescription is built at runtime.
meta_delete_entityDelete Meta Ads Entitycan change or delete dataDescription is built at runtime.
meta_download_reportDownload Meta Report Resultsread-onlyDownload results from a completed Meta Ads async insights report. Only call this after `meta_check_report_status` returns `isComplete: true` (status "Job Completed"). Returns the insights data rows from the completed report run.
meta_duplicate_entityDuplicate Meta Ads Entitycan change or delete dataDescription is built at runtime.
meta_get_ad_previewGet Meta Ad Previewread-onlyGet preview HTML for an ad in a specific format. Returns temporary HTML iframe content showing how the ad will appear. **Common ad formats:** DESKTOP_FEED_STANDARD, MOBILE_FEED_STANDARD, INSTAGRAM_STANDARD, RIGHT_COLUMN_STANDARD, AUDIENCE_NETWORK_INSTREAM_VIDEO, MARKETPLACE_MOBILE
meta_get_available_metricsGet Meta Available Metrics & Breakdownsread-onlyList the Meta Marketing API Insights metrics, breakdowns, and action breakdowns available for a given entity level. Use this before calling `meta_get_insights` or `meta_get_insights_breakdowns` to discover valid field names. **levels:** account, campaign, adset, ad — the entity level you plan to report on. The response groups metrics by semantic category (delivery, engagement, video, conversions, attribution, quality, other) so you can quickly pick the fields that match what you care about. Breakdowns and action breakdowns are returned as flat lists. **Source:** static catalog seeded from …
meta_get_delivery_estimateGet Meta Delivery Estimateread-onlyGet estimated audience size and delivery estimates for a targeting spec. Requires a targeting specification with at least one location or custom audience. Returns estimated daily reach, impressions, and audience size.
meta_get_entityGet Meta Ads Entityread-onlyDescription is built at runtime.
meta_get_insightsGet Meta Ads Insightsread-onlyGet performance insights for a Meta Ads entity (account, campaign, ad set, or ad). Uses GET /{entityId}/insights with date presets or custom date ranges. **Common date presets:** today, yesterday, this_month, last_month, this_quarter, last_quarter, this_year, last_year, last_3d, last_7d, last_14d, last_28d, last_30d, last_90d, last_week_mon_sun, last_week_sun_sat, this_week_mon_today, this_week_sun_today, maximum, data_maximum **Common metrics (fields):** impressions, clicks, spend, cpc, cpm, ctr, reach, frequency, actions, action_values, conversions, cost_per_action_type **Gotchas:** - Da…
meta_get_insights_breakdownsGet Meta Ads Insights with Breakdownsread-onlyGet performance insights broken down by dimension (age, gender, country, device, etc.). **Common breakdowns:** age, gender, country, region, dma, device_platform, platform_position, publisher_platform **Valid combinations:** age+gender OK, country+region NOT OK (same dimension). **Action attribution windows:** 1d_click, 7d_click, 1d_view, 7d_view **Gotchas:** - Not all breakdown combinations are valid. - Some breakdowns dramatically increase result volume. - Use `maxRows` to control how many rows are returned.
meta_get_pacing_statusCalculate Campaign Pacing (Client-Side)read-onlyClient-side pacing calculator — does NOT call the Meta API. Computes actual vs expected delivery given caller-supplied budget, spend-to-date, and flight dates. To populate spend, first call `meta_get_insights`; to populate budget and flight dates, first call `meta_get_entity` for the campaign. Pass both amounts in the same unit: `meta_get_entity` returns `lifetime_budget` in the account currency's minor unit (cents for USD; the base unit for zero-decimal currencies such as JPY), while insights `spend` is in the major unit — so divide a USD budget by 100 before passing it as `budgetTotal`.
meta_get_targeting_optionsBrowse Meta Targeting Optionsread-onlyBrowse available targeting categories for an ad account. Returns targeting options organized by category (interests, behaviors, demographics, etc.). Use this to discover available targeting dimensions before building a targeting spec.
meta_list_ad_accountsList Meta Ad Accountsread-onlyList ad accounts accessible to the authenticated user. Returns account ID (with act_ prefix), name, status, currency, timezone, and spend. Use this to discover available ad accounts before performing other operations.
meta_list_entitiesList Meta Ads Entitiesread-onlyList Meta Ads entities with optional filtering and cursor-based pagination. All entities are scoped to an ad account. Specify `fields` to control returned data (Meta returns no fields by default). Use `after` cursor for subsequent pages.
meta_manage_budget_scheduleMeta Ads Budget Schedule ManagementCreate or list budget schedules for a campaign. Budget schedules allow temporary budget increases during high-demand periods (e.g., flash sales, holidays). Uses POST /{campaignId}/budget_schedules. **Operations:** - `create` — Create a new budget schedule on a campaign - `list` — List existing budget schedules for a campaign **Create requires (in `data`):** - `budget_value` (integer) — ABSOLUTE: budget amount in cents (e.g., 5000 for $50); MULTIPLIER: the multiplier value applied to the campaign's budget - `budget_value_type` — ABSOLUTE or MULTIPLIER - `time_start` (integer) — Unix timestam…
meta_search_targetingSearch Meta Targeting Optionsread-onlySearch for targeting options (interests, behaviors, demographics) by keyword. **Search types:** - `adinterest` — Search interests by keyword - `adinterestsuggestion` — Get suggestions based on existing interests - `adinterestvalid` — Validate interest IDs - `adTargetingCategory` — Browse targeting categories; pass the category in `targetingClass` - `adgeolocation` — Search geographic locations - `adlocale` — Search locales/languages - Also: `adcountry`, `adzipcode`, `adgeolocationmeta`, `adradiussuggestion`, `adkeyword`, `adeducationschool`, `adeducationmajor`, `adworkemployer`, `adworkpositi…
meta_submit_reportSubmit Meta Async Insights ReportSubmit a Meta Ads async insights report without waiting for completion. Returns a `reportRunId` immediately. Use `meta_check_report_status` to poll for completion, then `meta_download_report` to fetch results. **Non-blocking workflow:** 1. `meta_submit_report` → get `reportRunId` 2. `meta_check_report_status` (repeat every 10s) → wait for "Job Completed" 3. `meta_download_report` with the `reportRunId` → get parsed data **Status values:** "Job Not Started", "Job Started", "Job Running", "Job Completed", "Job Failed" Use `meta_get_insights` instead for a blocking convenience shortcut on sma…
meta_update_entityUpdate Meta Ads Entitycan change or delete dataDescription is built at runtime.
meta_upload_imageUpload Image to Meta AdsUpload an image to Meta Ads Library from a URL. The server downloads the image and uploads it to Meta's ad image library. Returns the image hash which can be used in ad creative payloads. **Image requirements:** - Formats: JPEG, PNG, GIF - Max file size: 30MB - Recommended: 1200x628px (1.91:1 ratio) for link ads - Square 1080x1080px for Stories/Reels **Usage:** The returned imageHash is used in adCreative → object_story_spec → link_data → image_hash
meta_upload_videoUpload Video to Meta AdsDescription is built at runtime.
msads_adjust_bidsAdjust Microsoft Ads BidsBatch adjust bids for Microsoft Advertising keywords or ad groups. Reads the entities first to confirm they exist, then sends a minimal Update carrying only each entity's Id and bid field as a Bid object (`{ "Amount": newBid }`), so no other field is touched. Keyword bids (`Bid`) need `scope.adGroupId`; ad group bids (`CpcBid`, `CpmBid`, `CpvBid`) need `scope.campaignId` — the parent is sent as the request-body AdGroupId / CampaignId. All entities in one call share that parent.
msads_bulk_create_entitiesBulk Create Microsoft Ads EntitiesBatch create multiple Microsoft Advertising entities in a single operation. Items are automatically batched per entity type limits. Each batch is sent as a separate API call. All items in one call belong to one parent, sent as the request-body parent element Microsoft Ads' Add operation requires: campaign and adExtension need `accountId`, adGroup needs `campaignId`, ad and keyword need `adGroupId`. budget, label and audience take no parent.
msads_bulk_update_entitiesBulk Update Microsoft Ads EntitiesBatch update multiple Microsoft Advertising entities. Each item must include the Id field. Only include fields you want to change. All items in one call belong to one parent, sent as the request-body parent element Microsoft Ads' Update operation requires: campaign and adExtension need `accountId`, adGroup needs `campaignId`, ad and keyword need `adGroupId`. budget, label and audience take no parent.
msads_bulk_update_statusBulk Update Microsoft Ads Entity Statuscan change or delete dataBatch update the status of multiple Microsoft Advertising entities. Valid statuses: Active, Paused. Microsoft Advertising's `Deleted` status is "for internal use only" on every one of these entity types; delete an entity with msads_delete_entity. Supported entity types are the ones with a settable Status: campaign, adGroup, ad, keyword. All IDs in one call belong to one parent, sent as the request-body parent element Microsoft Ads' Update operation requires: campaign needs `accountId`, adGroup needs `campaignId`, ad and keyword need `adGroupId`.
msads_check_report_statusCheck Microsoft Ads Report Statusread-onlyCheck the status of a previously submitted Microsoft Advertising report. **Canonical states:** `pending`, `running`, `complete`, `failed`, `cancelled`. Microsoft Ads raw statuses (Pending/InProgress/Success/Error) are mapped; the raw string is returned as `rawStatus`. Returns the canonical state and download URL when the report is ready.
msads_create_entityCreate Microsoft Ads EntityDescription is built at runtime.
msads_create_report_scheduleCreate Microsoft Ads Report ScheduleNOT SUPPORTED — always fails without calling Microsoft Advertising. Nothing is scheduled. The Microsoft Advertising Reporting API v13 has no report schedules: it exposes only GenerateReport/Submit and GenerateReport/Poll, and ReportRequest has no Schedule element. No API call can create, list or delete a report schedule. For a one-off report use msads_submit_report + msads_check_report_status, or msads_get_report.
msads_delete_entityDelete Microsoft Ads Entitycan change or delete dataDelete one or more Microsoft Advertising entities by their IDs. This is a destructive operation — entities will be permanently deleted.
msads_delete_report_scheduleDelete Microsoft Ads Report Schedulecan change or delete dataNOT SUPPORTED — always fails without calling Microsoft Advertising. Nothing is deleted. The Microsoft Advertising Reporting API v13 has no report schedules: it exposes only GenerateReport/Submit and GenerateReport/Poll, so there is no schedule to delete via the API, and msads_create_report_schedule never creates one.
msads_download_reportDownload Microsoft Ads Reportread-onlyDownload and parse a completed Microsoft Advertising report from its download URL. Use after msads_check_report_status returns a downloadUrl. Returns a bounded summary or paged row slice.
msads_duplicate_entityDuplicate Microsoft Ads EntityDescription is built at runtime.
msads_get_ad_detailsGet Microsoft Ads Ad Detailsread-onlyGet the full details of one or more Microsoft Advertising ads — copy, URLs, status, and other fields. Microsoft Advertising does not expose a rendered ad-preview endpoint; this tool returns the stored ad payload via the CampaignManagement /Ads/QueryByIds operation.
msads_get_entityGet Microsoft Ads Entityread-onlyRetrieve a single Microsoft Advertising entity by its ID. Returns full entity details for the specified entity type and ID. Some Microsoft Advertising query operations require parent or account context in addition to the ID (campaign needs accountId, adGroup needs campaignId, etc.).
msads_get_pacing_statusCalculate Campaign Pacing (Client-Side)read-onlyClient-side pacing calculator — does NOT call the Microsoft Advertising API. Computes actual vs expected delivery given caller-supplied budget, spend-to-date, and flight dates. To populate spend, first call `msads_get_report`; to populate budget and flight dates, first call `msads_get_entity` for the campaign.
msads_get_reportGet Microsoft Ads Reportread-onlySubmit a Microsoft Advertising report request, poll until complete, and download results (blocking). Report types: CampaignPerformanceReportRequest, AdGroupPerformanceReportRequest, AdPerformanceReportRequest, KeywordPerformanceReportRequest, SearchQueryPerformanceReportRequest, etc. This is a blocking operation — it will wait for the report to complete before returning.
msads_get_report_breakdownsGet Microsoft Ads Report with Breakdownsread-onlySubmit a Microsoft Advertising report with additional breakdown columns and poll until complete (blocking). Like `msads_get_report` but adds `breakdownColumns` (dimension/segment columns) to segment data by device, network, time-of-day, match type, and more. **Common breakdown columns:** DeviceOS, Network, TopVsOther, MatchType, AccountName, TimePeriod Results will include one row per combination of entity + breakdown dimensions.
msads_get_targeting_optionsGet Microsoft Ads Targeting Options (Static Reference)read-onlyDiscover the valid criterion targeting values to pass to `msads_manage_criterions`. This is the read-side counterpart to the criterion writes. This tool does NOT call the Microsoft Advertising API — the values are fixed enums in the Campaign Management API schema (not a queryable endpoint), so they are served locally. Supported targeting types: - age: AgeRange criterion values - gender: Gender criterion values - device: DeviceType criterion values - day: DayTime criterion day-of-week values (combine with FromHour/ToHour for dayparting) Location targets are NOT enumerable via the REST API — …
msads_import_from_googleImport from Google AdsImport campaigns from Google Ads into Microsoft Advertising using the ImportJobs API. This is a Microsoft Ads-specific feature that allows migrating Google Ads campaigns, ad groups, ads, and keywords into your Microsoft Ads account. Operations: - create: Create a new import job — `{ ImportJobs: [{ Type: "GoogleImportJob", Name, GoogleAccountId, CredentialId }] }`. GoogleAccountId is the numeric Google Ads customer ID (a long, no dashes); Name and CredentialId are required. The CredentialId authorizes Microsoft Advertising to read the Google Ads account and is obtained through the Microsoft A…
msads_list_accountsList Microsoft Ads Accountsread-onlyList accessible Microsoft Advertising accounts for the authenticated user. Uses the Customer Management API SearchAccounts operation. Microsoft Advertising requires at least one predicate for SearchAccounts.
msads_list_entitiesList Microsoft Ads Entitiesread-onlyDescription is built at runtime.
msads_list_report_schedulesList Microsoft Ads Report Schedulesread-onlyList scheduled reports in Microsoft Advertising. Note: The Microsoft Advertising Reporting API v13 has no report schedules — it exposes only GenerateReport/Submit and GenerateReport/Poll — so this tool returns guidance only and never lists anything. If Microsoft Advertising exposed such an endpoint, this tool would return an array of canonical `ReportScheduleSummary` entries (the same cross-platform shape used by `ttd_list_report_schedules` and `cm360_list_report_schedules`), mapped via the shared `fromMsAdsSchedule` normalizer, with the raw Microsoft Advertising envelopes preserved on a sib…
msads_manage_ad_extensionsManage Microsoft Ads Ad Extensionscan change or delete dataManage ad extensions in Microsoft Advertising — associate/disassociate extensions with campaigns or ad groups. Operations: - setAssociations: Link ad extensions to campaigns or ad groups - deleteAssociations: Remove ad extension associations - getAssociations: Query ad extension associations for campaigns or ad groups
msads_manage_criterionsManage Microsoft Ads Targeting Criterionscan change or delete dataManage targeting criterions for Microsoft Advertising campaigns and ad groups. Operations: - add: Add targeting criterions (location, age, gender, device, etc.) - update: Update existing criterions (e.g., bid adjustments) - delete: Remove criterions - getByCampaign: Get criterions for a campaign - getByAdGroup: Get criterions for an ad group
msads_search_targetingList Microsoft Ads Targeting Options (Static Reference)read-onlyStatic reference catalog of the demographic targeting enum values Microsoft Advertising accepts — this tool does NOT call the Microsoft Advertising API. These values are fixed enums in the Campaign Management API schema (not a queryable endpoint), so they are served locally. Supported targeting types: - age: the fixed AgeRange enum values - gender: the fixed Gender enum values - device: the fixed DeviceType enum values For the fuller criterion reference (adds dayparting days), use `msads_get_targeting_options`. Location targets are not enumerable via the REST API — use the Campaign Managemen…
msads_submit_reportSubmit Microsoft Ads ReportSubmit a Microsoft Advertising report request without waiting for completion (non-blocking). Returns a ReportRequestId that can be used with msads_check_report_status to poll for results.
msads_update_entityUpdate Microsoft Ads EntityDescription is built at runtime.
msads_validate_entityValidate Microsoft Ads Entityread-onlyDry-run validate a Microsoft Advertising entity payload without making any API calls. Checks that the entity type is valid and required fields are present. Does NOT call the Microsoft Ads API. Per-entity enum field rules are also exposed as MCP resources. Valid values: see resource `msads-field-rules://{entityType}`.
pinterest_adjust_bidsPinterest Ad Group Bid Adjustmentcan change or delete dataBatch adjust ad group bid prices with safe read-modify-write. Reads current bid prices, applies new values, and reports previous/new amounts. Bid prices are in the advertiser's account currency (e.g. 1.5 = $1.50); the server converts them to Pinterest's integer `bid_in_micro_currency` (x 1,000,000). **Gotchas:** - Writes the ad group's `bid_in_micro_currency`; meaningful for manual bid strategies (`bid_strategy_type` MAX_BID / TARGET_AVG). - Ad groups on AUTOMATIC_BID are bid by Pinterest and may ignore `bid_in_micro_currency`. - Each read + write pair consumes rate limit tokens. - Max 50 ad…
pinterest_bulk_create_entitiesPinterest Bulk Create Entitiescan change or delete dataDescription is built at runtime.
pinterest_bulk_update_entitiesPinterest Bulk Update EntitiesDescription is built at runtime.
pinterest_bulk_update_statusPinterest Bulk Status Updatecan change or delete dataDescription is built at runtime.
pinterest_check_report_statusCheck Pinterest Report Statusread-onlyCheck the status of a previously submitted Pinterest report task. Makes a single API call to check task status. Does not poll or wait. **Canonical states:** `pending`, `running`, `complete`, `failed`. Pinterest raw statuses (IN_PROGRESS/FINISHED/FAILED/EXPIRED/DOES_NOT_EXIST/CANCELLED) are mapped; EXPIRED, DOES_NOT_EXIST and CANCELLED surface as `failed` since the report will never be retrievable. The raw string is returned as `rawStatus`. - If state is `complete` with a `downloadUrl`, use `pinterest_download_report` to fetch results. - If not finished, call this tool again in ~10 seconds.
pinterest_create_entityCreate Pinterest Ads Entitycan change or delete dataDescription is built at runtime.
pinterest_delete_entityDelete or Archive Pinterest Ads Entitiescan change or delete dataDescription is built at runtime.
pinterest_download_reportDownload Pinterest Reportread-onlyDownload and parse a Pinterest report from a download URL. After a report task is DONE (via `pinterest_check_report_status`), use the `downloadUrl` to fetch and parse the CSV data. **Workflow:** 1. `pinterest_submit_report` → get `taskId` 2. `pinterest_check_report_status` → get `downloadUrl` when DONE 3. `pinterest_download_report` with that URL → get a bounded summary or paged row slice **Options:** - `mode: "summary"` (default) returns headers, counts, and a small preview - `mode: "rows"` returns one bounded page of rows - `columns` projects returned rows to selected columns - `offset` a…
pinterest_duplicate_entityDuplicate Pinterest Ads EntityDescription is built at runtime.
pinterest_get_ad_previewGet Pinterest Ad Previewread-onlyGet a preview of how a Pinterest ad will appear to users. Pinterest v5 previews a Pin, not an ad id: this reads the ad to find its `pin_id`, then calls `POST /v5/ad_accounts/{ad_account_id}/ad_previews`. That endpoint needs the `ads:write` scope and creates a preview page; the returned `url` expires after 7 days. No ad, campaign or spend is changed. **Creative types (optional):** SHOPPING, COLLECTION, MAX_VIDEO, MAX_WIDTH_VIDEO_COLLECTION, MAX_WIDTH_REGULAR_COLLECTION
pinterest_get_delivery_estimatePinterest Delivery Estimateread-onlyGet the potential audience size for a Pinterest targeting spec. Calls `POST /v5/ad_accounts/{ad_account_id}/ad_groups/audience_sizing` with `targetingConfig` sent as the ad group `targeting_spec`. Use this to tune targeting before creating ad groups. Returns `audience_size_lower_bound` / `audience_size_upper_bound` (estimated people reachable per month; not a delivery guarantee). **Example targeting spec** (keys are Pinterest `targeting_spec` fields; find ids with `pinterest_search_targeting`): ```json { "AGE_BUCKET": ["18-24", "25-34"], "GENDER": ["female"], "LOCATION": ["US"], "INT…
pinterest_get_entityGet Pinterest Ads Entityread-onlyDescription is built at runtime.
pinterest_get_pacing_statusCalculate Campaign Pacing (Client-Side)read-onlyClient-side pacing calculator — does NOT call the Pinterest API. Computes actual vs expected delivery given caller-supplied budget, spend-to-date, and flight dates. To populate spend, first call `pinterest_get_report`; to populate budget and flight dates, first call `pinterest_get_entity` for the campaign.
pinterest_get_reportGet Pinterest Ads Reportread-onlySubmit and retrieve an async Pinterest Ads performance report. Follows the async polling pattern: submit task → poll until FINISHED → download CSV. This may take 30s–5 minutes depending on the data volume. **Common columns:** IMPRESSION_1, CLICKTHROUGH_1, SPEND_IN_DOLLAR, CTR, CPM_IN_DOLLAR, ECPC_IN_DOLLAR, TOTAL_CONVERSIONS, TOTAL_IMPRESSION **Report types:** CAMPAIGN (default), AD_GROUP, AD (Pinterest level PIN_PROMOTION), KEYWORD, ACCOUNT (Pinterest level ADVERTISER) **Granularity:** DAY (default), TOTAL, HOUR, WEEK, MONTH
pinterest_get_report_breakdownsGet Pinterest Ads Report with Breakdownsread-onlySubmit and retrieve an async Pinterest Ads report broken down by targeting dimensions. Like `pinterest_get_report`, but Pinterest v5 breakdowns are not extra columns: each breakdown is a `targeting_types` value, and the report runs at the `*_TARGETING` variant of the report type (CAMPAIGN_TARGETING, AD_GROUP_TARGETING, PIN_PROMOTION_TARGETING for AD, ADVERTISER_TARGETING for ACCOUNT). KEYWORD reports cannot be broken down. **Breakdowns (up to 5):** KEYWORD, APPTYPE, GENDER, LOCATION, PLACEMENT, COUNTRY, TARGETED_INTEREST, PINNER_INTEREST, AUDIENCE_INCLUDE, GEO, AGE_BUCKET, REGION, MEDIA_TYPE…
pinterest_get_targeting_optionsGet Pinterest Targeting Optionsread-onlyBrowse available Pinterest ad targeting options. Without `targetingType`, returns the targeting types Pinterest v5 accepts. With one, returns every option of that type from `GET /v5/resources/targeting/{targeting_type}`. Use this to discover valid targeting values before creating or updating ad groups. **Targeting types:** APPTYPE, GENDER, LOCALE, AGE_BUCKET, LOCATION, GEO, INTEREST, KEYWORD, AUDIENCE_INCLUDE, AUDIENCE_EXCLUDE
pinterest_list_ad_accountsList Pinterest Advertisersread-onlyList Pinterest advertiser accounts accessible to the authenticated user. Returns advertiser IDs, names, and account status information. Use the ad_account_id from results with other pinterest_* tools. Pinterest paginates with an opaque `bookmark` cursor (default page size 25). When the response's `pagination.nextCursor` is non-null, call again with `bookmark` set to it to fetch the next page.
pinterest_list_entitiesList Pinterest Ads Entitiesread-onlyDescription is built at runtime.
pinterest_search_targetingPinterest Search Targeting Optionsread-onlySearch Pinterest targeting options of one type by keyword, or browse them. Reads `GET /v5/resources/targeting/{targeting_type}`. That endpoint has no search or count parameter, so the keyword match (case-insensitive, on option id and name) and the limit are applied by this server over the full option list. **Targeting types:** APPTYPE, GENDER, LOCALE, AGE_BUCKET, LOCATION, GEO, INTEREST, KEYWORD, AUDIENCE_INCLUDE, AUDIENCE_EXCLUDE Use the returned ids in an ad group's `targeting_spec` (e.g. `LOCATION`, `INTEREST`).
pinterest_submit_reportSubmit Pinterest ReportSubmit a Pinterest Ads report task without waiting for completion. Returns a `taskId` immediately. Use `pinterest_check_report_status` to poll for completion, then `pinterest_download_report` to fetch results. **Non-blocking workflow:** 1. `pinterest_submit_report` → get `taskId` 2. `pinterest_check_report_status` (repeat every 10s) → wait for "FINISHED" 3. `pinterest_download_report` with the `downloadUrl` → get parsed data Use `pinterest_get_report` instead for a blocking convenience shortcut.
pinterest_update_entityUpdate Pinterest Ads EntityDescription is built at runtime.
pinterest_upload_videoUpload Video to Pinterest AdsUpload a video to Pinterest Ads Library from a URL. The server downloads the video and uploads it to Pinterest's ad media library. Polls until processing is complete (up to 10 minutes). **Video requirements:** - Formats: MP4, MOV (H.264 codec recommended) - Max file size: 500MB - Min resolution: 240px on shortest side - Duration: 2 to 60 seconds for standard ads **Usage:** The returned mediaId is used in ad creative payloads.
sa360_check_report_statusCheck SA360 Report Statusread-onlyCheck the status of a previously submitted SA360 async report. Poll this endpoint until `isReportReady` is true, then use the file URLs with `sa360_download_report` to retrieve results. **Workflow:** sa360_submit_report → **sa360_check_report_status** (poll) → sa360_download_report
sa360_download_reportDownload SA360 Reportread-onlyDownload a completed SA360 async report file. Use the download URL from `sa360_check_report_status` (when isReportReady is true). Returns a bounded summary or paged row slice. **Workflow:** sa360_submit_report → sa360_check_report_status → **sa360_download_report**
sa360_gaql_searchSA360 GAQL Searchread-onlyExecute a Search Ads 360 query language query against any SA360 resource. Supports resource fields, segment fields, and metrics with SQL-like syntax (same syntax as GAQL). SA360 is read-only — queries return data across Google Ads, Microsoft Ads, Yahoo Japan, and Baidu engines.
sa360_get_change_historyGet SA360 Change Historyread-onlyUNAVAILABLE on the pinned SA360 Reporting API v0 — every call returns an error explaining why. SA360 change history lives in the `change_event` resource, which Reporting API v0 does not expose (its SearchAds360Row has no change_event or change_status resource). This tool performs no API call. **Alternative:** to find recently modified entities, use `sa360_gaql_search` with the `last_modified_time` field that v0 exposes on campaign, ad_group, ad_group_ad, ad_group_criterion and campaign_criterion (e.g. `SELECT campaign.id, campaign.name, campaign.last_modified_time FROM campaign`). That retur…
sa360_get_entityGet SA360 Entityread-onlyDescription is built at runtime.
sa360_get_insightsSA360 Performance Insightsread-onlyDescription is built at runtime.
sa360_get_insights_breakdownsSA360 Performance Insights with Breakdownsread-onlyDescription is built at runtime.
sa360_get_pacing_statusCalculate Campaign Pacing (Client-Side)read-onlyClient-side pacing calculator — does NOT call the Search Ads 360 API. Computes actual vs expected delivery given caller-supplied budget, spend-to-date, and flight dates. To populate spend, first call `sa360_get_insights`; to populate flight dates, first call `sa360_get_entity` for the campaign. sa360_get_entity returns only the campaign's budget resource name (campaign.campaign_budget); for the amount, query `campaign_budget.amount_micros` with `sa360_gaql_search`.
sa360_insert_conversionsInsert SA360 ConversionsInsert offline conversions into SA360 via the legacy v2 API (DoubleClick Search). Upload offline conversion data to attribute conversions to SA360-tracked clicks. Each conversion needs a clickId, an advertiser-chosen conversionId, a conversionTimestamp, and the Floodlight activity (segmentationId or segmentationName). **Important:** - Uses the legacy v2 API endpoint, not the Reporting API - conversionId is chosen by you: unique within the request, and (conversionId, conversionTimestamp) unique within the advertiser. Keep it — updates identify the conversion by it - Maximum 200 conversions pe…
sa360_list_accountsList SA360 Accountsread-onlyList all SA360 customer accounts accessible to the authenticated user. Returns resource names in the format `customers/{customerId}`. Use the customer IDs from this list for all other SA360 tools.
sa360_list_custom_columnsList SA360 Custom Columnsread-onlyList custom columns defined for an SA360 customer account. Custom columns are user-defined metrics/dimensions that can be referenced in SA360 queries. Returns column metadata including ID, name, description, and value type.
sa360_list_entitiesList SA360 Entitiesread-onlyDescription is built at runtime.
sa360_list_report_columnsList SA360 Report Columnsread-onlyList SA360 Reporting API fields for a given resource (campaign, ad_group, ad_group_ad, etc). Uses the live `searchAds360Fields` endpoint when credentials are available; falls back to a static catalog when the live call fails so callers always get a usable discovery surface. **resource:** one of `campaign`, `ad_group`, `ad_group_ad`, `ad_group_criterion`, `campaign_budget`, `conversion`, `conversion_action`, `customer`, or a top-level prefix like `metrics` or `segments`. When omitted, the tool returns the full fallback catalog grouping. **includeMetrics / includeSegments:** when true (defaul…
sa360_search_fieldsSA360 Field Discoveryread-onlyDiscover available fields, resources, and metrics in the SA360 API. Uses the searchAds360Fields endpoint to explore the API schema. Query with a field name or resource name to find available fields, their types, and whether they can be selected, filtered, or sorted. **Example queries:** - `SELECT name, category, data_type, selectable, filterable, sortable FROM searchAds360Fields WHERE name = 'campaign.id'` - `SELECT name, category FROM searchAds360Fields WHERE name LIKE 'campaign.%'` - `SELECT name FROM searchAds360Fields WHERE name LIKE 'metrics.%'`
sa360_submit_reportSubmit SA360 Async ReportSubmit an asynchronous report request via the SA360 legacy v2 API. Returns a report ID that can be used with `sa360_check_report_status` to poll for completion, then `sa360_download_report` to retrieve results. **Report types:** campaign, adGroup, keyword, ad, advertiser, productGroup, floodlightActivity, productLeadAndCrossSell **Workflow:** submit_report → check_report_status (poll) → download_report
sa360_update_conversionsUpdate SA360 ConversionsUpdate existing conversions in SA360 via the legacy v2 API (DoubleClick Search). Modify previously uploaded offline conversion data. Each conversion must be identified by its conversionId and conversionTimestamp. **Important:** - Uses the legacy v2 API endpoint (PUT), not the Reporting API - Maximum 200 conversions per request - conversionId is required for updates: the advertiser-assigned ID the conversion was inserted with (you chose it at insert time; SA360 does not generate it) - conversionTimestamp must match the original value exactly
sa360_validate_conversionValidate SA360 Conversion Payloadread-onlyValidate a conversion payload against SA360 requirements without calling the API. Checks required fields, data formats, and common configuration mistakes for both insert and update operations. The SA360 API may still reject payloads for business-rule reasons. **Validates:** - Click ID presence (clickId required) - conversionId presence (advertiser-provided; required for insert and update) - conversionTimestamp format (epoch milliseconds) - revenueMicros format (numeric string) - segmentationType presence - Floodlight activity identification (segmentationId or segmentationName) - state enum v…
snapchat_adjust_bidsSnapchat Ad Group Bid Adjustmentcan change or delete dataBatch adjust ad squad (ad group) bids with safe read-modify-write. Reads each ad squad's current `bid_micro`, writes the new bid as `bid_micro`, and reports previous/new amounts. `bidPrice` is in the ad account's currency; the tool converts it to micro-currency (`bidPrice` × 1,000,000). **Gotchas:** - `bid_micro` is the bid for ad squads whose `bid_strategy` is LOWEST_COST_WITH_MAX_BID or TARGET_COST. An AUTO_BID ad squad may ignore it; change `bid_strategy` with snapchat_update_entity first. - Each read + write pair consumes rate limit tokens. - Max 50 adjustments per call.
snapchat_bulk_create_entitiesSnapchat Bulk Create Entitiescan change or delete dataDescription is built at runtime.
snapchat_bulk_update_entitiesSnapchat Bulk Update EntitiesDescription is built at runtime.
snapchat_bulk_update_statusSnapchat Bulk Status Updatecan change or delete dataDescription is built at runtime.
snapchat_check_report_statusCheck Snapchat Report Statusread-onlyCheck the status of a previously submitted Snapchat report task. Makes a single API call to check task status. Does not poll or wait. **Canonical states:** `pending`, `running`, `complete`, `failed`. Snapchat's `async_status` is mapped (STARTED or RUNNING → `running`, COMPLETED → `complete`, FAILED → `failed`, anything else → `pending`); the value Snapchat returned is passed through unchanged as `rawStatus`. - If state is `complete` with a `downloadUrl`, use `snapchat_download_report` to fetch results. - If not done, call this tool again in ~10 seconds.
snapchat_create_entityCreate Snapchat Ads Entitycan change or delete dataDescription is built at runtime.
snapchat_delete_entityDelete Snapchat Ads Entitycan change or delete dataDescription is built at runtime.
snapchat_download_reportDownload Snapchat Reportread-onlyDownload and parse a Snapchat report from a download URL. After a report task is `complete` (via `snapchat_check_report_status`), use the `downloadUrl` to fetch and parse the CSV data. **Workflow:** 1. `snapchat_submit_report` → get `taskId` 2. `snapchat_check_report_status` → get `downloadUrl` when `complete` 3. `snapchat_download_report` with that URL → get a bounded summary or paged row slice **Options:** - `mode: "summary"` (default) returns headers, counts, and a small preview - `mode: "rows"` returns one bounded page of rows - `columns` projects returned rows to selected columns - `of…
snapchat_duplicate_entityDuplicate Snapchat Ads EntityDescription is built at runtime.
snapchat_get_ad_previewGet Snapchat Creative Previewread-onlyGet a preview of how a Snapchat creative will appear to users. Returns the documented creative preview payload from Snapchat's `/v1/creatives/{creative_id}/creative_preview` endpoint.
snapchat_get_audience_estimateSnapchat Audience Size Estimateread-onlyGet an estimated audience size for a Snapchat targeting configuration. Use this to validate and tune targeting before creating ad groups. Backed by Snapchat's documented `audience_size_v2` endpoint. **Example ad squad spec:** ```json { "name": "App Install Prospecting", "status": "ACTIVE", "type": "SNAP_ADS", "targeting": { "geos": [{ "country_code": "us" }] }, "placement_v2": { "config": "AUTOMATIC", "platforms": ["SNAPCHAT"] }, "billing_event": "IMPRESSION", "bid_strategy": "LOWEST_COST_WITH_MAX_BID", "bid_micro": 6000000, "daily_budget_micro": 50000000, "optimiza…
snapchat_get_entityGet Snapchat Ads Entityread-onlyDescription is built at runtime.
snapchat_get_pacing_statusCalculate Campaign Pacing (Client-Side)read-onlyClient-side pacing calculator — does NOT call the Snapchat API. Computes actual vs expected delivery given caller-supplied budget, spend-to-date, and flight dates. To populate spend, first call `snapchat_get_report`; to populate budget and flight dates, first call `snapchat_get_entity` for the campaign.
snapchat_get_reportGet Snapchat Ads Reportread-onlySubmit and retrieve an async Snapchat Ads performance report. Follows the async polling pattern: submit task → poll until COMPLETE → download CSV. This may take 30s–5 minutes depending on the data volume. **Common fields:** impressions, swipes, spend, video_views, conversion_purchases, reach, frequency, cpm, cpsu **Granularity:** TOTAL, DAY (default), HOUR, LIFETIME **start_time/end_time:** ISO 8601 format (e.g. 2024-01-01T00:00:00Z) **Units:** `spend` is micro-currency (1,000,000 = 1.00 of the account currency)
snapchat_get_report_breakdownsGet Snapchat Ads Report with Breakdownsread-onlySubmit and retrieve an async Snapchat Ads report split by an insight-level dimension (geo, demographic, device or interest). Like `snapchat_get_report` but sends Snapchat's `report_dimension` parameter so each row is broken out by that dimension. **reportDimension values:** country, region, dma, country,os (geo); gender, age, age,gender (demographic); os, os,country, make (device); lifestyle_category (interest). Snapchat allows one dimension at a time, except age with gender. **Limits (from Snapchat's docs):** - `HOUR` granularity cannot be combined with a dimension; use DAY, TOTAL or LIFET…
snapchat_get_targeting_optionsGet Snapchat Targeting Optionsread-onlyBrowse available Snapchat targeting options from documented targeting endpoints. Use this to discover valid country support, geo, and interest values before creating or updating ad groups. **Supported targeting types:** country_support, geo_country, geo_region, geo_metro, geo_postal_code, interests_slc, interests_vac, interests_shp Interest and postal-code endpoints page — pass the `cursor` from `pagination.nextCursor` to fetch the next page.
snapchat_list_ad_accountsList Snapchat Advertisersread-onlyList Snapchat advertiser accounts accessible to the authenticated user. Returns advertiser IDs, names, and account status information. Use the ad_account_id from results with other snapchat_* tools. **Requires:** `X-Snapchat-Org-Id` header at session connect (or `SNAPCHAT_ORG_ID` env var for stdio mode). The organization ID scopes which ad accounts are returned. Snapchat paginates with an opaque `cursor`. When the response's `pagination.nextCursor` is non-null, call again with `cursor` set to it to fetch the next page.
snapchat_list_entitiesList Snapchat Ads Entitiesread-onlyDescription is built at runtime.
snapchat_search_targetingSnapchat Search Targeting Optionsread-onlySearch documented Snapchat targeting options by keyword. **Common targeting types:** - geo_country - geo_region - geo_metro - geo_postal_code - interests_slc - interests_vac - interests_shp This tool fetches a documented targeting endpoint and filters the results client-side. With a `query`, it follows the endpoint's pagination (up to 5 pages) until `limit` matches are found. `searchedAllPages: false` means the scan stopped before the last page, so an empty or short result is not proof that no option matches.
snapchat_submit_reportSubmit Snapchat ReportSubmit a Snapchat Ads report task without waiting for completion. Returns a `taskId` immediately. This is Snapchat's `report_run_id`. Use `snapchat_check_report_status` to poll for completion, then `snapchat_download_report` to fetch results. **Non-blocking workflow:** 1. `snapchat_submit_report` → get `taskId` 2. `snapchat_check_report_status` (repeat every 10s) → wait for "COMPLETE" 3. `snapchat_download_report` with the `downloadUrl` → get parsed data Use `snapchat_get_report` instead for a blocking convenience shortcut.
snapchat_update_entityUpdate Snapchat Ads EntityDescription is built at runtime.
snapchat_upload_imageUpload Image to Snapchat AdsUpload an image to Snapchat Ads Library from a URL. The server downloads the image and uploads it to Snapchat's media library. Returns the mediaId for use in creative payloads. **Image requirements:** - Formats: JPEG, PNG - Max file size: 5MB - Recommended dimensions: 1080x1920px (9:16 vertical), 1080x1080px (1:1) **Usage:** The returned mediaId is used in creative payloads.
snapchat_upload_videoUpload Video to Snapchat AdsUpload a video to Snapchat Ads Library from a URL. The server downloads the video and uploads it to Snapchat's media library. Polls until processing is complete (up to 10 minutes). **Video requirements:** - Formats: MP4, MOV (H.264 codec recommended) - Max file size: 1GB - Min resolution: 540x960px (9:16), 640x640px (1:1) - Duration: 3 to 180 seconds **Usage:** The returned mediaId is used in creative payloads.
test_elicitationTest Elicitationread-onlyRequests user input via MCP elicitation. Used by MCP conformance tests.
test_elicitation_sep1034_defaultsTest Elicitation SEP-1034 Defaultsread-onlyTests elicitation with default values for all primitive types. Used by MCP conformance tests.
test_elicitation_sep1330_enumsTest Elicitation SEP-1330 Enumsread-onlyTests all 5 enum variants in elicitation schemas. Used by MCP conformance tests.
test_simple_textTest Simple Textread-onlyReturns a fixed text response. Used by MCP conformance tests.
test_tool_with_loggingTest Tool With Loggingread-onlySends structured log notifications during execution. Used by MCP conformance tests.
tiktok_adjust_bidsTikTok Ad Group Bid Adjustmentcan change or delete dataBatch adjust ad group bid prices with safe read-modify-write. Reads current bid prices, applies new values, and reports previous/new amounts. Bid prices are in the advertiser's account currency. **Gotchas:** - Only applies to ad groups with manual bidding (bid_price field). - Ad groups using automated bidding strategies may ignore bid_price. - Each read + write pair consumes rate limit tokens. - Max 50 adjustments per call.
tiktok_bulk_create_entitiesTikTok Bulk Create Entitiescan change or delete dataDescription is built at runtime.
tiktok_bulk_update_entitiesTikTok Bulk Update EntitiesDescription is built at runtime.
tiktok_bulk_update_statusTikTok Bulk Status Updatecan change or delete dataDescription is built at runtime.
tiktok_check_report_statusCheck TikTok Report Statusread-onlyCheck the status of a previously submitted TikTok report task. Makes a single API call to check task status. Does not poll or wait. **Canonical states:** `pending`, `running`, `complete`, `failed`. TikTok's documented task statuses are mapped: QUEUING → pending, PROCESSING → running, SUCCESS → complete, FAILED and CANCELED → failed (TikTok's failure reason, when it gives one, is in `errors`). The raw string is returned as `rawStatus`. Any other raw status is reported as `failed` with an explanation in `errors`, never as pending. - When `complete`, call `tiktok_download_report` with the same …
tiktok_create_entityCreate TikTok Ads Entitycan change or delete dataDescription is built at runtime.
tiktok_delete_entityDelete TikTok Ads Entitycan change or delete dataDescription is built at runtime.
tiktok_download_reportDownload TikTok Reportread-onlyDownload and parse the output of a finished TikTok async report task. Give the `taskId` from `tiktok_submit_report`. TikTok issues a signed download URL for the task (valid for one hour; this tool asks for a fresh one each call) and the CSV is fetched and parsed. **Workflow:** 1. `tiktok_submit_report` → get `taskId` 2. `tiktok_check_report_status` → wait for state `complete` 3. `tiktok_download_report` with that `taskId` → get a bounded summary or paged row slice Fails if the task is not finished, or was not created by `tiktok_submit_report` (other output formats are not supported). **Opt…
tiktok_duplicate_entityDuplicate TikTok Ads EntityDuplicate a TikTok Ads entity — NOT AVAILABLE on TikTok. TikTok Marketing API v1.3 has no copy/duplicate endpoint for campaigns, ad groups or ads, so every call (including `dry_run`) returns an error and nothing is created. To copy an entity, read it with `tiktok_get_entity` and create a new one with `tiktok_create_entity` (set `operation_status: "DISABLE"` so it does not start delivering).
tiktok_get_ad_previewGet TikTok Ad Previewread-onlyGet a preview of a TikTok ad — NOT AVAILABLE on TikTok. TikTok Marketing API v1.3 has no ad-preview endpoint, so this tool always returns an error. Inspect the ad's creative fields with `tiktok_get_entity` (entityType "ad") instead.
tiktok_get_audience_estimateTikTok Audience Size Estimateread-onlyGet an estimated audience size for a TikTok targeting configuration. Use this to validate and tune targeting before creating ad groups. Returns estimated reach and audience size ranges. **Example targeting config:** ```json { "age": ["AGE_18_24", "AGE_25_34"], "gender": ["GENDER_FEMALE"], "location_ids": ["JP"], "interest_category_ids": ["123456789"] } ```
tiktok_get_entityGet TikTok Ads Entityread-onlyDescription is built at runtime.
tiktok_get_pacing_statusCalculate Campaign Pacing (Client-Side)read-onlyClient-side pacing calculator — does NOT call the TikTok API. Computes actual vs expected delivery given caller-supplied budget, spend-to-date, and flight dates. To populate spend, first call `tiktok_get_report`; to populate budget and flight dates, call `tiktok_get_entity` for the campaign (budget) and for its ad groups (flight dates: TikTok schedules live on ad groups as `schedule_start_time` / `schedule_end_time`; campaigns have none).
tiktok_get_reportGet TikTok Ads Reportread-onlyRun a TikTok Ads performance report and return the rows. Uses TikTok's synchronous `report/integrated/get/` endpoint (paged, up to 1,000 rows per page), so rows come back in the same call — no task to poll. **Common dimensions:** campaign_id, adgroup_id, ad_id, stat_time_day, stat_time_hour, country_code **Common metrics:** spend, impressions, clicks, ctr, cpm, cpc, conversions, conversion_rate, reach, frequency **Report types:** BASIC (default), AUDIENCE, PLAYABLE_MATERIAL
tiktok_get_report_breakdownsGet TikTok Ads Report with Breakdownsread-onlyRun a TikTok Ads report with dimensional breakdowns and return the rows (synchronous `report/integrated/get/`). Like `tiktok_get_report` but adds breakdown dimensions for more granular data. **Common breakdown dimensions:** country_code, platform, gender, age, interest_category, placement Results are broken down by each combination of base dimensions + breakdown dimensions.
tiktok_get_targeting_optionsGet TikTok Targeting Optionsread-onlyBrowse available TikTok targeting metadata using official `/tool/*` endpoints. Use this to discover valid targeting values before creating or updating ad groups. This tool dispatches to the documented TikTok list endpoints instead of the older generic targeting routes. **Supported option types:** ACTION_CATEGORY, CARRIER, DEVICE_MODEL, INTEREST_CATEGORY, INTEREST_KEYWORD, ISP, LANGUAGE, LOCATION
tiktok_list_advertisersList TikTok Advertisersread-onlyGet account info for the TikTok advertiser this session is bound to. Calls TikTok's `advertiser/info/` endpoint for the session's advertiser ID and returns its name, status, currency, timezone and related account details. TikTok's `advertiser/info/` returns info only for the advertiser IDs it is given; it does not enumerate every advertiser the token can access. Each session is bound to one advertiser (`X-TikTok-Advertiser-Id` / `TIKTOK_ADVERTISER_ID`).
tiktok_list_entitiesList TikTok Ads Entitiesread-onlyDescription is built at runtime.
tiktok_search_targetingTikTok Search Targeting Optionsread-onlySearch TikTok location targeting tags (countries, regions, cities, DMAs, zip/postal codes) using TikTok's `/tool/targeting/search/` endpoint. TikTok requires `placements` and `objectiveType` for every search. `searchType` selects the mode: - `FUZZY_SEARCH` (default) — one keyword, up to 100 results, any country - `BATCH_REGION_SEARCH` — up to 1,000 keywords, US/CA locations (set `regionCodes`) - `BATCH_ZIPCODE_SEARCH` — up to 1,000 exact zip/postal codes, US/CA (set `regionCodes`) For ISP tags, languages, carriers, interest categories and device models use `tiktok_get_targeting_options`.
tiktok_submit_reportSubmit TikTok ReportSubmit a TikTok Ads report task without waiting for completion. Returns a `taskId` immediately. Use `tiktok_check_report_status` to poll for completion, then `tiktok_download_report` to fetch results. **Non-blocking workflow:** 1. `tiktok_submit_report` → get `taskId` 2. `tiktok_check_report_status` (repeat every 10s) → wait for state `complete` (TikTok status SUCCESS; QUEUING and PROCESSING are in progress) 3. `tiktok_download_report` with the same `taskId` → TikTok issues a signed download URL and the CSV is fetched and parsed The task is created with output_format CSV_DOWNLOAD and untran…
tiktok_update_entityUpdate TikTok Ads EntityDescription is built at runtime.
tiktok_upload_imageUpload Image to TikTok AdsUpload an image to TikTok Ads Library from a URL. The server downloads the image and uploads it to TikTok's ad image library. Returns the imageId for use in ad creatives. **Image requirements:** - Formats: JPEG, PNG - Max file size: 100KB (for feed ads), 500KB (for other placements) - Recommended dimensions: 1200x628px, 1080x1080px, 720x1280px **Usage:** The returned imageId is used in ad creative payloads.
tiktok_upload_videoUpload Video to TikTok AdsUpload a video to TikTok Ads Library from a URL. The server downloads the video and uploads it to TikTok's ad video library. Polls until binding is complete (up to 10 minutes). **Video requirements:** - Formats: MP4, MOV, AVI (H.264/H.265 codec recommended) - Max file size: 500MB - Min resolution: 540x960px (9:16), 960x540px (16:9), or 640x640px (1:1) - Duration: 5 to 60 seconds for In-Feed ads **Usage:** The returned videoId is used in ad creative payloads.
tiktok_validate_entityTikTok Ads Entity Validation (Client-Side)read-onlyDescription is built at runtime.
ttd_adjust_bidsAdjust TTD Ad Group Bidscan change or delete dataBatch adjust bid CPMs for multiple The Trade Desk ad groups. For each ad group, the tool sends one partial `PUT /v3/adgroup` containing only the ad group ID and the changed `RTBAttributes.BaseBidCPM` / `MaxBidCPM`. TTD updates are partial — fields not sent are left unchanged — so no other ad group setting is touched. **Currency:** each bid is sent as `{ Amount, CurrencyCode }`. When `currencyCode` is omitted, the tool reads the ad group and reuses the currency of its current bid (falling back to the advertiser's currency); if neither can be found, that adjustment fails rather than guessing. …
ttd_archive_entitiesArchive TTD Entitiescan change or delete dataDescription is built at runtime.
ttd_bulk_create_entitiesBulk Create TTD Entitiescan change or delete dataDescription is built at runtime.
ttd_bulk_manage_bid_listsTTD Bulk Manage Bid ListsBatch get or batch update multiple TTD bid lists via GraphQL. TTD's GraphQL has no native multi-id bid-list query or multi-input update mutation — this tool fans out individual `bidList(id:)` queries and `bidListUpdate(input:)` mutations in parallel (concurrency=5) and aggregates the per-item results. ### Operations - **batch_get** — Retrieve up to 50 bid lists by their IDs - **batch_update** — Update up to 50 bid lists; each item must be a complete `BidListUpdateInput` ### Notes - TTD's `/v3/bidlist/batch*` REST endpoints are deprecated; this tool uses GraphQL. - Per-item failures are surf…
ttd_bulk_update_entitiesBulk Update TTD Entitiescan change or delete dataDescription is built at runtime.
ttd_bulk_update_statusBulk Update TTD Entity Statuscan change or delete dataDescription is built at runtime.
ttd_cancel_report_executionCancel TTD Report Execution (GraphQL)can change or delete dataCancel an in-progress TTD report execution via GraphQL (`myReportsReportExecutionCancel`). Use this to stop a report that is currently generating. Only reports in the `IN_PROGRESS` state can be cancelled. **Important distinctions:** - This tool cancels a **report execution** (an in-progress run), not a report schedule - The `executionId` is distinct from a schedule ID — use `ttd_list_report_schedules` or execution history to find execution IDs - To delete a schedule entirely, use `ttd_delete_report_schedule` instead - Cancelled report executions remain accessible; only the generation process…
ttd_check_report_statusCheck TTD Report Statusread-onlyCheck the status of a previously submitted TTD report. Makes a single API call to check execution state. Does not poll or wait. **States** (canonical): `pending`, `running`, `complete`, `failed`, `cancelled` - If `complete` with a `downloadUrl`, use `ttd_download_report` to fetch results. - If not complete, call this tool again in 5-10 seconds.
ttd_create_entityCreate TTD Entitycan change or delete dataDescription is built at runtime.
ttd_create_report_scheduleCreate TTD Report ScheduleCreate a named report schedule (Once, Daily, Weekly, or Monthly). This is a legacy-friendly REST wrapper for the MyReports schedule endpoint. Use this when you already know the REST payload shape or need compatibility with older callers. Report templates and report schedules are distinct in TTD: - A **template** defines report structure - A **schedule** controls when a template runs For the docs-aligned GraphQL workflow, prefer: - `ttd_create_report_template` - `ttd_create_template_schedule` - `ttd_get_report_executions` For a one-off blocking report use `ttd_get_report`. For a one-off non…
ttd_create_report_templateCreate TTD Report Template (GraphQL)Create a user-defined report template via TTD GraphQL (`myReportsTemplateCreate`). A report template defines the structure of a My Reports report — which report types to use and which columns/metrics to include. Templates can have up to 29 tabs (resultSets). **Workflow:** 1. Use `ttd_list_report_types` to discover available report type IDs 2. Use `ttd_get_report_type_schema` to get field and metric IDs for a report type 3. Call this tool to create the template 4. Use the returned template ID to schedule reports (`ttd_create_template_schedule`) Use `ttd_list_report_templates` to see existing…
ttd_create_template_scheduleCreate TTD Template Report Schedule (GraphQL)Create a report schedule from a template ID via TTD GraphQL (`myReportsTemplateScheduleCreate`). This is the step after `ttd_create_report_template` — it links an existing report template to a schedule that controls when and how often the report runs. **Workflow:** 1. Use `ttd_create_report_template` to create a template defining report structure 2. Call this tool with the returned template ID to schedule execution 3. Use `ttd_get_report_executions` to check execution status and retrieve download links when complete **Tips:** - Use `frequency: SINGLE_RUN` for one-time on-demand reports - `r…
ttd_delete_entityDelete TTD Entitycan change or delete dataDescription is built at runtime.
ttd_delete_report_scheduleDelete TTD Report Schedulecan change or delete dataPermanently delete a TTD report schedule. **This action is irreversible.** The schedule and any pending executions will be removed. Active or completed report executions are not affected — only the schedule definition is deleted. Use `ttd_list_report_schedules` to find the schedule ID.
ttd_download_reportDownload TTD Reportread-onlyDownload and parse a TTD report from a download URL. After generating a report with `ttd_get_report`, use the returned `downloadUrl` to fetch and parse the CSV data. TTD-hosted report URLs require server-side `TTD-Auth`, so this tool fetches the report and returns a bounded view that stays within MCP response-size limits. **Workflow:** 1. Run `ttd_get_report` → get `downloadUrl` 2. Run `ttd_download_report` with that URL → get a summary preview or a paged row slice **Options:** - `mode: "summary"` (default) returns headers, counts, and a small preview - `mode: "rows"` returns one bounded pa…
ttd_duplicate_entityDuplicate TTD EntityDescription is built at runtime.
ttd_execute_entity_reportExecute TTD Entity Report (GraphQL)Execute an immediate dimension-specific report for an entity via TTD GraphQL. Returns a **direct download URL** with no polling required — unlike the MyReports async flow. These are pre-built report types tied to specific entities (ad group, campaign, or advertiser). **Report types** vary by entity. Use `ttd_get_entity_report_types` to discover available types for a given entity and Kokai tile (e.g. AD_GROUP, SITE, GEO, DEVICE_TYPE, AD_FORMAT). **vs. ttd_get_report:** This tool uses the GraphQL API and returns immediately. `ttd_get_report` uses the MyReports REST API with fully custom dimen…
ttd_get_ad_previewGet TTD Creative Previewread-onlyGet a preview URL for a TTD creative. Fetches the creative entity and extracts its preview URL. Returns creative metadata including name, format, and click URL. **Usage:** Use creativeId from ttd_list_entities or ttd_create_entity.
ttd_get_contextTTD Get Contextread-onlyReturns the TTD partner IDs and names accessible with the current credentials. **Call this tool first** when you do not yet know a `partnerId`. The response lists every partner the authenticated account can access — pass the `id` field as `partnerId` to `ttd_list_entities` (entityType: "advertiser") to start exploring the account hierarchy. This is a zero-argument cold-start tool. It requires no prior knowledge of the account. ### Typical workflow 1. `ttd_get_context` → get partner IDs 2. `ttd_list_entities` (entityType: advertiser, partnerId: "...") → list advertisers 3. `ttd_list_entities…
ttd_get_entityGet TTD Entityread-onlyDescription is built at runtime.
ttd_get_entity_report_typesGet TTD Entity Report Types (GraphQL)read-onlyDiscover available dimension-specific report types for a TTD entity. Returns which report types are available for a given entity and Kokai tile, and whether each report can be downloaded immediately or requires scheduling. **tile** is the Kokai tile abbreviation shown in the TTD programmatic table UI (e.g. `Af`, `Ag`, `Ca` — the examples TTD's own sample gives). Tiles are programmatic-table tabs, not entity types, and TTD's sample does not say what each abbreviation stands for: copy the abbreviation from the UI rather than inferring it from the entity you are reporting on. Use the returned …
ttd_get_pacing_statusCalculate Campaign Pacing (Client-Side)read-onlyClient-side pacing calculator — does NOT call The Trade Desk's API. Computes actual vs expected delivery given caller-supplied budget, spend-to-date, and flight dates. To populate spend, first call `ttd_get_report`; to populate budget and flight dates, first call `ttd_get_entity` for the campaign.
ttd_get_reportGet TTD Reportread-onlyGenerate and retrieve a report from The Trade Desk. Uses the TTD MyReports API to create a report schedule, poll for execution, and return results. This is an async operation that may take several seconds to complete. Provide a report template ID (`reportTemplateId`), a date range, and the advertiser IDs to report on. The advertiser IDs are required: TTD's execution-status query is advertiser-scoped, so they are what polling uses. Dimensions and metrics come from the template.
ttd_get_report_executionsGet TTD Report Schedule Executions (GraphQL)read-onlyPrimary tool for checking TTD report schedule status and retrieving download links via GraphQL. Use this after `ttd_create_template_schedule` or `ttd_rerun_report_schedule` to check whether a report is ready and get the download link. **Two modes:** - **Single schedule** (provide `scheduleId`): Uses `myReportsReportSchedule` — fastest when you know the schedule ID. Returns status, filters, and all executions. - **List mode** (omit `scheduleId`): Uses `myReportsReportSchedules` — supports pagination and optional filtering by recent execution activity via `lastStatusChangeAfter`. **Download l…
ttd_get_report_scheduleGet TTD Report Scheduleread-onlyGet full details for a specific TTD report schedule by ID. Returns the complete schedule configuration including dimensions, metrics, filters, schedule type, and date range settings. Use `ttd_list_report_schedules` to discover schedule IDs.
ttd_get_report_templateGet TTD Report Template Structure (GraphQL)read-onlyRetrieve the full structure of a report template via TTD GraphQL (`derivedReportTemplate`). Returns all resultSets (tabs), fields, metrics, and conversion metrics with their column ordering and pivot settings. Note: the API does not return column IDs or names — only `columnOrder`, `includedInPivot`, and `isOverlapColumn`. Use `ttd_get_report_type_schema` to map column positions back to field/metric definitions. Use this before `ttd_update_report_template` to see the current structure and re-include columns you want to keep. Use `ttd_list_report_templates` to find the template ID.
ttd_get_report_type_schemaGet TTD Report Type Schema (GraphQL)read-onlyGet the full field and metric schema for a TTD report type. Returns all available dimension fields and metrics with their IDs and names. Use these IDs when building report templates with `ttd_create_report_template` or `ttd_update_report_template`. Auto-paginates to return ALL fields and metrics (the GraphQL API paginates by default). Use `ttd_list_report_types` first to discover available report type IDs.
ttd_graphql_bulk_jobTTD GraphQL Bulk Job Statusread-onlyPoll a TTD GraphQL bulk job (from `ttd_graphql_query_bulk` or `ttd_graphql_mutation_bulk`) for its status, error diagnostics, and result. Returns `terminal` and `outcome` so you know when to stop polling. For a bulk **mutation** job, `mutationGqlErrors` lists the inputs that failed, each with its `index` in the submitted `inputs`. For a bulk **query** job, failures are in `queryGqlErrors`. `runtimeErrors` carries errors from running the job itself. ### Status values TTD's bulk-job status has these values: - **QUEUED** — waiting to start. Keep polling. - **IN_PROGRESS** — running. Keep pollin…
ttd_graphql_cancel_bulk_jobTTD GraphQL Cancel Bulk Jobcan change or delete dataCancel a running bulk GraphQL **query** job. ### ⚠️ Mutation jobs are NON-CANCELABLE This tool only works for bulk query jobs submitted via `ttd_graphql_query_bulk`. Bulk mutation jobs submitted via `ttd_graphql_mutation_bulk` cannot be cancelled — the API will return an error if you attempt to cancel one.
ttd_graphql_mutation_bulkTTD GraphQL Mutation Bulkcan change or delete dataDescription is built at runtime.
ttd_graphql_queryTTD GraphQL QueryExecute a GraphQL query or mutation against The Trade Desk's GraphQL API. This is a passthrough tool that accepts any valid TTD GraphQL query/mutation, enabling: - **Deep nested queries** — fetch advertiser → campaigns → ad groups → audiences in one call - **Rich entity model** — access fields not available in REST (audience uniques, decision scores, etc.) - **Mutations** — create/update entities with the full TTD GraphQL schema ### Example Query ```graphql query Advertiser($id: ID!) { advertiser(id: $id) { name totalCampaignChannelCount vettingStatus } } ``` Refer to the TT…
ttd_graphql_query_bulkTTD GraphQL Query BulkSubmit a bulk GraphQL query job to The Trade Desk (`createQueryBulk`). Runs a GraphQL query as an async bulk job and returns a job ID. Poll the job with `ttd_graphql_bulk_job` until it reports `terminal: true`. Jobs can end SUCCESS, PARTIAL_SUCCESS, FAILURE or CANCELLED. **Omit `variables`** to submit exactly what TTD documents: `createQueryBulk(input: { query })`, with any IDs written into the query itself. TTD's published samples and its Workflows SDKs (Python, Go, Java) all submit a query this way. > **Unverified:** with `variables`, this tool also sends them as `queryVariables` (one JSO…
ttd_list_entitiesList TTD Entitiesread-onlyList The Trade Desk entities with optional filtering and pagination. Required scope IDs: advertiser (partnerId), campaign/adGroup/creative/conversionTracker (advertiserId). For adGroup, optionally pass campaignId to filter to a single campaign. See the entity-hierarchy://all resource for details. **Note:** Ads (ad group + creative associations), deals, bid lists, and publisher lists (site lists) have no REST query endpoints in TTD. Use the ttd_graphql_query tool for these entities.
ttd_list_report_schedulesList TTD Report Schedulesread-onlyList report schedules (saved recurring or one-time reports). Returns all report schedules accessible to the authenticated partner. Filter by advertiser IDs to narrow results. Use `ttd_get_report_schedule` to fetch full details for a specific schedule. Use `ttd_delete_report_schedule` to remove a schedule.
ttd_list_report_templatesList TTD Report Templates (GraphQL)read-onlyList report template headers from TTD MyReports via GraphQL (`myReportsReportTemplates`). This is the docs-aligned way to discover template IDs before retrieving structure with `ttd_get_report_template` or scheduling runs with `ttd_create_template_schedule`. **Note:** If you receive an `UNAUTHORIZED_FIELD_OR_TYPE` error, your TTD account does not have MyReports API access enabled. Contact your TTD Account Manager or Technical Account Manager (TAM) to request this entitlement. Use `GET /v3/myreports/reporttemplate/facets` or `POST /v3/myreports/reporttemplateheader/query` once enabled.
ttd_list_report_typesList TTD Report Types (GraphQL)read-onlyList all available report types from the TTD GraphQL API. Returns the ID and name of each report type. Use the returned report type ID with `ttd_get_report_type_schema` to discover the available fields and metrics for that report type, then use those IDs when building a report template with `ttd_create_report_template`.
ttd_manage_bid_listTTD Manage Bid Listcan change or delete dataCreate, retrieve, update, replace, or delete a single TTD bid list via GraphQL. Bid lists define price floors/ceilings or block rules for specific inventory targets (domains, apps, deal IDs, etc.) and are attached to ad groups or advertisers. ### Operations - **create** — `bidListCreate(input: BidListCreateInput!)` — create a new bid list - **get** — `bidList(id: ID!)` — retrieve a bid list by ID - **update** — `bidListUpdate(input: BidListUpdateInput!)` — incremental change (add/remove specific lines without restating the entire list) - **set** — `bidListSet(input: BidListSetInput!)` — atom…
ttd_manage_seedTTD Manage SeedManage audience seed segments in The Trade Desk via GraphQL. Supports creating, updating, and retrieving seed definitions, setting a default seed for an advertiser, and attaching/detaching a seed from a campaign. ### Operations - **create** — Create a new audience seed for an advertiser (requires `advertiserId` + `data`) - **update** — Update an existing seed's properties (requires `seedId` + `data`) - **get** — Retrieve seed details including quality and active ID count (requires `seedId`) - **set_default_advertiser** — Set a seed as the default for an advertiser (requires `advertiserId` + …
ttd_rerun_report_scheduleRerun TTD Report Schedule Immediately (GraphQL)Immediately rerun a report from an existing TTD schedule via GraphQL (`myReportsReportScheduleCreate` with `singleRunFromExistingScheduleInput`). Use this when a download link has expired or the report errored — it creates a fresh execution of an existing schedule without creating a new schedule. **Important distinctions:** - This tool triggers a **new single execution** of an existing schedule — it does not modify or replace the schedule - The regenerated report uses the **most recent date range** (not the original run's dates) - The `scheduleId` is the ID of an existing report schedule — u…
ttd_submit_reportSubmit TTD ReportSubmit a report to The Trade Desk without waiting for completion. Returns a `reportScheduleId` immediately. Use `ttd_check_report_status` to poll for completion, then `ttd_download_report` to fetch results. **Non-blocking workflow:** 1. `ttd_submit_report` → get `reportScheduleId` 2. `ttd_check_report_status` (repeat every 5-10s) → wait for "Complete" 3. `ttd_download_report` with the `downloadUrl` → get a bounded summary or paged row slice Use `ttd_get_report` instead for a blocking convenience shortcut.
ttd_update_entityUpdate TTD Entitycan change or delete dataDescription is built at runtime.
ttd_update_report_scheduleUpdate TTD Report Schedule Status (GraphQL)Enable or disable a TTD report schedule via GraphQL (`myReportsReportScheduleUpdate`). Use this to activate a disabled schedule or disable an active one without deleting it. **Important:** Only the GraphQL API supports enabling/disabling schedules — the REST API cannot do this. **Workflow:** 1. Use `ttd_list_report_schedules` to find the schedule ID and its current status 2. Call this tool with the schedule ID and the desired new status 3. Use `ttd_get_report_schedule` to confirm the status change **Tips:** - Set `status: "DISABLED"` to pause a schedule without losing its configuration - S…
ttd_update_report_templateUpdate TTD Report Template (GraphQL)can change or delete dataUpdate an existing report template via TTD GraphQL (`myReportsTemplateUpdate`). **IMPORTANT:** The updated structure **completely replaces** the existing template. You must re-include all fields and metrics you want to keep — any omitted columns will be removed. Use `ttd_get_report_template` first to retrieve the current template structure before updating. Use `ttd_list_report_templates` to find the template ID. Use `ttd_list_report_types` and `ttd_get_report_type_schema` to discover available fields and metrics.
ttd_upload_videoUpload a Hosted Video Creative to The Trade Deskcan change or delete dataUpload a video file to The Trade Desk and create a **TTD-hosted** video creative. Unlike a third-party VAST creative (which references an externally-hosted VAST tag via `ttd_create_entity`), this tool hosts the video *on* The Trade Desk. It runs TTD's documented three-step flow for you: 1. `POST /v3/creative/generateuploadurlforvideocreative` — get a presigned upload URL. 2. `PUT` the downloaded video bytes to that URL. 3. `POST /v3/creative` (CreativeType `Video`) referencing the uploaded file. **Video requirements:** MP4 (H.264) is the safest container/codec; supply the creative's display…
ttd_validate_entityTTD Entity Validation (Client-Side)read-onlyDescription is built at runtime.
vec_bool_nullvec_emptyvec_key_orderingvec_null_vs_omittedvec_numbers
Signals
- Stars
- 8
- Forks
- 5
- Open issues
- 19
- Weekly downloads
- 25
- Last commit
- Oct 21, 2026 (7 days ago)
- Last release
- Oct 9, 2026 (19 days ago)
- Last package publish
- Jun 10, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.cesteral/gads-mcp- Version
- 1.3.0
- Auth
- Auth not stated
- Packages
- npm @cesteral/gads-mcp
- License
- Apache-2.0
- Repository
- github.com/cesteral/mcp-open-advertising
- First seen
- Oct 24, 2026
- Last checked
- Oct 25, 2026
More from cesteral
- 0.564score
Meta Ads MCP Server
cesteral
Meta Ads management — writes, insights, targeting, delivery estimates, previews, and media uploads
ConnectorAFreshness: ARemoteLocal★ 8↓ 33/wkClaude Code +5 - 0.564score
The Trade Desk MCP Server
cesteral
The Trade Desk management — CRUD, GraphQL, bulk ops, and async reports
ConnectorAFreshness: ARemoteLocal★ 8↓ 30/wkClaude Code +5 - 0.563score
Pinterest Ads MCP Server
cesteral
Pinterest Ads management — CRUD, async reports, targeting, and audience estimates
ConnectorAFreshness: ARemoteLocal★ 8↓ 26/wkClaude Code +5 - 0.563score
Campaign Manager 360 MCP Server
cesteral
Campaign Manager 360 management — CRUD, Floodlight tracking, async reporting, and targeting
ConnectorAFreshness: ARemoteLocal★ 8↓ 26/wkClaude Code +5 - 0.562score
DV360 MCP Server
cesteral
DV360 campaign management — writes, targeting, custom bidding, previews, and media uploads
ConnectorAFreshness: ARemoteLocal★ 8↓ 25/wkClaude Code +5 - 0.562score
Search Ads 360 MCP Server
cesteral
Search Ads 360 — reporting via query language, insights, and offline conversion upload
ConnectorAFreshness: ARemoteLocal★ 8↓ 25/wkClaude Code +5
Cite this page
Google Ads MCP Server. Agent Mart. https://agentmart.dev/connectors/cesteral-gads-mcp (last updated 2026-10-25)