Skip to main content
Glama
dhawalshah

tiktok-ads-mcp

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PORTNoHTTP port (default 8080).8080
BASE_URLNoPublic URL of this service. Used for OAuth metadata and as the canonical resource URI tokens are bound to.
TIKTOK_APP_IDYesApp ID from your TikTok Business Developer app.
TIKTOK_SECRETYesApp secret from your TikTok Business Developer app.
ALLOWED_EMAILSNoComma-separated allow-list of TikTok-account emails. Empty = no restriction.
GCP_PROJECT_IDNoGCP project hosting Firestore.
TIKTOK_SANDBOXNoSet to 'true' to use the TikTok sandbox API base URL. Default false.false
TIKTOK_ACCESS_TOKENNoYour single-user access token. Not used by the HTTP server.
TIKTOK_REDIRECT_URINoOverride the TikTok callback URL. Defaults to ${BASE_URL}/oauth/callback.${BASE_URL}/oauth/callback
TIKTOK_ADVERTISER_IDNoDefault advertiser to query.
TIKTOK_REQUEST_TIMEOUTNoHTTP timeout in seconds. Default 30.30

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_business_centers_toolC

Get business centers accessible by the current access token

get_authorized_ad_accounts_toolB

Get all authorized ad accounts accessible by the current access token

get_advertiser_info_toolA

Get account-level metadata (currency, timezone, industry, status) for one or more advertisers. This is foundational context for interpreting all other data — especially date breakdowns, which depend on the account timezone.

get_campaigns_toolC

Get campaigns for a specific advertiser with optional filtering

get_ad_groups_toolC

Get ad groups for a specific advertiser with optional filtering

get_ads_toolC

Get ads for a specific advertiser with optional filtering

get_reports_toolC

Get performance reports and analytics with comprehensive filtering and grouping options

get_video_performance_toolA

Get TikTok-specific video engagement metrics not available in the standard integrated report: 2-second views, 6-second views, completion rate, average watch time, and video play actions. At least one of campaign_ids, adgroup_ids, or ad_ids is required. data_level: AUCTION_AD | AUCTION_ADGROUP | AUCTION_CAMPAIGN. Dates are YYYY-MM-DD.

get_creative_fatigue_toolA

Get creative fatigue scores per ad. Indicates when an ad has been shown too frequently to the same audience and needs refreshing. Returns fatigue_status, fatigue_level, and recommendations per ad. Optionally filter by ad_ids.

get_ad_benchmark_toolA

Get benchmark metrics (CTR, CVR, CPM, CPC) for specific ads compared to industry averages. ad_ids is required. dimensions defaults to ['PLACEMENT']. Allowed dimension values: AD_CATEGORY, EXTERNAL_ACTION, LOCATION, PLACEMENT. objective_type example: 'CONVERSIONS'.

create_async_report_toolA

Creates an async report task for large datasets or long date ranges. After calling this tool, immediately use check_async_report_tool with the returned task_id to monitor progress. When status is COMPLETE, use download_async_report_tool to retrieve the data. Inform the user that the report is being generated and you will check on it. report_type: BASIC | AUDIENCE. data_level: AUCTION_AD | AUCTION_ADGROUP | AUCTION_CAMPAIGN. Dates are YYYY-MM-DD.

check_async_report_toolA

Checks the status of an async report task created by create_async_report_tool. Status will be PROCESSING, COMPLETE, or FAILED. If PROCESSING, inform the user the report is still generating and check again shortly. When COMPLETE, call download_async_report_tool with the same task_id.

download_async_report_toolA

Downloads the completed data for an async report task. Only call after check_async_report_tool returns status COMPLETE. Returns the report rows.

get_audience_reach_toolB

Get estimated audience reach for given targeting criteria. NOTE: This endpoint requires allowlist access from TikTok. Contact TikTok support if you receive a 404 error. objective_type examples: 'TRAFFIC', 'CONVERSIONS', 'APP_INSTALL'. gender: 'GENDER_MALE' | 'GENDER_FEMALE' | 'GENDER_UNLIMITED'. Returns estimated_audience_size_lower, estimated_audience_size_upper, reach_trend.

get_targeting_options_toolA

Get all available interest categories for audience targeting. Returns a list of interest categories with their IDs, names, levels, and sub-category IDs. Use the returned interest_category_id values when setting up ad group targeting. Optionally filter by objective_type (e.g. 'TRAFFIC', 'CONVERSIONS').

get_pixels_toolC

List all TikTok Pixel installations for an advertiser. Shows which conversion events are being tracked and whether measurement is set up correctly. Returns pixel_id, pixel_name, pixel_code, status, create_time, and tracked events.

get_smart_plus_campaigns_toolA

Get Smart+ (AI-optimised) campaigns for an advertiser. Smart+ campaigns do NOT appear in get_campaigns_tool — accounts using Smart+ have a blind spot without this tool. Returns campaign_id, name, status, budget, objective_type, create/modify times. status filter examples: 'ENABLE', 'DISABLE', 'DELETE'.

get_pixel_event_stats_toolA

Get aggregated conversion event counts (Purchase, AddToCart, ViewContent, etc.) per pixel over a date range. Use after get_pixels_tool to get pixel_ids. Dates are YYYY-MM-DD. Returns one row per pixel per event type per day.

get_video_assets_toolA

Browse the creative video asset library for an advertiser. Returns video_id, video_name, duration, width, height, cover_url, create_time, size. Optional filtering dict supports keys like 'video_name' for name search.

get_advertiser_balance_toolA

Get cash balance and credit limit for all advertiser accounts within a Business Center. Returns advertiser_id, balance, credit_limit, and currency for each account. Use get_business_centers_tool first to get bc_id.

get_bc_assets_toolA

Get all assets of a given type within a Business Center. asset_type must be one of: ADVERTISER, PIXEL, CATALOG. Returns asset_id, asset_name, asset_type, status for each asset. Use get_business_centers_tool first to get bc_id.

get_bc_members_toolA

Get all members of a Business Center, their roles, and access status. Returns user_id, username, email, role, status for each member. Useful for access audits. Use get_business_centers_tool first to get bc_id.

get_offline_event_sets_toolB

List offline conversion event sets configured for an advertiser. Shows what offline events (e.g. in-store purchases, phone leads) are being matched back to TikTok ad exposure. Returns event_set_id, name, status, event_types, and create_time.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.4/5.0

Scored across 23 tools

Disambiguation5/5

Each tool maps to a distinct TikTok Ads resource or reporting concernasi get_reports_tool, get_video_performance_tool, get_ad_benchmark_tool, and get_creative_fatigue_tool are clearly differentiated by their descriptions. The explicit note that Smart+ campaigns do not appear in get_campaigns_tool removes a likely source of confusion.

Naming Consistency5/5

Tool names follow a predictable snake_case verb_noun pattern: get_* for reads and create/check/download_async_report for the async report workflow. Minor abbreviations like 'bc' are still consistent and readable.

Tool Count3/5

With 23 tools, the set is on the heavy side and above the ideal 3–15 range. Most tools represent legitimate distinct endpoints, but several niche analytics tools could reasonably be consolidated or split into a separate reporting-focused server.

Completeness3/5

The read/analytics surface is broad, covering accounts, campaigns, ads, pixels, targeting, assets, and reports. However, there are no create, update, or delete tools for campaigns, ad groups, or ads, which is a notable gap if the server is intended to support actual ad management rather than read-only insights.

Maintenance

ActivityMaintained
ResponsivenessNo issues