Skip to main content
Glama

TokConnect: TikTok Research

Server Details

TikTok research for AI agents: real TikTok search data, trends, videos, creators and comments in ChatGPT, Claude, Cursor, Codex or any MCP client. 45 tools. See what people search on TikTok each week (Creator Search Insights search volume and 7-day trends), find content gaps with no videos yet, check if a product is trending for TikTok Shop, analyze competitor creators and posts, read comments and replies, pull video transcripts, search hashtags and sounds, and pick fair giveaway winners. Built for marketers, agencies, TikTok Shop sellers and creators. Sign in with OAuth or an API key; 50 free credits.

Ownership verified
Status
Healthy
Uptime
99.8% over 29 days
Last Tested
Transport
Streamable HTTP · MCP 2024-11-05
URL

TDQS

A3.9/5.0

Scored across 34 tools

Disambiguation4/5

Most tools target distinct resource/action pairs, and descriptions clearly separate search, detail, ranking, and analytics variants. Some overlap remains among ranking tools (product_top_selling, video_top_selling, creator_top_selling, shop_top_selling, live_top_selling) and between composite method-based tools and narrower search/detail tools, but the boundaries are generally explained.

Naming Consistency4/5

Tool names use snake_case consistently and follow a recognizable pattern: bare nouns for entity detail, _search for search tools, _top_selling for rankings, and descriptive names for composite endpoints. There are minor deviations such as demand_find_topics and mixed noun-only versus verb-led names, but the convention is still readable.

Tool Count3/5

At 34 tools, the surface is heavy and above the ideal range, increasing selection burden for an agent. The breadth of TikTok research domains justifies most tools, but the set is borderline-too-large rather than tightly scoped.

Completeness5/5

For a read-only TikTok research API, coverage is very broad: creators, videos, sounds, hashtags, places, products, shops, LIVE, ad library, demand research, trends, leaderboards, Shop Analytics, account, and reference data. No obvious domain lifecycle gaps or dead ends are apparent.

Available Tools

34 tools
ad_libraryTikTok top ads libraryA
Read-onlyIdempotent
Inspect

TikTok's library of top-performing ads: search by keyword, one ad's detail (countries it ran in, CTR, likes, objective, landing page, video), analysis (TikTok's per-second retention curve and the ad's CTR percentile against other ads), and similar ads. Search results are worldwide: the library does not filter by market (tested 31 Oct 2026 with US, DE and JP, and with a language filter, which returned the same ads), so check countries with method=detail. Examples: {"method":"search","keyword":"skincare","period":"30"}, {"method":"analysis","id":"7382019274430578705"}.

NameRequiredDescriptionDefault
idNoAd id (items[].id from method=search or similar).
limitNoResults per page. search max 50. Values above a method's maximum are lowered and reported in notes.
cursorNoPaging: pass the next value from the previous response unchanged. Omit on the first page.
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
methodNoWhat to get. search: top ads matching keyword (worldwide) | detail: one ad: countries, CTR, likes, objective, landing page, video | analysis: retention curve per second, biggest drop, CTR percentile | similar: ads TikTok recommends next to this onesearch
periodNomethod=search: ads from the last 7, 30 or 180 days (default 30).
keywordNomethod=search: phrase in the ad, e.g. 'skincare'. Omit to list top ads of the period.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, open-world behavior. The description adds a meaningful operational caveat: search is not market-filtered and country data requires method=detail, with a tested-date note. It does not cover rate limits or pagination, but the schema handles paging.

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 front-loaded with purpose and the method list, followed by a useful global-search caveat and two examples. The caveat is somewhat detailed but earns its place by preventing a market-filtering mistake.

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 a full input schema, an output schema, and rich annotations, the description supplies the remaining method-selection and global-search context needed to invoke correctly. Nothing material is missing for correct use.

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 description coverage is 100%, so the schema already documents all 7 parameters, including the method enum meanings. The description's examples illustrate method/keyword/period and method/id, but add little semantic detail beyond the schema; baseline 3 is appropriate.

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

Purpose4/5

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

The description names the resource ('TikTok's library of top-performing ads') and enumerates four specific modes (search, detail, analysis, similar), so the agent knows the tool's scope. It does not explicitly distinguish this tool from sibling tools such as video_search or hashtag_search, so it falls short of a 5.

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?

It gives method-level routing ('search by keyword', 'check countries with method=detail') and worked examples, plus a caveat that search is worldwide. It stops short of naming sibling alternatives or explicit when-not-to-use conditions, so it is clear but not exhaustive.

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

chartsTikTok chartsA
Read-only
Inspect

TikTok's own leaderboards. sounds: the music chart (Top 50 or Viral 50; TikTok's chart, not per market). hashtags: trending hashtags in a market over 7, 30 or 90 days, with posts, views and a daily popularity curve (empty for PL, NL and IE). searches: trending search phrases TikTok's website shows. live: TikTok's LIVE leaderboard (daily gifts or LIVE sales), as TikTok's app serves it; not per market. videos: yesterday's top 100 videos in a market with views, organic views, engagement rate and 6-second view rate (TikTok has this list for US, JP, TH, ID and VN; other markets come back empty). Examples: {"method":"hashtags","region":"DE","period":"30"}, {"method":"sounds","chart":"viral"}.

NameRequiredDescriptionDefault
boardNomethod=live: daily (gift points today, default) or sales (LIVE sales leaderboard).
chartNomethod=sounds: top (Top 50, default) or viral (Viral 50).
limitNoResults per page. sounds max 50, hashtags max 50, searches max 100, live max 100, videos max 100. Values above a method's maximum are lowered and reported in notes.
cursorNoPaging: pass the next value from the previous response unchanged. Omit on the first page.
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
methodNoWhat to get. sounds: TikTok's music chart (Top 50 or Viral 50) | hashtags: trending hashtags in a market (7, 30 or 90 days) | searches: trending search phrases | live: LIVE leaderboard (daily gifts or sales) | videos: yesterday's top 100 videos in a marketsounds
periodNomethod=hashtags: last 7, 30 or 90 days (default 7).
regionNomethod=hashtags or videos: market, one of US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX, PL, IT, NL, IE (default US).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Beyond the read-only, open-world annotations, the description discloses important behavioral constraints: hashtags are empty for PL, NL and IE, videos only exist for US, JP, TH, ID and VN, and sounds/live are not per market. It does not cover auth or rate-limit behavior, but the availability caveats are valuable.

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 dense but appropriately sized for five methods and numerous caveats, with the high-level purpose front-loaded. The method labels make it scannable, though the semicolon-list format is not maximally structured.

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 8 parameters, 100% schema coverage, existing output schema and annotations, the description covers all methods, defaults, examples and key data availability limitations. An agent has enough information to select a method and invoke the tool correctly.

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 already 100%, so the schema carries most parameter meaning. The description adds useful method-specific context, including examples and the market availability limits that are not fully captured by the schema.

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

Purpose4/5

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

The description clearly identifies the resource as TikTok's own leaderboards and enumerates the five chart types with their scope. It does not explicitly name sibling tools such as hashtag_search or sound_search, so differentiation is implied by 'TikTok's own leaderboards' rather than stated.

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 method descriptions give clear context for choosing between sounds, hashtags, searches, live and videos, including defaults and market limitations. However, it does not explicitly say when to use this tool versus sibling search or entity tools.

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

creative_centerTikTok Creative CenterA
Read-onlyIdempotent
Inspect

TikTok Creative Center: top videos by market (US, JP, VN, TH, ID), public SEO inspiration lists, and Creative Partner agency leaderboards. Example: {"method":"top_videos","country":"JP","sort":"engagement"}.

NameRequiredDescriptionDefault
pageNomethod=top_videos: page 1-25.
sortNomethod=top_videos: views (default), engagement or six_seconds_vtr.
limitNoResults per page. method=top_videos max 20 (TikTok often returns 4). Values above a method's maximum are lowered and reported in notes.
namesNomethod=seo_detail: exact names from method=seo_list.
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
methodNoWhat to get. top_videos: trending videos by market with engagement | seo_list: public SEO inspiration names by type | seo_detail: detail for names from seo_list | partners: Creative Partner agencies for a markettop_videos
periodNomethod=top_videos: week (default), day or long.
countryNomethod=top_videos: US (default), JP, VN, TH or ID. method=partners: market code from reference method=creative_markets, e.g. TH (default US, where TikTok lists no partners).
biz_typeNomethod=seo_list or seo_detail: which list.
period_endNomethod=top_videos: unix seconds for the ranking close; 0 = last Sunday.
query_dateNomethod=partners: unix timestamp from reference method=creative_markets.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds that the SEO lists are 'public' and that partners data is a leaderboard, which is modest extra context. It discloses nothing about rate limits, data recency/staleness, or the note-reporting behavior for clamped limits (that lives only in the schema).

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?

Two sentences, capability list front-loaded before the example, with zero filler. Slightly more could be trimmed, but the compact example earns its place by showing the method/value contract.

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?

With 11 fully documented parameters, an output schema present, and rich annotations, the description only needs to frame the method families — which it does. Remaining gaps (no cross-references to reference method=creative_markets required for partners markets, no output-shape hint) are carried by structured fields.

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 description coverage is 100%, so every parameter including method, country, sort, period and page is already documented inline with its method-scoped meaning. The description's example does illustrate one valid method/country/sort triple, but adds no syntax or semantics beyond the schema. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose4/5

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

The description names the resource (TikTok Creative Center) and enumerates the three data families it exposes — top videos by market, SEO inspiration lists, and Creative Partner agency leaderboards — matching the four method enum values. An agent can tell what it fetches, but nothing distinguishes it from siblings like video_top_selling or category_trends, which likely cover adjacent trending content.

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

Usage Guidelines3/5

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

The worked example ({"method":"top_videos","country":"JP","sort":"engagement"}) implies how to invoke it and the per-method parameter pairing is only discoverable by reading the schema. There is no statement of when to choose this over sibling trending tools, no prerequisites, and no exclusions — guidance is implied rather than stated.

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

creatorOne TikTok creatorA
Read-onlyIdempotent
Inspect

One creator's public account: profile (followers, likes, bio, Shop seller status; counts are rounded the way the app shows them, so use creator_search with the handle for exact numbers), posts, reposts, liked posts, followers, following, embed posts, playlists and collections. Pass any identifier; TokConnect resolves the ids. For what the creator sells or earns, the products they link, or their follower demographics, use creator_commerce. Example: {"id":"@dollskill","method":"posts"}. method=audit reports the account's registered country, ids and TikTok's milestones (started posting, follower marks); method=lookalikes lists accounts TikTok suggests as similar. Example: {"id":"@nike","method":"audit"}.

NameRequiredDescriptionDefault
idYesCreator: @handle, profile or video link, secUid (MS4wLjAB...) or numeric user id. TokConnect looks up the ids it needs.
limitNoResults per page. posts max 35, others max 30. Values above a method's maximum are lowered and reported in notes.
cursorNoPaging: pass the next value from the previous response unchanged. Omit on the first page.
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
methodNoWhat to get. profile: followers, likes, videos, bio, link, verified, Shop seller, ids | posts: posts, newest first, with counts and linked products | reposts: posts the creator reposted | likes: public Liked tab (empty when hidden) | followers: followers, when TikTok shows them (usually hidden) | following: accounts followed, when shown (usually hidden) | embed: posts in the creator's embed widget | playlists: public playlists (ids for creator_playlist) | collections: public saved collections (often empty) | audit: registered country, ids, TikTok milestones (started posting, follower marks) | lookalikes: accounts TikTok suggests as similarprofile
regionNoMarket as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Well beyond the annotations, which only declare read-only/idempotent/open-world: it discloses that counts are rounded the way the app shows them, that likes/followers/following are frequently hidden or empty, that over-limit values are silently lowered and reported in notes, and that unsupported regions are refused. These are real behavioral caveats an agent would otherwise hit at runtime.

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?

Front-loaded with the resource and its contents, then constraints, then routing, then examples — a sensible order. It runs long and the two JSON examples plus the audit/lookalikes sentence partly restate what the method enum already documents, which is the main slack.

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?

For a six-parameter, eleven-method tool with an output schema, the description covers the meaningful gaps: multiplier caveats on hidden data, rounding, region refusal, id resolution, and method selection. Pagination and limits are fully described in the schema, so nothing an agent needs 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 coverage is 100%, so baseline is 3; the description still adds value by explaining the identifier resolution behavior and expanding on the non-obvious methods (audit, lookalikes) with concrete call examples. The method and region semantics largely live in the enum descriptions, so this is additive rather than essential.

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 resource scope — one creator's public account — and enumerates exactly which artifacts come back (profile, posts, reposts, likes, followers, following, playlists, collections). It also names two sibling tools with the conditions that route away from it, so an agent can separate it from creator_search and creator_commerce without opening a 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 routing rules with conditions: use creator_search with the handle for exact (unrounded) counts, and use creator_commerce for what the creator sells, earns, links, or their follower demographics. It also states the identifier policy ('Pass any identifier; TokConnect resolves the ids'), removing a common pre-call question.

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

creator_commerceA creator's TikTok Shop businessA
Read-onlyIdempotent
Inspect

What a creator sells. Live: linked_products (products linked in recent posts, with views; no sales). [Shop Analytics, any market via region]: sales (revenue, units, video vs LIVE), trend (daily), products (with revenue), shops (brands they sell for), videos (selling videos), audience (follower age, gender, locations, languages; says so when it has not been built). Use to vet affiliates. Example: {"id":"@dollskill","method":"products","window":"90d"}.

NameRequiredDescriptionDefault
idYesCreator: @handle, profile or video link, secUid (MS4wLjAB...) or numeric user id. TokConnect looks up the ids it needs.
endNoShop Analytics methods: custom range end, YYYY-MM-DD (capped at the last complete day).
limitNoResults per page. Shop Analytics methods max 100. Values above a method's maximum are lowered and reported in notes.
startNoShop Analytics methods: custom range start, YYYY-MM-DD.
cursorNoPaging: pass the next value from the previous response unchanged. Omit on the first page.
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
methodNoWhat to get. linked_products: each product linked in recent posts, with post count, views and likes (not sales) | sales [Shop Analytics]: revenue, units, video vs LIVE, average price | trend [Shop Analytics]: daily revenue (up to ~13 months) | products [Shop Analytics]: products they sold, with revenue | shops [Shop Analytics]: shops (brands) they sell for, with revenue | videos [Shop Analytics]: their selling videos, with revenue | audience [Shop Analytics]: follower age, gender, top locations and languages, active hours (when Shop Analytics has built it)sales
regionNoMarket as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions.
windowNoShop Analytics methods: date range ending at the last complete day (about 2 days ago). Default 30d. Use start/end for a custom range.
max_pagesNomethod=linked_products: post pages to scan, 15 posts each (default 3, max 5).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

Beyond the readOnly/openWorld annotations, the description discloses that linked_products has views but 'no sales', that audience 'says so when it has not been built', and that some markets are refused. Those are real behavioral caveats an agent could not derive from annotations alone.

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?

Front-loaded with the one-line purpose, then method inventory, then usage and a worked example. Telegraphic phrasing ([Shop Analytics, any market via region]) is dense but every clause carries information and nothing is padded.

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?

With 10 parameters, an output schema, and rich annotations, the description covers the important gaps: method semantics, region limits, unbuilt-data behavior, and a call example. Only the sibling-selection and pagination story is left thin.

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% and each parameter already documents its per-method applicability, so the description's bracketed '[Shop Analytics]' tags largely restate the schema. It adds only marginal value, such as the example payload showing method/window composition; baseline 3 applies.

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

Purpose4/5

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

The opening line 'What a creator sells' plus the enumerated method outputs (revenue, units, products, shops, videos, audience) makes the resource and the returned data concrete. It doesn't explicitly name the sibling `creator` or `creator_top_selling`, so an agent must infer that this is per-creator commerce data rather than a creator ranking or profile.

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

Usage Guidelines3/5

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

'Use to vet affiliates' supplies one concrete scenario, and the Live vs Shop Analytics split routes between method families. But there is no guidance about when to prefer `creator`, `shop`, or `product` instead, and no exclusions, so tool-level routing remains implicit.

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

creator_playlistOne playlist or collectionA
Read-onlyIdempotent
Inspect

One creator playlist or saved collection (id from creator method=playlists or method=collections): detail or its videos. Example: {"id":"7123...","kind":"playlist","method":"videos"}.

NameRequiredDescriptionDefault
idYesPlaylist or collection id.
kindNoplaylist (default) or collection.
limitNoResults per page. Max 30. Values above a method's maximum are lowered and reported in notes.
cursorNoPaging: pass the next value from the previous response unchanged. Omit on the first page.
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
methodNoWhat to get. detail: name, video count, owner | videos: the videos in itdetail

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered. The description adds the detail-vs-videos distinction and the id provenance, but nothing about rate limits, pagination behavior, or what happens with an invalid/private playlist — gaps the schema partly mitigates.

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?

One sentence plus a compact example, front-loaded with the resource identity before the id-provenance hint. No filler sentences; the example earns its place by making the parameter shape concrete.

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?

With an output schema present and full schema coverage, the description needn't explain return values, and it correctly limits itself to identity, id source, and the two methods. Adequate for a read-only single-record fetch.

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 description coverage is 100%, so every parameter including limit, cursor, detail and method is already documented in the schema; the description only echoes the detail/videos split. The example object is helpful for showing the intended id+kind+method combination, but that is corroboration rather than new semantics.

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

Purpose4/5

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

Names a specific resource (one creator playlist or saved collection) and scopes it to either its detail or its videos, so an agent can distinguish it from the broader creator/creator_search siblings. The verb is implicit ('get') rather than stated, keeping it short of a 5.

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

Usage Guidelines3/5

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

It tells the agent where the required id comes from (creator with method=playlists or method=collections), which is genuinely useful routing context. It does not state when to prefer this over siblings like creator or creator_search, nor any exclusions, so usage is implied rather than spelled out.

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

creator_top_sellingTop-selling TikTok Shop creatorsA
Read-onlyIdempotent
Inspect

[Shop Analytics] Creators (affiliates) ranked by the sales they drove over a date range: revenue, units, followers, engagement, views, trend. keyword = words in creator names, handles and bios (not the products they sell); category = a category name or id (levels 1-3: the creators selling in it, no keyword needed); both together narrow further. With neither, the result is the top 10 creators for the most recent days (about 6). Up to 100 rows per page with cursor paging, about 700 rows per keyword. sort: revenue, units, followers or growth; order=asc lists lowest first. Filters: revenue, followers, engagement, average views, price, growth, video or LIVE, gender, language, contact channel, MCN, audience age/language. region picks the market (default US). Examples: {"category":"Pet Supplies","followers":"10000-500000","contact":"EMAIL"}, {"keyword":"beauty","window":"7d","sort":"units"}.

NameRequiredDescriptionDefault
endNoShop Analytics methods: custom range end, YYYY-MM-DD (capped at the last complete day).
mcnNoFilter. Signed to an MCN (agency) or not.
sortNoRanking metric: followers, growth, revenue, units. Default revenue. growth favours brand-new items (shown as >999.9%); pair it with a revenue or units filter. Applies with a keyword or category.
debutNoFilter. Days since the creator started selling: <4, <8, <31, or >30.
limitNoResults per page. Max 100 per page; pass next as cursor for the following page. Up to about 700 rows per keyword. Without a keyword or category: 10 rows. Values above a method's maximum are lowered and reported in notes.
orderNodesc (default, highest first) or asc (lowest first among the matching rows; pair it with a revenue or units filter to skip dead listings). Applies with a keyword or category.
priceNoFilter. Average price of what they sell, in the market's currency, e.g. <20.
startNoShop Analytics methods: custom range start, YYYY-MM-DD.
cursorNoPaging: pass the next value from the previous response unchanged. Omit on the first page.
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
genderNoFilter. Creator gender as the feed classifies it.
regionNoMarket as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions.
windowNoShop Analytics methods: date range ending at the last complete day (about 2 days ago). Default 30d. Use start/end for a custom range.
contactNoFilter. Only creators who list this contact channel. Several: comma separated, e.g. EMAIL,INSTAGRAM. Values: EMAIL, WHATSAPP, INSTAGRAM, YOUTUBE, FACEBOOK, TWITTER.
growingNoFilter. true = only creators whose revenue is growing.
keywordNoMatched against creator names, handles and bios (not the products they sell): 'pet' finds accounts like 'Pet Finds'. For the affiliates of a product type, pass category, or rank products with product_top_selling and call product method=creators on the top items. If keyword and category are both omitted, the result is the top 10 creators for the most recent days (about 6), whatever window is set: pass a keyword or category when the user wants more than 10 rows or a specific window.
revenueNoFilter. Revenue the creator drove in the market's currency over the window, e.g. >10000.
categoryNoNarrow to one or more Shop categories (up to 5), by name or numeric id, levels 1 to 3: ["Skincare"], ["Pet Supplies"], ["Beauty & Personal Care","Health"] or ["601450"]. Without a keyword the creators of the category are found by merging several generic keyword searches (a keyword is needed), and the result says how many keyword sweeps and distinct rows that gave. Find names and ids with category_trends method=tree.
languageNoFilter. Creator language.
avg_viewsNoFilter. Average video views, e.g. >10000.
followersNoFilter. Followers, e.g. 50000-500000.
engagementNoFilter. Video engagement rate percent, e.g. >8.
account_typeNoFilter. BELONGED_TO_SELLER = a brand's own account; INDEPENDENT = affiliate creator.
audience_ageNoFilter. Main follower age band.
revenue_sourceNoFilter. Main revenue source: VIDEO or LIVE.
audience_languageNoFilter. Main follower language.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, it discloses non-obvious behavior: the window is silently ignored when neither keyword nor category is supplied, category-only queries internally run several keyword sweeps and report sweep/row counts, limit caps at 100 with ~700 rows per keyword, and sort=growth favors brand-new items (>999.9%) requiring a revenue/units filter.

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?

Front-loaded with the purpose, then a compact semicolon-driven map of keyword/category, defaults, paging, sort/order and filters, ending with examples. Efficient overall, but the mid-sentence filter enumeration ('Filters: revenue, followers, engagement, ...') is a dense run-on that partly duplicates the schema and could be trimmed.

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?

For a 26-parameter, zero-required analytics query with an output schema, the description covers the axes an agent needs: scoping (keyword/category/both/neither), default window and row count, paging, sort/order semantics, region validity, and filter families. Nothing needed 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.

Parameters4/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 earns an extra point by explaining parameter interactions and defaults in one place — keyword excludes product text, category accepts names or numeric ids at levels 1-3 and merges generic sweeps, order=asc should be paired with a revenue/units filter, region defaults to US. Much of this restates schema text rather than adding new meaning, which keeps it below 5.

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 first sentence names a specific resource (creators/affiliates), the metric they are ranked by (sales driven), and the output dimensions, so it is instantly distinguishable from sibling tools like creator_search or product_top_selling. It also explicitly clarifies what the keyword does NOT search (products they sell), heading off a likely confusion.

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 routing: keyword vs category vs neither, how the two combine, what happens when both are omitted (top 10 for the most recent ~6 days regardless of window), and the alternative path (rank products with product_top_selling and call product method=creators). Two concrete example payloads seal it.

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

demand_find_topicsFind TikTok search topicsA
Read-onlyIdempotent
Inspect

Finds what people search on TikTok (Creator Search Insights). Each topic has queryId, searchVolume (TikTok's 7-day popularity figure, never a monthly count), videoCount (0 = content gap) and a daily trend. Use for demand, content gaps and trend research. Pass a topic's queryId to demand_topic for charts, audience and related searches. Example: {"keyword":"protein snacks"} or {"method":"feed","channel":"content_gap"}.

NameRequiredDescriptionDefault
limitNoResults per page. Max 20. Values above a method's maximum are lowered and reported in notes.
cursorNoPaging: pass the next value from the previous response unchanged. Omit on the first page.
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
methodNoWhat to get. search: topics matching keyword | feed: a ready-made list (channel) | trending: trending searches, optionally by category
channelNomethod=feed: which list. suggested, content_gap (high demand, few videos), or a category.
keywordNomethod=search: phrase to match, e.g. 'bicep workouts'.
categoryNomethod=trending: category tab (default all).
languageNomethod=search or feed: language code from reference method=csi_languages, e.g. en.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/openWorld/non-destructive, so the safety profile is covered. The description adds real value by clarifying that searchVolume is TikTok's 7-day figure (never monthly) and that videoCount=0 signals a content gap — non-obvious semantics an agent would otherwise misread from the raw fields.

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?

Purpose is front-loaded, then field semantics, then usage and two compact examples — each sentence adds distinct information with no padding.

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?

With an output schema present, return values needn't be re-explained, yet the description still summarizes the key fields helpfully. It omits the method-max limit-lowering behavior and pagination flow, but those live in the schema; overall complete for calling the tool correctly.

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 100%, so the baseline is 3, but the worked examples ({"keyword":"protein snacks"}, {"method":"feed","channel":"content_gap"}) demonstrate how method combines with keyword or channel — guidance the schema alone doesn't convey. It doesn't cover limit/cursor interplay, keeping it at a 4.

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 (finds TikTok search topics via Creator Search Insights) and immediately distinguishes itself from demand_topic by framing itself as the discovery/list tool whose queryId feeds the detail tool. An agent can tell what it returns and how it differs from siblings without touching 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?

'Use for demand, content gaps and trend research' plus 'Pass a topic's queryId to demand_topic for charts, audience and related searches' give clear selection guidance and route follow-up work to the correct sibling. The only minor gap is no explicit when-not-to-use contrast against other discovery siblings like demand_keywords or category_trends.

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

demand_keywordsKeyword suggestionsA
Read-onlyIdempotent
Inspect

Autocomplete and keyword ideas from TikTok and TikTok Shop. method=signals adds TikTok's predicted click-through and a shopping-intent flag per phrase. These rank phrases; they are not search volume (use demand_find_topics for volume). Example: {"keyword":"matcha","method":"signals"}.

NameRequiredDescriptionDefault
limitNoResults per page. tiktok/accounts max 50, signals max 20, trending max 30, ad_library max 20. Values above a method's maximum are lowered and reported in notes.
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
methodNoWhat to get. tiktok: TikTok search autocomplete | accounts: account (@handle) suggestions | signals: autocomplete with click-through and shopping-intent signals | shop: TikTok Shop search autocomplete | trending: trending phrases TikTok's website shows | ad_library: EU/UK Ad Library advertiser and keyword autocompletetiktok
regionNomethod=ad_library: 2-letter EU/UK country from reference method=ad_regions. Default DE.
keywordNoSeed phrase. Not needed for method=trending.
suggest_typeNomethod=ad_library: TikTok's suggestion type, default 1 (advertisers and keywords).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, open-world, so the safety burden is off the description. The description instead adds the interpretive caveat that scores are relative ranks, not search volume — the single most likely source of agent misuse. It does not mention pagination or the limit-lowering behavior (that lives in the schema).

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?

Three short sentences plus a compact example, with the core capability front-loaded and the critical caveat ('not search volume') placed immediately after. Every sentence carries distinct information and nothing is padded.

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 an output schema, full annotation coverage and 100% schema coverage, the description only needs to add interpretation and routing. It does exactly that: it explains what the returned rankings mean and where to go for volume instead, which is the one thing structured fields cannot convey.

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 description coverage is 100%, including per-method limit caps and method enum meanings, so the baseline is 3. The description's note about method=signals largely restates the schema's own 'signals: autocomplete with click-through and shopping-intent signals', and the example JSON is illustrative rather than semantically additive.

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

Purpose4/5

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

States a specific resource (TikTok / TikTok Shop autocomplete and keyword ideas) and explains the signals variant adds predicted click-through and a shopping-intent flag. It is distinguishable from siblings by naming demand_find_topics as the volume tool, though it only describes 2 of the 6 methods the tool actually supports.

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?

Explicitly routes the agent away for one key need: 'These rank phrases; they are not search volume (use demand_find_topics for volume).' That is a real when-to-use-else signal. It does not explain when to pick method=tiktok vs shop vs trending vs ad_library, leaving that to the schema.

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

demand_topicOne TikTok search topicA
Read-onlyIdempotent
Inspect

Everything about one search topic (id = queryId from demand_find_topics): detail, daily popularity chart, searcher demographics, related searches, TikTok's content guidance and matching videos. Popularity values are TikTok's readings: never add days together or call them monthly searches. Example: {"id":"7261...","method":"popularity","days":"180","countries":["US"]}.

NameRequiredDescriptionDefault
idYesqueryId from demand_find_topics. Not a video id or keyword.
daysNomethod=popularity or audience: window in days (default 30).
limitNoResults per page. method=related max 20; method=videos max 20. Values above a method's maximum are lowered and reported in notes.
cursorNoPaging: pass the next value from the previous response unchanged. Omit on the first page.
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
methodNoWhat to get. detail: searchVolume, trend, category, top countries | popularity: daily popularity chart, worldwide or per country | audience: age, gender and location of searchers | related: related searches with their searchVolume | related_queries: follow-up searches TikTok links to it | guidance: TikTok's suggested hooks, hashtags and outlines (often unavailable) | videos: videos TikTok shows for the topicdetail
countriesNomethod=popularity: country codes to break out, e.g. ["US","GB"]. Omit for worldwide.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare this as read-only, idempotent, open-world, and non-destructive, so the safety profile is covered. The description adds meaningful domain context beyond annotations: popularity values are TikTok's readings and must not be summed across days or described as monthly searches. That is an important caveat for correct interpretation, though it does not cover rate limits or response/pagination behavior.

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?

The definition is three sentences and front-loads the core scope before the routing detail and the popularity caveat. The example is compact and immediately useful. Nothing is redundant or padded.

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 a full output schema, complete input schema coverage, and annotations covering safety and openness, the description needs only to describe scope and notable caveats. It does that: it names the sibling source for id, summarizes the method-specific outputs, and warns about the most dangerous interpretation error around popularity values.

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 100%, so the schema already documents every parameter and method. The description still adds value with a compact example showing how id, method, days, and countries are combined in practice. It does not add much beyond the schema for the remaining parameters such as cursor or limit, which keeps it from a 5.

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 description states a specific resource and scope: 'Everything about one search topic', then enumerates the exact data surfaces it returns (detail, popularity chart, demographics, related searches, guidance, videos). It distinguishes itself from the sibling demand_find_topics by explicitly defining id as the queryId produced by that tool, so an agent can route 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 makes the prerequisite relationship explicit: id must come from demand_find_topics, not a video id or keyword. It also provides a concrete example call with method, days, and countries. It does not enumerate when to choose each method or when not to use this tool, but the context needed to invoke it correctly is clear.

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

hashtagOne hashtagA
Read-onlyIdempotent
Inspect

One hashtag (id from hashtag_search or hashtags[].id on a post): detail, its videos (hot or newest), or related hashtags. Example: {"id":"229207","method":"videos","sort":"newest"}.

NameRequiredDescriptionDefault
idYesHashtag id (hashtags[].id).
sortNomethod=videos: hot (TikTok's ranking, default) or newest.
limitNoResults per page. videos max 50, related max 20. Values above a method's maximum are lowered and reported in notes.
cursorNoPaging: pass the next value from the previous response unchanged. Omit on the first page.
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
methodNoWhat to get. detail: views, video count, description | videos: videos using the hashtag | related: hashtags TikTok relates to itdetail
regionNoMarket as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds little beyond structured fields — the worked example is the main value-add — and says nothing about result volume or how the three methods differ in cost.

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?

One dense sentence plus a compact example, with the id provenance front-loaded. Nothing is wasted, though the sentence packs three concepts tightly enough that it reads as a list rather than guidance.

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?

With an output schema present and full annotation coverage, the description need not explain returns. Combined with the id-source hint and worked example, an agent has enough to call it correctly; only method-selection guidance is thin.

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 description coverage is 100%, so all seven parameters (including enums for method, sort, detail, and the cursor/limit semantics) are already documented in the schema. The description's example reinforces method=videos with sort=newest but adds no new parameter meaning; baseline 3 applies.

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

Purpose4/5

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

Names the resource (one hashtag) and enumerates the three things it can return — detail, videos, related hashtags — plus where the id comes from. It routes to sibling hashtag_search for id discovery, though the core verb ('get') is implied rather than stated.

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 parenthetical 'id from hashtag_search or hashtags[].id on a post' gives clear context for when this tool is the right call versus the search sibling, and the sample call illustrates a valid mode. It stops short of stating exclusions or tradeoffs between method=detail vs videos vs related.

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

liveOne TikTok LIVEA
Read-onlyIdempotent
Inspect

One LIVE room (id = room id from live_search or live_top_selling). Live: now (title, creator, live or ended, viewers, Shop selling). [Shop Analytics, any market via region]: sales (revenue, units, duration), history, products (products sold), strategy (price bands), top_categories, stream_urls. Example: {"id":"7695846289116416799","method":"products"}.

NameRequiredDescriptionDefault
idYesLIVE room id.
endNoShop Analytics methods: custom range end, YYYY-MM-DD (capped at the last complete day).
limitNoResults per page. Shop Analytics methods max 100. Values above a method's maximum are lowered and reported in notes.
startNoShop Analytics methods: custom range start, YYYY-MM-DD.
cursorNoPaging: pass the next value from the previous response unchanged. Omit on the first page.
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
methodNoWhat to get. now: live status, viewers, likes, Shop selling | sales [Shop Analytics]: revenue, units, duration, viewers | history [Shop Analytics]: performance over the broadcast | products [Shop Analytics]: products sold in the LIVE, with revenue | strategy [Shop Analytics]: price bands of what was sold | top_categories [Shop Analytics]: top categories sold | stream_urls [Shop Analytics]: recording and stream URLsnow
regionNoMarket as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions.
windowNoShop Analytics methods: date range ending at the last complete day (about 2 days ago). Default 30d. Use start/end for a custom range.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds that status may be live or ended and lists analytics outputs, but it gives no auth, rate-limit, pagination, or freshness caveats, and its 'any market via region' wording is narrower than the schema's supported-region rules.

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 front-loaded and compact, moving from resource identification to method options to an example. The bracketed notation and dense method list slightly reduce readability, but every part contributes useful selection information.

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?

Given the 9 parameters, rich annotations, 100% schema coverage, and an output schema, the description supplies enough to select a method and provide the required id. The main small gap is that region restrictions are left to the schema, but the overall definition is complete enough for correct invocation.

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 description coverage is 100%, so the baseline is 3. The description adds useful id provenance and a concrete example, but method, region, window, cursor, and detail semantics are already fully documented in the input schema.

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

Purpose4/5

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

The description identifies a specific resource, one TikTok LIVE room, and scopes it by requiring an id sourced from live_search or live_top_selling. It also lists the available data methods, making it distinguishable from the search/ranking siblings, though it does not begin with an explicit verb.

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?

It gives clear usage context by saying the id comes from live_search or live_top_selling and by explaining what the method values retrieve. It does not explicitly state when not to use this tool versus those siblings, but the intended workflow is clear.

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

live_top_sellingTop-selling TikTok Shop LIVEsA
Read-onlyIdempotent
Inspect

[Shop Analytics] The top 10 LIVE broadcasts by estimated revenue over a date range, with host, start and end time, duration, units, GPM and average price. This ranking takes no filters. Pass a row's id to live method=products, sales or history. Example: {"window":"7d"}.

NameRequiredDescriptionDefault
endNoShop Analytics methods: custom range end, YYYY-MM-DD (capped at the last complete day).
startNoShop Analytics methods: custom range start, YYYY-MM-DD.
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
regionNoMarket as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions.
windowNoShop Analytics methods: date range ending at the last complete day (about 2 days ago). Default 30d. Use start/end for a custom range.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, open-world behavior, so the burden is lighter. The description adds two traits not in the annotations: the hard cap of 10 rows and the fact that the ranking cannot be filtered. Return-field listing plus the presence of an output schema covers shape, though nothing is said about ordering ties, empty results, or currency handling.

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 sentences, each carrying distinct information: identity, row contents, the no-filter constraint, and the drill-down path, capped with a concrete call example. Front-loaded and free of repetition.

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?

With a full schema, an output schema and rich annotations, the description covers the remaining gaps: the 10-row cap, the ranking metric, and the follow-up tool. The one unresolved question an agent might have — which of window/start/end/region actually govern this ranking — is left implicit.

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 schema already documents window/start/end/region/detail, and the description only adds an example ({"window":"7d"}) plus the phrase 'over a date range.' The 'takes no filters' wording actually creates mild ambiguity about whether window/start/end apply here, especially since the region parameter description does not list this as a Live method that accepts it.

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 resource (LIVE broadcasts), a precise ranking metric (top 10 by estimated revenue), the time scope (date range), and enumerates the returned fields. An agent knows exactly what it gets back and cannot confuse it with live_search or product_top_selling.

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?

Explicitly says 'This ranking takes no filters,' which warns the agent that segmentation is impossible here, and routes follow-up work to `live` with method=products, sales or history. It does not name live_search or sibling ranking tools as alternatives, so the exclusion side of the guidance is only partly covered.

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

my_accountMy TokConnect accountA
Read-only
Inspect

Your TokConnect plan and credit balance: plan and billing interval, credits used, limit and left, when credits next reset, which apps are connected, and links to upgrade or manage the plan. Free: it uses no credits and works with 0 credits left. Call it when the user asks about credits, cost or their plan, and before multi-step research likely to use more than about 10 calls. It reads the TokConnect account, not a TikTok account.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, non-destructive, closed-world), so the description's real contribution is the cost disclosure: the call consumes no credits and succeeds even at zero balance. That is exactly the behavior an agent needs before spending budget on a check. It stops short of saying anything about freshness or rate limits, so not a 5.

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?

Front-loaded with the resource and its contents, then the cost note, then the usage triggers — a sensible order. The enumerated field list is somewhat long for a tool that already ships an output schema, but it earns most of its space by telling the agent what the user can be shown after calling.

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?

With an output schema present, the description did not need to enumerate return values, yet it does so harmlessly and adds the two things the schema cannot convey: zero cost and the not-a-TikTok-account scope. Nothing an agent needs in order to decide to call it 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?

The tool takes no parameters, so the baseline is 4 and there is nothing for the description to compensate for. The description correctly avoids inventing filter options the schema does not offer.

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 resource and scope: 'Your TokConnect plan and credit balance', then enumerates what is covered (plan, interval, credits used/limit/left, reset time, connected apps, upgrade links). It also pre-empts the most likely confusion in this toolset by saying it reads the TokConnect account, not a TikTok account, which no sibling name would disambiguate on its own.

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 triggers: when the user asks about credits, cost or their plan, and proactively before multi-step research likely to exceed ~10 calls. It also gives a cost-based reason ('Free: it uses no credits and works with 0 credits left') that tells the agent this call is safe to make preemptively — that is a genuine when-to-use rule, not vague framing.

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

pick_comment_winnersComment giveaway drawA
Read-only
Inspect

Draws giveaway winners at random from a video's comments, with optional filters (must_include, unique users, exclude the creator). A seed makes the draw reproducible. Reports how many comments were eligible.

NameRequiredDescriptionDefault
seedNoOptional seed for a reproducible draw. Publish it so anyone can re-run the draw.
videoYesPost id or full https://www.tiktok.com/@creator/video/<id> URL.
detailNofull adds TikTok's raw payload (large).compact
winnersNoHow many winners to draw.
max_commentsNoComments to fetch, in pages of 50.
must_includeNoOptional text a comment must contain (case-insensitive), e.g. a hashtag or keyword.
unique_usersNoCount each commenter once (their earliest fetched comment).
exclude_creatorNoExclude comments by the video's creator.

Output Schema

NameRequiredDescription
rawNoTikTok's full payload; present only with detail=full.
seedNo
pagesNo
rulesNo
randomNo
awemeIdNo
fetchedNo
winnersNo
coverageNo
eligibleNo
excludedNo
fairnessNo
seedSha256No
totalReportedNo

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=false, so safety is covered. The description adds genuine behavioral context beyond that: the draw is random, a seed makes it reproducible, and it reports the eligible comment count. It stops short of explaining what happens without a seed (different results each run), which is the crux of the non-idempotent hint.

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?

Three sentences, front-loaded with the core purpose before the filter/seed/reporting details. Every sentence carries distinct information with no waste.

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?

An output schema exists, so return values need not be explained, and the description usefully notes it reports the eligible comment count. For an 8-parameter tool the coverage is adequate, though the absence of any when-to-use routing keeps it short of complete.

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 all eight parameters including filters and seed are already fully documented in the schema. The description names must_include, unique users, exclude creator, and the seed, but restates them rather than adding syntax or format meaning. Baseline 3 applies when the schema does the heavy lifting.

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 ('Draws giveaway winners at random from a video's comments'), plus the scoping mechanism (optional filters, seed). An agent can distinguish this from read-only comment tools like video_comments or comment_replies immediately.

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

Usage Guidelines3/5

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

Conveys the use case (a giveaway draw) and lists the filters, but never names when to use this instead of video_comments/comment_replies or what conditions make it appropriate. No exclusions or prerequisites are stated, leaving routing to inference.

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

placeOne placeA
Read-onlyIdempotent
Inspect

One tagged place: business, venue or landmark (id from place_search, a post's place.id, or a place link): detail, videos tagged there, or TikTok's public reviews. Example: {"id":"2214...","method":"reviews"}.

NameRequiredDescriptionDefault
idYesPlace id (place.id on a post, or from place_search) or a place link.
limitNoResults per page. videos max 30, reviews max 20. Values above a method's maximum are lowered and reported in notes.
cursorNoPaging: pass the next value from the previous response unchanged. Omit on the first page.
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
methodNoWhat to get. detail: name, category, address, tagged video count | videos: videos tagged at the place | reviews: public reviews with stars, text and photosdetail

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the description does not need to repeat that. It adds useful behavioral context by describing what each method returns, including public reviews and videos tagged at the place, though it leaves pagination and limit behavior to the schema.

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?

The description is a compact, front-loaded sentence followed by a useful example. Every clause earns its place by identifying the resource, accepted id sources, available methods, and a concrete invocation pattern.

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 rich schema, output schema, and annotations, the description is complete enough for an agent to select and invoke the tool correctly. Return details are left to the output schema, and parameter limits/paging are covered by the input schema.

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 description coverage is 100%, so the schema already documents all five parameters, including enums for method and detail. The description reinforces the id sources and demonstrates method usage in an example, but adds little semantic detail beyond the structured 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?

The description clearly identifies the resource ('One tagged place: business, venue or landmark') and the three retrieval modes: detail, tagged videos, and public reviews. It also distinguishes this from place_search by specifying that the id comes from place_search, a post's place.id, or a place link.

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?

It gives clear usage context by naming accepted id sources and the method options, plus an example. It does not explicitly state when to prefer this over siblings or when not to use it, but the single-place scope is evident from 'One tagged place' and the referenced sibling place_search.

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

productOne TikTok Shop productA
Read-onlyIdempotent
Inspect

Everything about one TikTok Shop product (id = product id or a Shop product link). Live from TikTok: page (price, SKUs and stock, rating, shop, and sold = TikTok's displayed lifetime units), reviews, related products, page videos. [Shop Analytics, any market via region]: sales, trend (daily), creators, video_sales, skus, analysis (highlights and attributes), conversion (creators promoting it and the share who sold), review_insights (complaints, praise, use cases; by_sku splits by variant). Examples: {"id":"1732052189676081387","method":"trend","window":"90d"}, {"ids":["1729...","1731..."],"method":"sales","region":"DE"}.

NameRequiredDescriptionDefault
idNoProduct id (products[].id) or a TikTok Shop product link.
endNoShop Analytics methods: custom range end, YYYY-MM-DD (capped at the last complete day).
idsNomethod=sales only: up to 20 product ids in one call.
pageNomethod=reviews: jump to this page (1-100).
sortNomethod=reviews: recommended (default) or newest.
limitNoResults per page. reviews max 5, related max 30, videos max 20; Shop Analytics methods max 100. Values above a method's maximum are lowered and reported in notes.
starsNomethod=reviews: star filter when filter=all.
startNoShop Analytics methods: custom range start, YYYY-MM-DD.
by_skuNomethod=review_insights: split insights by SKU.
cursorNoPaging: pass the next value from the previous response unchanged. Omit on the first page.
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
filterNomethod=reviews: all (default), with_media or verified.
methodNoWhat to get. page: live price, SKUs and stock, sold, rating, shop | reviews: public reviews | related: products TikTok shows as related | videos: the videos on the product page (first page only) | sales [Shop Analytics]: revenue, units, video/LIVE/showcase split, creator count, conversion (ids: up to 20 products) | trend [Shop Analytics]: daily revenue and units (up to ~13 months) | creators [Shop Analytics]: creators selling it, ranked, with revenue | video_sales [Shop Analytics]: videos selling it, with revenue | skus [Shop Analytics]: sales by variant (SKU) | analysis [Shop Analytics]: selling-point highlights and attributes Shop Analytics extracts for the product | conversion [Shop Analytics]: how many creators promote it and what share of them made sales | review_insights [Shop Analytics]: AI summary of reviews: pain points, praise, use cases (by_sku splits by variant)page
regionNoMarket as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions.
windowNoShop Analytics methods: date range ending at the last complete day (about 2 days ago). Default 30d. Use start/end for a custom range.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations by disclosing live-vs-analytics data sourcing, per-method limits that are silently lowered and reported in notes, the ~2-day analytics lag, region refusal for unsupported countries, and that detail=full returns a large raw record. These are exactly the operational traits an agent needs before calling.

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?

Purpose and id semantics are front-loaded, then examples anchor the parameters. It is dense but readable; the main inefficiency is that the long method list largely restates the schema's method description, so a portion of the text is duplicated rather than additive.

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 an output schema present and 100% parameter coverage, the description supplies everything else an agent needs: the two data regimes, the region allow-list behavior, window defaults and lag, and pagination via cursor. Nothing essential to correct invocation 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 coverage is 100%, so the baseline is 3; the description adds value with concrete call examples showing method+window+region+ids interplay and reiterating that id accepts a product link. Much of the method text duplicates the schema's enum description, limiting the uplift to 4.

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

Purpose4/5

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

States a specific resource ('one TikTok Shop product') and enumerates the twelve methods it can return, so the agent knows exactly what data is reachable. It does not, however, contrast itself with siblings such as product_top_selling or shop, so sibling differentiation is left to inference.

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

Usage Guidelines3/5

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

The description gives rich per-method context (page = live price/stock, reviews = public reviews, sales = revenue/units split) which implies when each mode applies, but it never states when to choose this tool over product_top_selling, shop, or shop_browse. No explicit when-not or exclusion guidance is provided.

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

product_top_sellingTop-selling TikTok Shop productsA
Read-onlyIdempotent
Inspect

[Shop Analytics] Products ranked by estimated sales over a date range: revenue, units, video/LIVE/showcase split, growth, price, commission, creators, launch date, daily trend. keyword = words in product titles; category = a category name or id (levels 1-3, several allowed; no keyword needed); both together narrow further. With neither, the result is the top 10 products for the most recent days (about 6). Up to 100 rows per page with cursor paging, about 700 rows per keyword (max_rows up to 3,000 in the US). sort: revenue, units, price, growth or creators; order=asc lists lowest first. Filters: revenue, units, growth, price, commission, creators, launch date, channel, rating, seller type, shipping. region picks the market (default US). Shopper's live view: shop_browse. Examples: {"category":"Skincare","launched_within_days":"30"}, {"keyword":"lip oil","region":"DE","sort":"units"}.

NameRequiredDescriptionDefault
endNoShop Analytics methods: custom range end, YYYY-MM-DD (capped at the last complete day).
sortNoRanking metric: creators, growth, price, revenue, units. Default revenue. growth favours brand-new items (shown as >999.9%); pair it with a revenue or units filter. Applies with a keyword or category.
limitNoResults per page. Max 100 per page; pass next as cursor for the following page. Up to about 700 rows per keyword (max_rows scans up to 3,000 in the US). Without a keyword or category: 10 rows. Values above a method's maximum are lowered and reported in notes.
orderNodesc (default, highest first) or asc (lowest first among the matching rows; pair it with a revenue or units filter to skip dead listings). Applies with a keyword or category.
priceNoFilter. Average selling price in the market's currency, e.g. <20 or 20-100.
startNoShop Analytics methods: custom range start, YYYY-MM-DD.
unitsNoFilter. Units sold over the window, e.g. 500-5000 or >10000.
cursorNoPaging: pass the next value from the previous response unchanged. Omit on the first page.
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
ratingNoFilter. Product rating, e.g. >4.5.
regionNoMarket as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions.
windowNoShop Analytics methods: date range ending at the last complete day (about 2 days ago). Default 30d. Use start/end for a custom range.
keywordNoWords from product titles, e.g. 'vitamin c serum' or 'lip oil'. Ranks every matching product over your window. If keyword and category are both omitted, the result is the top 10 products for the most recent days (about 6), whatever window is set: pass a keyword or category when the user wants more than 10 rows or a specific window.
revenueNoFilter. Revenue in the market's currency over the window: a-b, <a or >b, e.g. 1000-10000.
categoryNoNarrow to one or more Shop categories (up to 5), by name or numeric id, levels 1 to 3: ["Skincare"], ["Pet Supplies"], ["Beauty & Personal Care","Health"] or ["601450"]. Without a keyword the products of the category are found by merging several generic keyword searches (a keyword is needed), and the result says how many keyword sweeps and distinct rows that gave. Find names and ids with category_trends method=tree.
creatorsNoFilter. Number of creators selling it, e.g. 10-50.
max_rowsNoScan up to this many matching products (101-3000) before sorting, to go past the 700-row cap; the top limit rows are returned. Needs keyword; US market only; not with category.
shippingNoFilter. local = ships from warehouses in the market; global = cross-border.
affiliateNoFilter. PUBLIC_PLAN = open affiliate plan; NON_AFFILIATE = not open to affiliates.
commissionNoFilter. Affiliate commission percent, e.g. 15-35.
seller_typeNoFilter. Who sold it: the seller's own accounts, independent affiliates, or the Shop mall.
sales_channelNoFilter. Where the revenue came from: VIDEO, LIVE or SHOWCASE (shop tab and search). Several: comma separated, e.g. VIDEO,LIVE. Values: VIDEO, LIVE, SHOWCASE.
revenue_growthNoFilter. Revenue growth vs the previous equal window, percent, e.g. >30.
creator_conversionNoFilter. Percent of creators who made a sale, e.g. >45.
launched_within_daysNoFilter. Only products launched in the last N days.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely non-obvious behavior: the ~700-row cap per keyword, max_rows scanning up to 3,000 (US only, keyword required, not with category), limits above a method maximum being silently lowered and reported in notes, and window ending at the last complete day. It omits how the 'estimated' revenue is derived, which is a minor gap.

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?

Front-loaded with what is returned, then defaults, sorting, filters, region, and examples — a sensible order. The mid-sentence filter enumeration ('Filters: revenue, units, growth, price...') largely restates the schema property names and is the least earned portion, but the rest is dense and information-bearing.

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?

For a 25-parameter tool, the description covers default behavior, row caps, paging, region support, sort/order interaction, and no-parameter fallback, and an output schema plus annotations carry return shape and safety. An agent has everything needed to call it correctly on the first attempt.

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 100%, so baseline is 3; the description goes beyond the schema by explaining interaction semantics — keyword plus category narrows further, category needs keyword sweeps, sort=growth favors brand-new items (>999.9%) and should be paired with a revenue/units filter, order=asc is useful to skip dead listings. Two worked examples make the intended combinations concrete.

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 first sentence names a specific resource (TikTok Shop products) and the exact ranking/return surface (revenue, units, channel split, growth, price, commission, creators, launch date, daily trend) over a date range. It also names the sibling it is not: 'Shopper's live view: shop_browse.' An agent can distinguish this from shop_top_selling/product without opening a 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?

Explicit rules for the key decision: keyword, category, or neither (neither yields the top 10 for the most recent days regardless of window), plus a note that category alone merges generic keyword sweeps. It routes to shop_browse for the live shopper view. It does not explicitly contrast with shop_top_selling or creator_top_selling, so a 4 rather than a 5.

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

referenceReference listsA
Read-onlyIdempotent
Inspect

Static lists other tools need: Creator Search Insights channels and languages, Explore category ids, LIVE gift coin prices, Ad Library regions, Creative Partner markets, and the Shop Analytics filters and sort fields. Example: {"method":"sales_filters"}.

NameRequiredDescriptionDefault
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
methodNoWhat to get. csi_channels: demand_find_topics feeds and trending categories | csi_languages: language codes for demand_find_topics | explore_categories: category ids for video_feed method=explore | live_gifts: LIVE gifts and their coin prices | ad_regions: EU/UK regions the Ad Library covers | creative_markets: Creative Partner markets and dates | sales_filters: every Shop Analytics filter, its values and sort fields

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds only the fact that the data is 'static', which usefully signals stability/cacheability, but it says nothing about size, output shape, or the cost implied by detail=full.

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?

One front-loaded sentence that defines the resource, followed by a concrete example call. The enumeration is long but every item corresponds to a real enum value, so it earns its space; a tighter grouping could still trim a few words.

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?

With a full output schema, 100% parameter coverage, and complete annotations, the description only needs to establish what the tool is and why it exists. It does that; the only residual gap is not explaining what detail=full costs or what the lists look like structurally.

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 description coverage is 100% and both parameters are enums with per-value documentation, so the schema carries the semantics. The description contributes a single example invocation ({"method":"sales_filters"}) but adds no meaning beyond the enum descriptions.

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

Purpose4/5

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

The description names the resource precisely and enumerates the exact list families returned (CSI channels/languages, explore category ids, LIVE gift coin prices, ad regions, creative markets, sales filters). It implicitly separates itself from siblings by framing everything as 'static lists other tools need' rather than queries, though it never names a sibling explicitly.

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?

'Static lists other tools need' plus the listed mappings (e.g. csi_channels feeding demand_find_topics, explore_categories feeding video_feed method=explore) tell an agent when to reach for this tool: to resolve ids/codes before calling another tool. It lacks an explicit statement of when not to use it, so it falls short of a 5.

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

shopOne TikTok Shop sellerA
Read-onlyIdempotent
Inspect

Everything about one TikTok Shop seller (id = sellerId, found on any of its products, or with shop_top_selling keyword=). Live: store (what shoppers see: rating, followers, catalogue). [Shop Analytics, any market via region]: sales (revenue, units, affiliate vs own vs mall), trend (daily), products, new_products, strategy (pricing, top affiliates unnamed), creators, videos, new_affiliates and affiliate_videos (daily counts with summary). Example: {"id":"7495514739648989419","method":"new_affiliates","window":"30d"}.

NameRequiredDescriptionDefault
idYesSeller id (sellerId on products and stores).
endNoShop Analytics methods: custom range end, YYYY-MM-DD (capped at the last complete day).
slugNomethod=store: store slug if known; looked up when omitted.
limitNoResults per page. Shop Analytics methods max 100. Values above a method's maximum are lowered and reported in notes.
startNoShop Analytics methods: custom range start, YYYY-MM-DD.
cursorNoPaging: pass the next value from the previous response unchanged. Omit on the first page.
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
methodNoWhat to get. store: live storefront: rating, sold, followers, products | sales [Shop Analytics]: revenue and units, split by own accounts, affiliates and mall | trend [Shop Analytics]: daily revenue and units (up to ~13 months) | products [Shop Analytics]: its products ranked by revenue | new_products [Shop Analytics]: products it launched in the window | strategy [Shop Analytics]: price bands and sales-channel mix: top affiliates (individuals unnamed) and the shop's own accounts | creators [Shop Analytics]: affiliate creators selling for it, with revenue | videos [Shop Analytics]: videos selling its products, with revenue | new_affiliates [Shop Analytics]: daily count of new affiliates who started promoting the shop, with a summary | affiliate_videos [Shop Analytics]: daily count of new videos affiliates posted for the shop, with a summarystore
regionNoMarket as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions.
windowNoShop Analytics methods: date range ending at the last complete day (about 2 days ago). Default 30d. Use start/end for a custom range.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered; the description adds the meaningful split that 'store' is live shopper-facing data while the other methods are Shop Analytics and market-dependent via region. It also discloses that strategy data leaves individual affiliates unnamed, which is behavioral context the schema does not convey.

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?

Front-loaded with the resource and the id-resolution hint, then the method inventory, then an example. Dense but every clause carries information; the inline method enumeration is long but justified for a 10-method multi-purpose tool.

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?

With an output schema, full annotation coverage and 100%-documented parameters, the description only needs to orient the agent, which it does. Minor gaps remain: paging via cursor and the compact/full detail tradeoff are only in the schema, not reinforced here.

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 description coverage is 100% and the method enum already carries per-value explanations, so the description's method list largely restates structured data. The one added element is a concrete example invocation showing id + method + window together, which is helpful but marginal against an already complete 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?

States a specific resource and scope ('Everything about one TikTok Shop seller') and immediately enumerates the two families of data available (live storefront vs Shop Analytics methods). It also tells the agent how the required id is obtained and names siblings (shop_top_selling, shop_regions), so it is distinguishable 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?

Gives explicit guidance for the required id (found on products, or via shop_top_selling with keyword=<shop name>) and points to shop_regions for market support, with the constraint that unsupported countries are refused. It does not explicitly contrast this tool with shop_browse, but the method list makes the intended context clear.

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

shop_browseBrowse TikTok Shop nowA
Read-only
Inspect

What a shopper sees on TikTok Shop (US store) right now: search results, keyword and category pages, deals and flash sales. Returns price, discount, displayed units sold, rating and shop. Displayed sold counts are lifetime and broad single-word searches can return only a short fallback list, so this is not a sales ranking: use product_top_selling for best sellers. Example: {"keyword":"lip oil","sort":"best_sellers"}.

NameRequiredDescriptionDefault
pathNomethod=path: any other Shop path, e.g. store/{slug}/{seller_id} or deals/premium-offers.
slugNomethod=keyword_page: slug from relatedSearches (e.g. lip-oils); method=category_page: category slug.
sortNomethod=search: best_sellers, newest, price_desc or price_asc (default relevance). The result's sortApplied says whether TikTok sorted the results (tiktok) or only this page was sorted (page).
cursorNoPaging: pass the next value from the previous response unchanged. Omit on the first page.
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
methodNoWhat to get. search: Shop search results | keyword_page: an SEO keyword page (slug) | category_page: a category page (category_id + slug) | deals: the deals feed | flash_sales: flash sales | path: any other Shop page by pathsearch
regionNoMarket as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions.
filtersNomethod=search or keyword_page: TikTok filter ids from a previous response's filters, e.g. ecom_rating_stat|RATING_4.
keywordNomethod=search: product search phrase.
category_idNomethod=category_page: category id from relatedCategories.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare read-only, non-destructive, open-world, non-idempotent behavior, so the bar is lower; the description still adds real value by disclosing that displayed sold counts are lifetime and that results can be a truncated fallback list. It stops short of covering paging semantics or the region-refusal behavior, which are only in the schema.

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?

Three front-loaded sentences: scope, return fields, then the caveat-plus-alternative, closing with a compact example. No filler or repetition of the title.

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?

For a 10-parameter, fully documented, output-schema-backed read tool, the description covers what is browsed, what comes back, the main data-quality caveat, and the correct sibling alternative. Nothing needed to select or 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 description coverage is 100% and the enum semantics (method, sort, detail, region) are already documented there, so baseline 3 applies. The description's example adds marginal illustration of keyword+sort but no syntax or meaning beyond 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?

States a specific verb+resource+scope: what a shopper sees on TikTok Shop (US) right now, covering search, keyword/category pages, deals and flash sales. It also lists the returned fields (price, discount, units sold, rating, shop), so the agent knows exactly what this yields versus 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 excludes itself from sales-ranking use and routes the agent to product_top_selling for best sellers, and warns that broad single-word searches return only a short fallback list. The inline example {"keyword":"lip oil","sort":"best_sellers"} demonstrates the intended default invocation.

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

shop_regionsShop Analytics marketsA
Read-onlyIdempotent
Inspect

Lists the TikTok Shop markets Shop Analytics covers, with each market's currency, language and tier. core = the 13 main markets; extended = Poland, Italy, the Netherlands and Ireland, which Shop Analytics also answers with local data. Pass the code as region to any Shop Analytics tool; other countries are refused. Default market is US. Example: {}.

NameRequiredDescriptionDefault
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds genuine behavioral context not in annotations: the core vs. extended tier split and the hard rejection of unlisted countries downstream. It doesn't describe response size or pagination behavior, though an output schema exists to cover return shape.

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 tight sentences: what it returns, the tier taxonomy, the downstream contract, the refusal/default rule. Front-loaded and zero filler; even the example call earns its place as a minimal-invocation hint.

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?

For a zero-required-param lookup with a full output schema, everything an agent needs is present: how markets are grouped, the default, and the consequence of using an unsupported region elsewhere. The only untouched detail is the optional 'detail' flag, which the schema handles.

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?

One optional parameter with 100% schema description coverage, so the schema already explains compact vs. full. The description never mentions 'detail' at all and instead shows 'Example: {}', implicitly framing the call as parameterless. Baseline 3 for high schema coverage.

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 ('Lists the TikTok Shop markets Shop Analytics covers') plus what each entry carries (currency, language, tier). It also carves out the tool's role relative to siblings: it is the lookup you consult before passing a region code to a Shop Analytics tool.

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 tells the agent what to do with the output ('Pass the code as region to any Shop Analytics tool'), what is out of scope ('other countries are refused'), and what happens by default ('Default market is US'). No inference required.

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

shop_top_sellingTop-selling TikTok Shop sellersA
Read-onlyIdempotent
Inspect

[Shop Analytics] TikTok Shop sellers ranked by estimated sales over a date range: revenue, units, growth, average price, and revenue split across own accounts, affiliates and the mall. keyword = a shop or brand name, matched loosely, e.g. 'medicube'; not a product type. For the shops behind a product type or category, rank products with product_top_selling, then product method=page on the top items gives their sellerId. Without a keyword: the top 10 shops for the most recent days (about 6). type=brands lists the top 10 brands. No category scope for shops. Up to 100 rows per page with cursor paging, about 500 rows per keyword. sort: revenue, units or growth; order=asc lists lowest first. Filters: revenue, growth, price, revenue source, seller type. region picks the market (default US). Examples: {"keyword":"medicube","window":"90d"}, {"type":"brands","region":"GB"}.

NameRequiredDescriptionDefault
endNoShop Analytics methods: custom range end, YYYY-MM-DD (capped at the last complete day).
sortNoRanking metric: growth, revenue, units. Default revenue. growth favours brand-new items (shown as >999.9%); pair it with a revenue or units filter. Applies with a keyword.
typeNoshops (default) or brands (the top 10 brands for the most recent days; keyword, filters and sort do not apply).
limitNoResults per page. Max 100 per page; pass next as cursor for the following page. Up to about 500 rows per keyword. Without a keyword: 10 rows. Values above a method's maximum are lowered and reported in notes.
orderNodesc (default, highest first) or asc (lowest first among the matching rows; pair it with a revenue or units filter to skip dead listings). Applies with a keyword.
priceNoFilter. Average selling price in the market's currency, e.g. 20-100.
startNoShop Analytics methods: custom range start, YYYY-MM-DD.
cursorNoPaging: pass the next value from the previous response unchanged. Omit on the first page.
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
regionNoMarket as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions.
windowNoShop Analytics methods: date range ending at the last complete day (about 2 days ago). Default 30d. Use start/end for a custom range.
keywordNoA shop or brand NAME, matched loosely against shop names, e.g. 'medicube'. It does not match product types: 'skincare' finds shops with that word in their name. For the shops behind a product type or category, rank products with product_top_selling (category or a product keyword), call product method=page on the top items for their sellerId, then use shop or call this tool with the brand names found. If keyword is omitted, the result is the top 10 shops for the most recent days (about 6), whatever window is set: pass a shop or brand name when the user wants more than 10 rows or a specific window.
revenueNoFilter. Shop revenue in the market's currency over the window, e.g. >100000.
seller_typeNoFilter. BRAND or RETAILER.
revenue_growthNoFilter. Revenue growth percent vs the previous window, e.g. >30.
revenue_sourceNoFilter. Main revenue source: own accounts, affiliates, or the mall.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations cover the read-only/idempotent safety profile, and the description adds real behavioral context beyond them: cursor paging up to 100 per page with roughly 500 rows per keyword, the quirk that omitting keyword returns only the top 10 for the most recent ~6 days regardless of window, and that sort/order only apply with a keyword. These are the non-obvious behaviors an agent would otherwise discover only by failing.

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?

Front-loaded with purpose and metrics before the conditional rules, and the two inline JSON examples make the call shape concrete. It is a single dense paragraph that partly repeats schema content (filter enumeration, paging limits), so it is efficient but not maximally tight.

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 16 optional parameters, an output schema, and full annotation coverage, the description supplies exactly the missing layer: which parameter combinations are meaningful, what defaults produce, and how to reach seller IDs via sibling tools. Nothing an agent needs before invoking it is absent.

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 100%, so the baseline is 3; the description goes beyond it by disambiguating keyword (a shop/brand name matched loosely, not a product type, with a concrete 'medicube' example) and by explaining the interaction between type, keyword, sort and order. It still largely restates the filter list rather than adding new semantics for each filter, keeping it short of a 5.

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 and resource — TikTok Shop sellers ranked by estimated sales over a date range — and enumerates the returned metrics (revenue, units, growth, average price, revenue split). It explicitly distinguishes itself from product_top_selling, which covers the product/category angle, so an agent can tell the two apart without opening a 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 branches: keyword present vs omitted, type=brands versus default shops, and a full workaround path for the shops behind a product type (product_top_selling → product method=page → sellerId). It also states exclusions, e.g. no category scope for shops and that filters/sort do not apply with type=brands.

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

soundOne soundA
Read-onlyIdempotent
Inspect

One TikTok sound (id = sound id from any post or sound_search, or a sound link): detail or the videos using it. Example: {"id":"7012...","method":"videos"}.

NameRequiredDescriptionDefault
idYesSound id (sound.id on a post) or a TikTok sound link.
limitNoResults per page. Max 50. Values above a method's maximum are lowered and reported in notes.
cursorNoPaging: pass the next value from the previous response unchanged. Omit on the first page.
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
methodNoWhat to get. detail: title, author, duration, original or licensed, post count | videos: videos using the sounddetail

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds the accepted id formats and a concrete invocation example, but says nothing about pagination behavior or the notes mechanism that the schema mentions for clamped limits.

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?

Two short sentences plus a minimal example, with the id sourcing rule front-loaded. The telegraphic phrasing costs a little readability but nothing is wasted.

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?

With an output schema present, return values need not be described, and all five parameters are fully documented in the schema. What remains missing is minor: no guidance on paging through many videos or on the relationship between limit and the method-specific maximum.

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 description coverage is 100%, so the schema already explains id, limit, cursor, detail and method. The description's example clarifies how id and method combine in practice, but adds no semantics the schema does not already carry; baseline 3 applies.

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

Purpose4/5

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

Names a specific resource (one TikTok sound) and the two modes it supports (detail or videos using it), and points at sound_search as the id source, which separates it from the search sibling. The verb is elliptical ("detail or the videos using it"), so the operation has to be inferred, but the intent is unmistakable.

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

Usage Guidelines3/5

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

Implies the precondition (you must already have a sound id or link) and tells you sound_search is how ids are found, plus that method selects detail vs videos. There is no explicit when-not or statement of what the tool returns versus the search tool, so routing is only implied.

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

videoOne TikTok videoA
Read-onlyIdempotent
Inspect

Everything about one video or photo post: detail, comments, replies, caption transcript, similar videos, and [Shop Analytics; region picks the market] the revenue it drove and the products it sold. Use the post id or link from any other tool. Examples: {"id":"https://vt.tiktok.com/...","method":"transcript"}, {"id":"7694...","method":"sales"}. method=comment_themes lists the keywords TikTok extracts from the comments, each with sample comments. Example: {"id":"7691388445251439924","method":"comment_themes"}.

NameRequiredDescriptionDefault
idNoVideo or photo post: a TikTok link (short vm./vt. links work), or the numeric post id (videos[].id). Not needed for method=captions.
endNoShop Analytics methods: custom range end, YYYY-MM-DD (capped at the last complete day).
sortNomethod=comments: relevant (TikTok's order, default) or newest.
limitNoResults per page. comments and replies max 50, similar max 30; Shop Analytics methods max 100. Values above a method's maximum are lowered and reported in notes.
startNoShop Analytics methods: custom range start, YYYY-MM-DD.
cursorNoPaging: pass the next value from the previous response unchanged. Omit on the first page.
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
methodNoWhat to get. detail: counts, creator, hashtags, sound, place, linked products, caption tracks | comments: top-level comments | replies: replies to one comment (comment_id) | transcript: existing captions as plain text (nothing is transcribed) | captions: one caption file as WebVTT (subtitle_url, or the video id: English track first) | similar: videos TikTok relates to this one | sales [Shop Analytics]: revenue, units and ad metrics the video drove | products [Shop Analytics]: products sold through the video, with revenue | product_trend [Shop Analytics]: daily sales of the video's products | similar_revenue [Shop Analytics]: how similar videos performed | comment_themes: keywords TikTok extracts from the comments, with sample commentsdetail
regionNoMarket as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions.
windowNoShop Analytics methods: date range ending at the last complete day (about 2 days ago). Default 30d. Use start/end for a custom range.
languageNomethod=transcript: preferred caption language, e.g. en.
comment_idNomethod=replies: the comment id from method=comments.
subtitle_urlNomethod=captions: a caption URL from method=detail (captions[].url).

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive behavior, so safety is covered. The description adds the non-obvious behavioral split that Shop Analytics methods are region-scoped and priced in the market's currency, which materially affects result interpretation. It omits operational behavior such as capping/pagination consequences, which live only in the schema.

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?

Front-loaded with the scope sentence, then capabilities, then usage, then a targeted comment_themes clarification with its own example. Dense but every clause carries information; the appended comment_themes paragraph is slightly tacked-on after the general examples.

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 an output schema present and 100% schema description coverage, the description need not explain return values, and it covers every method family an agent would need at selection time. The remaining details (limits, cursors, region refusals) are fully handled in the schema, so nothing required 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.

Parameters4/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 earns one more by giving concrete invocation shapes for two different methods plus a dedicated comment_themes example, which reduces method/parameter mismatches in a 13-parameter dispatcher. The added meaning is mostly illustrative rather than new semantics.

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

Purpose4/5

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

The description names a specific resource — one video or photo post — and enumerates the retrievable facets (detail, comments, replies, transcript, similar, Shop Analytics revenue/products), so an agent can immediately tell it is a single-post lookup rather than a discovery tool. It never explicitly contrasts itself with video_search or video_feed, which is the only thing keeping it from a 5.

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?

"Use the post id or link from any other tool" tells the agent this is the follow-up call after a search, and the worked examples show correct id+method pairings. It stops short of stating when to prefer comments over comment_themes or transcript over captions beyond what the method prose implies, and names no alternatives to itself.

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

video_feedTikTok feedsA
Read-only
Inspect

Samples TikTok's own feeds: For You (as a neutral US viewer), Explore categories, and Discover creators/hashtags/sounds. Samples, not rankings. Example: {"method":"explore","category_id":3}. Category ids come from reference method=explore_categories.

NameRequiredDescriptionDefault
limitNoResults per page. for_you, discover max 30; explore, discover_hashtags max 20. Values above a method's maximum are lowered and reported in notes.
sceneNomethod=discover: Discover scene (15 is the full catalogue).
cursorNoPaging: pass the next value from the previous response unchanged. Omit on the first page.
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
methodNoWhat to get. for_you: a page of the For You feed | explore: videos from one Explore category | discover: Discover picks: creators, hashtags, sounds | discover_hashtags: Discover hashtags with sample videosfor_you
category_idNomethod=explore: id from reference method=explore_categories.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Goes beyond the readOnly/openWorld annotations by disclosing that For You is sampled 'as a neutral US viewer' (a geo/personalization caveat an agent cannot infer) and that results are a sample rather than a ranking. Limit-cap lowering is already handled in the schema, so the remaining gap is minor.

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?

Three short sentences plus a concrete example, with the most decision-relevant fact ('Samples, not rankings') front-loaded. No filler.

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?

With full schema coverage, rich annotations, and an output schema, the description only needs to cover intent and sampling semantics, which it does. Minor omission: no mention that the different methods have different page-size ceilings (that lives only in the schema).

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 100%, so the baseline is 3; the description adds an example invocation ({'method':'explore','category_id':3}) and reiterates where category_id values originate, which links parameters across tools rather than restating field docs.

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 ('samples') and resource ('TikTok's own feeds') and enumerates the three feed families: For You, Explore categories, and Discover (creators/hashtags/sounds). 'Samples, not rankings' plus 'TikTok's own feeds' cleanly separates it from sibling search tools (video_search, hashtag_search) and ranking tools (video_top_selling).

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

Usage Guidelines3/5

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

It gives a prerequisite dependency — category ids come from reference method=explore_categories — which is genuinely useful routing information. However, it never states when to prefer this over video_search or video_top_selling; the distinction is only implied by the word 'samples'.

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

video_top_sellingTop-selling TikTok Shop videosA
Read-onlyIdempotent
Inspect

[Shop Analytics] The top 10 shoppable videos by estimated revenue over a date range, with revenue, units, views, GPM, ad metrics (CPA, ROAS, ad revenue share), whether it is AI-generated, and the creator. This ranking takes no filters; to study one niche, rank its products with product_top_selling, then use product method=video_sales. Pass a row's id to video method=transcript or products. Example: {"window":"7d"}.

NameRequiredDescriptionDefault
endNoShop Analytics methods: custom range end, YYYY-MM-DD (capped at the last complete day).
startNoShop Analytics methods: custom range start, YYYY-MM-DD.
detailNocompact (default) returns the useful fields; full adds the full raw record (large).compact
regionNoMarket as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions.
windowNoShop Analytics methods: date range ending at the last complete day (about 2 days ago). Default 30d. Use start/end for a custom range.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety bar is met structurally; the description adds that the result is a fixed top-10 ranking by estimated revenue and what dimensions it exposes. It does not discuss the estimation methodology or any latency/cost characteristics, which keeps it short of a 5.

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?

Four dense sentences, front-loaded with the definition and metric, then routing, then an example — no filler. The middle routing clauses are somewhat compressed and could be skimmed past, but every sentence carries information.

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?

With an output schema present the description need not describe return values, so the field listing is bonus rather than required; the schema, annotations, and routing advice together cover what an agent needs to invoke it. The one soft spot is the blanket 'takes no filters' claim sitting next to region/start/end/window scoping parameters, which could momentarily confuse the scope of the result set.

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 100%, so the parameter documentation baseline is 3; the description earns an increment by supplying a concrete call example ({"window":"7d"}) and by clarifying that none of the available parameters act as content filters on the ranking. It does not itself explain region currency behavior, which the schema carries.

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 precise verb+resource+metric: the top 10 shoppable videos ranked by estimated revenue over a date range, and enumerates the returned fields (revenue, units, views, GPM, ad metrics, AI-generated flag, creator). It distinguishes itself from siblings by noting the ranking takes no filters and by routing niche analysis to product_top_selling instead.

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 states when-not to use it ('takes no filters') and names the alternative workflow: rank a niche's products with product_top_selling, then product method=video_sales. It also tells the agent the next hop ('Pass a row's id to video method=transcript or products'), which is actionable routing, not inference.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 31 tool updates
    • Changedad_library1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedcategory_trends3 fields changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
      • changedInput schema / properties / keyword / description
        Previous value: -"method=search: category name to look up in the data source, e.g. 'serum'. method=tree: text to find in category names, e.g. 'skincare'."New value: +"method=search: category name to look up, e.g. 'serum'. method=tree: text to find in category names, e.g. 'skincare'."
      • changedInput schema / properties / method / description
        Previous value: -"What to get. list [Shop Analytics]: categories with revenue, growth and concentration | products [Shop Analytics]: a category's top product ids (US market only) | search [Shop Analytics]: find category names and ids by keyword | tree: category names and ids to use as category | market_size [Shop Analytics]: how many products, shops, creators, videos, LIVEs and brands the source tracks"New value: +"What to get. list [Shop Analytics]: categories with revenue, growth and concentration | products [Shop Analytics]: a category's top product ids (US market only) | search [Shop Analytics]: find category names and ids by keyword | tree: category names and ids to use as category | market_size [Shop Analytics]: how many products, shops, creators, videos, LIVEs and brands Shop Analytics tracks"
    • Changedcharts1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedcreative_center1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedcreator1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedcreator_commerce2 fields changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
      • changedInput schema / properties / method / description
        Previous value: -"What to get. linked_products: each product linked in recent posts, with post count, views and likes (not sales) | sales [Shop Analytics]: revenue, units, video vs LIVE, average price | trend [Shop Analytics]: daily revenue (up to ~13 months) | products [Shop Analytics]: products they sold, with revenue | shops [Shop Analytics]: shops (brands) they sell for, with revenue | videos [Shop Analytics]: their selling videos, with revenue | audience [Shop Analytics]: follower age, gender, top locations and languages, active hours (when the source has built it)"New value: +"What to get. linked_products: each product linked in recent posts, with post count, views and likes (not sales) | sales [Shop Analytics]: revenue, units, video vs LIVE, average price | trend [Shop Analytics]: daily revenue (up to ~13 months) | products [Shop Analytics]: products they sold, with revenue | shops [Shop Analytics]: shops (brands) they sell for, with revenue | videos [Shop Analytics]: their selling videos, with revenue | audience [Shop Analytics]: follower age, gender, top locations and languages, active hours (when Shop Analytics has built it)"
    • Changedcreator_playlist1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedcreator_search1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedcreator_top_selling2 fields changed
      • changedInput schema / properties / category / description
        Previous value: -"Narrow to one or more Shop categories (up to 5), by name or numeric id, levels 1 to 3: [\"Skincare\"], [\"Pet Supplies\"], [\"Beauty & Personal Care\",\"Health\"] or [\"601450\"]. Without a keyword the creators of the category are found by merging several generic keyword searches (the source needs a keyword), and the result says how many keyword sweeps and distinct rows that gave. Find names and ids with category_trends method=tree."New value: +"Narrow to one or more Shop categories (up to 5), by name or numeric id, levels 1 to 3: [\"Skincare\"], [\"Pet Supplies\"], [\"Beauty & Personal Care\",\"Health\"] or [\"601450\"]. Without a keyword the creators of the category are found by merging several generic keyword searches (a keyword is needed), and the result says how many keyword sweeps and distinct rows that gave. Find names and ids with category_trends method=tree."
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changeddemand_find_topics1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changeddemand_keywords1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changeddemand_topic1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedhashtag1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedhashtag_search1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedlive1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedlive_search1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedlive_top_selling1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedplace1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedproduct2 fields changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
      • changedInput schema / properties / method / description
        Previous value: -"What to get. page: live price, SKUs and stock, sold, rating, shop | reviews: public reviews | related: products TikTok shows as related | videos: the videos on the product page (first page only) | sales [Shop Analytics]: revenue, units, video/LIVE/showcase split, creator count, conversion (ids: up to 20 products) | trend [Shop Analytics]: daily revenue and units (up to ~13 months) | creators [Shop Analytics]: creators selling it, ranked, with revenue | video_sales [Shop Analytics]: videos selling it, with revenue | skus [Shop Analytics]: sales by variant (SKU) | analysis [Shop Analytics]: selling-point highlights and attributes the source extracts for the product | conversion [Shop Analytics]: how many creators promote it and what share of them made sales | review_insights [Shop Analytics]: AI summary of reviews: pain points, praise, use cases (by_sku splits by variant)"New value: +"What to get. page: live price, SKUs and stock, sold, rating, shop | reviews: public reviews | related: products TikTok shows as related | videos: the videos on the product page (first page only) | sales [Shop Analytics]: revenue, units, video/LIVE/showcase split, creator count, conversion (ids: up to 20 products) | trend [Shop Analytics]: daily revenue and units (up to ~13 months) | creators [Shop Analytics]: creators selling it, ranked, with revenue | video_sales [Shop Analytics]: videos selling it, with revenue | skus [Shop Analytics]: sales by variant (SKU) | analysis [Shop Analytics]: selling-point highlights and attributes Shop Analytics extracts for the product | conversion [Shop Analytics]: how many creators promote it and what share of them made sales | review_insights [Shop Analytics]: AI summary of reviews: pain points, praise, use cases (by_sku splits by variant)"
    • Changedproduct_top_selling2 fields changed
      • changedInput schema / properties / category / description
        Previous value: -"Narrow to one or more Shop categories (up to 5), by name or numeric id, levels 1 to 3: [\"Skincare\"], [\"Pet Supplies\"], [\"Beauty & Personal Care\",\"Health\"] or [\"601450\"]. Without a keyword the products of the category are found by merging several generic keyword searches (the source needs a keyword), and the result says how many keyword sweeps and distinct rows that gave. Find names and ids with category_trends method=tree."New value: +"Narrow to one or more Shop categories (up to 5), by name or numeric id, levels 1 to 3: [\"Skincare\"], [\"Pet Supplies\"], [\"Beauty & Personal Care\",\"Health\"] or [\"601450\"]. Without a keyword the products of the category are found by merging several generic keyword searches (a keyword is needed), and the result says how many keyword sweeps and distinct rows that gave. Find names and ids with category_trends method=tree."
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedreference1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedshop1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedshop_browse1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedshop_regions1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedshop_top_selling1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedsound1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedsound_search1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedvideo1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedvideo_feed1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedvideo_search1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
    • Changedvideo_top_selling1 field changed
      • changedInput schema / properties / detail / description
        Previous value: -"compact (default) returns the useful fields; full adds the raw upstream payload (large)."New value: +"compact (default) returns the useful fields; full adds the full raw record (large)."
  2. 1 tool update
    • Addedmy_account
  3. 1 tool update
    • Changedvideo1 field changed
      • changedInput schema / properties / method / description
        Previous value: -"What to get. detail: counts, creator, hashtags, sound, place, linked products, caption tracks | comments: top-level comments | replies: replies to one comment (comment_id) | transcript: existing captions as plain text (nothing is transcribed) | captions: one caption file as WebVTT (subtitle_url) | similar: videos TikTok relates to this one | sales [Shop Analytics]: revenue, units and ad metrics the video drove | products [Shop Analytics]: products sold through the video, with revenue | product_trend [Shop Analytics]: daily sales of the video's products | similar_revenue [Shop Analytics]: how similar videos performed | comment_themes: keywords TikTok extracts from the comments, with sample comments"New value: +"What to get. detail: counts, creator, hashtags, sound, place, linked products, caption tracks | comments: top-level comments | replies: replies to one comment (comment_id) | transcript: existing captions as plain text (nothing is transcribed) | captions: one caption file as WebVTT (subtitle_url, or the video id: English track first) | similar: videos TikTok relates to this one | sales [Shop Analytics]: revenue, units and ad metrics the video drove | products [Shop Analytics]: products sold through the video, with revenue | product_trend [Shop Analytics]: daily sales of the video's products | similar_revenue [Shop Analytics]: how similar videos performed | comment_themes: keywords TikTok extracts from the comments, with sample comments"
  4. 22 tool updates
    • Addedad_library
    • Changedcategory_trends1 field changed
      • changedInput schema / properties / region / description
        Previous value: -"Shop Analytics methods: market as an ISO country code, default US. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. Amounts are in the market's currency. See shop_regions."New value: +"Market as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions."
    • Addedcharts
    • Changedcreative_center1 field changed
      • changedInput schema / properties / country / description
        Previous value: -"method=top_videos: JP (default), VN, TH, ID or US. method=partners: market code from reference method=creative_markets, e.g. TH."New value: +"method=top_videos: US (default), JP, VN, TH or ID. method=partners: market code from reference method=creative_markets, e.g. TH (default US, where TikTok lists no partners)."
    • Changedcreator4 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Results per page. posts max 35, stories max 10, others max 30. Values above a method's maximum are lowered and reported in notes."New value: +"Results per page. posts max 35, others max 30. Values above a method's maximum are lowered and reported in notes."
      • changedInput schema / properties / method / description
        Previous value: -"What to get. profile: followers, likes, videos, bio, link, verified, Shop seller, ids | posts: posts, newest first, with counts and linked products | reposts: posts the creator reposted | likes: public Liked tab (empty when hidden) | stories: Stories up now (they expire) | followers: followers, when TikTok shows them (usually hidden) | following: accounts followed, when shown (usually hidden) | embed: posts in the creator's embed widget | playlists: public playlists (ids for creator_playlist) | collections: public saved collections (often empty)"New value: +"What to get. profile: followers, likes, videos, bio, link, verified, Shop seller, ids | posts: posts, newest first, with counts and linked products | reposts: posts the creator reposted | likes: public Liked tab (empty when hidden) | followers: followers, when TikTok shows them (usually hidden) | following: accounts followed, when shown (usually hidden) | embed: posts in the creator's embed widget | playlists: public playlists (ids for creator_playlist) | collections: public saved collections (often empty) | audit: registered country, ids, TikTok milestones (started posting, follower marks) | lookalikes: accounts TikTok suggests as similar"
      • changedInput schema / properties / method / enum
        Previous value: -[
        -  "profile",
        -  "posts",
        -  "reposts",
        -  "likes",
        -  "stories",
        -  "followers",
        -  "following",
        -  "embed",
        -  "playlists",
        -  "collections"
        -]New value: +[
        +  "profile",
        +  "posts",
        +  "reposts",
        +  "likes",
        +  "followers",
        +  "following",
        +  "embed",
        +  "playlists",
        +  "collections",
        +  "audit",
        +  "lookalikes"
        +]
      • addedInput schema / properties / region
        Added value: +{
        +  "description": "Market as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions.",
        +  "maxLength": 2048,
        +  "type": "string"
        +}
    • Changedcreator_commerce1 field changed
      • changedInput schema / properties / region / description
        Previous value: -"Shop Analytics methods: market as an ISO country code, default US. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. Amounts are in the market's currency. See shop_regions."New value: +"Market as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions."
    • Changedcreator_top_selling1 field changed
      • changedInput schema / properties / region / description
        Previous value: -"Shop Analytics methods: market as an ISO country code, default US. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. Amounts are in the market's currency. See shop_regions."New value: +"Market as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions."
    • Removedeffect
    • Changedhashtag1 field changed
      • addedInput schema / properties / region
        Added value: +{
        +  "description": "Market as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions.",
        +  "maxLength": 2048,
        +  "type": "string"
        +}
    • Changedlive1 field changed
      • changedInput schema / properties / region / description
        Previous value: -"Shop Analytics methods: market as an ISO country code, default US. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. Amounts are in the market's currency. See shop_regions."New value: +"Market as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions."
    • Changedlive_search1 field changed
      • addedInput schema / properties / region
        Added value: +{
        +  "description": "Market as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions.",
        +  "maxLength": 2048,
        +  "type": "string"
        +}
    • Changedlive_top_selling1 field changed
      • changedInput schema / properties / region / description
        Previous value: -"Shop Analytics methods: market as an ISO country code, default US. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. Amounts are in the market's currency. See shop_regions."New value: +"Market as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions."
    • Changedproduct1 field changed
      • changedInput schema / properties / region / description
        Previous value: -"Shop Analytics methods: market as an ISO country code, default US. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. Amounts are in the market's currency. See shop_regions."New value: +"Market as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions."
    • Changedproduct_top_selling1 field changed
      • changedInput schema / properties / region / description
        Previous value: -"Shop Analytics methods: market as an ISO country code, default US. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. Amounts are in the market's currency. See shop_regions."New value: +"Market as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions."
    • Changedshop1 field changed
      • changedInput schema / properties / region / description
        Previous value: -"Shop Analytics methods: market as an ISO country code, default US. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. Amounts are in the market's currency. See shop_regions."New value: +"Market as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions."
    • Changedshop_browse1 field changed
      • addedInput schema / properties / region
        Added value: +{
        +  "description": "Market as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions.",
        +  "maxLength": 2048,
        +  "type": "string"
        +}
    • Changedshop_top_selling1 field changed
      • changedInput schema / properties / region / description
        Previous value: -"Shop Analytics methods: market as an ISO country code, default US. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. Amounts are in the market's currency. See shop_regions."New value: +"Market as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions."
    • Changedsound_search1 field changed
      • addedInput schema / properties / region
        Added value: +{
        +  "description": "Market as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions.",
        +  "maxLength": 2048,
        +  "type": "string"
        +}
    • Changedvideo3 fields changed
      • changedInput schema / properties / method / description
        Previous value: -"What to get. detail: counts, creator, hashtags, sound, place, linked products, caption tracks | comments: top-level comments | replies: replies to one comment (comment_id) | transcript: existing captions as plain text (nothing is transcribed) | captions: one caption file as WebVTT (subtitle_url) | similar: videos TikTok relates to this one | sales [Shop Analytics]: revenue, units and ad metrics the video drove | products [Shop Analytics]: products sold through the video, with revenue | product_trend [Shop Analytics]: daily sales of the video's products | similar_revenue [Shop Analytics]: how similar videos performed"New value: +"What to get. detail: counts, creator, hashtags, sound, place, linked products, caption tracks | comments: top-level comments | replies: replies to one comment (comment_id) | transcript: existing captions as plain text (nothing is transcribed) | captions: one caption file as WebVTT (subtitle_url) | similar: videos TikTok relates to this one | sales [Shop Analytics]: revenue, units and ad metrics the video drove | products [Shop Analytics]: products sold through the video, with revenue | product_trend [Shop Analytics]: daily sales of the video's products | similar_revenue [Shop Analytics]: how similar videos performed | comment_themes: keywords TikTok extracts from the comments, with sample comments"
      • changedInput schema / properties / method / enum
        Previous value: -[
        -  "detail",
        -  "comments",
        -  "replies",
        -  "transcript",
        -  "captions",
        -  "similar",
        -  "sales",
        -  "products",
        -  "product_trend",
        -  "similar_revenue"
        -]New value: +[
        +  "detail",
        +  "comments",
        +  "replies",
        +  "transcript",
        +  "captions",
        +  "similar",
        +  "sales",
        +  "products",
        +  "product_trend",
        +  "similar_revenue",
        +  "comment_themes"
        +]
      • changedInput schema / properties / region / description
        Previous value: -"Shop Analytics methods: market as an ISO country code, default US. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. Amounts are in the market's currency. See shop_regions."New value: +"Market as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions."
    • Changedvideo_feed3 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Results per page. for_you, discover max 30; explore, discover_hashtags, effects max 20. Values above a method's maximum are lowered and reported in notes."New value: +"Results per page. for_you, discover max 30; explore, discover_hashtags max 20. Values above a method's maximum are lowered and reported in notes."
      • changedInput schema / properties / method / description
        Previous value: -"What to get. for_you: a page of the For You feed | explore: videos from one Explore category | discover: Discover picks: creators, hashtags, sounds | discover_hashtags: Discover hashtags with sample videos | effects: videos from the effects feed (with effect ids)"New value: +"What to get. for_you: a page of the For You feed | explore: videos from one Explore category | discover: Discover picks: creators, hashtags, sounds | discover_hashtags: Discover hashtags with sample videos"
      • changedInput schema / properties / method / enum
        Previous value: -[
        -  "for_you",
        -  "explore",
        -  "discover",
        -  "discover_hashtags",
        -  "effects"
        -]New value: +[
        +  "for_you",
        +  "explore",
        +  "discover",
        +  "discover_hashtags"
        +]
    • Changedvideo_search1 field changed
      • addedInput schema / properties / region
        Added value: +{
        +  "description": "Market as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions.",
        +  "maxLength": 2048,
        +  "type": "string"
        +}
    • Changedvideo_top_selling1 field changed
      • changedInput schema / properties / region / description
        Previous value: -"Shop Analytics methods: market as an ISO country code, default US. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. Amounts are in the market's currency. See shop_regions."New value: +"Market as an ISO country code, default US. Shop Analytics methods: sales data for that market, amounts in its currency. Live methods that take it (search, video detail, creator posts, Shop pages): TikTok as seen in that market where TikTok serves it. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. See shop_regions."
  5. 1 tool update
    • Changedshop_browse1 field changed
      • changedInput schema / properties / sort / description
        Previous value: -"method=search: best_sellers, newest, price_desc or price_asc (default relevance)."New value: +"method=search: best_sellers, newest, price_desc or price_asc (default relevance). The result's sortApplied says whether TikTok sorted the results (tiktok) or only this page was sorted (page)."
  6. 3 tool updates
    • Changedcreator_top_selling3 fields changed
      • changedInput schema / properties / keyword / description
        Previous value: -"Matched against creator names, handles and bios (not the products they sell): 'pet' finds accounts like 'Pet Finds'. For a niche's affiliates, rank the niche with product_top_selling, then call product method=creators on the top items. Omit for the overall top 10, or pass category."New value: +"Matched against creator names, handles and bios (not the products they sell): 'pet' finds accounts like 'Pet Finds'. For the affiliates of a product type, pass category, or rank products with product_top_selling and call product method=creators on the top items. If keyword and category are both omitted, the result is the top 10 creators for the most recent days (about 6), whatever window is set: pass a keyword or category when the user wants more than 10 rows or a specific window."
      • changedInput schema / properties / limit / description
        Previous value: -"Results per page. Max 100 per page; up to 700 rows per keyword. Values above a method's maximum are lowered and reported in notes."New value: +"Results per page. Max 100 per page; pass next as cursor for the following page. Up to about 700 rows per keyword. Without a keyword or category: 10 rows. Values above a method's maximum are lowered and reported in notes."
      • changedInput schema / properties / sort / description
        Previous value: -"Ranking metric. Default revenue. growth favours brand-new items (shown as >999.9%); pair it with a revenue or units filter."New value: +"Ranking metric: followers, growth, revenue, units. Default revenue. growth favours brand-new items (shown as >999.9%); pair it with a revenue or units filter. Applies with a keyword or category."
    • Changedproduct_top_selling3 fields changed
      • changedInput schema / properties / keyword / description
        Previous value: -"Product search phrase, e.g. 'vitamin c serum'. Omit for the overall top 10."New value: +"Words from product titles, e.g. 'vitamin c serum' or 'lip oil'. Ranks every matching product over your window. If keyword and category are both omitted, the result is the top 10 products for the most recent days (about 6), whatever window is set: pass a keyword or category when the user wants more than 10 rows or a specific window."
      • changedInput schema / properties / limit / description
        Previous value: -"Results per page. Max 100 per page; up to 700 rows per keyword. Values above a method's maximum are lowered and reported in notes."New value: +"Results per page. Max 100 per page; pass next as cursor for the following page. Up to about 700 rows per keyword (max_rows scans up to 3,000 in the US). Without a keyword or category: 10 rows. Values above a method's maximum are lowered and reported in notes."
      • changedInput schema / properties / sort / description
        Previous value: -"Ranking metric. Default revenue. growth favours brand-new items (shown as >999.9%); pair it with a revenue or units filter."New value: +"Ranking metric: creators, growth, price, revenue, units. Default revenue. growth favours brand-new items (shown as >999.9%); pair it with a revenue or units filter. Applies with a keyword or category."
    • Changedshop_top_selling5 fields changed
      • changedInput schema / properties / keyword / description
        Previous value: -"Shop or brand name or niche, e.g. 'skincare'. Omit for the overall top 10."New value: +"A shop or brand NAME, matched loosely against shop names, e.g. 'medicube'. It does not match product types: 'skincare' finds shops with that word in their name. For the shops behind a product type or category, rank products with product_top_selling (category or a product keyword), call product method=page on the top items for their sellerId, then use shop or call this tool with the brand names found. If keyword is omitted, the result is the top 10 shops for the most recent days (about 6), whatever window is set: pass a shop or brand name when the user wants more than 10 rows or a specific window."
      • changedInput schema / properties / limit / description
        Previous value: -"Results per page. Max 100 per page; up to 700 rows per keyword. Values above a method's maximum are lowered and reported in notes."New value: +"Results per page. Max 100 per page; pass next as cursor for the following page. Up to about 500 rows per keyword. Without a keyword: 10 rows. Values above a method's maximum are lowered and reported in notes."
      • changedInput schema / properties / order / description
        Previous value: -"desc (default, highest first) or asc (lowest first among the matching rows; pair it with a revenue or units filter to skip dead listings). Applies with a keyword or category."New value: +"desc (default, highest first) or asc (lowest first among the matching rows; pair it with a revenue or units filter to skip dead listings). Applies with a keyword."
      • changedInput schema / properties / sort / description
        Previous value: -"Ranking metric. Default revenue. growth favours brand-new items (shown as >999.9%); pair it with a revenue or units filter."New value: +"Ranking metric: growth, revenue, units. Default revenue. growth favours brand-new items (shown as >999.9%); pair it with a revenue or units filter. Applies with a keyword."
      • changedInput schema / properties / type / description
        Previous value: -"shops (default) or brands (top 10 brands)."New value: +"shops (default) or brands (the top 10 brands for the most recent days; keyword, filters and sort do not apply)."
  7. 12 tool updates
    • Changedcategory_trends6 fields changed
      • changedInput schema / properties / keyword / description
        Previous value: -"method=search: category name to look up, e.g. 'serum'."New value: +"method=search: category name to look up in the data source, e.g. 'serum'. method=tree: text to find in category names, e.g. 'skincare'."
      • changedInput schema / properties / level / description
        Previous value: -"method=list: keep only categories of this level (1 = top level, 3 = most specific)."New value: +"method=list or tree: keep only categories of this level (1 = top level, 3 = most specific)."
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "method=tree: max categories to return (default 50).",
        +  "maximum": 200,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • changedInput schema / properties / method / description
        Previous value: -"What to get. list [Shop Analytics]: categories with revenue, growth and concentration | products [Shop Analytics]: a category's top product ids | search [Shop Analytics]: find category names and ids by keyword"New value: +"What to get. list [Shop Analytics]: categories with revenue, growth and concentration | products [Shop Analytics]: a category's top product ids (US market only) | search [Shop Analytics]: find category names and ids by keyword | tree: category names and ids to use as category | market_size [Shop Analytics]: how many products, shops, creators, videos, LIVEs and brands the source tracks"
      • changedInput schema / properties / method / enum
        Previous value: -[
        -  "list",
        -  "products",
        -  "search"
        -]New value: +[
        +  "list",
        +  "products",
        +  "search",
        +  "tree",
        +  "market_size"
        +]
      • addedInput schema / properties / region
        Added value: +{
        +  "description": "Shop Analytics methods: market as an ISO country code, default US. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. Amounts are in the market's currency. See shop_regions.",
        +  "maxLength": 2048,
        +  "type": "string"
        +}
    • Changedcreator_commerce2 fields changed
      • changedInput schema / properties / method / description
        Previous value: -"What to get. linked_products: each product linked in recent posts, with post count, views and likes (not sales) | sales [Shop Analytics]: revenue, units, video vs LIVE, average price | trend [Shop Analytics]: daily revenue (up to ~13 months) | products [Shop Analytics]: products they sold, with revenue | shops [Shop Analytics]: shops (brands) they sell for, with revenue | videos [Shop Analytics]: their selling videos, with revenue | audience [Shop Analytics]: follower age, gender and language"New value: +"What to get. linked_products: each product linked in recent posts, with post count, views and likes (not sales) | sales [Shop Analytics]: revenue, units, video vs LIVE, average price | trend [Shop Analytics]: daily revenue (up to ~13 months) | products [Shop Analytics]: products they sold, with revenue | shops [Shop Analytics]: shops (brands) they sell for, with revenue | videos [Shop Analytics]: their selling videos, with revenue | audience [Shop Analytics]: follower age, gender, top locations and languages, active hours (when the source has built it)"
      • addedInput schema / properties / region
        Added value: +{
        +  "description": "Shop Analytics methods: market as an ISO country code, default US. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. Amounts are in the market's currency. See shop_regions.",
        +  "maxLength": 2048,
        +  "type": "string"
        +}
    • Changedcreator_top_selling7 fields changed
      • addedInput schema / properties / category
        Added value: +{
        +  "description": "Narrow to one or more Shop categories (up to 5), by name or numeric id, levels 1 to 3: [\"Skincare\"], [\"Pet Supplies\"], [\"Beauty & Personal Care\",\"Health\"] or [\"601450\"]. Without a keyword the creators of the category are found by merging several generic keyword searches (the source needs a keyword), and the result says how many keyword sweeps and distinct rows that gave. Find names and ids with category_trends method=tree.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 5,
        +  "type": "array"
        +}
      • changedInput schema / properties / keyword / description
        Previous value: -"Matched against creator names, handles and bios (not the products they sell): 'pet' finds accounts like 'Pet Finds'. For a niche's affiliates, rank the niche with product_top_selling, then call product method=creators on the top items. Omit for the overall top 10."New value: +"Matched against creator names, handles and bios (not the products they sell): 'pet' finds accounts like 'Pet Finds'. For a niche's affiliates, rank the niche with product_top_selling, then call product method=creators on the top items. Omit for the overall top 10, or pass category."
      • addedInput schema / properties / order
        Added value: +{
        +  "description": "desc (default, highest first) or asc (lowest first among the matching rows; pair it with a revenue or units filter to skip dead listings). Applies with a keyword or category.",
        +  "enum": [
        +    "desc",
        +    "asc"
        +  ],
        +  "maxLength": 2048,
        +  "type": "string"
        +}
      • changedInput schema / properties / price / description
        Previous value: -"Filter. Average price of what they sell, USD, e.g. <20."New value: +"Filter. Average price of what they sell, in the market's currency, e.g. <20."
      • addedInput schema / properties / region
        Added value: +{
        +  "description": "Shop Analytics methods: market as an ISO country code, default US. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. Amounts are in the market's currency. See shop_regions.",
        +  "maxLength": 2048,
        +  "type": "string"
        +}
      • changedInput schema / properties / revenue / description
        Previous value: -"Filter. Revenue the creator drove in USD over the window, e.g. >10000."New value: +"Filter. Revenue the creator drove in the market's currency over the window, e.g. >10000."
      • changedInput schema / properties / sort / description
        Previous value: -"Ranking metric, highest first. Default revenue. growth favours brand-new items (shown as >999.9%); pair it with a revenue or units filter."New value: +"Ranking metric. Default revenue. growth favours brand-new items (shown as >999.9%); pair it with a revenue or units filter."
    • Changedlive1 field changed
      • addedInput schema / properties / region
        Added value: +{
        +  "description": "Shop Analytics methods: market as an ISO country code, default US. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. Amounts are in the market's currency. See shop_regions.",
        +  "maxLength": 2048,
        +  "type": "string"
        +}
    • Changedlive_top_selling1 field changed
      • addedInput schema / properties / region
        Added value: +{
        +  "description": "Shop Analytics methods: market as an ISO country code, default US. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. Amounts are in the market's currency. See shop_regions.",
        +  "maxLength": 2048,
        +  "type": "string"
        +}
    • Changedproduct3 fields changed
      • changedInput schema / properties / method / description
        Previous value: -"What to get. page: live price, SKUs and stock, sold, rating, shop | reviews: public reviews | related: products TikTok shows as related | videos: the videos on the product page (first page only) | sales [Shop Analytics]: revenue, units, video/LIVE/showcase split, creator count, conversion (ids: up to 20 products) | trend [Shop Analytics]: daily revenue and units (up to ~13 months) | creators [Shop Analytics]: creators selling it, ranked, with revenue | video_sales [Shop Analytics]: videos selling it, with revenue | skus [Shop Analytics]: sales by variant (SKU) | review_insights [Shop Analytics]: AI summary of reviews: pain points, praise, use cases (by_sku splits by variant)"New value: +"What to get. page: live price, SKUs and stock, sold, rating, shop | reviews: public reviews | related: products TikTok shows as related | videos: the videos on the product page (first page only) | sales [Shop Analytics]: revenue, units, video/LIVE/showcase split, creator count, conversion (ids: up to 20 products) | trend [Shop Analytics]: daily revenue and units (up to ~13 months) | creators [Shop Analytics]: creators selling it, ranked, with revenue | video_sales [Shop Analytics]: videos selling it, with revenue | skus [Shop Analytics]: sales by variant (SKU) | analysis [Shop Analytics]: selling-point highlights and attributes the source extracts for the product | conversion [Shop Analytics]: how many creators promote it and what share of them made sales | review_insights [Shop Analytics]: AI summary of reviews: pain points, praise, use cases (by_sku splits by variant)"
      • changedInput schema / properties / method / enum
        Previous value: -[
        -  "page",
        -  "reviews",
        -  "related",
        -  "videos",
        -  "sales",
        -  "trend",
        -  "creators",
        -  "video_sales",
        -  "skus",
        -  "review_insights"
        -]New value: +[
        +  "page",
        +  "reviews",
        +  "related",
        +  "videos",
        +  "sales",
        +  "trend",
        +  "creators",
        +  "video_sales",
        +  "skus",
        +  "analysis",
        +  "conversion",
        +  "review_insights"
        +]
      • addedInput schema / properties / region
        Added value: +{
        +  "description": "Shop Analytics methods: market as an ISO country code, default US. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. Amounts are in the market's currency. See shop_regions.",
        +  "maxLength": 2048,
        +  "type": "string"
        +}
    • Changedproduct_top_selling8 fields changed
      • addedInput schema / properties / category
        Added value: +{
        +  "description": "Narrow to one or more Shop categories (up to 5), by name or numeric id, levels 1 to 3: [\"Skincare\"], [\"Pet Supplies\"], [\"Beauty & Personal Care\",\"Health\"] or [\"601450\"]. Without a keyword the products of the category are found by merging several generic keyword searches (the source needs a keyword), and the result says how many keyword sweeps and distinct rows that gave. Find names and ids with category_trends method=tree.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 5,
        +  "type": "array"
        +}
      • changedInput schema / properties / max_rows / description
        Previous value: -"Scan up to this many matching products (101-3000) before sorting, to go past the 700-row cap or sort ascending; the top limit rows are returned. Needs keyword."New value: +"Scan up to this many matching products (101-3000) before sorting, to go past the 700-row cap; the top limit rows are returned. Needs keyword; US market only; not with category."
      • changedInput schema / properties / order / description
        Previous value: -"desc (default) or asc. asc sorts the matching rows lowest first (fetched with max_rows)."New value: +"desc (default, highest first) or asc (lowest first among the matching rows; pair it with a revenue or units filter to skip dead listings). Applies with a keyword or category."
      • changedInput schema / properties / price / description
        Previous value: -"Filter. Average selling price in USD, e.g. <20 or 20-100."New value: +"Filter. Average selling price in the market's currency, e.g. <20 or 20-100."
      • addedInput schema / properties / region
        Added value: +{
        +  "description": "Shop Analytics methods: market as an ISO country code, default US. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. Amounts are in the market's currency. See shop_regions.",
        +  "maxLength": 2048,
        +  "type": "string"
        +}
      • changedInput schema / properties / revenue / description
        Previous value: -"Filter. Revenue in USD over the window: a-b, <a or >b, e.g. 1000-10000."New value: +"Filter. Revenue in the market's currency over the window: a-b, <a or >b, e.g. 1000-10000."
      • changedInput schema / properties / shipping / description
        Previous value: -"Filter. local = ships from US warehouses; global = cross-border."New value: +"Filter. local = ships from warehouses in the market; global = cross-border."
      • changedInput schema / properties / sort / description
        Previous value: -"Ranking metric, highest first. Default revenue. growth favours brand-new items (shown as >999.9%); pair it with a revenue or units filter."New value: +"Ranking metric. Default revenue. growth favours brand-new items (shown as >999.9%); pair it with a revenue or units filter."
    • Changedshop3 fields changed
      • changedInput schema / properties / method / description
        Previous value: -"What to get. store: live storefront: rating, sold, followers, products | sales [Shop Analytics]: revenue and units, split by own accounts, affiliates and mall | trend [Shop Analytics]: daily revenue and units (up to ~13 months) | products [Shop Analytics]: its products ranked by revenue | new_products [Shop Analytics]: products it launched in the window | strategy [Shop Analytics]: price bands and sales-channel mix (affiliate vs own accounts) | creators [Shop Analytics]: affiliate creators selling for it, with revenue | videos [Shop Analytics]: videos selling its products, with revenue"New value: +"What to get. store: live storefront: rating, sold, followers, products | sales [Shop Analytics]: revenue and units, split by own accounts, affiliates and mall | trend [Shop Analytics]: daily revenue and units (up to ~13 months) | products [Shop Analytics]: its products ranked by revenue | new_products [Shop Analytics]: products it launched in the window | strategy [Shop Analytics]: price bands and sales-channel mix: top affiliates (individuals unnamed) and the shop's own accounts | creators [Shop Analytics]: affiliate creators selling for it, with revenue | videos [Shop Analytics]: videos selling its products, with revenue | new_affiliates [Shop Analytics]: daily count of new affiliates who started promoting the shop, with a summary | affiliate_videos [Shop Analytics]: daily count of new videos affiliates posted for the shop, with a summary"
      • changedInput schema / properties / method / enum
        Previous value: -[
        -  "store",
        -  "sales",
        -  "trend",
        -  "products",
        -  "new_products",
        -  "strategy",
        -  "creators",
        -  "videos"
        -]New value: +[
        +  "store",
        +  "sales",
        +  "trend",
        +  "products",
        +  "new_products",
        +  "strategy",
        +  "creators",
        +  "videos",
        +  "new_affiliates",
        +  "affiliate_videos"
        +]
      • addedInput schema / properties / region
        Added value: +{
        +  "description": "Shop Analytics methods: market as an ISO country code, default US. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. Amounts are in the market's currency. See shop_regions.",
        +  "maxLength": 2048,
        +  "type": "string"
        +}
    • Addedshop_regions
    • Changedshop_top_selling5 fields changed
      • addedInput schema / properties / order
        Added value: +{
        +  "description": "desc (default, highest first) or asc (lowest first among the matching rows; pair it with a revenue or units filter to skip dead listings). Applies with a keyword or category.",
        +  "enum": [
        +    "desc",
        +    "asc"
        +  ],
        +  "maxLength": 2048,
        +  "type": "string"
        +}
      • changedInput schema / properties / price / description
        Previous value: -"Filter. Average selling price in USD, e.g. 20-100."New value: +"Filter. Average selling price in the market's currency, e.g. 20-100."
      • addedInput schema / properties / region
        Added value: +{
        +  "description": "Shop Analytics methods: market as an ISO country code, default US. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. Amounts are in the market's currency. See shop_regions.",
        +  "maxLength": 2048,
        +  "type": "string"
        +}
      • changedInput schema / properties / revenue / description
        Previous value: -"Filter. Shop revenue in USD over the window, e.g. >100000."New value: +"Filter. Shop revenue in the market's currency over the window, e.g. >100000."
      • changedInput schema / properties / sort / description
        Previous value: -"Ranking metric, highest first. Default revenue. growth favours brand-new items (shown as >999.9%); pair it with a revenue or units filter."New value: +"Ranking metric. Default revenue. growth favours brand-new items (shown as >999.9%); pair it with a revenue or units filter."
    • Changedvideo1 field changed
      • addedInput schema / properties / region
        Added value: +{
        +  "description": "Shop Analytics methods: market as an ISO country code, default US. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. Amounts are in the market's currency. See shop_regions.",
        +  "maxLength": 2048,
        +  "type": "string"
        +}
    • Changedvideo_top_selling1 field changed
      • addedInput schema / properties / region
        Added value: +{
        +  "description": "Shop Analytics methods: market as an ISO country code, default US. Core: US, GB, DE, FR, ES, JP, TH, VN, ID, MY, PH, BR, MX. Extended: PL, IT, NL, IE. Other countries are refused. Amounts are in the market's currency. See shop_regions.",
        +  "maxLength": 2048,
        +  "type": "string"
        +}
  8. 1 tool update
    • Changedcreator_top_selling1 field changed
      • changedInput schema / properties / keyword / description
        Previous value: -"Niche, product type or brand whose creators you want, e.g. 'fitness' or 'medicube'. Omit for the overall top 10."New value: +"Matched against creator names, handles and bios (not the products they sell): 'pet' finds accounts like 'Pet Finds'. For a niche's affiliates, rank the niche with product_top_selling, then call product method=creators on the top items. Omit for the overall top 10."
  9. 112 tool updates
    • Removedad_library_regions
    • Removedad_library_suggest
    • Removedaudience_demographics
    • Removedbrowse_topics
    • Addedcategory_trends
    • Removedcollection_detail
    • Removedcollection_videos
    • Removedcomment_replies
    • Removedcontent_guidance
    • Addedcreative_center
    • Removedcreative_partner_filters
    • Removedcreative_partner_leaderboard
    • Removedcreative_seo_detail
    • Removedcreative_seo_list
    • Removedcreative_top_contents
    • Addedcreator
    • Removedcreator_collections
    • Addedcreator_commerce
    • Removedcreator_followers
    • Removedcreator_following
    • Removedcreator_likes
    • Addedcreator_playlist
    • Removedcreator_playlists
    • Removedcreator_posts
    • Removedcreator_products
    • Removedcreator_reposts
    • Addedcreator_search
    • Removedcreator_stories
    • Addedcreator_top_selling
    • Addeddemand_find_topics
    • Addeddemand_keywords
    • Addeddemand_topic
    • Removeddiscover_cards
    • Removeddiscover_hashtags
    • Addedeffect
    • Removedembed_videos
    • Removedexplore_categories
    • Removedexplore_videos
    • Addedhashtag
    • Removedhashtag_detail
    • Addedhashtag_search
    • Removedhashtag_videos
    • Removedhot_sounds
    • Removedkeyword_intelligence
    • Removedlist_channels
    • Removedlist_languages
    • Addedlive
    • Removedlive_gifts
    • Removedlive_room_detail
    • Addedlive_search
    • Addedlive_top_selling
    • Removedmusic_beats
    • Removedmusic_choices
    • Addedplace
    • Removedplace_detail
    • Removedplace_reviews
    • Removedplace_videos
    • Removedplaylist_detail
    • Removedplaylist_videos
    • Addedproduct
    • Addedproduct_top_selling
    • Removedrecommended_videos
    • Addedreference
    • Removedrelated_hashtags
    • Removedrelated_queries
    • Removedrelated_topics
    • Removedrelated_videos
    • Removedsearch_all
    • Removedsearch_hashtags
    • Removedsearch_live
    • Removedsearch_photos
    • Removedsearch_popularity
    • Removedsearch_shop_products
    • Removedsearch_sounds
    • Removedsearch_suggestions
    • Removedsearch_topics
    • Removedsearch_users
    • Removedsearch_videos
    • Addedshop
    • Addedshop_browse
    • Removedshop_catalog
    • Removedshop_category
    • Removedshop_deals
    • Removedshop_keyword_page
    • Removedshop_product_detail
    • Removedshop_product_reviews
    • Removedshop_product_videos
    • Removedshop_related_products
    • Removedshop_seller
    • Removedshop_suggest
    • Addedshop_top_selling
    • Removedsimilar_videos
    • Addedsound
    • Removedsound_detail
    • Addedsound_search
    • Removedsound_videos
    • Removedsticker_detail
    • Removedsticker_discover
    • Removedsticker_videos
    • Removedtopic_detail
    • Removedtrending_searches
    • Removedtrending_topics
    • Removeduser_profile
    • Removeduser_profile_by_id
    • Addedvideo
    • Removedvideo_captions
    • Removedvideo_comments
    • Removedvideo_detail
    • Addedvideo_feed
    • Addedvideo_search
    • Addedvideo_top_selling
    • Removedvideo_transcript
  10. 1 tool update
    • Changeduser_profile1 field changed
      • changedInput schema / properties / handle / description
        Previous value: -"Handle with or without @, e.g. pawpet05."New value: +"Handle with or without @, e.g. pawpet05. A profile or video link (including short share links) also works."
  11. 8 tool updates
    • Addedkeyword_intelligence
    • Changedplace_detail7 fields changed
      • addedOutput schema / properties / hours
        Added value: +{
        +  "description": "Opening hours TikTok shows for today.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / lat
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / lng
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / price
        Added value: +{
        +  "description": "Price level from 1 (cheapest) to 4, when TikTok shows one.",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / rating
        Added value: +{
        +  "description": "TikTok's average review score out of 5, when the place has reviews.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / reviews
        Added value: +{
        +  "description": "How many TikTok reviews the place has (see place_reviews).",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / tags
        Added value: +{
        +  "description": "What TikTok highlights about the place: popular items and short descriptors.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Addedplace_reviews
    • Changedplace_search7 fields changed
      • addedOutput schema / properties / places / items / properties / hours
        Added value: +{
        +  "description": "Opening hours TikTok shows for today.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / places / items / properties / lat
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / places / items / properties / lng
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / places / items / properties / price
        Added value: +{
        +  "description": "Price level from 1 (cheapest) to 4, when TikTok shows one.",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / places / items / properties / rating
        Added value: +{
        +  "description": "TikTok's average review score out of 5, when the place has reviews.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / places / items / properties / reviews
        Added value: +{
        +  "description": "How many TikTok reviews the place has (see place_reviews).",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / places / items / properties / tags
        Added value: +{
        +  "description": "What TikTok highlights about the place: popular items and short descriptors.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedsearch_hashtags1 field changed
      • addedInput schema / properties / search_id
        Added value: +{
        +  "description": "From the previous response's next; omit on the first page.",
        +  "maxLength": 2048,
        +  "type": "string"
        +}
    • Changedsearch_users4 fields changed
      • addedOutput schema / properties / creators / items / properties / following / description
        Added value: +"Absent when TikTok did not send it (web account search)."
      • changedOutput schema / properties / creators / items / properties / likes / description
        Previous value: -"Total likes received."New value: +"Total likes received. Absent when TikTok did not send it."
      • addedOutput schema / properties / creators / items / properties / videos / description
        Added value: +"Posts on the account. Absent when TikTok did not send it (web account search)."
      • changedOutput schema / properties / creators / items / required
        Previous value: -[
        -  "handle",
        -  "followers",
        -  "following",
        -  "likes",
        -  "videos"
        -]New value: +[
        +  "handle",
        +  "followers"
        +]
    • Changeduser_profile4 fields changed
      • addedOutput schema / properties / following / description
        Added value: +"Absent when TikTok did not send it (web account search)."
      • changedOutput schema / properties / likes / description
        Previous value: -"Total likes received."New value: +"Total likes received. Absent when TikTok did not send it."
      • addedOutput schema / properties / videos / description
        Added value: +"Posts on the account. Absent when TikTok did not send it (web account search)."
      • changedOutput schema / required
        Previous value: -[
        -  "handle",
        -  "followers",
        -  "following",
        -  "likes",
        -  "videos"
        -]New value: +[
        +  "handle",
        +  "followers"
        +]
    • Changeduser_profile_by_id4 fields changed
      • addedOutput schema / properties / following / description
        Added value: +"Absent when TikTok did not send it (web account search)."
      • changedOutput schema / properties / likes / description
        Previous value: -"Total likes received."New value: +"Total likes received. Absent when TikTok did not send it."
      • addedOutput schema / properties / videos / description
        Added value: +"Posts on the account. Absent when TikTok did not send it (web account search)."
      • changedOutput schema / required
        Previous value: -[
        -  "handle",
        -  "followers",
        -  "following",
        -  "likes",
        -  "videos"
        -]New value: +[
        +  "handle",
        +  "followers"
        +]
  12. 3 tool updates
    • Removedfind_affiliates
    • Addedplace_search
    • Changedshop_product_reviews3 fields changed
      • addedOutput schema / properties / note
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / rating
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / reviewsUnavailable
        Added value: +{
        +  "type": "boolean"
        +}
  13. 84 tool updates
    • Addedad_library_regions
    • Addedad_library_suggest
    • Changedaudience_demographics5 fields changed
      • addedInput schema / properties / days / default
        Added value: +"30"
      • changedInput schema / properties / days / description
        Previous value: -"Requested date window in days; defaults to 30. Does not define the aggregation period of returned metrics."New value: +"Date window in days. Does not define each metric's aggregation."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / query_id / description
        Previous value: -"CSI topic queryId returned by search_topics, browse_topics, trending_topics or related_topics. Not a video ID, username or keyword."New value: +"queryId from search_topics, browse_topics, trending_topics or related_topics."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "age": {
        +      "items": {
        +        "properties": {
        +          "category": {
        +            "type": "string"
        +          },
        +          "popularity": {
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "category",
        +          "popularity"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "gender": {
        +      "items": {
        +        "properties": {
        +          "category": {
        +            "type": "string"
        +          },
        +          "popularity": {
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "category",
        +          "popularity"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "location": {
        +      "items": {
        +        "properties": {
        +          "category": {
        +            "type": "string"
        +          },
        +          "popularity": {
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "category",
        +          "popularity"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "summary": {
        +      "additionalProperties": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "summary",
        +    "gender",
        +    "age",
        +    "location"
        +  ],
        +  "type": "object"
        +}
    • Changedbrowse_topics9 fields changed
      • changedInput schema / properties / channel / description
        Previous value: -"Which topic list to browse."New value: +"Which CSI topic list to browse. Required."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / language / default
        Added value: +"en"
      • changedInput schema / properties / language / description
        Previous value: -"Language code from list_languages; defaults to en. Ignored for trending and category channels, which route to trending_topics."New value: +"Language code from list_languages, e.g. en. Ignored for trending and category channels."
      • addedInput schema / properties / limit / default
        Added value: +20
      • changedInput schema / properties / limit / description
        Previous value: -"How many topics to return, 1-20. Defaults to 20."New value: +"Topics per page."
      • addedInput schema / properties / offset / default
        Added value: +0
      • changedInput schema / properties / offset / description
        Previous value: -"Pagination offset. Defaults to 0."New value: +"From the previous response's next; omit on the first page."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "channel": {
        +      "type": "string"
        +    },
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "tab": {
        +      "type": "string"
        +    },
        +    "topics": {
        +      "items": {
        +        "properties": {
        +          "category": {
        +            "type": "string"
        +          },
        +          "popularity": {
        +            "description": "TikTok's 0-100 popularity score.",
        +            "type": "integer"
        +          },
        +          "queryId": {
        +            "description": "query_id input.",
        +            "type": "string"
        +          },
        +          "queryText": {
        +            "type": "string"
        +          },
        +          "searchVolume": {
        +            "description": "TikTok's 7-day search popularity figure.",
        +            "type": "integer"
        +          },
        +          "trend7d": {
        +            "description": "Daily readings, oldest first.",
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "videoCount": {
        +            "description": "Videos TikTok matches to the search; 0 marks a content gap.",
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "queryId",
        +          "queryText",
        +          "searchVolume",
        +          "videoCount"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "topics",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Addedcollection_detail
    • Addedcollection_videos
    • Changedcomment_replies8 fields changed
      • changedInput schema / properties / aweme_id / description
        Previous value: -"The video's id."New value: +"Post id (videos[].id)."
      • changedInput schema / properties / comment_id / description
        Previous value: -"The comment's id, from video_comments."New value: +"Comment id from video_comments."
      • addedInput schema / properties / count / default
        Added value: +20
      • changedInput schema / properties / count / description
        Previous value: -"How many replies to return, 1-50. Defaults to 20."New value: +"Replies per page."
      • addedInput schema / properties / cursor / default
        Added value: +0
      • changedInput schema / properties / cursor / description
        Previous value: -"Pagination cursor. Defaults to 0."New value: +"From the previous response's next; omit on the first page."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "comments": {
        +      "items": {
        +        "properties": {
        +          "author": {
        +            "properties": {
        +              "followers": {
        +                "type": "integer"
        +              },
        +              "handle": {
        +                "description": "TikTok @handle without the @.",
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "Numeric user id (user_id inputs).",
        +                "type": "string"
        +              },
        +              "nickname": {
        +                "type": "string"
        +              },
        +              "secUid": {
        +                "description": "secUid (sec_uid inputs).",
        +                "type": "string"
        +              },
        +              "verified": {
        +                "type": "boolean"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "id": {
        +            "description": "comment_id input.",
        +            "type": "string"
        +          },
        +          "isCreator": {
        +            "description": "Written by the video's creator.",
        +            "type": "boolean"
        +          },
        +          "likes": {
        +            "type": "integer"
        +          },
        +          "posted": {
        +            "type": "string"
        +          },
        +          "replies": {
        +            "type": "integer"
        +          },
        +          "text": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "text",
        +          "likes"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "total": {
        +      "description": "TikTok's reported comment count.",
        +      "type": "integer"
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "comments",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Changedcontent_guidance3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / query_id / description
        Previous value: -"CSI topic queryId returned by search_topics, browse_topics, trending_topics or related_topics. Not a video ID, username or keyword."New value: +"queryId from search_topics, browse_topics, trending_topics or related_topics."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "available": {
        +      "type": "boolean"
        +    },
        +    "guidance": {
        +      "type": "object"
        +    },
        +    "message": {
        +      "type": "string"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    }
        +  },
        +  "required": [
        +    "available"
        +  ],
        +  "type": "object"
        +}
    • Addedcreative_partner_filters
    • Addedcreative_partner_leaderboard
    • Addedcreative_seo_detail
    • Addedcreative_seo_list
    • Addedcreative_top_contents
    • Addedcreator_collections
    • Changedcreator_followers10 fields changed
      • addedInput schema / properties / count / default
        Added value: +10
      • changedInput schema / properties / count / description
        Previous value: -"Requested page size, 1-30; default 10. TikTok may return a different number."New value: +"Requested page size. TikTok may return a different number."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / max_cursor / default
        Added value: +"0"
      • changedInput schema / properties / max_cursor / description
        Previous value: -"Returned maxCursor as a nonnegative decimal string; default 0."New value: +"From the previous response's next; omit on the first page."
      • addedInput schema / properties / min_cursor / default
        Added value: +"0"
      • changedInput schema / properties / min_cursor / description
        Previous value: -"Returned minCursor as a nonnegative decimal string; default 0. Stop when hasMore is false."New value: +"From the previous response's next; omit on the first page."
      • changedInput schema / properties / sec_uid / description
        Previous value: -"Creator secUid from user_profile; must match user_id."New value: +"Creator secUid from user_profile, or creator.secUid on any post."
      • changedInput schema / properties / user_id / description
        Previous value: -"Numeric creator id from the same user_profile as sec_uid."New value: +"Numeric creator id from user_profile, or creator.id on any post."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "accounts": {
        +      "items": {
        +        "properties": {
        +          "followers": {
        +            "type": "integer"
        +          },
        +          "handle": {
        +            "description": "TikTok @handle without the @.",
        +            "type": "string"
        +          },
        +          "id": {
        +            "description": "Numeric user id (user_id inputs).",
        +            "type": "string"
        +          },
        +          "nickname": {
        +            "type": "string"
        +          },
        +          "secUid": {
        +            "description": "secUid (sec_uid inputs).",
        +            "type": "string"
        +          },
        +          "verified": {
        +            "type": "boolean"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "accounts",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Changedcreator_following10 fields changed
      • addedInput schema / properties / count / default
        Added value: +10
      • changedInput schema / properties / count / description
        Previous value: -"Requested page size, 1-30; default 10. TikTok may return a different number."New value: +"Requested page size. TikTok may return a different number."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / max_cursor / default
        Added value: +"0"
      • changedInput schema / properties / max_cursor / description
        Previous value: -"Returned maxCursor as a nonnegative decimal string; default 0."New value: +"From the previous response's next; omit on the first page."
      • addedInput schema / properties / min_cursor / default
        Added value: +"0"
      • changedInput schema / properties / min_cursor / description
        Previous value: -"Returned minCursor as a nonnegative decimal string; default 0. Stop when hasMore is false."New value: +"From the previous response's next; omit on the first page."
      • changedInput schema / properties / sec_uid / description
        Previous value: -"Creator secUid from user_profile; must match user_id."New value: +"Creator secUid from user_profile, or creator.secUid on any post."
      • changedInput schema / properties / user_id / description
        Previous value: -"Numeric creator id from the same user_profile as sec_uid."New value: +"Numeric creator id from user_profile, or creator.id on any post."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "accounts": {
        +      "items": {
        +        "properties": {
        +          "followers": {
        +            "type": "integer"
        +          },
        +          "handle": {
        +            "description": "TikTok @handle without the @.",
        +            "type": "string"
        +          },
        +          "id": {
        +            "description": "Numeric user id (user_id inputs).",
        +            "type": "string"
        +          },
        +          "nickname": {
        +            "type": "string"
        +          },
        +          "secUid": {
        +            "description": "secUid (sec_uid inputs).",
        +            "type": "string"
        +          },
        +          "verified": {
        +            "type": "boolean"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "accounts",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Addedcreator_likes
    • Changedcreator_playlists7 fields changed
      • addedInput schema / properties / count / default
        Added value: +10
      • changedInput schema / properties / count / description
        Previous value: -"Requested page size, 1-30; default 10. TikTok may return a different number."New value: +"Requested page size. TikTok may return a different number."
      • addedInput schema / properties / cursor / default
        Added value: +"0"
      • changedInput schema / properties / cursor / description
        Previous value: -"Native cursor as a decimal string; default 0. Pass back the returned cursor unchanged."New value: +"From the previous response's next; omit on the first page."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / sec_uid / description
        Previous value: -"Creator secUid from user_profile or video data; not a username."New value: +"Creator secUid from user_profile, or creator.secUid on any post."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "playlists": {
        +      "items": {
        +        "properties": {
        +          "creator": {
        +            "properties": {
        +              "followers": {
        +                "type": "integer"
        +              },
        +              "handle": {
        +                "description": "TikTok @handle without the @.",
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "Numeric user id (user_id inputs).",
        +                "type": "string"
        +              },
        +              "nickname": {
        +                "type": "string"
        +              },
        +              "secUid": {
        +                "description": "secUid (sec_uid inputs).",
        +                "type": "string"
        +              },
        +              "verified": {
        +                "type": "boolean"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "id": {
        +            "description": "playlist_id or collection_id input.",
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "videos": {
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "name"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "playlists",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Changedcreator_posts8 fields changed
      • addedInput schema / properties / count / default
        Added value: +15
      • changedInput schema / properties / count / description
        Previous value: -"Requested page size, 1-35; default 15."New value: +"Requested page size."
      • changedInput schema / properties / count / maximum
        Previous value: -50New value: +35
      • addedInput schema / properties / cursor / default
        Added value: +0
      • changedInput schema / properties / cursor / description
        Previous value: -"Unix milliseconds; omitted or 0 starts at now. Next page: last item's createTime * 1000."New value: +"From the previous response's next; omit on the first page."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / sec_uid / description
        Previous value: -"Creator secUid from user_profile or authorSecUid from video_detail."New value: +"Creator secUid from user_profile, or creator.secUid on any post."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    },
        +    "videos": {
        +      "items": {
        +        "properties": {
        +          "allowsAdUse": {
        +            "description": "Creator lets brands run this post as an ad.",
        +            "type": "boolean"
        +          },
        +          "caption": {
        +            "type": "string"
        +          },
        +          "captions": {
        +            "items": {
        +              "properties": {
        +                "language": {
        +                  "type": "string"
        +                },
        +                "source": {
        +                  "description": "ASR = TikTok auto-captions; MT = machine translation; otherwise creator-provided.",
        +                  "type": "string"
        +                },
        +                "url": {
        +                  "description": "WebVTT file for video_captions; expires after a few hours.",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "language",
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "comments": {
        +            "type": "integer"
        +          },
        +          "creator": {
        +            "properties": {
        +              "followers": {
        +                "type": "integer"
        +              },
        +              "handle": {
        +                "description": "TikTok @handle without the @.",
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "Numeric user id (user_id inputs).",
        +                "type": "string"
        +              },
        +              "nickname": {
        +                "type": "string"
        +              },
        +              "secUid": {
        +                "description": "secUid (sec_uid inputs).",
        +                "type": "string"
        +              },
        +              "verified": {
        +                "type": "boolean"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "durationSec": {
        +            "type": "number"
        +          },
        +          "effects": {
        +            "description": "Effects used (sticker_id input).",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "hashtags": {
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "imageCount": {
        +            "description": "Slides in a photo post.",
        +            "type": "integer"
        +          },
        +          "isAd": {
        +            "type": "boolean"
        +          },
        +          "language": {
        +            "type": "string"
        +          },
        +          "likes": {
        +            "type": "integer"
        +          },
        +          "photoPost": {
        +            "type": "boolean"
        +          },
        +          "pinned": {
        +            "type": "boolean"
        +          },
        +          "place": {
        +            "description": "Tagged location (place_id input).",
        +            "properties": {
        +              "id": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "posted": {
        +            "description": "Upload time, RFC 3339 UTC.",
        +            "type": "string"
        +          },
        +          "products": {
        +            "description": "TikTok Shop products linked from the post.",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "description": "TikTok Shop product_id.",
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "description": "Short name shown on the video's product link.",
        +                  "type": "string"
        +                },
        +                "sellerId": {
        +                  "type": "string"
        +                },
        +                "title": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "id"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "saves": {
        +            "type": "integer"
        +          },
        +          "shares": {
        +            "type": "integer"
        +          },
        +          "sound": {
        +            "properties": {
        +              "author": {
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "music_id input.",
        +                "type": "string"
        +              },
        +              "original": {
        +                "description": "An original sound made by the poster, not a licensed track.",
        +                "type": "boolean"
        +              },
        +              "title": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "views": {
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "views",
        +          "likes",
        +          "comments",
        +          "shares",
        +          "saves"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "videos",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Addedcreator_products
    • Changedcreator_reposts7 fields changed
      • addedInput schema / properties / count / default
        Added value: +10
      • changedInput schema / properties / count / description
        Previous value: -"Requested page size, 1-30; default 10. TikTok may return a different number."New value: +"Requested page size. TikTok may return a different number."
      • addedInput schema / properties / cursor / default
        Added value: +"0"
      • changedInput schema / properties / cursor / description
        Previous value: -"Native cursor as a decimal string; default 0. Pass back the returned cursor unchanged."New value: +"From the previous response's next; omit on the first page."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / sec_uid / description
        Previous value: -"Creator secUid from user_profile or video data."New value: +"Creator secUid from user_profile, or creator.secUid on any post."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    },
        +    "videos": {
        +      "items": {
        +        "properties": {
        +          "allowsAdUse": {
        +            "description": "Creator lets brands run this post as an ad.",
        +            "type": "boolean"
        +          },
        +          "caption": {
        +            "type": "string"
        +          },
        +          "captions": {
        +            "items": {
        +              "properties": {
        +                "language": {
        +                  "type": "string"
        +                },
        +                "source": {
        +                  "description": "ASR = TikTok auto-captions; MT = machine translation; otherwise creator-provided.",
        +                  "type": "string"
        +                },
        +                "url": {
        +                  "description": "WebVTT file for video_captions; expires after a few hours.",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "language",
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "comments": {
        +            "type": "integer"
        +          },
        +          "creator": {
        +            "properties": {
        +              "followers": {
        +                "type": "integer"
        +              },
        +              "handle": {
        +                "description": "TikTok @handle without the @.",
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "Numeric user id (user_id inputs).",
        +                "type": "string"
        +              },
        +              "nickname": {
        +                "type": "string"
        +              },
        +              "secUid": {
        +                "description": "secUid (sec_uid inputs).",
        +                "type": "string"
        +              },
        +              "verified": {
        +                "type": "boolean"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "durationSec": {
        +            "type": "number"
        +          },
        +          "effects": {
        +            "description": "Effects used (sticker_id input).",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "hashtags": {
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "imageCount": {
        +            "description": "Slides in a photo post.",
        +            "type": "integer"
        +          },
        +          "isAd": {
        +            "type": "boolean"
        +          },
        +          "language": {
        +            "type": "string"
        +          },
        +          "likes": {
        +            "type": "integer"
        +          },
        +          "photoPost": {
        +            "type": "boolean"
        +          },
        +          "pinned": {
        +            "type": "boolean"
        +          },
        +          "place": {
        +            "description": "Tagged location (place_id input).",
        +            "properties": {
        +              "id": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "posted": {
        +            "description": "Upload time, RFC 3339 UTC.",
        +            "type": "string"
        +          },
        +          "products": {
        +            "description": "TikTok Shop products linked from the post.",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "description": "TikTok Shop product_id.",
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "description": "Short name shown on the video's product link.",
        +                  "type": "string"
        +                },
        +                "sellerId": {
        +                  "type": "string"
        +                },
        +                "title": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "id"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "saves": {
        +            "type": "integer"
        +          },
        +          "shares": {
        +            "type": "integer"
        +          },
        +          "sound": {
        +            "properties": {
        +              "author": {
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "music_id input.",
        +                "type": "string"
        +              },
        +              "original": {
        +                "description": "An original sound made by the poster, not a licensed track.",
        +                "type": "boolean"
        +              },
        +              "title": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "views": {
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "views",
        +          "likes",
        +          "comments",
        +          "shares",
        +          "saves"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "videos",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Addedcreator_stories
    • Addeddiscover_cards
    • Addeddiscover_hashtags
    • Addedembed_videos
    • Changedexplore_categories2 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "categories": {
        +      "items": {
        +        "properties": {
        +          "id": {
        +            "description": "category_id input for explore_videos.",
        +            "type": "integer"
        +          },
        +          "name": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "name"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    }
        +  },
        +  "required": [
        +    "categories"
        +  ],
        +  "type": "object"
        +}
    • Changedexplore_videos6 fields changed
      • addedInput schema / properties / count / default
        Added value: +5
      • changedInput schema / properties / count / description
        Previous value: -"Requested results, 1-20; default 5."New value: +"Requested results."
      • changedInput schema / properties / count / maximum
        Previous value: -50New value: +20
      • addedInput schema / properties / cursor
        Added value: +{
        +  "default": 0,
        +  "description": "From the previous response's next; omit on the first page.",
        +  "maximum": 2147483647,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    },
        +    "videos": {
        +      "items": {
        +        "properties": {
        +          "allowsAdUse": {
        +            "description": "Creator lets brands run this post as an ad.",
        +            "type": "boolean"
        +          },
        +          "caption": {
        +            "type": "string"
        +          },
        +          "captions": {
        +            "items": {
        +              "properties": {
        +                "language": {
        +                  "type": "string"
        +                },
        +                "source": {
        +                  "description": "ASR = TikTok auto-captions; MT = machine translation; otherwise creator-provided.",
        +                  "type": "string"
        +                },
        +                "url": {
        +                  "description": "WebVTT file for video_captions; expires after a few hours.",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "language",
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "comments": {
        +            "type": "integer"
        +          },
        +          "creator": {
        +            "properties": {
        +              "followers": {
        +                "type": "integer"
        +              },
        +              "handle": {
        +                "description": "TikTok @handle without the @.",
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "Numeric user id (user_id inputs).",
        +                "type": "string"
        +              },
        +              "nickname": {
        +                "type": "string"
        +              },
        +              "secUid": {
        +                "description": "secUid (sec_uid inputs).",
        +                "type": "string"
        +              },
        +              "verified": {
        +                "type": "boolean"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "durationSec": {
        +            "type": "number"
        +          },
        +          "effects": {
        +            "description": "Effects used (sticker_id input).",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "hashtags": {
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "imageCount": {
        +            "description": "Slides in a photo post.",
        +            "type": "integer"
        +          },
        +          "isAd": {
        +            "type": "boolean"
        +          },
        +          "language": {
        +            "type": "string"
        +          },
        +          "likes": {
        +            "type": "integer"
        +          },
        +          "photoPost": {
        +            "type": "boolean"
        +          },
        +          "pinned": {
        +            "type": "boolean"
        +          },
        +          "place": {
        +            "description": "Tagged location (place_id input).",
        +            "properties": {
        +              "id": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "posted": {
        +            "description": "Upload time, RFC 3339 UTC.",
        +            "type": "string"
        +          },
        +          "products": {
        +            "description": "TikTok Shop products linked from the post.",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "description": "TikTok Shop product_id.",
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "description": "Short name shown on the video's product link.",
        +                  "type": "string"
        +                },
        +                "sellerId": {
        +                  "type": "string"
        +                },
        +                "title": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "id"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "saves": {
        +            "type": "integer"
        +          },
        +          "shares": {
        +            "type": "integer"
        +          },
        +          "sound": {
        +            "properties": {
        +              "author": {
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "music_id input.",
        +                "type": "string"
        +              },
        +              "original": {
        +                "description": "An original sound made by the poster, not a licensed track.",
        +                "type": "boolean"
        +              },
        +              "title": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "views": {
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "views",
        +          "likes",
        +          "comments",
        +          "shares",
        +          "saves"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "videos",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Addedfind_affiliates
    • Changedhashtag_detail3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / hashtag_id / description
        Previous value: -"Numeric hashtag ID from search_hashtags."New value: +"Hashtag id (hashtags[].id)."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "description": {
        +      "type": "string"
        +    },
        +    "id": {
        +      "description": "hashtag_id input.",
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "url": {
        +      "type": "string"
        +    },
        +    "videos": {
        +      "type": "integer"
        +    },
        +    "views": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "name"
        +  ],
        +  "type": "object"
        +}
    • Changedhashtag_videos9 fields changed
      • addedInput schema / properties / count / default
        Added value: +20
      • changedInput schema / properties / count / description
        Previous value: -"How many videos, 1-50. Defaults to 20."New value: +"Videos per page."
      • addedInput schema / properties / cursor / default
        Added value: +0
      • changedInput schema / properties / cursor / description
        Previous value: -"Pagination cursor. Defaults to 0."New value: +"From the previous response's next; omit on the first page."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / hashtag_id / description
        Previous value: -"The hashtag's id, from search_hashtags."New value: +"Hashtag id (hashtags[].id)."
      • addedInput schema / properties / sort / default
        Added value: +"hot"
      • changedInput schema / properties / sort / description
        Previous value: -"Ordering."New value: +"Ordering. hot is TikTok ranking; newest is chronological."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    },
        +    "videos": {
        +      "items": {
        +        "properties": {
        +          "allowsAdUse": {
        +            "description": "Creator lets brands run this post as an ad.",
        +            "type": "boolean"
        +          },
        +          "caption": {
        +            "type": "string"
        +          },
        +          "captions": {
        +            "items": {
        +              "properties": {
        +                "language": {
        +                  "type": "string"
        +                },
        +                "source": {
        +                  "description": "ASR = TikTok auto-captions; MT = machine translation; otherwise creator-provided.",
        +                  "type": "string"
        +                },
        +                "url": {
        +                  "description": "WebVTT file for video_captions; expires after a few hours.",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "language",
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "comments": {
        +            "type": "integer"
        +          },
        +          "creator": {
        +            "properties": {
        +              "followers": {
        +                "type": "integer"
        +              },
        +              "handle": {
        +                "description": "TikTok @handle without the @.",
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "Numeric user id (user_id inputs).",
        +                "type": "string"
        +              },
        +              "nickname": {
        +                "type": "string"
        +              },
        +              "secUid": {
        +                "description": "secUid (sec_uid inputs).",
        +                "type": "string"
        +              },
        +              "verified": {
        +                "type": "boolean"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "durationSec": {
        +            "type": "number"
        +          },
        +          "effects": {
        +            "description": "Effects used (sticker_id input).",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "hashtags": {
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "imageCount": {
        +            "description": "Slides in a photo post.",
        +            "type": "integer"
        +          },
        +          "isAd": {
        +            "type": "boolean"
        +          },
        +          "language": {
        +            "type": "string"
        +          },
        +          "likes": {
        +            "type": "integer"
        +          },
        +          "photoPost": {
        +            "type": "boolean"
        +          },
        +          "pinned": {
        +            "type": "boolean"
        +          },
        +          "place": {
        +            "description": "Tagged location (place_id input).",
        +            "properties": {
        +              "id": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "posted": {
        +            "description": "Upload time, RFC 3339 UTC.",
        +            "type": "string"
        +          },
        +          "products": {
        +            "description": "TikTok Shop products linked from the post.",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "description": "TikTok Shop product_id.",
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "description": "Short name shown on the video's product link.",
        +                  "type": "string"
        +                },
        +                "sellerId": {
        +                  "type": "string"
        +                },
        +                "title": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "id"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "saves": {
        +            "type": "integer"
        +          },
        +          "shares": {
        +            "type": "integer"
        +          },
        +          "sound": {
        +            "properties": {
        +              "author": {
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "music_id input.",
        +                "type": "string"
        +              },
        +              "original": {
        +                "description": "An original sound made by the poster, not a licensed track.",
        +                "type": "boolean"
        +              },
        +              "title": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "views": {
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "views",
        +          "likes",
        +          "comments",
        +          "shares",
        +          "saves"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "videos",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Addedhot_sounds
    • Changedlist_channels2 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "channels": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "trendingCategories": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "channels"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_languages2 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "languages": {
        +      "description": "id is the language input.",
        +      "items": {
        +        "properties": {
        +          "id": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    }
        +  },
        +  "required": [
        +    "languages"
        +  ],
        +  "type": "object"
        +}
    • Addedlive_gifts
    • Addedlive_room_detail
    • Addedmusic_beats
    • Addedmusic_choices
    • Changedpick_comment_winners12 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / exclude_creator / default
        Added value: +true
      • changedInput schema / properties / exclude_creator / description
        Previous value: -"Exclude comments by the video's creator. Defaults to true."New value: +"Exclude comments by the video's creator."
      • addedInput schema / properties / max_comments / default
        Added value: +300
      • changedInput schema / properties / max_comments / description
        Previous value: -"Comments to fetch, 50-500 in pages of 50. Defaults to 300."New value: +"Comments to fetch, in pages of 50."
      • changedInput schema / properties / seed / description
        Previous value: -"Optional seed for a reproducible draw; publish it so anyone can re-run the draw."New value: +"Optional seed for a reproducible draw. Publish it so anyone can re-run the draw."
      • addedInput schema / properties / unique_users / default
        Added value: +true
      • changedInput schema / properties / unique_users / description
        Previous value: -"Count each commenter once (their earliest fetched comment). Defaults to true."New value: +"Count each commenter once (their earliest fetched comment)."
      • changedInput schema / properties / video / description
        Previous value: -"Full https://www.tiktok.com/@creator/video/<id> URL or the numeric video id."New value: +"Post id or full https://www.tiktok.com/@creator/video/<id> URL."
      • addedInput schema / properties / winners / default
        Added value: +1
      • changedInput schema / properties / winners / description
        Previous value: -"How many winners to draw, 1-20. Defaults to 1."New value: +"How many winners to draw."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "awemeId": {
        +      "type": "string"
        +    },
        +    "coverage": {
        +      "type": "number"
        +    },
        +    "eligible": {
        +      "type": "integer"
        +    },
        +    "excluded": {
        +      "type": "object"
        +    },
        +    "fairness": {
        +      "type": "string"
        +    },
        +    "fetched": {
        +      "type": "integer"
        +    },
        +    "pages": {
        +      "type": "integer"
        +    },
        +    "random": {
        +      "type": "string"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "rules": {
        +      "type": "object"
        +    },
        +    "seed": {
        +      "type": "string"
        +    },
        +    "seedSha256": {
        +      "type": "string"
        +    },
        +    "totalReported": {
        +      "type": "integer"
        +    },
        +    "winners": {
        +      "items": {
        +        "properties": {
        +          "authorNickname": {
        +            "type": "string"
        +          },
        +          "authorUniqueId": {
        +            "type": "string"
        +          },
        +          "createTime": {
        +            "type": "integer"
        +          },
        +          "diggCount": {
        +            "type": "integer"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "isAuthor": {
        +            "type": "boolean"
        +          },
        +          "text": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "text",
        +          "authorUniqueId",
        +          "authorNickname",
        +          "createTime",
        +          "diggCount",
        +          "isAuthor"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedplace_detail3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / place_id / description
        Previous value: -"Numeric public POI ID returned in a video's poi.id field."New value: +"Place id (place.id on a post)."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "address": {
        +      "type": "string"
        +    },
        +    "category": {
        +      "type": "string"
        +    },
        +    "city": {
        +      "type": "string"
        +    },
        +    "country": {
        +      "type": "string"
        +    },
        +    "id": {
        +      "description": "place_id input.",
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "url": {
        +      "type": "string"
        +    },
        +    "videos": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "name"
        +  ],
        +  "type": "object"
        +}
    • Changedplace_videos7 fields changed
      • addedInput schema / properties / count / default
        Added value: +10
      • changedInput schema / properties / count / description
        Previous value: -"Requested page size, 1-30; default 10. TikTok may return a different number."New value: +"Requested page size. TikTok may return a different number."
      • addedInput schema / properties / cursor / default
        Added value: +"0"
      • changedInput schema / properties / cursor / description
        Previous value: -"Native cursor as a decimal string; default 0. Pass back the returned cursor unchanged."New value: +"From the previous response's next; omit on the first page."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / place_id / description
        Previous value: -"Numeric poi.id from video data or place_detail."New value: +"Place id (place.id on a post)."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    },
        +    "videos": {
        +      "items": {
        +        "properties": {
        +          "allowsAdUse": {
        +            "description": "Creator lets brands run this post as an ad.",
        +            "type": "boolean"
        +          },
        +          "caption": {
        +            "type": "string"
        +          },
        +          "captions": {
        +            "items": {
        +              "properties": {
        +                "language": {
        +                  "type": "string"
        +                },
        +                "source": {
        +                  "description": "ASR = TikTok auto-captions; MT = machine translation; otherwise creator-provided.",
        +                  "type": "string"
        +                },
        +                "url": {
        +                  "description": "WebVTT file for video_captions; expires after a few hours.",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "language",
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "comments": {
        +            "type": "integer"
        +          },
        +          "creator": {
        +            "properties": {
        +              "followers": {
        +                "type": "integer"
        +              },
        +              "handle": {
        +                "description": "TikTok @handle without the @.",
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "Numeric user id (user_id inputs).",
        +                "type": "string"
        +              },
        +              "nickname": {
        +                "type": "string"
        +              },
        +              "secUid": {
        +                "description": "secUid (sec_uid inputs).",
        +                "type": "string"
        +              },
        +              "verified": {
        +                "type": "boolean"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "durationSec": {
        +            "type": "number"
        +          },
        +          "effects": {
        +            "description": "Effects used (sticker_id input).",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "hashtags": {
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "imageCount": {
        +            "description": "Slides in a photo post.",
        +            "type": "integer"
        +          },
        +          "isAd": {
        +            "type": "boolean"
        +          },
        +          "language": {
        +            "type": "string"
        +          },
        +          "likes": {
        +            "type": "integer"
        +          },
        +          "photoPost": {
        +            "type": "boolean"
        +          },
        +          "pinned": {
        +            "type": "boolean"
        +          },
        +          "place": {
        +            "description": "Tagged location (place_id input).",
        +            "properties": {
        +              "id": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "posted": {
        +            "description": "Upload time, RFC 3339 UTC.",
        +            "type": "string"
        +          },
        +          "products": {
        +            "description": "TikTok Shop products linked from the post.",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "description": "TikTok Shop product_id.",
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "description": "Short name shown on the video's product link.",
        +                  "type": "string"
        +                },
        +                "sellerId": {
        +                  "type": "string"
        +                },
        +                "title": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "id"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "saves": {
        +            "type": "integer"
        +          },
        +          "shares": {
        +            "type": "integer"
        +          },
        +          "sound": {
        +            "properties": {
        +              "author": {
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "music_id input.",
        +                "type": "string"
        +              },
        +              "original": {
        +                "description": "An original sound made by the poster, not a licensed track.",
        +                "type": "boolean"
        +              },
        +              "title": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "views": {
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "views",
        +          "likes",
        +          "comments",
        +          "shares",
        +          "saves"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "videos",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Addedplaylist_detail
    • Changedplaylist_videos7 fields changed
      • addedInput schema / properties / count / default
        Added value: +10
      • changedInput schema / properties / count / description
        Previous value: -"Requested page size, 1-30; default 10. TikTok may return a different number."New value: +"Requested page size. TikTok may return a different number."
      • addedInput schema / properties / cursor / default
        Added value: +"0"
      • changedInput schema / properties / cursor / description
        Previous value: -"Native cursor as a decimal string; default 0. Pass back the returned cursor unchanged."New value: +"From the previous response's next; omit on the first page."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / playlist_id / description
        Previous value: -"Numeric mixId returned by creator_playlists."New value: +"Playlist id from creator_playlists."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    },
        +    "videos": {
        +      "items": {
        +        "properties": {
        +          "allowsAdUse": {
        +            "description": "Creator lets brands run this post as an ad.",
        +            "type": "boolean"
        +          },
        +          "caption": {
        +            "type": "string"
        +          },
        +          "captions": {
        +            "items": {
        +              "properties": {
        +                "language": {
        +                  "type": "string"
        +                },
        +                "source": {
        +                  "description": "ASR = TikTok auto-captions; MT = machine translation; otherwise creator-provided.",
        +                  "type": "string"
        +                },
        +                "url": {
        +                  "description": "WebVTT file for video_captions; expires after a few hours.",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "language",
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "comments": {
        +            "type": "integer"
        +          },
        +          "creator": {
        +            "properties": {
        +              "followers": {
        +                "type": "integer"
        +              },
        +              "handle": {
        +                "description": "TikTok @handle without the @.",
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "Numeric user id (user_id inputs).",
        +                "type": "string"
        +              },
        +              "nickname": {
        +                "type": "string"
        +              },
        +              "secUid": {
        +                "description": "secUid (sec_uid inputs).",
        +                "type": "string"
        +              },
        +              "verified": {
        +                "type": "boolean"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "durationSec": {
        +            "type": "number"
        +          },
        +          "effects": {
        +            "description": "Effects used (sticker_id input).",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "hashtags": {
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "imageCount": {
        +            "description": "Slides in a photo post.",
        +            "type": "integer"
        +          },
        +          "isAd": {
        +            "type": "boolean"
        +          },
        +          "language": {
        +            "type": "string"
        +          },
        +          "likes": {
        +            "type": "integer"
        +          },
        +          "photoPost": {
        +            "type": "boolean"
        +          },
        +          "pinned": {
        +            "type": "boolean"
        +          },
        +          "place": {
        +            "description": "Tagged location (place_id input).",
        +            "properties": {
        +              "id": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "posted": {
        +            "description": "Upload time, RFC 3339 UTC.",
        +            "type": "string"
        +          },
        +          "products": {
        +            "description": "TikTok Shop products linked from the post.",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "description": "TikTok Shop product_id.",
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "description": "Short name shown on the video's product link.",
        +                  "type": "string"
        +                },
        +                "sellerId": {
        +                  "type": "string"
        +                },
        +                "title": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "id"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "saves": {
        +            "type": "integer"
        +          },
        +          "shares": {
        +            "type": "integer"
        +          },
        +          "sound": {
        +            "properties": {
        +              "author": {
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "music_id input.",
        +                "type": "string"
        +              },
        +              "original": {
        +                "description": "An original sound made by the poster, not a licensed track.",
        +                "type": "boolean"
        +              },
        +              "title": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "views": {
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "views",
        +          "likes",
        +          "comments",
        +          "shares",
        +          "saves"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "videos",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Removedproduct_trend_check
    • Changedrecommended_videos5 fields changed
      • addedInput schema / properties / count / default
        Added value: +10
      • changedInput schema / properties / count / description
        Previous value: -"Requested page size, 1-30; default 10. TikTok may return a different number."New value: +"Requested page size. TikTok may return a different number."
      • addedInput schema / properties / cursor
        Added value: +{
        +  "default": "0",
        +  "description": "From the previous response's next; omit on the first page.",
        +  "maxLength": 2048,
        +  "type": "string"
        +}
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    },
        +    "videos": {
        +      "items": {
        +        "properties": {
        +          "allowsAdUse": {
        +            "description": "Creator lets brands run this post as an ad.",
        +            "type": "boolean"
        +          },
        +          "caption": {
        +            "type": "string"
        +          },
        +          "captions": {
        +            "items": {
        +              "properties": {
        +                "language": {
        +                  "type": "string"
        +                },
        +                "source": {
        +                  "description": "ASR = TikTok auto-captions; MT = machine translation; otherwise creator-provided.",
        +                  "type": "string"
        +                },
        +                "url": {
        +                  "description": "WebVTT file for video_captions; expires after a few hours.",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "language",
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "comments": {
        +            "type": "integer"
        +          },
        +          "creator": {
        +            "properties": {
        +              "followers": {
        +                "type": "integer"
        +              },
        +              "handle": {
        +                "description": "TikTok @handle without the @.",
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "Numeric user id (user_id inputs).",
        +                "type": "string"
        +              },
        +              "nickname": {
        +                "type": "string"
        +              },
        +              "secUid": {
        +                "description": "secUid (sec_uid inputs).",
        +                "type": "string"
        +              },
        +              "verified": {
        +                "type": "boolean"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "durationSec": {
        +            "type": "number"
        +          },
        +          "effects": {
        +            "description": "Effects used (sticker_id input).",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "hashtags": {
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "imageCount": {
        +            "description": "Slides in a photo post.",
        +            "type": "integer"
        +          },
        +          "isAd": {
        +            "type": "boolean"
        +          },
        +          "language": {
        +            "type": "string"
        +          },
        +          "likes": {
        +            "type": "integer"
        +          },
        +          "photoPost": {
        +            "type": "boolean"
        +          },
        +          "pinned": {
        +            "type": "boolean"
        +          },
        +          "place": {
        +            "description": "Tagged location (place_id input).",
        +            "properties": {
        +              "id": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "posted": {
        +            "description": "Upload time, RFC 3339 UTC.",
        +            "type": "string"
        +          },
        +          "products": {
        +            "description": "TikTok Shop products linked from the post.",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "description": "TikTok Shop product_id.",
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "description": "Short name shown on the video's product link.",
        +                  "type": "string"
        +                },
        +                "sellerId": {
        +                  "type": "string"
        +                },
        +                "title": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "id"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "saves": {
        +            "type": "integer"
        +          },
        +          "shares": {
        +            "type": "integer"
        +          },
        +          "sound": {
        +            "properties": {
        +              "author": {
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "music_id input.",
        +                "type": "string"
        +              },
        +              "original": {
        +                "description": "An original sound made by the poster, not a licensed track.",
        +                "type": "boolean"
        +              },
        +              "title": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "views": {
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "views",
        +          "likes",
        +          "comments",
        +          "shares",
        +          "saves"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "videos",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Changedrelated_hashtags4 fields changed
      • addedInput schema / properties / count
        Added value: +{
        +  "default": 5,
        +  "description": "Requested related tags. TikTok may return fewer.",
        +  "maximum": 20,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / hashtag_id / description
        Previous value: -"Numeric hashtag ID from search_hashtags or video metadata."New value: +"Hashtag id (hashtags[].id)."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "hashtags": {
        +      "items": {
        +        "properties": {
        +          "description": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "description": "hashtag_id input.",
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "videos": {
        +            "type": "integer"
        +          },
        +          "views": {
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "name"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "hashtags",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Changedrelated_queries3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / query_id / description
        Previous value: -"CSI topic queryId returned by search_topics, browse_topics, trending_topics or related_topics. Not a video ID, username or keyword."New value: +"queryId from search_topics, browse_topics, trending_topics or related_topics."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "queries": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    }
        +  },
        +  "required": [
        +    "queries"
        +  ],
        +  "type": "object"
        +}
    • Changedrelated_topics7 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / limit / default
        Added value: +11
      • changedInput schema / properties / limit / description
        Previous value: -"How many related topics to return, 1-20. Defaults to 11."New value: +"Related topics per page."
      • addedInput schema / properties / offset / default
        Added value: +0
      • changedInput schema / properties / offset / description
        Previous value: -"Pagination offset. Defaults to 0; pass back nextOffset."New value: +"From the previous response's next; omit on the first page."
      • changedInput schema / properties / query_id / description
        Previous value: -"CSI topic queryId returned by search_topics, browse_topics, trending_topics or related_topics. Not a video ID, username or keyword."New value: +"queryId from search_topics, browse_topics, trending_topics or related_topics."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "channel": {
        +      "type": "string"
        +    },
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "tab": {
        +      "type": "string"
        +    },
        +    "topics": {
        +      "items": {
        +        "properties": {
        +          "category": {
        +            "type": "string"
        +          },
        +          "popularity": {
        +            "description": "TikTok's 0-100 popularity score.",
        +            "type": "integer"
        +          },
        +          "queryId": {
        +            "description": "query_id input.",
        +            "type": "string"
        +          },
        +          "queryText": {
        +            "type": "string"
        +          },
        +          "searchVolume": {
        +            "description": "TikTok's 7-day search popularity figure.",
        +            "type": "integer"
        +          },
        +          "trend7d": {
        +            "description": "Daily readings, oldest first.",
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "videoCount": {
        +            "description": "Videos TikTok matches to the search; 0 marks a content gap.",
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "queryId",
        +          "queryText",
        +          "searchVolume",
        +          "videoCount"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "topics",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Changedrelated_videos9 fields changed
      • addedInput schema / properties / count / default
        Added value: +12
      • changedInput schema / properties / count / description
        Previous value: -"How many videos to return, 1-20. Defaults to 12."New value: +"Videos to return."
      • changedInput schema / properties / count / maximum
        Previous value: -50New value: +20
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / offset / default
        Added value: +0
      • changedInput schema / properties / offset / description
        Previous value: -"Use 0 (first page). This helper cannot pass search_id; use search_videos for continuation."New value: +"From the previous response's next; omit on the first page."
      • changedInput schema / properties / offset / maximum
        Previous value: -2147483647New value: +0
      • changedInput schema / properties / query_id / description
        Previous value: -"CSI topic queryId returned by search_topics, browse_topics, trending_topics or related_topics. Not a video ID, username or keyword."New value: +"queryId from search_topics, browse_topics, trending_topics or related_topics."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "topicQueryText": {
        +      "type": "string"
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    },
        +    "videos": {
        +      "items": {
        +        "properties": {
        +          "allowsAdUse": {
        +            "description": "Creator lets brands run this post as an ad.",
        +            "type": "boolean"
        +          },
        +          "caption": {
        +            "type": "string"
        +          },
        +          "captions": {
        +            "items": {
        +              "properties": {
        +                "language": {
        +                  "type": "string"
        +                },
        +                "source": {
        +                  "description": "ASR = TikTok auto-captions; MT = machine translation; otherwise creator-provided.",
        +                  "type": "string"
        +                },
        +                "url": {
        +                  "description": "WebVTT file for video_captions; expires after a few hours.",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "language",
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "comments": {
        +            "type": "integer"
        +          },
        +          "creator": {
        +            "properties": {
        +              "followers": {
        +                "type": "integer"
        +              },
        +              "handle": {
        +                "description": "TikTok @handle without the @.",
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "Numeric user id (user_id inputs).",
        +                "type": "string"
        +              },
        +              "nickname": {
        +                "type": "string"
        +              },
        +              "secUid": {
        +                "description": "secUid (sec_uid inputs).",
        +                "type": "string"
        +              },
        +              "verified": {
        +                "type": "boolean"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "durationSec": {
        +            "type": "number"
        +          },
        +          "effects": {
        +            "description": "Effects used (sticker_id input).",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "hashtags": {
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "imageCount": {
        +            "description": "Slides in a photo post.",
        +            "type": "integer"
        +          },
        +          "isAd": {
        +            "type": "boolean"
        +          },
        +          "language": {
        +            "type": "string"
        +          },
        +          "likes": {
        +            "type": "integer"
        +          },
        +          "photoPost": {
        +            "type": "boolean"
        +          },
        +          "pinned": {
        +            "type": "boolean"
        +          },
        +          "place": {
        +            "description": "Tagged location (place_id input).",
        +            "properties": {
        +              "id": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "posted": {
        +            "description": "Upload time, RFC 3339 UTC.",
        +            "type": "string"
        +          },
        +          "products": {
        +            "description": "TikTok Shop products linked from the post.",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "description": "TikTok Shop product_id.",
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "description": "Short name shown on the video's product link.",
        +                  "type": "string"
        +                },
        +                "sellerId": {
        +                  "type": "string"
        +                },
        +                "title": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "id"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "saves": {
        +            "type": "integer"
        +          },
        +          "shares": {
        +            "type": "integer"
        +          },
        +          "sound": {
        +            "properties": {
        +              "author": {
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "music_id input.",
        +                "type": "string"
        +              },
        +              "original": {
        +                "description": "An original sound made by the poster, not a licensed track.",
        +                "type": "boolean"
        +              },
        +              "title": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "views": {
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "views",
        +          "likes",
        +          "comments",
        +          "shares",
        +          "saves"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "videos",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_all7 fields changed
      • addedInput schema / properties / count / default
        Added value: +10
      • changedInput schema / properties / count / description
        Previous value: -"Requested page size, 1-30; default 10. TikTok may return a different number."New value: +"Requested page size. TikTok may return a different number."
      • addedInput schema / properties / cursor / default
        Added value: +"0"
      • changedInput schema / properties / cursor / description
        Previous value: -"Native cursor as a decimal string; default 0. Pass back the returned cursor unchanged."New value: +"From the previous response's next; omit on the first page."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / search_id / description
        Previous value: -"log_pb.impr_id from the first response; required for subsequent pages."New value: +"From the previous response's next; omit on the first page."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedsearch_hashtags7 fields changed
      • addedInput schema / properties / count / default
        Added value: +20
      • changedInput schema / properties / count / description
        Previous value: -"How many hashtags to return, 1-50. Defaults to 20."New value: +"Hashtags per page."
      • addedInput schema / properties / cursor / default
        Added value: +0
      • changedInput schema / properties / cursor / description
        Previous value: -"Pagination cursor. Defaults to 0."New value: +"From the previous response's next; omit on the first page."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / keyword / description
        Previous value: -"The term, e.g. 'fitness'."New value: +"Term, e.g. 'fitness'."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "hashtags": {
        +      "items": {
        +        "properties": {
        +          "description": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "description": "hashtag_id input.",
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "videos": {
        +            "type": "integer"
        +          },
        +          "views": {
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "name"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "hashtags",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_live7 fields changed
      • addedInput schema / properties / count / default
        Added value: +10
      • changedInput schema / properties / count / description
        Previous value: -"Requested results, 1-30; default 10."New value: +"Requested results."
      • addedInput schema / properties / cursor / default
        Added value: +0
      • changedInput schema / properties / cursor / description
        Previous value: -"Returned cursor; default 0."New value: +"From the previous response's next; omit on the first page."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / search_id / description
        Previous value: -"First page log_pb.impr_id; required when cursor > 0."New value: +"From the previous response's next; omit on the first page."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "rooms": {
        +      "items": {
        +        "properties": {
        +          "creator": {
        +            "properties": {
        +              "followers": {
        +                "type": "integer"
        +              },
        +              "handle": {
        +                "description": "TikTok @handle without the @.",
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "Numeric user id (user_id inputs).",
        +                "type": "string"
        +              },
        +              "nickname": {
        +                "type": "string"
        +              },
        +              "secUid": {
        +                "description": "secUid (sec_uid inputs).",
        +                "type": "string"
        +              },
        +              "verified": {
        +                "type": "boolean"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "likes": {
        +            "type": "integer"
        +          },
        +          "live": {
        +            "description": "Broadcasting at the time of the request.",
        +            "type": "boolean"
        +          },
        +          "products": {
        +            "description": "Products in the LIVE bag, when TikTok reports it.",
        +            "type": "integer"
        +          },
        +          "roomId": {
        +            "description": "room_id input.",
        +            "type": "string"
        +          },
        +          "shopping": {
        +            "description": "The room is selling TikTok Shop products.",
        +            "type": "boolean"
        +          },
        +          "started": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "totalViewers": {
        +            "description": "People who joined so far.",
        +            "type": "integer"
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "viewers": {
        +            "description": "Current viewers.",
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "roomId",
        +          "live"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "rooms",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_photos8 fields changed
      • addedInput schema / properties / count / default
        Added value: +20
      • changedInput schema / properties / count / description
        Previous value: -"Requested page size, 1-20; default 20. Actual page sizes vary."New value: +"Requested page size. Actual sizes vary."
      • changedInput schema / properties / count / maximum
        Previous value: -50New value: +20
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / offset / default
        Added value: +0
      • changedInput schema / properties / offset / description
        Previous value: -"Native cursor from the previous page; default 0."New value: +"From the previous response's next; omit on the first page."
      • changedInput schema / properties / search_id / description
        Previous value: -"First page's log_pb.impr_id; required when offset > 0."New value: +"From the previous response's next; omit on the first page."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    },
        +    "videos": {
        +      "items": {
        +        "properties": {
        +          "allowsAdUse": {
        +            "description": "Creator lets brands run this post as an ad.",
        +            "type": "boolean"
        +          },
        +          "caption": {
        +            "type": "string"
        +          },
        +          "captions": {
        +            "items": {
        +              "properties": {
        +                "language": {
        +                  "type": "string"
        +                },
        +                "source": {
        +                  "description": "ASR = TikTok auto-captions; MT = machine translation; otherwise creator-provided.",
        +                  "type": "string"
        +                },
        +                "url": {
        +                  "description": "WebVTT file for video_captions; expires after a few hours.",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "language",
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "comments": {
        +            "type": "integer"
        +          },
        +          "creator": {
        +            "properties": {
        +              "followers": {
        +                "type": "integer"
        +              },
        +              "handle": {
        +                "description": "TikTok @handle without the @.",
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "Numeric user id (user_id inputs).",
        +                "type": "string"
        +              },
        +              "nickname": {
        +                "type": "string"
        +              },
        +              "secUid": {
        +                "description": "secUid (sec_uid inputs).",
        +                "type": "string"
        +              },
        +              "verified": {
        +                "type": "boolean"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "durationSec": {
        +            "type": "number"
        +          },
        +          "effects": {
        +            "description": "Effects used (sticker_id input).",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "hashtags": {
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "imageCount": {
        +            "description": "Slides in a photo post.",
        +            "type": "integer"
        +          },
        +          "isAd": {
        +            "type": "boolean"
        +          },
        +          "language": {
        +            "type": "string"
        +          },
        +          "likes": {
        +            "type": "integer"
        +          },
        +          "photoPost": {
        +            "type": "boolean"
        +          },
        +          "pinned": {
        +            "type": "boolean"
        +          },
        +          "place": {
        +            "description": "Tagged location (place_id input).",
        +            "properties": {
        +              "id": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "posted": {
        +            "description": "Upload time, RFC 3339 UTC.",
        +            "type": "string"
        +          },
        +          "products": {
        +            "description": "TikTok Shop products linked from the post.",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "description": "TikTok Shop product_id.",
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "description": "Short name shown on the video's product link.",
        +                  "type": "string"
        +                },
        +                "sellerId": {
        +                  "type": "string"
        +                },
        +                "title": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "id"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "saves": {
        +            "type": "integer"
        +          },
        +          "shares": {
        +            "type": "integer"
        +          },
        +          "sound": {
        +            "properties": {
        +              "author": {
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "music_id input.",
        +                "type": "string"
        +              },
        +              "original": {
        +                "description": "An original sound made by the poster, not a licensed track.",
        +                "type": "boolean"
        +              },
        +              "title": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "views": {
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "views",
        +          "likes",
        +          "comments",
        +          "shares",
        +          "saves"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "videos",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_popularity6 fields changed
      • changedInput schema / properties / countries / description
        Previous value: -"Country codes to break out, e.g. [\"US\",\"GB\"]. Defaults to [\"global\"] for worldwide. Multiple countries use one request; some may be unavailable."New value: +"Country codes, e.g. [\"US\",\"GB\"]. Omit for worldwide."
      • addedInput schema / properties / days / default
        Added value: +"30"
      • changedInput schema / properties / days / description
        Previous value: -"Requested date window in days; defaults to 30. Does not define the aggregation period of returned metrics."New value: +"Chart window in days. Does not define each point's aggregation."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / query_id / description
        Previous value: -"CSI topic queryId returned by search_topics, browse_topics, trending_topics or related_topics. Not a video ID, username or keyword."New value: +"queryId from search_topics, browse_topics, trending_topics or related_topics."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "missingCountries": {
        +      "description": "Requested countries TikTok returned no series for; do not substitute global.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "requestedCountries": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "series": {
        +      "items": {
        +        "properties": {
        +          "country": {
        +            "type": "string"
        +          },
        +          "points": {
        +            "items": {
        +              "properties": {
        +                "date": {
        +                  "type": "string"
        +                },
        +                "popularity": {
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "date",
        +                "popularity"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "required": [
        +          "country",
        +          "points"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "windowDays": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "series"
        +  ],
        +  "type": "object"
        +}
    • Addedsearch_shop_products
    • Changedsearch_sounds7 fields changed
      • addedInput schema / properties / count / default
        Added value: +10
      • changedInput schema / properties / count / description
        Previous value: -"Requested results, 1-30; default 10."New value: +"Requested results."
      • addedInput schema / properties / cursor / default
        Added value: +0
      • changedInput schema / properties / cursor / description
        Previous value: -"Returned cursor; default 0."New value: +"From the previous response's next; omit on the first page."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / search_id / description
        Previous value: -"First page log_pb.impr_id; required when cursor > 0."New value: +"From the previous response's next; omit on the first page."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "sounds": {
        +      "items": {
        +        "properties": {
        +          "album": {
        +            "type": "string"
        +          },
        +          "author": {
        +            "type": "string"
        +          },
        +          "commercialUse": {
        +            "description": "TikTok marks the track as cleared for commercial use.",
        +            "type": "boolean"
        +          },
        +          "durationSec": {
        +            "type": "number"
        +          },
        +          "id": {
        +            "description": "music_id input.",
        +            "type": "string"
        +          },
        +          "original": {
        +            "description": "An original sound, not a licensed track.",
        +            "type": "boolean"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "videos": {
        +            "description": "Posts using the sound, when TikTok reports it.",
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "id"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "sounds",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_suggestions7 fields changed
      • addedInput schema / properties / count / default
        Added value: +10
      • changedInput schema / properties / count / description
        Previous value: -"How many suggestions, 1-50. Defaults to 10."New value: +"How many suggestions."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / keyword / description
        Previous value: -"The seed term, e.g. 'meal prep'."New value: +"Seed term, e.g. 'meal prep'."
      • addedInput schema / properties / user_only / default
        Added value: +false
      • changedInput schema / properties / user_only / description
        Previous value: -"Return account suggestions instead of queries."New value: +"true = account suggestions; false = query phrases."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "suggestions": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "suggestions"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_topics8 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / keyword / description
        Previous value: -"The search phrase, e.g. 'bicep workouts'."New value: +"Search phrase, e.g. 'bicep workouts'."
      • changedInput schema / properties / language / description
        Previous value: -"Language code from list_languages, e.g. en. Omit to leave the language filter unset."New value: +"Optional language code from list_languages, e.g. en. Omit to leave the language filter unset."
      • addedInput schema / properties / limit / default
        Added value: +20
      • changedInput schema / properties / limit / description
        Previous value: -"How many topics to return, 1-20. Defaults to 20."New value: +"Topics per page."
      • addedInput schema / properties / offset / default
        Added value: +0
      • changedInput schema / properties / offset / description
        Previous value: -"Pagination offset. Defaults to 0; pass back nextOffset."New value: +"From the previous response's next; omit on the first page."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "channel": {
        +      "type": "string"
        +    },
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "tab": {
        +      "type": "string"
        +    },
        +    "topics": {
        +      "items": {
        +        "properties": {
        +          "category": {
        +            "type": "string"
        +          },
        +          "popularity": {
        +            "description": "TikTok's 0-100 popularity score.",
        +            "type": "integer"
        +          },
        +          "queryId": {
        +            "description": "query_id input.",
        +            "type": "string"
        +          },
        +          "queryText": {
        +            "type": "string"
        +          },
        +          "searchVolume": {
        +            "description": "TikTok's 7-day search popularity figure.",
        +            "type": "integer"
        +          },
        +          "trend7d": {
        +            "description": "Daily readings, oldest first.",
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "videoCount": {
        +            "description": "Videos TikTok matches to the search; 0 marks a content gap.",
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "queryId",
        +          "queryText",
        +          "searchVolume",
        +          "videoCount"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "topics",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_users16 fields changed
      • addedInput schema / properties / count / default
        Added value: +20
      • changedInput schema / properties / count / description
        Previous value: -"How many accounts to return, 1-20. Defaults to 20."New value: +"Accounts per page."
      • changedInput schema / properties / count / maximum
        Previous value: -50New value: +20
      • addedInput schema / properties / cursor / default
        Added value: +0
      • changedInput schema / properties / cursor / description
        Previous value: -"Pagination cursor. Defaults to 0; pass back nextCursor."New value: +"From the previous response's next; omit on the first page."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / keyword / description
        Previous value: -"The search term, e.g. 'fitness'."New value: +"Search term, e.g. 'fitness'."
      • addedInput schema / properties / max_followers / default
        Added value: +0
      • changedInput schema / properties / max_followers / description
        Previous value: -"Maximum followers on this page; 0 means no maximum."New value: +"Maximum followers on this page. 0 = no maximum."
      • addedInput schema / properties / min_followers / default
        Added value: +0
      • changedInput schema / properties / min_followers / description
        Previous value: -"Minimum followers on this page."New value: +"Minimum followers on this page. 0 = no minimum."
      • changedInput schema / properties / search_id / description
        Previous value: -"Pass searchId from the previous page with cursor."New value: +"From the previous response's next; omit on the first page."
      • addedInput schema / properties / sort / default
        Added value: +"relevance"
      • changedInput schema / properties / sort / description
        Previous value: -"Sort this page: relevance (default), followers or likes descending."New value: +"Sort this page."
      • addedInput schema / properties / verified_only / default
        Added value: +false
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "creators": {
        +      "items": {
        +        "properties": {
        +          "bio": {
        +            "type": "string"
        +          },
        +          "bioLink": {
        +            "type": "string"
        +          },
        +          "followers": {
        +            "type": "integer"
        +          },
        +          "following": {
        +            "type": "integer"
        +          },
        +          "friends": {
        +            "description": "Mutual follows.",
        +            "type": "integer"
        +          },
        +          "handle": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "description": "Numeric user id (user_id inputs).",
        +            "type": "string"
        +          },
        +          "joined": {
        +            "description": "Account creation time, RFC 3339 UTC.",
        +            "type": "string"
        +          },
        +          "language": {
        +            "type": "string"
        +          },
        +          "likes": {
        +            "description": "Total likes received.",
        +            "type": "integer"
        +          },
        +          "nickname": {
        +            "type": "string"
        +          },
        +          "private": {
        +            "type": "boolean"
        +          },
        +          "region": {
        +            "type": "string"
        +          },
        +          "secUid": {
        +            "description": "secUid (sec_uid inputs).",
        +            "type": "string"
        +          },
        +          "shopSeller": {
        +            "description": "Account is a TikTok Shop seller.",
        +            "type": "boolean"
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "verified": {
        +            "type": "boolean"
        +          },
        +          "videos": {
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "handle",
        +          "followers",
        +          "following",
        +          "likes",
        +          "videos"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "creators",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_videos11 fields changed
      • addedInput schema / properties / count / default
        Added value: +20
      • changedInput schema / properties / count / description
        Previous value: -"How many videos to return, 1-20. Defaults to 20."New value: +"Videos per page."
      • changedInput schema / properties / count / maximum
        Previous value: -50New value: +20
      • addedInput schema / properties / date / default
        Added value: +"any"
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / keyword / description
        Previous value: -"The search phrase, e.g. 'home gym'."New value: +"Search phrase, e.g. 'home gym'."
      • addedInput schema / properties / offset / default
        Added value: +0
      • changedInput schema / properties / offset / description
        Previous value: -"Pagination offset. Defaults to 0. Pass searchId when > 0."New value: +"From the previous response's next; omit on the first page."
      • changedInput schema / properties / search_id / description
        Previous value: -"The searchId returned by the first page; required for offset > 0."New value: +"From the previous response's next; omit on the first page."
      • addedInput schema / properties / sort / default
        Added value: +"relevance"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    },
        +    "videos": {
        +      "items": {
        +        "properties": {
        +          "allowsAdUse": {
        +            "description": "Creator lets brands run this post as an ad.",
        +            "type": "boolean"
        +          },
        +          "caption": {
        +            "type": "string"
        +          },
        +          "captions": {
        +            "items": {
        +              "properties": {
        +                "language": {
        +                  "type": "string"
        +                },
        +                "source": {
        +                  "description": "ASR = TikTok auto-captions; MT = machine translation; otherwise creator-provided.",
        +                  "type": "string"
        +                },
        +                "url": {
        +                  "description": "WebVTT file for video_captions; expires after a few hours.",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "language",
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "comments": {
        +            "type": "integer"
        +          },
        +          "creator": {
        +            "properties": {
        +              "followers": {
        +                "type": "integer"
        +              },
        +              "handle": {
        +                "description": "TikTok @handle without the @.",
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "Numeric user id (user_id inputs).",
        +                "type": "string"
        +              },
        +              "nickname": {
        +                "type": "string"
        +              },
        +              "secUid": {
        +                "description": "secUid (sec_uid inputs).",
        +                "type": "string"
        +              },
        +              "verified": {
        +                "type": "boolean"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "durationSec": {
        +            "type": "number"
        +          },
        +          "effects": {
        +            "description": "Effects used (sticker_id input).",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "hashtags": {
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "imageCount": {
        +            "description": "Slides in a photo post.",
        +            "type": "integer"
        +          },
        +          "isAd": {
        +            "type": "boolean"
        +          },
        +          "language": {
        +            "type": "string"
        +          },
        +          "likes": {
        +            "type": "integer"
        +          },
        +          "photoPost": {
        +            "type": "boolean"
        +          },
        +          "pinned": {
        +            "type": "boolean"
        +          },
        +          "place": {
        +            "description": "Tagged location (place_id input).",
        +            "properties": {
        +              "id": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "posted": {
        +            "description": "Upload time, RFC 3339 UTC.",
        +            "type": "string"
        +          },
        +          "products": {
        +            "description": "TikTok Shop products linked from the post.",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "description": "TikTok Shop product_id.",
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "description": "Short name shown on the video's product link.",
        +                  "type": "string"
        +                },
        +                "sellerId": {
        +                  "type": "string"
        +                },
        +                "title": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "id"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "saves": {
        +            "type": "integer"
        +          },
        +          "shares": {
        +            "type": "integer"
        +          },
        +          "sound": {
        +            "properties": {
        +              "author": {
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "music_id input.",
        +                "type": "string"
        +              },
        +              "original": {
        +                "description": "An original sound made by the poster, not a licensed track.",
        +                "type": "boolean"
        +              },
        +              "title": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "views": {
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "views",
        +          "likes",
        +          "comments",
        +          "shares",
        +          "saves"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "videos",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Addedshop_catalog
    • Addedshop_category
    • Addedshop_deals
    • Addedshop_keyword_page
    • Addedshop_product_detail
    • Addedshop_product_reviews
    • Addedshop_product_videos
    • Addedshop_related_products
    • Addedshop_seller
    • Addedshop_suggest
    • Changedsimilar_videos6 fields changed
      • addedInput schema / properties / count / default
        Added value: +10
      • changedInput schema / properties / count / description
        Previous value: -"Requested page size, 1-30; default 10. TikTok may return a different number."New value: +"Requested page size. TikTok may return a different number."
      • addedInput schema / properties / cursor
        Added value: +{
        +  "default": "0",
        +  "description": "From the previous response's next; omit on the first page.",
        +  "maxLength": 2048,
        +  "type": "string"
        +}
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / video_id / description
        Previous value: -"Numeric video ID from video search or detail."New value: +"Post id (videos[].id)."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    },
        +    "videos": {
        +      "items": {
        +        "properties": {
        +          "allowsAdUse": {
        +            "description": "Creator lets brands run this post as an ad.",
        +            "type": "boolean"
        +          },
        +          "caption": {
        +            "type": "string"
        +          },
        +          "captions": {
        +            "items": {
        +              "properties": {
        +                "language": {
        +                  "type": "string"
        +                },
        +                "source": {
        +                  "description": "ASR = TikTok auto-captions; MT = machine translation; otherwise creator-provided.",
        +                  "type": "string"
        +                },
        +                "url": {
        +                  "description": "WebVTT file for video_captions; expires after a few hours.",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "language",
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "comments": {
        +            "type": "integer"
        +          },
        +          "creator": {
        +            "properties": {
        +              "followers": {
        +                "type": "integer"
        +              },
        +              "handle": {
        +                "description": "TikTok @handle without the @.",
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "Numeric user id (user_id inputs).",
        +                "type": "string"
        +              },
        +              "nickname": {
        +                "type": "string"
        +              },
        +              "secUid": {
        +                "description": "secUid (sec_uid inputs).",
        +                "type": "string"
        +              },
        +              "verified": {
        +                "type": "boolean"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "durationSec": {
        +            "type": "number"
        +          },
        +          "effects": {
        +            "description": "Effects used (sticker_id input).",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "hashtags": {
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "imageCount": {
        +            "description": "Slides in a photo post.",
        +            "type": "integer"
        +          },
        +          "isAd": {
        +            "type": "boolean"
        +          },
        +          "language": {
        +            "type": "string"
        +          },
        +          "likes": {
        +            "type": "integer"
        +          },
        +          "photoPost": {
        +            "type": "boolean"
        +          },
        +          "pinned": {
        +            "type": "boolean"
        +          },
        +          "place": {
        +            "description": "Tagged location (place_id input).",
        +            "properties": {
        +              "id": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "posted": {
        +            "description": "Upload time, RFC 3339 UTC.",
        +            "type": "string"
        +          },
        +          "products": {
        +            "description": "TikTok Shop products linked from the post.",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "description": "TikTok Shop product_id.",
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "description": "Short name shown on the video's product link.",
        +                  "type": "string"
        +                },
        +                "sellerId": {
        +                  "type": "string"
        +                },
        +                "title": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "id"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "saves": {
        +            "type": "integer"
        +          },
        +          "shares": {
        +            "type": "integer"
        +          },
        +          "sound": {
        +            "properties": {
        +              "author": {
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "music_id input.",
        +                "type": "string"
        +              },
        +              "original": {
        +                "description": "An original sound made by the poster, not a licensed track.",
        +                "type": "boolean"
        +              },
        +              "title": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "views": {
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "views",
        +          "likes",
        +          "comments",
        +          "shares",
        +          "saves"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "videos",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Addedsound_detail
    • Changedsound_videos7 fields changed
      • addedInput schema / properties / count / default
        Added value: +20
      • changedInput schema / properties / count / description
        Previous value: -"Requested page size, 1-50; default 20."New value: +"Requested page size."
      • addedInput schema / properties / cursor / default
        Added value: +0
      • changedInput schema / properties / cursor / description
        Previous value: -"Native pagination cursor; default 0."New value: +"From the previous response's next; omit on the first page."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / music_id / description
        Previous value: -"Numeric sound ID from search_sounds or video_detail.musicId."New value: +"Sound id (sound.id on a post, or sounds[].id)."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    },
        +    "videos": {
        +      "items": {
        +        "properties": {
        +          "allowsAdUse": {
        +            "description": "Creator lets brands run this post as an ad.",
        +            "type": "boolean"
        +          },
        +          "caption": {
        +            "type": "string"
        +          },
        +          "captions": {
        +            "items": {
        +              "properties": {
        +                "language": {
        +                  "type": "string"
        +                },
        +                "source": {
        +                  "description": "ASR = TikTok auto-captions; MT = machine translation; otherwise creator-provided.",
        +                  "type": "string"
        +                },
        +                "url": {
        +                  "description": "WebVTT file for video_captions; expires after a few hours.",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "language",
        +                "url"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "comments": {
        +            "type": "integer"
        +          },
        +          "creator": {
        +            "properties": {
        +              "followers": {
        +                "type": "integer"
        +              },
        +              "handle": {
        +                "description": "TikTok @handle without the @.",
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "Numeric user id (user_id inputs).",
        +                "type": "string"
        +              },
        +              "nickname": {
        +                "type": "string"
        +              },
        +              "secUid": {
        +                "description": "secUid (sec_uid inputs).",
        +                "type": "string"
        +              },
        +              "verified": {
        +                "type": "boolean"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "durationSec": {
        +            "type": "number"
        +          },
        +          "effects": {
        +            "description": "Effects used (sticker_id input).",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "hashtags": {
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "imageCount": {
        +            "description": "Slides in a photo post.",
        +            "type": "integer"
        +          },
        +          "isAd": {
        +            "type": "boolean"
        +          },
        +          "language": {
        +            "type": "string"
        +          },
        +          "likes": {
        +            "type": "integer"
        +          },
        +          "photoPost": {
        +            "type": "boolean"
        +          },
        +          "pinned": {
        +            "type": "boolean"
        +          },
        +          "place": {
        +            "description": "Tagged location (place_id input).",
        +            "properties": {
        +              "id": {
        +                "type": "string"
        +              },
        +              "name": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "posted": {
        +            "description": "Upload time, RFC 3339 UTC.",
        +            "type": "string"
        +          },
        +          "products": {
        +            "description": "TikTok Shop products linked from the post.",
        +            "items": {
        +              "properties": {
        +                "id": {
        +                  "description": "TikTok Shop product_id.",
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "description": "Short name shown on the video's product link.",
        +                  "type": "string"
        +                },
        +                "sellerId": {
        +                  "type": "string"
        +                },
        +                "title": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "id"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "saves": {
        +            "type": "integer"
        +          },
        +          "shares": {
        +            "type": "integer"
        +          },
        +          "sound": {
        +            "properties": {
        +              "author": {
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "music_id input.",
        +                "type": "string"
        +              },
        +              "original": {
        +                "description": "An original sound made by the poster, not a licensed track.",
        +                "type": "boolean"
        +              },
        +              "title": {
        +                "type": "string"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "url": {
        +            "type": "string"
        +          },
        +          "views": {
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "views",
        +          "likes",
        +          "comments",
        +          "shares",
        +          "saves"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "videos",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Addedsticker_detail
    • Addedsticker_discover
    • Addedsticker_videos
    • Changedtopic_detail3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / query_id / description
        Previous value: -"CSI topic queryId returned by search_topics, browse_topics, trending_topics or related_topics. Not a video ID, username or keyword."New value: +"queryId from search_topics, browse_topics, trending_topics or related_topics."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "relatedProduct": {
        +      "type": "object"
        +    },
        +    "topCountries": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "topic": {
        +      "properties": {
        +        "category": {
        +          "type": "string"
        +        },
        +        "popularity": {
        +          "description": "TikTok's 0-100 popularity score.",
        +          "type": "integer"
        +        },
        +        "queryId": {
        +          "description": "query_id input.",
        +          "type": "string"
        +        },
        +        "queryText": {
        +          "type": "string"
        +        },
        +        "searchVolume": {
        +          "description": "TikTok's 7-day search popularity figure.",
        +          "type": "integer"
        +        },
        +        "trend7d": {
        +          "description": "Daily readings, oldest first.",
        +          "items": {
        +            "type": "integer"
        +          },
        +          "type": "array"
        +        },
        +        "videoCount": {
        +          "description": "Videos TikTok matches to the search; 0 marks a content gap.",
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "queryId",
        +        "queryText",
        +        "searchVolume",
        +        "videoCount"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "topic"
        +  ],
        +  "type": "object"
        +}
    • Changedtrending_searches4 fields changed
      • addedInput schema / properties / count / default
        Added value: +10
      • changedInput schema / properties / count / description
        Previous value: -"Requested page size, 1-30; default 10. TikTok may return a different number."New value: +"Requested page size. TikTok may return a different number."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "searches": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "searches"
        +  ],
        +  "type": "object"
        +}
    • Changedtrending_topics8 fields changed
      • addedInput schema / properties / category / default
        Added value: +"all"
      • changedInput schema / properties / category / description
        Previous value: -"Trending category tab."New value: +"Trending category tab. Use display names from list_channels.trendingCategories."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / limit / default
        Added value: +20
      • changedInput schema / properties / limit / description
        Previous value: -"How many topics to return, 1-20. Defaults to 20."New value: +"Topics per page."
      • addedInput schema / properties / offset / default
        Added value: +0
      • changedInput schema / properties / offset / description
        Previous value: -"Pagination offset. Defaults to 0."New value: +"From the previous response's next; omit on the first page."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "channel": {
        +      "type": "string"
        +    },
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "tab": {
        +      "type": "string"
        +    },
        +    "topics": {
        +      "items": {
        +        "properties": {
        +          "category": {
        +            "type": "string"
        +          },
        +          "popularity": {
        +            "description": "TikTok's 0-100 popularity score.",
        +            "type": "integer"
        +          },
        +          "queryId": {
        +            "description": "query_id input.",
        +            "type": "string"
        +          },
        +          "queryText": {
        +            "type": "string"
        +          },
        +          "searchVolume": {
        +            "description": "TikTok's 7-day search popularity figure.",
        +            "type": "integer"
        +          },
        +          "trend7d": {
        +            "description": "Daily readings, oldest first.",
        +            "items": {
        +              "type": "integer"
        +            },
        +            "type": "array"
        +          },
        +          "videoCount": {
        +            "description": "Videos TikTok matches to the search; 0 marks a content gap.",
        +            "type": "integer"
        +          }
        +        },
        +        "required": [
        +          "queryId",
        +          "queryText",
        +          "searchVolume",
        +          "videoCount"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "topics",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Changeduser_profile3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / handle / description
        Previous value: -"The handle, with or without a leading @, e.g. 'pawpet05'."New value: +"Handle with or without @, e.g. pawpet05."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "bio": {
        +      "type": "string"
        +    },
        +    "bioLink": {
        +      "type": "string"
        +    },
        +    "followers": {
        +      "type": "integer"
        +    },
        +    "following": {
        +      "type": "integer"
        +    },
        +    "friends": {
        +      "description": "Mutual follows.",
        +      "type": "integer"
        +    },
        +    "handle": {
        +      "type": "string"
        +    },
        +    "id": {
        +      "description": "Numeric user id (user_id inputs).",
        +      "type": "string"
        +    },
        +    "joined": {
        +      "description": "Account creation time, RFC 3339 UTC.",
        +      "type": "string"
        +    },
        +    "language": {
        +      "type": "string"
        +    },
        +    "likes": {
        +      "description": "Total likes received.",
        +      "type": "integer"
        +    },
        +    "nickname": {
        +      "type": "string"
        +    },
        +    "private": {
        +      "type": "boolean"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "region": {
        +      "type": "string"
        +    },
        +    "secUid": {
        +      "description": "secUid (sec_uid inputs).",
        +      "type": "string"
        +    },
        +    "shopSeller": {
        +      "description": "Account is a TikTok Shop seller.",
        +      "type": "boolean"
        +    },
        +    "url": {
        +      "type": "string"
        +    },
        +    "verified": {
        +      "type": "boolean"
        +    },
        +    "videos": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "handle",
        +    "followers",
        +    "following",
        +    "likes",
        +    "videos"
        +  ],
        +  "type": "object"
        +}
    • Addeduser_profile_by_id
    • Changedvideo_captions3 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / subtitle_url / description
        Previous value: -"Exact HTTPS TikTok CDN subtitle URL returned in subtitleInfos, not a video page URL."New value: +"Exact HTTPS TikTok CDN subtitle URL from subtitleInfos, not a video page URL."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "format": {
        +      "type": "string"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "text": {
        +      "description": "The WebVTT file as returned by TikTok.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "format",
        +    "text"
        +  ],
        +  "type": "object"
        +}
    • Changedvideo_comments8 fields changed
      • changedInput schema / properties / aweme_id / description
        Previous value: -"The video's id, from search_videos or related_videos."New value: +"Post id (videos[].id)."
      • addedInput schema / properties / count / default
        Added value: +20
      • changedInput schema / properties / count / description
        Previous value: -"How many comments to return, 1-50. Defaults to 20."New value: +"Comments per page."
      • addedInput schema / properties / cursor / default
        Added value: +0
      • changedInput schema / properties / cursor / description
        Previous value: -"Pagination cursor. Defaults to 0; pass back nextCursor."New value: +"From the previous response's next; omit on the first page."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / sort
        Added value: +{
        +  "default": "relevant",
        +  "description": "Comment ordering. relevant is TikTok's ranking; newest is chronological.",
        +  "enum": [
        +    "relevant",
        +    "newest"
        +  ],
        +  "maxLength": 2048,
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "comments": {
        +      "items": {
        +        "properties": {
        +          "author": {
        +            "properties": {
        +              "followers": {
        +                "type": "integer"
        +              },
        +              "handle": {
        +                "description": "TikTok @handle without the @.",
        +                "type": "string"
        +              },
        +              "id": {
        +                "description": "Numeric user id (user_id inputs).",
        +                "type": "string"
        +              },
        +              "nickname": {
        +                "type": "string"
        +              },
        +              "secUid": {
        +                "description": "secUid (sec_uid inputs).",
        +                "type": "string"
        +              },
        +              "verified": {
        +                "type": "boolean"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "id": {
        +            "description": "comment_id input.",
        +            "type": "string"
        +          },
        +          "isCreator": {
        +            "description": "Written by the video's creator.",
        +            "type": "boolean"
        +          },
        +          "likes": {
        +            "type": "integer"
        +          },
        +          "posted": {
        +            "type": "string"
        +          },
        +          "replies": {
        +            "type": "integer"
        +          },
        +          "text": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "text",
        +          "likes"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "hasMore": {
        +      "type": "boolean"
        +    },
        +    "next": {
        +      "description": "Arguments to add to this same call for the next page. Absent when there is no next page.",
        +      "type": "object"
        +    },
        +    "previous": {
        +      "description": "Arguments for the page before this one, where TikTok pages both ways.",
        +      "type": "object"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "total": {
        +      "description": "TikTok's reported comment count.",
        +      "type": "integer"
        +    },
        +    "truncated": {
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "of": {
        +          "type": "integer"
        +        },
        +        "returned": {
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "returned",
        +        "of",
        +        "note"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "comments",
        +    "hasMore"
        +  ],
        +  "type": "object"
        +}
    • Changedvideo_detail3 fields changed
      • changedInput schema / properties / aweme_id / description
        Previous value: -"The numeric video or photo post id."New value: +"Post id (videos[].id)."
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "allowsAdUse": {
        +      "description": "Creator lets brands run this post as an ad.",
        +      "type": "boolean"
        +    },
        +    "caption": {
        +      "type": "string"
        +    },
        +    "captions": {
        +      "items": {
        +        "properties": {
        +          "language": {
        +            "type": "string"
        +          },
        +          "source": {
        +            "description": "ASR = TikTok auto-captions; MT = machine translation; otherwise creator-provided.",
        +            "type": "string"
        +          },
        +          "url": {
        +            "description": "WebVTT file for video_captions; expires after a few hours.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "language",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "comments": {
        +      "type": "integer"
        +    },
        +    "creator": {
        +      "properties": {
        +        "followers": {
        +          "type": "integer"
        +        },
        +        "handle": {
        +          "description": "TikTok @handle without the @.",
        +          "type": "string"
        +        },
        +        "id": {
        +          "description": "Numeric user id (user_id inputs).",
        +          "type": "string"
        +        },
        +        "nickname": {
        +          "type": "string"
        +        },
        +        "secUid": {
        +          "description": "secUid (sec_uid inputs).",
        +          "type": "string"
        +        },
        +        "verified": {
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "durationSec": {
        +      "type": "number"
        +    },
        +    "effects": {
        +      "description": "Effects used (sticker_id input).",
        +      "items": {
        +        "properties": {
        +          "id": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "hashtags": {
        +      "items": {
        +        "properties": {
        +          "id": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "imageCount": {
        +      "description": "Slides in a photo post.",
        +      "type": "integer"
        +    },
        +    "isAd": {
        +      "type": "boolean"
        +    },
        +    "language": {
        +      "type": "string"
        +    },
        +    "likes": {
        +      "type": "integer"
        +    },
        +    "photoPost": {
        +      "type": "boolean"
        +    },
        +    "pinned": {
        +      "type": "boolean"
        +    },
        +    "place": {
        +      "description": "Tagged location (place_id input).",
        +      "properties": {
        +        "id": {
        +          "type": "string"
        +        },
        +        "name": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "posted": {
        +      "description": "Upload time, RFC 3339 UTC.",
        +      "type": "string"
        +    },
        +    "products": {
        +      "description": "TikTok Shop products linked from the post.",
        +      "items": {
        +        "properties": {
        +          "id": {
        +            "description": "TikTok Shop product_id.",
        +            "type": "string"
        +          },
        +          "name": {
        +            "description": "Short name shown on the video's product link.",
        +            "type": "string"
        +          },
        +          "sellerId": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "saves": {
        +      "type": "integer"
        +    },
        +    "shares": {
        +      "type": "integer"
        +    },
        +    "sound": {
        +      "properties": {
        +        "author": {
        +          "type": "string"
        +        },
        +        "id": {
        +          "description": "music_id input.",
        +          "type": "string"
        +        },
        +        "original": {
        +          "description": "An original sound made by the poster, not a licensed track.",
        +          "type": "boolean"
        +        },
        +        "title": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "url": {
        +      "type": "string"
        +    },
        +    "views": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "views",
        +    "likes",
        +    "comments",
        +    "shares",
        +    "saves"
        +  ],
        +  "type": "object"
        +}
    • Changedvideo_transcript4 fields changed
      • addedInput schema / properties / detail
        Added value: +{
        +  "default": "compact",
        +  "description": "full adds TikTok's raw payload (large).",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / language / description
        Previous value: -"Optional preferred caption language, e.g. en, es or eng-US."New value: +"Optional preferred caption language, e.g. en, es, or eng-US."
      • changedInput schema / properties / video / description
        Previous value: -"Full https://www.tiktok.com/@creator/video/<id> URL or the numeric video id."New value: +"Post id or full https://www.tiktok.com/@creator/video/<id> URL."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "available": {
        +      "description": "Caption languages on the video.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "language": {
        +      "type": "string"
        +    },
        +    "note": {
        +      "type": "string"
        +    },
        +    "raw": {
        +      "description": "TikTok's full payload; present only with detail=full."
        +    },
        +    "segments": {
        +      "items": {
        +        "properties": {
        +          "end": {
        +            "type": "number"
        +          },
        +          "start": {
        +            "type": "number"
        +          },
        +          "text": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "start",
        +          "end",
        +          "text"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "source": {
        +      "type": "string"
        +    },
        +    "text": {
        +      "type": "string"
        +    },
        +    "trackSource": {
        +      "type": "string"
        +    },
        +    "video": {
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
  14. 45 tool updates
    • First observedaudience_demographics
    • First observedbrowse_topics
    • First observedcomment_replies
    • First observedcontent_guidance
    • First observedcreator_followers
    • First observedcreator_following
    • First observedcreator_playlists
    • First observedcreator_posts
    • First observedcreator_reposts
    • First observedexplore_categories
    • First observedexplore_videos
    • First observedhashtag_detail
    • First observedhashtag_videos
    • First observedlist_channels
    • First observedlist_languages
    • First observedpick_comment_winners
    • First observedplace_detail
    • First observedplace_videos
    • First observedplaylist_videos
    • First observedproduct_trend_check
    • First observedrecommended_videos
    • First observedrelated_hashtags
    • First observedrelated_queries
    • First observedrelated_topics
    • First observedrelated_videos
    • First observedsearch_all
    • First observedsearch_hashtags
    • First observedsearch_live
    • First observedsearch_photos
    • First observedsearch_popularity
    • First observedsearch_sounds
    • First observedsearch_suggestions
    • First observedsearch_topics
    • First observedsearch_users
    • First observedsearch_videos
    • First observedsimilar_videos
    • First observedsound_videos
    • First observedtopic_detail
    • First observedtrending_searches
    • First observedtrending_topics
    • First observeduser_profile
    • First observedvideo_captions
    • First observedvideo_comments
    • First observedvideo_detail
    • First observedvideo_transcript

Publisher details

Operator
TokConnect LLC · Publisher source
Operator website
https://tokconnect.com
Vendor relationship
Independent · Publisher source
Trust center
Not available
Restrictions
Requires a TokConnect account (sign in with Google). New accounts get 50 free credits; one tool call uses one credit. Paid plans from $49/month add more credits. Connect with OAuth or an API key. · Publisher source

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Lets an AI agent read public TikTok data with no API keys or developer account: search videos and hashtags, fetch profiles, recent videos and comments, discover creators posting about a topic, and transcribe videos through your own OpenAI-compatible speech-to-text endpoint. All popular MCP clients can launch it via uvx, and every tool returns structured output as a read-only operation.
    6
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to research TikTok data, including video and creator discovery, search trend analysis, content gap identification, and comment reading, through the TokConnect hosted service.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP clients and skill-aware agents to retrieve structured TikTok videos, profiles, hashtags, comments, followers, and related feeds without login. It supports natural-language requests for filtering, transcripts, downloads, and AI labels such as brand safety and sentiment.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources