Skip to main content
Glama
getmcpads-com

tiktok-ads-mcp-server

tiktok-ads-mcp-server

CI License: Apache 2.0 Node

An open-source Model Context Protocol server for the TikTok Business API. It lets Claude, ChatGPT, Cursor or any MCP client read and analyse your TikTok advertising data, and change it if you choose to.

You run it. Your token stays on your machine. Nothing is proxied through a third party.

npx -y @getmcpads/tiktok-ads-mcp-server

Also listed in the MCP Registry as com.getmcpads/tiktok-ads, so clients that read the registry can install it by name.

Prefer a hosted connection? Get MCP Ads for TikTok Ads handles the server and OAuth flow. Create a workspace, connect the platform and select the accounts or properties your assistant may read. Free is read only; paid limits and supported writes are described on the site. Hosted and npm releases can differ: check the current catalogue for the operation you need.


What you get

33 read tools

Campaigns, ad groups, ads, creatives, audiences, pixels, events, Spark Ads, catalogs, delivery diagnostics

27 write tools

Off by default. Campaign and ad group status, budgets, campaign creation. Each one previews before it applies

277 metrics

Including derived ones computed client-side

16 dimensions

With a compatibility matrix that catches invalid combinations before they hit the API

5 resources

Live catalogues the model can read: metrics, dimensions, compatibility rules, 12 workflow recipes

Keyword research

tiktok_search_keywords and tiktok_get_search_ads_maturity, for TikTok Search Ads

Forward-compatible reads

tiktok_get_read_endpoint, tiktok_get_entities_raw, tiktok_get_report_raw reach endpoints this server doesn't model yet

The query planner

TikTok rejects many metric and dimension combinations, and its error messages rarely say why. This server encodes the compatibility matrix, so it splits an impossible request into several valid API calls and merges the results instead of failing.

tiktok_validate_query lets the model check a combination before spending a call on it.

One trap this server handles for you

TikTok answers HTTP 200 even when the call failed. The applicative code field is what decides. A client that trusts the HTTP status reports imaginary successes back to the model, which then reasons on data that was never returned. Every call here checks code first.


Related MCP server: TikTok Ads MCP

How this compares to TikTok's own MCP server

TikTok ships an official MCP server, announced at TikTok World '26 and hosted at business-api.tiktok.com/open_mcp/. It is a serious product, and it is bigger than this one. Here is an honest comparison.

This server

TikTok's official server

getmcpads.com

Hosting

You host it. stdio, local process

TikTok-hosted, remote

Hosted for you

Data path

Direct to the Business API. No intermediary

Through TikTok's endpoint

Through our gateway

Tools

32 (27 read + 5 write)

~400 flat, or ~40 in layered mode

Current hosted catalogue

Coverage

Reporting, structure, creatives, audiences

Far broader

Current hosted catalogue

Writes

Preview first, applied only on confirm: true

Applied directly

Preview first

Metric compatibility

Query planner splits incompatible requests

None documented

Same planner

HTTP 200 on failure

Checked on every call

Handled internally

Checked

Auditable

Yes. Apache-2.0, read every line

No

This server, audited

Modifiable

Fork it

No

No

Be clear about the trade-off. If you want the widest possible surface of the TikTok API, the official server covers far more endpoints than this one does, and you should use it.

What this server offers instead is a curated set. TikTok themselves ship a layered mode that exposes about 40 tools rather than 400, because loading hundreds of tool definitions fills the model's context and makes it pick the wrong tool more often. 27 well-described read tools with a compatibility-aware planner is a deliberate design choice, not a gap.

Choose the official server for breadth, or if you don't need to see the code. Choose this one if you need your data to stay on your infrastructure, want to audit or extend what the model can do, or want writes that cannot fire on the first call. Choose getmcpads.com if you want this server's capabilities without running it, or you need more than one ad platform in the same conversation.


Getting a token

TikTok needs two values, not one: an access token and the App ID it belongs to.

  1. Create a developer app on the TikTok for Business developer portal.

  2. Note the App ID and App Secret from the app's page.

  3. Authorize the advertiser accounts you want to reach. TikTok grants access per advertiser, so an account you skip here stays invisible to the server no matter what the token allows.

  4. Complete the OAuth authorization flow to exchange the returned auth_code for an access token. TikTok's long-lived tokens do not expire on a fixed schedule, but they are revoked when the authorization is withdrawn.

  5. Put the token in TIKTOK_ACCESS_TOKEN and the App ID in TIKTOK_APP_ID.

📖 TikTok API for Business documentation

Run tiktok_health_check as your first call. It verifies the credentials, lists the advertiser accounts you can actually reach, and reports what is missing, without printing your token.

Which permissions?

Scope group

When you need it

Reporting and read scopes

Always. Campaigns, ad groups, ads, insights

Campaign management scopes

Only if you set TIKTOK_ENABLE_WRITES=1

Catalog and Business Center scopes

Optional, for tiktok_get_shop_catalog_diagnostics


Setup

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "tiktok-ads": {
      "command": "npx",
      "args": ["-y", "@getmcpads/tiktok-ads-mcp-server"],
      "env": {
        "TIKTOK_ACCESS_TOKEN": "your-token-here",
        "TIKTOK_APP_ID": "your-app-id-here"
      }
    }
  }
}

Restart Claude Desktop. Ask it: "list my TikTok advertiser accounts".

Claude Code

claude mcp add tiktok-ads --env TIKTOK_ACCESS_TOKEN=your-token --env TIKTOK_APP_ID=your-app-id -- npx -y @getmcpads/tiktok-ads-mcp-server

Cursor

.cursor/mcp.json in your project, same shape as the Claude Desktop config above.

From source

git clone https://github.com/getmcpads-com/tiktok-ads-mcp-server.git
cd tiktok-ads-mcp-server
npm install && npm run build
cp .env.example .env   # then fill in your credentials
npm start

Configuration

Variable

Default

Meaning

TIKTOK_ACCESS_TOKEN

none

Required. Your access token

TIKTOK_APP_ID

none

Required. The App ID the token belongs to

TIKTOK_APP_SECRET

none

Optional, for endpoints needing app authentication

TIKTOK_ADVERTISER_ID

none

Optional default, saves passing it on every call

TIKTOK_BC_ID

none

Optional Business Center ID

TIKTOK_ENABLE_WRITES

unset

Set to 1 to register the 5 write tools

LOG_LEVEL

info

debug, info, warn, error

Check your setup at any time:

npm run doctor

Writes, and why they preview first

Write tools are disabled by default. Enable them with TIKTOK_ENABLE_WRITES=1.

When enabled, every write tool returns a preview and changes nothing:

// tiktok_update_adgroup_budget { advertiserId: "7...", adGroupId: "1...", budget: 50 }
{
  "applied": false,
  "action": "tiktok_update_adgroup_budget",
  "change": { "advertiser": "7...", "adGroup": "1...", "newBudget": 50,
              "budgetMode": "BUDGET_MODE_DAY" },
  "message": "Preview only, nothing was changed. Repeat the same call with confirm: true to apply this change to the live account."
}

Only a second call carrying confirm: true touches the live account.

This is deliberate. An assistant composes these calls, and it can pick the wrong advertiser, the wrong campaign, or the wrong order of magnitude on a budget. A mandatory preview makes the mistake visible before it costs money, and gives a human the stopping point the protocol does not guarantee on its own.

One further guardrail: tiktok_create_campaign always creates the campaign DISABLE. There is no option to create it running.

Tool

What it changes

tiktok_update_campaign_status / tiktok_update_adgroup_status

Pause or reactivate

tiktok_update_campaign_budget / tiktok_update_adgroup_budget

Budget, in the account currency

tiktok_create_campaign

Creates a campaign, always DISABLE


Tools

Discovery and health

Tool

Purpose

tiktok_health_check

Verifies credentials and advertiser access without exposing the token

tiktok_list_advertisers

Every advertiser account the token can reach

tiktok_get_advertiser_info

Account metadata: name, currency, timezone, status

Structure

Tool

Purpose

tiktok_get_campaigns / tiktok_get_adgroups / tiktok_get_ads

List entities and their settings

tiktok_get_delivery_status

Delivery state and why it may be limited

Performance

Tool

Purpose

tiktok_get_insights

The main reporting tool. Metrics, dimensions, compatibility-aware planning

tiktok_validate_query

Check a metric and dimension combination before running it

tiktok_get_report_raw

Native report fields, no aliasing

tiktok_get_async_report_status

Track a long-running async report

Creatives

Tool

Purpose

tiktok_get_creatives

Ad creative text, media IDs, landing URLs

tiktok_get_video_assets

Video assets and their metadata

tiktok_get_creative_fatigue_recipes

Workflows for spotting creative fatigue

tiktok_get_spark_ads / tiktok_get_spark_organic_joins

Spark Ads and their organic counterparts

Audiences and targeting

Tool

Purpose

tiktok_get_audiences / tiktok_get_audience_details

Custom and lookalike audiences

tiktok_get_audience_overlap

Overlap between audiences

tiktok_get_targeting_catalog

Available targeting options

Search Ads

Tool

Purpose

tiktok_search_keywords

Keyword suggestions for TikTok Search Ads

tiktok_get_search_ads_maturity

How ready an account is for Search Ads

Commerce and signals

Tool

Purpose

tiktok_get_pixels / tiktok_get_events

Pixels and the events they receive

tiktok_get_shop_catalog_diagnostics

Catalog and product feed health

Escape hatches

Tool

Purpose

tiktok_get_read_endpoint

Call an allowlisted read endpoint directly

tiktok_get_entities_raw

Raw entity reads with your own field selection

These exist so a new API field doesn't require a new release. Mutating endpoints, OAuth endpoints and credential parameters are blocked on these paths, so a crafted argument cannot turn a read tool into a write.

URI

Contents

tiktok://manifest

What this server exposes, and its current mode

tiktok://metrics

All 277 metrics with categories and formats

tiktok://dimensions

All 16 dimensions and where they are valid

tiktok://compatibility

The compatibility matrix

tiktok://recipes

12 step-by-step workflows


Security

The server holds a credential that can read, and optionally modify, live ad accounts. Concretely:

  • The token is never logged. Debug output prints Access-Token: [redacted].

  • Requests go only to business-api.tiktok.com, and only under /open_api/v1.3/. Any other host or path is refused rather than called. Covered by tests.

  • Redirects are refused once a token is attached, so a redirect cannot forward your credential elsewhere.

  • Mutating and OAuth endpoints are blocked on the generic read paths. Covered by tests.

  • No telemetry. The server makes no network call other than to the TikTok Business API. You can verify this by grepping the source for fetch.

Full policy and reporting instructions: SECURITY.md.


Looking for a managed, multi-platform version?

Try hosted TikTok Ads if you want to use this source without operating a local server. Get MCP Ads also connects advertising, Search Console and GA4 through one MCP URL. Source availability and plan limits are listed on the site; connecting an account is still required.

  1. Follow the TikTok Ads connection guide.

  2. Select the account or property your assistant may read.

  3. Connect Claude, ChatGPT or Codex.

  4. Try a read-only review: “Compare campaign delivery and conversion trends over complete periods. State missing data and do not change anything.”

See the current hosted tool catalogue and pricing before choosing a paid plan. This Apache 2.0 adapter remains independently useful with your own credentials.


Contributing

Issues and pull requests are welcome. See CONTRIBUTING.md. Please read SECURITY.md before reporting anything security-related.

Licence

Apache License 2.0. See also NOTICE.

TikTok and TikTok for Business are trademarks of ByteDance Ltd. and its affiliates. This project is not affiliated with, endorsed by, or sponsored by TikTok or ByteDance. It is an independent client of a public API.

Version 1.1: platform updates and MCP contracts

Every tool now declares read/write annotations, parameter descriptions and a structured output schema. Successful calls retain their original text and expose the same payload as structuredContent.result; provider fields depend on the selected report. Errors retain isError: true. The generated server card contains definitions only, with no account credentials.

Writes remain disabled unless the platform-specific ENABLE_WRITES setting is enabled. Read the exact tool schema before calling: operations can require the owning account, currency, native configuration or a matching preview hash. Calls preview by default; applying a change requires confirm: true. A provider timeout can leave the outcome unknown: reconcile the account before retrying a creation or upload.

Additional tools included in this release:

Tool

Purpose

tiktok_get_targeting

Read configured ad group targeting and audience references: custom/lookalike inclusions/exclusions, geo, language, age/gender, placements, interests and behaviors.

tiktok_get_audience_report

Read TikTok AUDIENCE performance reports by age or gender at advertiser, campaign, ad group or ad level, including delivery from eligible Smart+ campaigns.

tiktok_list_ad_videos

List the advertiser's whole video library (file/video/ad/search): file name, duration, dimensions, signature, and publicly served preview and cover URLs.

tiktok_list_ad_images

List the advertiser's whole image library (file/image/ad/search): file name, dimensions, signature, carousel usability, and a publicly served image URL signed for roughly thirty days (image_url_expires_at gives the exact instant)..

tiktok_get_asset_urls

Re-resolve fresh, publicly fetchable URLs for specific TikTok library assets (file/video/ad/info and file/image/ad/info).

tiktok_get_write_context

Read the exact TikTok entity, parent settings and advertiser currency/timezone before editing or building a new configuration.

tiktok_create_campaign_advanced

Create DISABLED classic TikTok campaign.

tiktok_update_campaign_configuration

Update classic TikTok campaign.

tiktok_create_adgroup

Create DISABLED classic TikTok adgroup.

tiktok_update_adgroup_configuration

Update classic TikTok adgroup.

tiktok_create_ads

Create DISABLED classic TikTok ads (video, image, carousel or authorized Spark content).

tiktok_update_ads

Update classic TikTok ads (video, image, carousel or authorized Spark content).

tiktok_create_smart_plus_campaign

Create DISABLED upgraded Smart+ TikTok campaign.

tiktok_update_smart_plus_campaign

Update upgraded Smart+ TikTok campaign.

tiktok_create_smart_plus_adgroup

Create DISABLED upgraded Smart+ TikTok adgroup.

tiktok_update_smart_plus_adgroup

Update upgraded Smart+ TikTok adgroup.

tiktok_create_smart_plus_ad

Create DISABLED upgraded Smart+ TikTok ads (video, image, carousel or authorized Spark content).

tiktok_update_smart_plus_ad

Update upgraded Smart+ TikTok ads (video, image, carousel or authorized Spark content).

tiktok_update_ad_status

Pause or reactivate exactly one classic ad.

tiktok_update_smart_plus_campaign_status

Pause or reactivate exactly one Smart+ campaign.

tiktok_update_smart_plus_adgroup_status

Pause or reactivate exactly one Smart+ adgroup.

tiktok_update_smart_plus_ad_status

Pause or reactivate exactly one Smart+ ad.

tiktok_update_smart_plus_material_status

Pause or reactivate selected creative materials inside one upgraded Smart+ ad.

tiktok_rename_campaign

Rename one classic TikTok campaign.

tiktok_rename_adgroup

Rename one classic TikTok adgroup.

tiktok_rename_ad

Rename one classic TikTok ad.

tiktok_upload_ad_image

Import a image from a public HTTPS media URL or base64 file (up to 5 MiB).

tiktok_upload_ad_video

Import a video from a public HTTPS media URL or base64 file (up to 5 MiB).

The hosted GetMCPAds service additionally provides OAuth account selection and interactive review workspaces. Local servers use your own platform credentials and return native report data and media references.

Desktop bundle

Run npm run bundle -- /path/to/output to build a .mcpb desktop bundle from the current catalogue. The bundle contains production dependencies, documented local configuration, and complete tool definitions. Provider credentials are entered locally during installation; write tools remain disabled unless explicitly enabled.

Available Tools

27 tools
tiktok_get_adgroupsB

List ad groups for a TikTok advertiser. Returns targeting, budget, optimization goal, and schedule info.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
campaignIdNoFilter by campaign ID
advertiserIdYesTikTok advertiser ID

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosing behavior. It does disclose the kind of returned data (targeting, budget, optimization goal, schedule info), which is useful, but it does not mention read-only safety explicitly, pagination behavior, or any side effects. 'List' implies a read operation, so it is not misleading, just incomplete.

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 one concise sentence that states the primary action and the key returned data. It is front-loaded and readable, though it could add a brief usage hint without much bloat.

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

Completeness3/5

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

For a straightforward listing tool with one required parameter and no output schema, the description gives the essential return contents. However, it lacks any indication of pagination limits, sibling distinctions, or prerequisites, so an agent might not know when this tool is the right choice among the many similar TikTok list tools.

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 67%, with advertiserId and campaignId documented in the schema; the limit parameter has no description but has clear default/min/max values. The description adds only marginal semantic value by clarifying the scope ('for a TikTok advertiser'), which aligns with advertiserId, but does not explain campaignId filtering or limit behavior.

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 states the action ('List') and the resource ('ad groups for a TikTok advertiser'), and specifies the returned information. It is distinct from siblings like tiktok_get_campaigns and tiktok_get_ads, but does not explicitly contrast itself against them in the description.

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

