Skip to main content
Glama

AdsAgent — TikTok Ads MCP

campaigns_quick_create_batch

Prepare one bounded manual TikTok hierarchy containing 2..20 ads under the same campaign and ad group, preserving batch_items order. Each item requires exactly one creative source; ad_name is required unless the unchanged Spark listing row supplies it. Each item may override item-level ad_params (for example an AUTH_CODE identity for a Spark post). The server validates all items on one advertiser and authorization route, executes serially after confirmation, journals one receipt per created entity, and stops on uncertain outcomes. This tool never publishes by itself; show the sanitized plan and call campaigns_quick_create_confirm once only after explicit approval.

A saved template_id or exact template_name is required to fill shared campaign/ad-group/ad settings. Template identity, app, pixel, CTA portfolio, and tracking bindings are retained only for their source advertiser or after exact current-advertiser asset validation. For Spark items, the exact identity_id, identity_type, tiktok_item_id, and spark_receipt row returned by spark_ads_list_posts may be passed unchanged as item.creative; the server normalizes the TikTok-native identity fields and uses that verified item identity instead of a shared template identity. Local creative items keep the shared template identity only when it is exact advertiser-linked CUSTOMIZED_USER; Spark items use the exact AUTH_CODE row and pass its receipt unchanged when available. TT_USER and BC_AUTH_TT are not regular local-batch identities. CAROUSEL_ADS is compatible only with TRAFFIC, WEB_CONVERSIONS, APP_PROMOTION, LEAD_GENERATION, PRODUCT_SALES, CATALOG_SALES, or REACH; never auto-rewrite an objective. The legacy split shape with item ad_params identity fields remains accepted. Legacy items without a receipt incur one bounded live verification per identity.

Smart+ is intentionally excluded: a Smart+ template returns unsupported_structure and must be passed to campaigns_quick_create with one ad_params.creative_list instead. Maximum 20 ads per approval; prepare another explicit batch for additional ads. Never fan out single-create calls.

REQUIRED: advertiser_id, template_id or exact template_name, and batch_items. Missing selectors return needs_input/template_required before any draft is prepared. Resolved ad_params must include call_to_action or call_to_action_id when the ads can deliver on TikTok. Optional append_mode is new, append-campaign, or append-adgroup with the exact corresponding target and preview receipt.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ad_paramsNo
append_modeNonew
batch_itemsYes
template_idNo
adgroup_nameNo
advertiser_idYes
campaign_nameNo
template_nameNo
adgroup_paramsNo
campaign_paramsNo
call_to_action_idNo
target_adgroup_idNo
target_campaign_idNo
parent_preview_receiptNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and meets it impressively. It discloses: serial execution after confirmation, one receipt journaled per created entity, stopping on uncertain outcomes, never publishing by itself, validation on one advertiser/authorization route, and the template_required/needs_input error behavior for missing selectors. This is rich behavioral context an agent needs.

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

Conciseness4/5

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

The description is long, but it is dense rather than padded — every sentence carries operational meaning for a 14-parameter tool. The core purpose and safety contract are front-loaded in the first paragraph. It is appropriately sized for the tool's complexity, though a handful of sentences could arguably be tightened.

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

Completeness5/5

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

Given the tool's complexity (14 params, no annotations, no output schema, many siblings), the description is remarkably complete. It covers required fields, exclusions (Smart+), identity normalization rules, CAROUSEL_ADS objective compatibility, error behavior, the confirmation handoff, and the append-mode semantics. There is nothing an agent needs to call this tool safely that is missing.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It explains the critical parameters: template_id/template_name as the required selector ('A saved template_id or exact template_name is required'), batch_items (order preservation, creative requirements), advertiser_id, append_mode (new/append-campaign/append-adgroup with exact receipts), ad_params identity overrides, and the creative fields for Spark items (identity_id, identity_type, tiktok_item_id, spark_receipt). Some params like target_campaign_id, parent_preview_receipt, and campaign_name are not individually explained, but the ones essential to correct execution are covered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence is precise: 'Prepare one bounded manual TikTok hierarchy containing 2..20 ads under the same campaign and ad group, preserving batch_items order.' It names the verb (prepare), the resource (TikTok hierarchy), and the scope (2-20 ads). It clearly distinguishes itself from the single-create sibling campaigns_quick_create by explicitly contrasting the batch flow with the single-ad path.

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

Usage Guidelines5/5

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

Explicit routing is provided: 'Smart+ is intentionally excluded... must be passed to campaigns_quick_create with one ad_params.creative_list instead' and 'Never fan out single-create calls.' The confirmation flow is explicit: 'show the sanitized plan and call campaigns_quick_create_confirm once only after explicit approval.' This tells the agent exactly when to use this tool vs. its siblings and what the follow-up step is.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources