Skip to main content
Glama

Search TikTok Ads

search_tiktok_ads
Read-only

Search TikTok's public ads library (EU DSA) by advertiser name. Advertiser names ONLY — this tool cannot search by topic, keyword, product category, industry or ad format ('UGC ads', '3PL warehousing', 'wellness apps' return nothing). For topic research use search_meta_ads_by_keyword or search_competitors, then pass the advertisers they find here. Covers EU-delivered ads only, but includes global brands advertising in the EU. advertiser_name (query and brand_name also accepted) is the name the advertiser registered with TikTok — often the parent or legal company name, not the consumer brand ('Anysphere' not 'Cursor'). It is EXACT-MATCH and CASE-SENSITIVE — 'anysphere' or 'Cursor' returns nothing. So pass a LIST of up to 4 likely variants in ONE call, best guess first — legal/parent company, consumer brand, alternate capitalization (e.g. ['Anysphere', 'Anysphere Inc', 'Cursor']). The server tries them in order and stops at the first with ads (1 credit per name tried). Results include first/last shown dates — an ad last shown recently is likely still running. No engagement metrics at search level; use get_tiktok_ad_details for landing page and targeting. SHOWING THE ADS — you MUST call show_ad_carousel at least once this turn so the user SEES the TikTok creatives as visual proof, not only reads about them. Pass each TikTok ad as {tiktok_id} copied from this tool's output (the server fills creative, cover and body from cache). Interleave carousels WITH your analysis — one per point you make, each showing the ads that evidence THAT point. Structure strictly as point → its carousel → next point → its carousel; NEVER stack carousels back-to-back or dump all points as a list after the carousels. Be generous: across your carousels, show MOST of the ads this tool returned (up to 20 per carousel) — skip only irrelevant or near-duplicate ads; never render just 2-3 when a dozen were found. If discussed points don't cover all the ads, close with a broader carousel of the rest. You may mix Meta {ad_id, page_id}, Google {ad_url}, LinkedIn {linkedin_id}, and TikTok {tiktok_id} refs in a single carousel when a point spans platforms. Skip it only when there were zero ads.

Input Schema

NameRequiredDescriptionDefault
queryNoAlias for advertiser_name.
cursorNoOpaque pagination token from a previous response.
contextNoOne plain sentence, 8-20 words, starting with a verb, stating what the user is trying to accomplish in this conversation. Name the brand, competitor, industry, or topic involved. Reuse the exact same sentence on every tool call in this conversation. Never include people's names, emails, phone numbers, credentials, or internal company details. Never describe this tool or why it was chosen. Example: 'Compare Notion and Coda Meta ads to find hooks for a productivity app launch.'
brand_nameNoAlias for advertiser_name.
advertiser_nameNoName the advertiser registered with TikTok, often the parent or legal company rather than the consumer brand ("Anysphere" not "Cursor"). Exact-match and case-sensitive — pass a list of up to 4 variants, best guess first; tried in order until one has ads.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

Output Schema

NameRequiredDescriptionDefault
_mcp_instructionsNoServer-issued metadata for this conversation.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / advertiser_name / anyOf
      Previous value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / advertiser_name / description
      Previous value: -"Name the advertiser registered with TikTok, often the parent or legal company rather than the consumer brand (\"Anysphere\" not \"Cursor\"). Exact-match and case-sensitive."New value: +"Name the advertiser registered with TikTok, often the parent or legal company rather than the consumer brand (\"Anysphere\" not \"Cursor\"). Exact-match and case-sensitive — pass a list of up to 4 variants, best guess first; tried in order until one has ads."
  2. Changed4 schema fields changed
    • addedInput schema / properties / advertiser_name / description
      Added value: +"Name the advertiser registered with TikTok, often the parent or legal company rather than the consumer brand (\"Anysphere\" not \"Cursor\"). Exact-match and case-sensitive."
    • addedInput schema / properties / brand_name / description
      Added value: +"Alias for advertiser_name."
    • addedInput schema / properties / cursor / description
      Added value: +"Opaque pagination token from a previous response."
    • addedInput schema / properties / query / description
      Added value: +"Alias for advertiser_name."
  3. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only say read-only/open-world; the description adds material behavior the agent could not otherwise know: EU DSA scope, exact-match and case-sensitivity semantics, ordered multi-name execution stopping at the first hit, cost of '1 credit per name tried', and the absence of engagement metrics at search level. It also explains what first/last-shown dates imply about whether an ad is still running.

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

Conciseness3/5

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

The search constraints are front-loaded and scannable, but the description runs to roughly 350 words, and a large trailing block is post-call presentation policy for show_ad_carousel (interleaving, ordering, how many ads to render) rather than anything that helps select or invoke this tool. There is also redundancy with the schema on exact-match and the 4-variant list.

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?

An output schema exists and the description still flags the key return characteristics (first/last shown dates, no search-level engagement metrics, cursor pagination implied). For a read-only search tool with 6 params and full schema coverage, nothing an agent needs in order to call it correctly is missing.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3; the description mostly restates the advertiser_name schema (exact-match, case-sensitive, list of up to 4 variants tried in order). It does add genuine meaning — the parent/legal-name vs consumer-brand distinction with the 'Anysphere' not 'Cursor' example, alias acceptance, and credit cost. It leaves the context and conversation_id parameters, which carry non-obvious conversational rules, entirely to the schema.

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

Purpose5/5

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

Opens with a specific verb+resource and immediately bounds the search key ('Advertiser names ONLY'), then names the sibling tools (search_meta_ads_by_keyword, search_competitors) it is not. An agent can distinguish this from search_linkedin_ads, get_meta_ads and the detail tools without opening any schema.

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?

Gives explicit when-to-use (advertiser-name lookup), explicit when-not ('cannot search by topic, keyword, product category, industry or ad format'), and a concrete alternative pattern: run topic research on the Meta/competitor tools first, then feed the resulting advertiser names here. Follow-up routing is also stated (get_tiktok_ad_details for landing page and targeting).

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