Usage Guidelines2/5

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

The descrption provides no guidance on when to use this tool vs the many sibing list tools (e.g., tiktok_get_campaigns, tiktok_get_ads). No exclusions or alternative routes are mentioned, leaving the agent to infer from the word 'ad groups' alone.

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

tiktok_get_adsC

List ads for a TikTok advertiser. Returns ad ID, name, operation status, and creative info.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
adgroupIdNoFilter by ad group ID
advertiserIdYesTikTok advertiser ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations supplied, the description carries the full burden of behavioral disclosure, but it only reports return fields. It does not address pagination semantics around the limit parameter, filtering behavior, rate limits, permissions, or what 'operation status' values look like; at best 'List' implies a read-only operation.

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 front-load the action and scope with zero filler. The return-field clause earns its place by previewing output, though it stays brief.

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

Completeness3/5

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

Adequate for a simple 3-parameter list call: an agent can invoke it with just advertiserId and know the main output fields. But with no annotations and no output schema, the absence of pagination detail, the behavior of the adgroupId filter, and the meaning of 'operation status' leaves some inference required.

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 67% (advertiserId and adgroupId are documented); the description reinforces that the call is scoped to a single TikTok advertiser. However, the limit parameter is undocumented in both schema and description, and the description adds no filter or pagination meaning beyond what the schema already states.

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 verb ('List') and resource ('ads for a TikTok advertiser') and previews key return fields (ad ID, name, operation status, creative info). The entity level is clear enough to suggest a hierarchy position next to the campaigs/adgroups/creatives siblings, though 'creative info' is vag and overlaps conceptually with tiktok_get_creatives, and no explicit contrast is drawn.

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

Usage Guidelines2/5

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

No guidance on when to use this versus the many list-type siblings (tiktok_get_campaigns, tiktok_get_adgroups, tiktok_get_creatives, tiktok_list_advertisers). The description just states what it does; any when-to-use signal is purely implied and no exclusions or alternatives are mentioned.

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

tiktok_get_advertiser_infoB

Get detailed information for specific TikTok advertiser accounts: currency, timezone, status, balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
advertiserIdsYesOne or more advertiser IDs

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It clearly signals a read-only operation through 'Get' and enumerates the returned fields, which is useful. However, it does not disclose error behavior, authorization requirements, rate limits, or output envelope details.

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 single efficient sentence with the action, target, and key output fields front-loaded. There is no filler or redundant terminology.

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 low complexity—one required parameter, no nested objects, and no output schema—the description provides enough to invoke the tool: it identifies the operation, the resource, and the primary return fields. It could be more complete by suggesting related tools for obtaining advertiser IDs, but that is a minor gap.

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?

The sole parameter advertiserIds is already fully documented in the schema ('One or more advertiser IDs'). The description adds little beyond restating that the call targets advertiser accounts, so it does not meaningfully improve parameter understanding.

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 uses a specific verb ('Get') and resource ('TikTok advertiser accounts') and lists concrete return fields: currency, timezone, status, balance. The word 'specific' distinguishes it from listing siblings like tiktok_list_advertisers, though it does not explicitly name an alternative.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, no exclusions, and no mention of alternatives such as tiktok_list_advertisers for first obtaining advertiser IDs. The 'specific' wording loosely implies the agent should already have IDs, but this is not developed into actionable guidance.

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

tiktok_get_async_report_statusA

Check a TikTok async report task status by taskId when async report endpoints are available. No report creation or mutation is performed.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesAsync report task ID returned by TikTok report task creation outside this read-only MCP.
advertiserIdYesTikTok advertiser ID

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It explicitly states no mutation is performed, which is valuable, but it does not mention required auth/scope, polling behavior, or what a response contains. The read-only claim is clear but incomplete.

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?

Two sentences with no filler. The core purpose is first, and the anti-mutation clarification is a necessary second sentence. Every word earns its place.

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

Completeness3/5

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

The tool is simple, with two fully documented parameters, and the description accurately conveys the operation. However, there is no output schema and the description does not explain what status values are returned or whether repeated polling is expected, so the agent lacks full information for a correct invocation.

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%, giving a baseline of 3. The description adds semantic value beyond the schema by explaining that taskId comes from a TikTok report task creation outside this MCP, which clarifies where the ID originates. advertiserId is not enriched, but the provenance detail tips it slightly above baseline.

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 concrete operation (check status), the resource (TikTok async report task), and the key identifier (taskId). It does not explicitly differentiate from sibling tools like tiktok_get_report_raw, but the 'No report creation or mutation' phrase narrows the purpose.

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 phrase 'when async report endpoints are available' gives some context and 'No report creation or mutation' implies it is for checking an already-created task. However, no alternative tool is named and there are no explicit when-to-use/when-not-to-use conditions relative to the many read-only siblings.

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

tiktok_get_audience_detailsB

Get custom/lookalike/saved audience details where TikTok DMP endpoints are accessible. Read-only only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
audienceIdsNoOptional custom/lookalike audience IDs. If omitted, lists available audiences.
advertiserIdYesTikTok advertiser ID
includeSavedAudiencesNoAlso include saved audience targeting details when available.

TDQS

B3.1/5.0
Behavior3/5

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

Since no annotations are provided, the description carries the full behavioral burden. 'Read-only only' is a genuine safety disclosure that tells the agent this call does not mutate state, and 'where TikTok DMP endpoints are accessible' hints at an availability constraint. However, it does not explain failure modes, what happens when endpoints are inaccessible, pagination, or rate-limit behavior.

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 with the verb+resource front-loaded and no filler. 'Read-only only' is slightly redundant with 'Get' but functions as deliberate safety emphasis; the 'where TikTok DMP endpoints are accessible' clause is vague but costs little.

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

Completeness2/5

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

No output schema exists, so the description should convey return shape, but it does not. It also fails to route among audience-related siblings and never explains what 'DMP endpoints accessible' means or how an agent should respond when the condition does not hold. For a tool with no annotations and 27 siblings, this is incomplete.

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 75%, so the schema already documents advertiserId, audienceIds, and includeSavedAudiences. The description reinforces the audience-type scope, which maps to audienceIds and includeSavedAudiences, but it adds nothing about the undocumented 'limit' parameter, including its pagination 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 states a specific verb ('Get') and resource ('custom/lookalike/saved audience details'), clearly identifying what the tool fetches and scoping it to three audience types. It does not explicitly differentiate from siblings like tiktok_get_audiences or tiktok_get_audience_overlap, and the 'where TikTok DMP endpoints are accessible' qualifier adds a scope caveat without clarifying it.

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

Usage Guidelines2/5

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

No guidance on when to choose this tool over the 27 siblings, including the closely related tiktok_get_audiences, tiktok_get_audience_overlap, and tiktok_get_targeting_catalog. The DMP-accessibility caveat implies availability limits but offers no decision rule, prerequisites, or alternative routing.

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

tiktok_get_audience_overlapB

Read-only audience overlap diagnostics across ad groups, custom audiences, saved audiences, and targeting fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
adgroupIdsNoOptional ad group IDs to compare.
campaignIdNoOptional campaign ID filter.
advertiserIdYesTikTok advertiser ID
overlapThresholdNo
includeSavedAudiencesNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does disclose the read-only nature, establishing the absence of mutations—a meaningful safety signal. However, it does not explain parameter-driven behaviors such as overlapThreshold semantics, includeSavedAudiences impact, or the shape of returned diagnostics, leaving significant behavioral gaps.

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 single, polished sentence with the key read-only qualifier front-loaded and entity types listed compactly. Every word earns its place, with no repetition or fluff.

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

Completeness2/5

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

For a 6-parameter diagnostic tool with no annotations and no output schema, a one-sentence description is insufficient. It omits the meaning of overlapThreshold, default limits, the relationship between adgroupIds and campaignId filters, and expected output structure. Agents would need to rely on schema defaults and external knowledge to invoke this correctly, which is a significant completeness gap.

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 descriptions cover only adgroupIds, campaignId, and advertiserId; limit, overlapThreshold, and includeSavedAudiences lack schema documentation. The description adds meaning by naming the audience entities and targeting fields, but it does not clarify the numeric threshold, limit behavior, or the saved-audience inclusion flag. With 50% coverage, the description only partially compensates for what the schema leaves undocumented.

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 states the tool's scope as 'read-only audience overlap diagnostics' and enumerates the entities it spans (ad groups, custom audiences, saved audiences, targeting fields), clearly distinguishing it from sibling tools like tiktok_get_audiences and tiktok_get_audience_details. It lacks a concrete action verb, but 'diagnostics' combined with the tool name implies retrieval or analysis. Not a tautology and genuinely informative.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance is provided. The description does not name alternatives, exclusion criteria, or conditions that would make a different tool more appropriate. An agent must infer usage solely from the tool name and one phrase, which is minimal guidance.

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

tiktok_get_audiencesB

List custom and lookalike audiences for a TikTok advertiser account.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
advertiserIdYesTikTok advertiser ID

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations present, the description carries the full burden of behavioral disclosure. The verb 'List' clearly implies a read-only operation, but the description does not mention pagination, response shape, or whether the result includes all votes or is limited by the 'limit' parameter.

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 single, front-loaded, 11-word sentence with no filler. It earns every word by stating the action, resource type, and scope efficiently.

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

Completeness3/5

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

For a simple list tool with only two parameters, this is minimally adequate: an agent can infer the required advertiserId and the general purpose. However, it omits usage guidance and does not clarify the semantics of the 'limit' parameter, leaving clear but non-critical gaps.

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

Parameters2/5

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

Schema description coverage is only 50%, and the description adds little parameter meaning beyond the schema. It does not explain that 'advertiserId' is the required account identifier beyond the obvious scope reference, and it does not clarify that 'limit' controls the number of returned audiences or pagination behavior.

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 verb ('List'), a clear resource ('custom and lookalike audiences'), and a scope ('for a TikTok advertiser account'). It clearly conveys what the tool does, though it does not explicitly differentiate itself from siblings like tiktok_get_audience_details.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as tiktok_get_audience_details or tiktok_get_audience_overlap. The intended use is only implied by the phrasing 'List...', with no explicit when/when-not or alternative routing.

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

tiktok_get_campaignsB

List campaigns for a TikTok advertiser account. Returns campaign ID, name, status, budget, and objective.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
advertiserIdYesTikTok advertiser ID
statusFilterNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses the read-only nature ('List') and enumerates returned fields, which is helpful. However, it does not address pagination behavior, the effect of statusFilter, rate limits, or authorization requirements, leaving some behavioral ambiguity.

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 single, front-loaded sentence that states the action, scope, and key return fields with no filler or redundancy. Every clause adds useful information.

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

Completeness3/5

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

The core purpose and return fields are given, which is sufficient for a simple list tool at a basic level. However, the absence of an output schema and annotations means the description should offer more context about pagination, filter behavior, and result structure; these gaps prevent the definition from being fully self-sufficient.

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

Parameters2/5

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

Schema description coverage is only 33%, and the description does not compensate. AdvertiserId is described in the schema, while limit and statusFilter have no additional explanation in the description beyond their schema types/defaults/enum. The description's mention of 'status' in the return fields is not tied to the statusFilter parameter, so parameter semantics are underspecified.

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 uses a specific verb 'List' and a clear resource 'campaigns for a TikTok advertiser account', and lists the return fields (ID, name, status, budget, objective). It is clear and unambiguous, though it does not explicitly distinguish itself from sibling tools like tiktok_get_adgroups or tiktok_get_ads.

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 implicitly signals when to use this tool (when you need campaign-level data for an advertiser account), but provides no explicit guidance about alternatives, prerequisites beyond the advertiser ID, or conditions when another tool should be used instead. The usage context 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.

tiktok_get_creative_fatigue_recipesA

Find likely creative fatigue patterns from ad-level daily reporting and return read-only refresh recipes. Does not create, edit, or upload creatives.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
endDateNoEnd date YYYY-MM-DD. Defaults to today.
startDateNoStart date YYYY-MM-DD. Defaults to 14 days ago.
advertiserIdYesTikTok advertiser ID
minImpressionsNo
declineThresholdPctNo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It explicitly states the operation is read-only and 'Does not create, edit, or upload creatives,' which is valuable transparency. It does not discuss permissions or rate limits, but for a non-mutating analysis tool this is largely sufficient.

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?

Two tightly written sentences: the first states purpose and output, the second reinforces read-only safety. No filler or repeated schema information, and the most important detail is front-loaded.

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

Completeness3/5

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

The tool has six parameters, no annotations, and no output schema, yet the description only explains the high-level purpose and read-only nature. It does not describe the shape of a 'recipe,' the meaning of the threshold parameters, or any analysis-specific behavior. The schema covers some inputs, but the missing output context leaves an agent under-informed about what to expect.

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 50%, and the description itself adds no parameter-level meaning. The schema documents advertiserId, startDate, and endDate, but limit, minImpressions, and declineThresholdPct are only inferable from their names and numeric ranges. The description neither compensates for nor clarifies these gaps, landing at the baseline.

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 uses a specific verb and resource: 'Find likely creative fatigue patterns from ad-level daily reporting' and clarifies the output as 'read-only refresh recipes.' It is clearly distinct from sibling tools like tiktok_get_creatives or tiktok_get_insights, which fetch raw data rather than fatigue analysis.

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 primary use case clear: use this when you need creative fatigue patterns and refresh recommendations. It does not explicitly name alternatives or state when not to use it, so it stops short of a 5, but the context is strong enough for an agent to route correctly.

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

tiktok_get_creativesB

Get creative details (video, image, text) for specific ads in a TikTok advertiser account.

ParametersJSON Schema
NameRequiredDescriptionDefault
adIdsNoSpecific ad IDs to get creatives for
limitNo
advertiserIdYesTikTok advertiser ID

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of disclosing behavior. It indicates a read operation but does not clarify that adIds is optional in the schema, what happens when it is omitted, pagination/limit behavior, or the shape of the returned creatives. The phrase 'for specific ads' could mislead an agent into assuming adIds is required.

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 single front-loaded sentence with no filler: it leads with the action and resource, then adds scope and content-type detail. Every word contributes to the core purpose, making it easy to scan.

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

Completeness2/5

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

Given no output schema, no annotations, and a large sibling set, the description is too thin for confident invocation. It omits return-value expectations, limit semantics, optionality behavior, and any routing hints to related creative/video tools, leaving important operational gaps.

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?

The schema already documents advertiserId and adIds; the description adds little parameter-level meaning and does not address the undocumented limit parameter. The phrase 'for specific ads' roughly aligns with adIds, but the optionality of adIds is not surfaced, making the parameter semantics only partially helpful.

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 verb ('Get'), resource ('creative details'), and content types ('video, image, text'), with an advertiser-account scope. This is enough to distinguish it from sibling tools like tiktok_get_ads or tiktok_get_video_assets, even though it does not name alternatives explicitly.

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 implied usage is clear: use this tool when creative details for selected ads are needed. However, the description gives no explicit guidance about when to prefer this tool over siblings, nor any exclusion criteria, leaving the agent to infer routing from the tool name and minimal context.

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

tiktok_get_delivery_statusB

Aggregate campaign, ad group, and ad delivery status/operation_status with simple diagnostics.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
adgroupIdNoOptional ad group ID filter.
campaignIdNoOptional campaign ID filter.
includeAdsNoInclude ad-level status diagnostics.
advertiserIdYesTikTok advertiser ID

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral disclosure burden. It adds only 'aggregate' and 'simple diagnostics' beyond the tool name. It does not explain how limit affects results, what operation_status values mean, how filters are applied, or whether the aggregated result is a summary or a detailed list.

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 a single tight sentence with no filler and the key concept 'Aggregate' is front-loaded. It earns a 4 because it is concise and scannable, though 'simple diagnostics' is slightly under-specified.

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

Completeness2/5

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

With no output schema and no annotations, an agent needs more context about what the aggregated status response looks like and how filters combine. The description does not cover pagination, default ad-level inclusion, return shape, or diagnostic semantics. This is insufficient for confident invocation in non-trivial cases.

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 80%, so the baseline is 3 and the description does not need to restate parameter meanings. Still, the description adds no extra semantics for how campaignId, adgroupId, or includeAds affect aggregation behavior. The limit parameter is undocumented in both the schema and the description.

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 uses a specific verb ('Aggregate') and names the exact resource scope ('campaign, ad group, and ad delivery status/operation_status'). It distinguishes itself from sibling per-level getters like tiktok_get_campaigns and tiktok_get_ads by signaling cross-level aggregation. 'Simple diagnostics' is somewhat vague but does not obscure the core purpose.

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 word 'Aggregate' implies this tool is for retrieving status across multiple entity levels at once, which is a useful hint against the sibling per-entity tools. However, it never names alternatives or states when not to use this tool. Usage guidance is present only implicitly.

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

tiktok_get_entities_rawA

List TikTok campaigns, ad groups, or ads with caller-selected native fields, filtering, sorting, and pagination. This GET-only escape hatch exposes newly released entity fields without waiting for the MCP's curated schemas.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
fieldsYes
pageSizeNo
filteringNoNative TikTok filtering object, for example {campaign_ids:["..."]}
orderTypeNo
entityTypeYes
orderFieldNo
advertiserIdYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral disclosure burden. It explicitly states GET-only and labels itself an escape hatch, signaling read-only behavior and raw/uncurated output. It does not discuss error behavior, response format, or rate-limit implications, but the core safety profile is clear.

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?

Two sentences, no filler, and the most important information is front-loaded: what the tool lists and how it is parameterized. The second sentence earns its place by clarifying why this raw tool exists relative to curated alternatives.

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

Completeness3/5

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

For a read-only raw list tool, this description covers the essential selection criteria and purpose well. However, with no output schema and no annotations, it leaves the native response shape and raw-endpoint caveats implicit, and it does not spell out the relationship to sibling tools beyond the vague 'curated schemas' reference.

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 only 13%, so the description must compensate. It does by mapping 'caller-selected native fields' to fields, and 'filtering, sorting, pagination' to filtering, orderField/orderType, and page/pageSize. It does not explain exact syntax or constraints, but it gives enough semantic grounding to understand each parameter group.

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 verb ('List') and a specific resource class ('TikTok campaigns, ad groups, or ads'), and defines scope with caller-selected fields, filtering, sorting, and pagination. The second sentence distinguishes this as a raw, GET-only escape hatch versus the MCP's curated schemas, which clearly sets it apart from the curated sibling tools.

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 phrase 'escape hatch' and 'without waiting for the MCP's curated schemas' gives an explicit when-to-use: use this when you need newly released entity fields before curated schemas are available. It does not explicitly say 'use the curated get_* tools for stable fields,' so it stops short of a full when-not-to-use statement.

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

tiktok_get_eventsA

Discover pixel/app events or accessible tracking diagnostics for an advertiser. Uses best-effort endpoint checks plus reporting dimensions as fallback.

ParametersJSON Schema
NameRequiredDescriptionDefault
bcIdNoOptional Business Center ID. Defaults to TIKTOK_BC_ID/TIKTOK_BUSINESS_CENTER_ID for BC pixel discovery.
appIdNoOptional TikTok app ID for app event lookup when the endpoint is available.
limitNo
endDateNoEnd date YYYY-MM-DD for tracking diagnostics. Defaults to today.
pixelIdNoOptional pixel ID for pixel event lookup.
startDateNoStart date YYYY-MM-DD for tracking diagnostics. Defaults to 7 days ago.
advertiserIdYesTikTok advertiser ID

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must carry behavioral disclosure itself. It does reveal an important trait: 'best-effort endpoint checks plus reporting dimensions as fallback', which signals the tool may not return results from a single clean endpoint. It does not state read-only status, failure modes, or permission implications, but the get/discover framing implies a non-mutating operation.

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?

Two concise sentences with no filler. The main purpose is front-loaded, and the second sentence adds meaningful fallback behavior without redundancy.

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

Completeness3/5

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

The description is reasonably complete given that the schema covers most parameters, but the absence of an output schema and annotations increases the burden on the description. It does not clarify what the returned event/diagnostics data contains or how the optional bcId/appId/pixelId paths affect results, leaving some ambiguity for an agent deciding whether this tool is the right one.

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 86%, so the input schema already explains most parameters and the baseline is 3. The description adds context by mentioning 'pixel/app events' and 'tracking diagnostics', which aligns with pixelId/appId and date parameters, but does not materially expand on the schema's parameter 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 states a specific action ('Discover') and a resource ('pixel/app events or accessible tracking diagnostics for an advertiser'), which distinguishes it from tools like tiktok_get_pixels and tiktok_get_insights. However, 'events' and 'tracking diagnostics' remain somewhat underspecified, so it stops short of fully precise.

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?

Usage is implied: use this tool when you need pixel/app events or tracking diagnostics. There is no explicit guidance on when to prefer it over related tools such as tiktok_get_pixels or tiktok_get_insights, and no when-not-to-use conditions.

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

tiktok_get_insightsA

Query TikTok Ads performance insights. Supports 400+ metrics with intelligent query planning. Use tiktok://metrics resource to see available metrics. Use tiktok://dimensions for dimensions. The query planner automatically splits requests when dimension combinations are incompatible (only 1 ID dimension + 1 time dimension allowed per request).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
endDateYesEnd date YYYY-MM-DD
metricsYesMetric keys from tiktok://metrics (e.g., spend, impressions, clicks)
dataLevelNoAUCTION_CAMPAIGN
startDateYesStart date YYYY-MM-DD
dimensionsNoDimension keys from tiktok://dimensions (e.g., stat_time_day, campaign_id)
advertiserIdYesTikTok advertiser ID
queryLifetimeNoQuery lifetime metrics (cannot use time dimensions)

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden and does disclose a key runtime behavior: the query planner automatically splits incompatible dimension combinations with the one-ID-plus-one-time-dimension rule. It also notes 400+ metric support, but does not mention authentication, rate limits, or response format, so it is not fully exhaustive.

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 with no filler. The main action is front-loaded, followed by resource pointers and the most important planner behavior. Every sentence adds value.

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

Completeness3/5

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

The description covers metric discovery and the planner rule, which are important for correct invocation, and the schema covers most parameters. However, with no output schema and no mention of pagination, result shape, date-range limits, or when to prefer this over the raw report endpoint, an agent still has to infer some operational details.

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 75%, so most parameters like metrics, dimensions, dates, advertiserId, and queryLifetime already carry clear meaning in the schema. The description adds one useful cross-parameter constraint about dimension compatibility and auto-splitting, but does not explain dataLevel or limit beyond what the schema provides.

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 states the core action ('Query TikTok Ads performance insights') with a specific resource and adds 'Supports 400+ metrics' and query planning, giving it a clear identity. It does not explicitly differentiate from reporting siblings like tiktok_get_report_raw, but the metrics/dimensions resource links make the purpose unambiguous.

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 provides practical context by directing the agent to tiktok://metrics and tiktok://dimensions for discovering valid values, which implies how to prepare calls. It does not state when to choose this tool over sibling reporting tools such as tiktok_get_report_raw or tiktok_get_entities_raw, so alternatives and exclusions are missing.

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

tiktok_get_pixelsB

List TikTok pixels and, when permissions allow it, pixel event metadata for an advertiser. Falls back with explicit warnings when endpoints are unavailable.

ParametersJSON Schema
NameRequiredDescriptionDefault
bcIdNoOptional Business Center ID. Defaults to TIKTOK_BC_ID/TIKTOK_BUSINESS_CENTER_ID for BC pixel endpoints.
limitNo
pixelIdsNoOptional pixel IDs/codes to inspect. If omitted, the tool discovers pixels from BC pixel endpoints first, then advertiser pixel/list.
advertiserIdYesTikTok advertiser ID
includeEventsNoAlso try to fetch pixel events for discovered or provided pixel IDs.

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full transparency burden. It usefully discloses permission-gated event metadata and fallback with explicit warnings, but does not mention pagination, rate limits, required scopes, or failure modes beyond endpoint unavailability.

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?

Two sentences with no wasted words. The core action is front-loaded and the caveat about permissions and fallback is stated efficiently.

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

Completeness3/5

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

With no output schema and no annotations, the description explains the core listing purpose and fallback, but leaves the agent without details on return structure, pagination behavior, or how warnings are surfaced. It is adequate for a read-only listing tool but not fully 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 description coverage is 80%, so parameter meanings are mostly already documented. The main description adds little beyond what the schema provides; the discovery logic it references is already captured in the pixelIds parameter description.

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 states a specific action ('List') and resource ('TikTok pixels'), and adds that pixel event metadata is included when permissions allow. This distinguishes it from sibling tools like tiktok_list_advertisers or tiktok_get_events, though it does not explicitly name any alternative.

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

