Skip to main content
Glama

tiktok_ad_library_top_ads

TikTok Creative Center Top Ads — one ~20-row leaderboard page, not a library search (flat 2 / ~1 Apify). Costs 2 credits. Empty results and failures are never charged. Pass cache=true for a free 24h cache hit (default always fresh).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
qNoOptional keyword that filters the one ~20-row leaderboard page — not a library search. Case-insensitive whole-word match on title/brandName/industry/objective (hair ≠ wheelchair). There is no tags field. advertiser.name is often null in the default US market. Envelope candidatesScanned is the pre-filter pool size. For a known advertiser, use /tiktok/ad-details by ad id.
cacheNoSet true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh.
limitNoMax items to return (default 20, max 20). One Creative Center leaderboard page is ~20 rows; limit only trims that pool — it cannot scan more candidates. Flat 2 credits on Decodo-native; Apify ~1 credit per returned ad (min 2).
matchNoKeyword token mode: "any" (default, OR) or "all" (AND). Zero literal hits → empty ads[] (never an unfiltered soft list).
periodNoLookback window in days: 7, 30, or 180. Default 30.
countryNoTwo-letter ISO country code. Default US.
orderByNoSort: for_you, likes, ctr, impressions, or cost. Default for_you.
adFormatNoOptional format filter: spark or non_spark.
industryNoOptional industry key or label from Creative Center.
objectiveNoOptional campaign objective (e.g. Traffic, Conversion, Reach).

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and covers it thoroughly: cost model ('flat 2 / ~1 Apify', 'Costs 2 credits'), no-charge policy for empty/failed results, 24h cache behavior with cost implications, whole-word matching semantics, empty ads[] on zero hits, the null advertiser.name caveat, and the candidatesScanned envelope field. Exceptionally transparent for a tool with zero annotation support.

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

Conciseness5/5

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

Four front-loaded sentences with zero filler — identity, cost, charge policy, and cache — each earning its place. Parameter descriptions are dense but purposeful, adding constraints and caveats rather than restating the schema. The pricing nuance is slightly split between the main description and limit param, but it clarifies rather than repeats.

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

Completeness5/5

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

With 10 parameters, no annotations, and no output schema, the description compensates fully: pricing, failure policy, caching, match semantics, data-quality caveats, envelope fields (candidatesScanned, ads[]), and cross-tool routing. Nothing essential an agent needs to invoke this tool correctly is left to guesswork.

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

Parameters5/5

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

Even though schema coverage is 100% (baseline 3), the description adds substantial meaning beyond the schema: q gains match semantics ('hair ≠ wheelchair'), a missing-tags-field warning, nullability caveat, and sibling routing; limit gains the 'cannot scan more candidates' constraint; match gains the empty-ads behavior; cache gains the 0-credits-on-hit detail. This far exceeds what the input schema alone provides.

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?

Identifies a specific resource and scope — 'TikTok Creative Center Top Ads — one ~20-row leaderboard page' — and explicitly differentiates it from the sibling search tool with 'not a library search'. An agent can distinguish this from tiktok_ad_library_search without opening the schema.

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

Usage Guidelines4/5

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

The description establishes a clear when-not with 'not a library search', implying this tool is for leaderboard browsing rather than search. The q parameter goes further by routing known-advertiser lookups explicitly: 'For a known advertiser, use /tiktok/ad-details by ad id.' It lacks an explicit positive when-to-use statement, but the exclusions and alternative routing are concrete.

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.

TDQS

B3.2/5.0
Disambiguation3/5

The platform-prefix convention keeps most of the 178 tools clearly separated, but several clusters are genuinely ambiguous: tiktok_live_info is explicitly described as 'Identical to TikTok Live', instagram_basic_profile and instagram_channel_details both return profile stats, and facebook_profile_posts overlaps with facebook_profile_reels. The generic 'Summarizer' descriptions for facebook_summarize, instagram_summarize, and tiktok_summarize provide no disambiguating detail at all.

Naming Consistency4/5

The dominant snake_case platform_resource_suffix pattern is followed remarkably consistently across 178 tools (e.g. youtube_channel_videos, tiktok_search_users, reddit_subreddit_posts). Minor deviations exist: the same creator resource is called 'channel' in some tools (tiktok_channel_details, instagram_channel_posts) but 'profile' or 'user' in others (facebook_profile_posts, twitch_user_videos, linnkme_profile); link-in-bio tools mostly use _page but linkme uses _profile; and the video_summarize/video_transcript pair lacks a platform prefix.

Tool Count2/5

At 178 tools this is far beyond what any agent can efficiently navigate in a single flat namespace, and even individual platform subsets exceed reasonable bounds (TikTok alone has ~34 tools, YouTube ~25). The sheer breadth of the multi-platform scope partially justifies the count, but the server would be far more usable split into per-platform servers.

Completeness4/5

The read-only data surface is impressively thorough: nearly every platform has profile + content + search + comments coverage, and TikTok, YouTube, Instagram, and Facebook are covered end-to-end including shops, ads, transcripts, and summaries. Notable gaps are minor: Twitter has no keyword search tool, LinkedIn lacks comments, and Reddit has no user-profile endpoint, but none of these create dead ends for the server's core data-retrieval purpose.