Skip to main content
Glama

AdsAgent — TikTok Ads MCP

Prepare a batch of TikTok ads

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
connection_contextNo
target_campaign_idNo
parent_preview_receiptNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / connection_context
      Added value: +{
      +  "pattern": "^mctx_v1_[0-9a-f]{64}$",
      +  "type": "string"
      +}
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only say readOnly=false, destructive=false, openWorld=false. The description adds far more: server validates all items on one advertiser/authorization route, executes serially after confirmation, journals one receipt per entity, stops on uncertain outcomes, never publishes by itself, and caps at 20 ads per approval. That is exactly the context annotations cannot carry.

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

Conciseness3/5

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

Front-loaded with the core action and constraints, but it is dense and long: Spark identity normalization, legacy split shape, receipt verification, CAROUSEL_ADS objective compatibility, and Smart+ exclusion are all packed in without paragraph breaks. Much earns its place, but several sentences (legacy shape, TT_USER/BC_AUTH_TT caveat) could be tightened or moved to a reference.

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

Completeness4/5

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

For a 15-parameter, nested, no-output-schema creation tool, this is close to complete: it covers required selectors, the two-step confirm protocol, Spark vs local creative identity handling, and constraints (2-20 ads, no Smart+, no auto-rewrite of objective). Gaps remain around the campaign_params/adgroup_params objects and connection_context, but an agent could call it correctly from this description.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it does for the key parameters: template_id/exact template_name selector, batch_items (one creative source per item, ad_name fallback from Spark listing), item-level ad_params overrides (AUTH_CODE identity, verified Spark identity fields), append_mode values plus required target and preview receipt, and the call_to_action/call_to_action_id requirement. It does not explain advertiser_id, connection_context, or the campaign/adgroup/params object fields, so not fully compensating.

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?

States a specific verb and resource: prepare a bounded manual TikTok hierarchy of 2..20 ads under one campaign/ad group, preserving batch_items order. It clearly distinguishes itself from campaigns_quick_create (Smart+ / single-ad path) and campaigns_quick_create_confirm (the confirmation step), so an agent can tell it apart from siblings.

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?

Explicitly routes the agent: Smart+ templates must go to campaigns_quick_create with one ad_params.creative_list; confirm only after explicit approval and only once; never fan out single-create calls; prepare another explicit batch beyond 20 ads. When-to-use, when-not-to-use, and alternatives are all named.

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