Usage Guidelines2/5

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

No guidance about when to prefer this tool over siblings or when it should not be used. The only usage-related hint is the fallback behavior when endpoints are unavailable, which is more behavioral than a selection criterion.

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

tiktok_get_read_endpointA

Advanced GET-only TikTok Business API escape hatch for documented JSON read endpoints not yet modeled by a specialized MCP tool. Relative v1.3 paths and JSON-compatible query parameters are validated; OAuth, mutations, downloads, and lead-record paths are blocked.

ParametersJSON Schema
NameRequiredDescriptionDefault
endpointYesRelative endpoint such as split_test/result/get, file/video/ad/info, store/list, or business/video/list
parametersNo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does well by stating that only GET requests are allowed, that relative v1.3 paths and JSON-compatible query parameters are validated, and that several risky categories are blocked. It does not mention error behavior or response format, but the main safety-relevant behaviors are transparently disclosed.

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 only two sentences and front-loads the core purpose and key behavioral constraints. It is efficient and well structured, though the word 'Advanced' adds little and could be removed without losing meaning.

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

Completeness4/5

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

For a generic escape-hatch tool with two parameters and no output schema, this description is reasonably complete. It tells the agent when to use the tool, what constraints apply, and what is blocked. The absence of explicit guidance on response shape or error handling is a minor gap given the raw-endpoint nature of the tool.

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 50%, with the endpoint parameter documented but the parameters object undocumented. The description adds useful meaning by explaining that endpoints are relative v1.3 paths and that parameters are treated as JSON-compatible query parameters. However, it does not fully compensate for the undocumented parameters object, leaving room for ambiguity about how nested or complex parameter values are handled.

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 this as a GET-only escape hatch for TikTok Business API read endpoints not covered by specialized MCP tools. It names the verb, resource, and precise scope, and the phrase 'not yet modeled by a specialized MCP tool' distinguishes it from the many sibling tools.

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 explicitly states when to use it: for documented JSON read endpoints that do not yet have a specialized MCP tool. It also states what is blocked (OAuth, mutations, downloads, lead-record paths), giving clear exclusions. However, it does not name a specific alternative tool to use instead, so it falls slightly short of the strongest possible guidance.

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

tiktok_get_report_rawA

Run a native TikTok synchronous report with caller-selected dimensions and metrics. Use when a current API field is not yet in tiktok://metrics; unlike tiktok_get_insights, this tool does not calculate aliases or auto-split incompatible selections.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
endDateNo
metricsYes
pageSizeNo
dataLevelYes
filteringNo
orderTypeNo
startDateNo
dimensionsYes
orderFieldNo
reportTypeNoBASIC
serviceTypeNoAUCTION
advertiserIdYes
queryLifetimeNo

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations present, the description carries the full burden of behavioral disclosure. It does reveal meaningful traits: the report is synchronous, native, does not compute aliases, and does not auto-split incompatible selections, which are important operational nuances. However, it does not disclose return format, pagination behavior, potential errors, rate limits, or permission expectations, leaving notable behavioral gaps.

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 two sentences with no fluff. The core action is front-loaded, and the second sentence adds a use condition and sibling distinction. Every sentence earns its place, and the structure makes the purpose and differentiation immediately obvious.

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

Completeness2/5

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

This is a 14-parameter raw reporting tool with no annotations, no output schema, and 0% schema description coverage. The description provides the why and a sibling comparison, but it omits almost everything an agent would need to assemble a correct request: meaning of report types, data levels, date formats, filtering syntax, pagination limits, and expected response behavior. It is not complete enough for the complexity involved.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the 14 parameters, but it only acknowledges 'caller-selected dimensions and metrics.' It provides no explanation of reportType, serviceType, dataLevel, filtering, orderField, pagination, or the other parameters. This is insufficient for a tool with this many inputs and enums.

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 starts with a specific verb and resource: 'Run a native TikTok synchronous report.' It further clarifies that dimensions and metrics are caller-selected, and explicitly contrasts itself with the sibling tiktok_get_insights by noting that it does not calculate aliases or auto-split incompatible selections. This makes the purpose unambiguous and distinguishes it from nearby tools.

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?

The description gives a concrete usage trigger: 'Use when a current API field is not yet in tiktok://metrics.' It also names the alternative tiktok_get_insights and states a key behavioral difference, so an agent can decide when this raw native report is preferred over the more abstracted insights call. This is explicit and actionable.

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

tiktok_get_search_ads_maturityB

Diagnose TikTok Search Ads maturity from keyword/search-term reporting and optional keyword recommendation endpoints. Read-only diagnostics only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
endDateNoEnd date YYYY-MM-DD. Defaults to today.
dataLevelNoAUCTION_ADGROUP
startDateNoStart date YYYY-MM-DD. Defaults to 14 days ago.
advertiserIdYesTikTok advertiser ID
seedKeywordsNoOptional seed keywords for keyword recommendation endpoint diagnostics.

TDQS

B3.4/5.0
Behavior3/5

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

Without annotations, the description carries the behavioral burden. It does state 'Read-only diagnostics only,' which is useful and prevents assumptions of mutation. But it does not explain how maturity is derived, whether multiple endpoints are called, or any rate-limit/auth implications, so transparency is only partial.

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?

Two short sentences, front-loaded with the core purpose. The 'read-only diagnostics only' phrase adds safety context without wasting space. Every clause earns its place.

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

Completeness2/5

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

The description lacks operational context: no return format, no explanation of what 'maturity' means or how to interpret the result, and no mention of the required advertiserId or date defaults. With no output schema and six parameters, this is a significant gap for an un-annotated tool.

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 67%, so most parameters are already documented. The description adds some meaning by connecting seedKeywords to 'optional keyword recommendation endpoints' and implying date parameters bound reporting. It does not substantially clarify limit or dataLevel beyond what the schema/enum provides.

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 states a specific verb ('Diagnose') and resource ('TikTok Search Ads maturity'), and identifies the data sources. It is clearly distinct from the many generic tiktok_get_* sibling tools. The term 'maturity' is somewhat vague, and no sibling comparison is made, so it falls short of a perfect 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?

Usage is implied: use this when you need to diagnose TikTok Search Ads maturity. However, the description does not explicitly say when NOT to use it, nor does it name alternatives or exclusions, leaving routing decisions to inference.

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

tiktok_get_shop_catalog_diagnosticsA

Read-only TikTok Shop/catalog/e-commerce diagnostics. Tries catalog reporting first, then Shop auction metrics, and returns endpoint warnings when catalog permissions are unavailable.

ParametersJSON Schema
NameRequiredDescriptionDefault
bcIdNoOptional TikTok Business Center ID. Defaults to TIKTOK_BC_ID/TIKTOK_BUSINESS_CENTER_ID, then advertiser discovery.
limitNo
endDateNoEnd date YYYY-MM-DD. Defaults to today.
catalogIdNoOptional catalog ID for product/product-set inventory endpoint attempts.
dimensionNoproduct_id
startDateNoStart date YYYY-MM-DD. Defaults to 14 days ago.
productIdsNoOptional product IDs to filter report rows where supported.
advertiserIdYesTikTok advertiser ID
includeDailyNoAdd stat_time_day to report dimensions where supported.

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states the operation is read-only, describes the endpoint fallback order (catalog reporting first, then Shop auction metrics), and discloses that warnings are returned when catalog permissions are unavailable. This is meaningful behavioral transparency beyond the basic 'get' operation.

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 single, information-dense sentence with no filler. The core purpose is front-loaded, and every clause adds value: read-only safety, endpoint attempt order, and warning behavior.

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

Completeness3/5

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

For a 9-parameter tool with no annotations and no output schema, the description gives useful behavioral context but lacks response format expectations, param selection guidance, and clearer failure semantics. The fallback warning detail helps, but an agent would still need to infer much from the schema and runtime results.

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 78%, so most parameters are already documented in the schema. The tool description itself adds no parameter-level meaning beyond the schema. The 22% gap is minor, but the description does not compensate for it; 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 clearly identifies the tool as read-only TikTok Shop/catalog/e-commerce diagnostics with a specific resource and action. It does not explicitly differentiate from siblings like tiktok_get_targeting_catalog or tiktok_get_report_raw, but the 'diagnostics' framing and catalog/Shop scope make the purpose reasonably distinct.

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

Usage Guidelines2/5

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

The description provides a general context (TikTok Shop/catalog diagnostics) but no explicit guidance on when to use this tool over alternatives, nor any exclusions or prerequisites. The fallback behavior is described, but not the conditions that should lead an agent to select this tool instead of a sibling.

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

tiktok_get_spark_adsB

Return Spark Ads context from ad fields when available, with a conservative fallback if Spark-specific fields are not supported.

ParametersJSON Schema
NameRequiredDescriptionDefault
adIdsNoOptional ad IDs to inspect.
limitNo
adgroupIdNoOptional ad group ID filter.
advertiserIdYesTikTok advertiser ID

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does reveal that the tool has a 'conservative fallback' when Spark-specific fields are unsupported, which is a useful behavioral trait. However, 'conservative fallback' is undefined—an agent cannot tell whether that means empty results, partial fields, or an error—so the transparency is only partial.

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 single sentence, front-loaded with the main action, and contains no filler or redundant restatement of the tool name. The fallback behavior is included without bloating the text.

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

Completeness2/5

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

Given no output schema and no annotations, the description leaves too much unspecified: the response shape, the exact fallback behavior, how the optional filters interact, and what 'Spark Ads context' actually contains. An agent trying to call this tool correctly would need to infer or experiment to understand the return value and edge cases.

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

Parameters2/5

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

Schema description coverage is 75%, but the description itself adds no parameter-specific meaning. It never mentions advertiserId, adIds, adgroupId, or limit, and the 'ad fields' phrase is too vague to clarify which parameters control the returned context. The one undocumented parameter (limit) is not compensated for by the description.

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 ('Spark Ads context') and action ('Return'), and adds the qualifier 'from ad fields when available.' It is not a tautology and is more specific than many sibling names, but it does not explicitly distinguish itself from the closely related sibling tiktok_get_spark_organic_joins.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus its many siblings, nor any mention of prerequisites or the conditions under which the fallback should be expected. The phrase 'when available' refers to data availability, not to user decision-making, so it does not help an agent choose between alternatives.

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

tiktok_get_spark_organic_joinsB

Join accessible Spark Ads fields with paid page/post reporting and optional organic identity/post endpoints when permissions allow. Read-only only.

ParametersJSON Schema
NameRequiredDescriptionDefault
adIdsNoOptional ad IDs to inspect.
limitNo
endDateNoEnd date YYYY-MM-DD for page_id reporting. Defaults to today.
adgroupIdNoOptional ad group ID filter.
startDateNoStart date YYYY-MM-DD for page_id reporting. Defaults to 14 days ago.
advertiserIdYesTikTok advertiser ID
includeOrganicEndpointsNoTry identity/post metadata endpoints when Spark IDs are discovered.
includeExperimentalEndpointsNoAlso try undocumented/unstable Organic API endpoint candidates that may return 404. Disabled by default to keep warnings actionable.

TDQS

B3.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of disclosing behavior. It does state 'Read-only only' and notes that organic endpoints are attempted conditionally on permissions, which are useful disclosures. However, it omits failure modes, return behavior, and what happens when optional endpoints are unavailable, leaving significant gaps.

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 two short sentences, both informative: the core join action and the read-only guarantee. There is no filler or repetition. While it is terse, the efficient structure front-loads the primary purpose and a key behavioral constraint.

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

Completeness2/5

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

With no output schema and no annotations, the description needs to explain what the tool returns and when to apply it, but it does not. It also does not address the behavior of optional experimental endpoints, which are relevant because includeExperimentalEndpoints can return 404. Given the tool's complexity (8 parameters, 1 required), this is a significant completeness gap.

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 88%, and most parameters already have clear descriptions in the schema. The tool description itself adds no parameter-level detail, only framing the overall join operation. A baseline score of 3 is appropriate because the schema does the heavy lifting for parameter meaning.

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 uses a specific verb ('Join') and names the resources involved: Spark Ads fields, paid page/post reporting, and optional organic identity/post endpoints. It clearly conveys a data-merging purpose, though it doesn't explicitly distinguish this from sibling tiktok_get_spark_ads. The 'Read-only only' qualifier adds a precise behavioral boundary.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus siblings like tiktok_get_spark_ads or tiktok_get_ads. The mention of 'when permissions allow' hints at conditional availability but does not state prerequisites, use-case criteria, or exclusions. An agent would have to infer the appropriate context from the name and parameter schema.

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

tiktok_get_targeting_catalogC

Read TikTok targeting and planning catalogs: locations, languages, interests, behaviors, hashtags, Search Ads keyword ideas/health, devices, carriers, contextual tags, content exclusions, and time zones.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
catalogYes
parametersNoAdditional native parameters documented for the selected GET endpoint
advertiserIdNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It communicates read-only intent with 'Read,' but omits response shape, pagination, per-catalog behavior variation, whether advertiserId is needed, and any other operational details that matter for a generic endpoint wrapper.

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 entire description is one efficient sentence that front-loads the action and scopes the resource, then packs in the complete catalog inventory without filler. The length is justified by the need to enumerate many catalog types.

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

Completeness2/5

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

The tool has a complex shape — a nested `parameters` object, no output schema, and many catalog-specific variants — yet the description only lists catalog names. It doesn't explain how to compose requests, when to supply `query`, what `parameters` should contain, or what the agent should expect back, making it insufficient for reliable invocation.

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

Parameters2/5

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

Schema coverage is only 25%, and the required `catalog` parameter lacks a schema description. The description does add some value by translating catalog enum values into human-readable categories, but it says nothing about `query`, `parameters`, or `advertiserId`, so the agent is left guessing on most parameters.

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?

Starts with a clear verb+resource ('Read TikTok targeting and planning catalogs') and enumerates the specific catalog categories, which maps closely onto the enum values. It doesn't explicitly distinguish itself from similar read endpoints like tiktok_search_keywords or tiktok_get_read_endpoint, so it stops 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 Guidelines2/5

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

There is no guidance on when to choose this tool over sibling tools, no stated exclusions, and no mention of which catalog types work with which optional parameters. The only usage signal is an implicit 'if you need a targeting catalog,' which leaves appropriate selection to inference.

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

tiktok_get_video_assetsC

Return ad-linked TikTok video asset metadata from ad/get and video material endpoints when available.

ParametersJSON Schema
NameRequiredDescriptionDefault
adIdsNoOptional ad IDs to inspect.
limitNo
videoIdsNoOptional video IDs to look up directly in material endpoints.
adgroupIdNoOptional ad group ID filter.
advertiserIdYesTikTok advertiser ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that results come from two endpoints and are only returned 'when available,' but it does not explain what affects availability, how adIds and videoIds interact, whether this is strictly read-only, or what the response looks like. The caveat is too vague to be actionable.

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 a single sentence with no filler and states the core action upfront. However, the phrasing 'ad/get and video material endpoints' is slightly awkward and 'when available' is vague, which keeps it from being exemplary.

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

Completeness2/5

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

Given there are no annotations, no output schema, and five parameters, this short description is incomplete. It omits return-value structure, parameter interaction, failure behavior, and any guidance on when data is unavailable. An agent would need to guess important calling conventions.

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?

Input schema coverage is high at 80%, so the schema already documents most parameters. The description adds minimal value beyond the schema, only clarifying the ad-linked/video material context. Since the schema carries most of the semantic burden, a 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 states a clear verb ('Return') and a specific resource ('ad-linked TikTok video asset metadata'), and names the underlying source endpoints. It does not explicitly differentiate from siblings like tiktok_get_creatives, but the focus on video assets and ad linkage is reasonably distinct.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives such as tiktok_get_creatives or tiktok_get_ads. The description does not mention preferred scenarios, exclusions, or fallback tools, leaving the agent to infer use cases.

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

tiktok_health_checkA

Read-only health check for TikTok credentials, accessible advertisers, and advertiser info. Never returns tokens or secrets.

ParametersJSON Schema
NameRequiredDescriptionDefault
advertiserIdNoAdvertiser ID to verify. Defaults to TIKTOK_ADVERTISER_ID, then the first accessible advertiser.

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It explicitly states the operation is read-only and guarantees it never returns tokens or secrets, which are material safety behaviors. It does not describe failure modes or response shape, but the key non-mutating and secret-handling traits are covered.

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 two short sentences with no filler. The first sentence front-loads the operation and scope, and the second adds a concise security guarantee. Every word earns its place.

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

Completeness3/5

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

For a low-complexity tool with one optional parameter, the description names the relevant objects and adds an important security guarantee. However, with no output schema, it stops short of indicating what a successful or failed health check returns, which is a notable gap for an agent invoking the tool.

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?

The schema fully documents the single optional advertiserId parameter, including its fallback behavior from TIKTOK_ADVERTISER_ID to the first accessible advertiser. Since schema coverage is 100%, the description does not need to add parameter detail, so baseline 3 is appropriate.

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 diagnostic operation ('health check') and names the exact resources involved: TikTok credentials, accessible advertisers, and advertiser info. This clearly differentiates it from the many get_* sibling tools, which fetch specific data rather than check overall health.

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 phrase 'read-only health check' implies use for verifying TikTok access and advertiser availability, but no explicit when-to-use guidance, exclusions, or alternative tool comparisons are provided. The agent must infer the trigger condition from the tool name and description.

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

tiktok_list_advertisersA

List all TikTok advertiser accounts accessible with the current token. Returns advertiser ID, name, and status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the operation (read-only list), the authorization scope (current token), and the return fields (ID, name, status). It does not mention pagination or errors, but for a zero-parameter read-only listing tool this is adequately transparent.

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?

Two sentences with no wasted words. The action and scope are front-loaded, and the return fields are stated in a compact second sentence.

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-parameter listing tool with no output schema, the description is sufficient: it tells the agent what the operation is, what the result contains, and under which token scope. No essential calling detail is missing at this complexity level.

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 has zero parameters, so the baseline of 4 applies. The description does not need to add parameter detail because there are no parameters to document; the schema coverage is effectively complete.

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 verb ('List'), a clear resource ('TikTok advertiser accounts accessible with the current token'), and enumerates the returned fields (ID, name, status). This clearly separates it from sibling tools like tiktok_get_advertiser_info, which implies retrieving a single advertiser's details.

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 usage is implied from the scope ('accessible with the current token') and the list operation, but there is no explicit guidance on when to use this instead of tiktok_get_advertiser_info or other siblings. It provides context but no exclusions or alternatives.

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

tiktok_search_keywordsA

Get keyword suggestions for TikTok Search Ads. Returns recommended keywords with search volume estimates.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
keywordsYesSeed keywords to get suggestions for
advertiserIdYesTikTok advertiser ID

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the core behavior: returns recommended keywords with search volume estimates, and the read-only nature is strongly implied by 'Get' and 'Returns'. However, it does not disclose potential rate limits, pagination, or how the limit parameter affects results, so behavioral transparency is adequate but not rich.

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 two short sentences with no filler. The main purpose is front-loaded, and the return value is stated immediately. Every word earns its place.

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

Completeness4/5

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

For a simple, read-only suggestion tool, the description plus schema is mostly complete: required inputs are in the schema, and the description states the key return output. There is no output schema or annotations, so a bit more detail about the exact response shape would help, but the essentials are present.

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?

The schema already documents advertiserId and keywords, including that keywords are 'Seed keywords to get suggestions for', and limit has clear default/min/max constraints. The description adds no parameter-level detail, and with 67% schema coverage the description does not need to fully compensate, but it also does not enhance parameter understanding.

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 names a specific verb-resource pair: 'Get keyword suggestions for TikTok Search Ads', and states the concrete return value: 'recommended keywords with search volume estimates'. This clearly distinguishes it from sibling tools, which are mostly entity-listing or status/health endpoints.

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 phrase 'for TikTok Search Ads' gives implicit context about when the tool is relevant, but there is no explicit when-to-use guidance, no exclusions, and no mention of alternatives. Since none of the siblings appear to offer keyword suggestions, the lack of explicit routing is minor but still only implied.

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

tiktok_validate_queryA

Validate a TikTok metric/dimension combination BEFORE executing. Checks dimension grouping rules, lifetime compatibility, and metric/dimension compatibility.

ParametersJSON Schema
NameRequiredDescriptionDefault
metricsYesMetric keys to validate
dataLevelNoAUCTION_CAMPAIGN
dimensionsNoDimension keys to validate
queryLifetimeNo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full disclosure burden. It conveys that the tool is non-executing ('BEFORE executing'), that it only checks compatibility rules, and it lists the three validation categories. It does not disclose return format, error/failure behavior, or rate limits, which would strengthen it, but the core behavioral profile — validate, don't execute — is clearly conveyed.

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?

Two sentences with no filler: the first front-loads the purpose and timing, the second lists the validation scope. Every clause contributes information, and the tool name is not merely restated.

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

Completeness3/5

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

The defnition is adequate for a validation tool but has real gaps: no output schema exists, yet the description never says what the tool returns (e.g., boolean pass/fail, list of violations, or thrown error), so an agent cannot know how to interpret the result before proceeding. With no annotations and two undocumented parameters, some of that burden shifts to the description, and it does not fully carry it.

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 only 50%, with dataLevel and queryLifetime lacking schema descriptions. The description partially compensates by linking 'lifetime compatibility' to queryLifetime and 'metric/dimension combination' to the metrics/dimensions arrays, but it never addresses dataLevel's semantics or why the chosen level matters for validation. The added meaning over the schema is modest.

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 verb ('Validate'), a resource ('TikTok metric/dimension combination'), and the pre-execution role ('BEFORE executing'). It further enumerates the exact checks performed (dimension grouping rules, lifetime compatibility, metric/dimension compatibility), which clearly differentiates it from the many tiktok_get_* siblings that execute queries.

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?

'BEFORE executing' gives clear contextual guidance on when this tool is needed — as a pre-flight guard before query tools like tiktok_get_insights or tiktok_get_report_raw. However, it does not explicitly name alternative tools or state when-not-to-use scenarios, so it stops 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.

Tool Schema Changelog

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

  1. 27 tool updatesv1.0.0
    • First observedtiktok_get_adgroups
    • First observedtiktok_get_ads
    • First observedtiktok_get_advertiser_info
    • First observedtiktok_get_async_report_status
    • First observedtiktok_get_audience_details
    • First observedtiktok_get_audience_overlap
    • First observedtiktok_get_audiences
    • First observedtiktok_get_campaigns
    • First observedtiktok_get_creative_fatigue_recipes
    • First observedtiktok_get_creatives
    • First observedtiktok_get_delivery_status
    • First observedtiktok_get_entities_raw
    • First observedtiktok_get_events
    • First observedtiktok_get_insights
    • First observedtiktok_get_pixels
    • First observedtiktok_get_read_endpoint
    • First observedtiktok_get_report_raw
    • First observedtiktok_get_search_ads_maturity
    • First observedtiktok_get_shop_catalog_diagnostics
    • First observedtiktok_get_spark_ads
    • First observedtiktok_get_spark_organic_joins
    • First observedtiktok_get_targeting_catalog
    • First observedtiktok_get_video_assets
    • First observedtiktok_health_check
    • First observedtiktok_list_advertisers
    • First observedtiktok_search_keywords
    • First observedtiktok_validate_query

TDQS

B3.1/5.0

Scored across 27 tools

Disambiguation3/5

Many tools have distinct read-only purposes, but there is meaningful overlap among audience tools, creative/video asset tools, and raw/escape-hatch endpoints. The detailed descriptions help an agent choose, but several boundaries (e.g., get_audiences vs. get_audience_details vs. get_audience_overlap) are not immediately obvious.

Naming Consistency4/5

The naming is predominantly tiktok_get_<object> with a few list_/search_/validate_ exceptions, and everything uses consistent snake_case. The pattern is clear and predictable, with only minor deviations like health_check and validate_query.

Tool Count2/5

27 tools is over the threshold where the set starts to feel heavy, and many are narrow diagnostic or raw-access variants that could be consolidated. The broad read-only scope explains the count, but it still exceeds what most agents need at once.

Completeness3/5

The server covers the read/diagnostics side of TikTok Ads extensively, including raw escape hatches for new fields. However, there are no create/update/delete operations, which is a notable gap for an 'ads' server unless it is explicitly intended to be read-only.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Provides read-only access to TikTok advertising data, including campaigns, ad groups, ads, and performance reports through the TikTok Business API.
    6
    42
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    A read-only MCP server that provides comprehensive access to the TikTok Business API for retrieving advertising data, including campaigns, ad groups, ads, and performance reports.
    24
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    A read-only MCP server for querying Meta Ads accounts through Meta's Marketing API. It provides tools to retrieve ad accounts, campaigns, ad sets, ads, and performance insights.
    -
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables management of Google Ads accounts via MCP, providing read and write tools for campaigns, ad groups, keywords, assets, and more, with support for reporting and mutations.
    -