TopTik — TikTok data
by toptik.app · remote · no sign-in to list tools · v1.0.0 · published by app.toptik
TikTok data for agents: videos, creators, comments, search, transcripts. 25 tools, pay per call.
25 tools: 1 do something that can't be undone, 14 change things and 10 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone1Claude Code: ask: see these tools
- Changes things14Claude Code: ask: see these tools
- Only reads10Claude Code: allow: see these tools
2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http tiktok https://mcp.toptik.app/mcpFindings
Matches of fixed checks, with the text they matched.
The server marks "tiktok_video_comments" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":true}; The name "tiktok_video_comments" says "comment": a word for a change.
The server marks "tiktok_comment_replies" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":true}; The name "tiktok_comment_replies" says "comment": a word for a change.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
25 tools
Can't be undone 1Claude Code: ask
tiktok_comment_repliesReplies under one comment.1 finding
Why it is in this group
- The name "tiktok_comment_replies" says "comment": a word for a change.
- The name "tiktok_comment_replies" also says "reply": a word for sending, and what is sent cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "tiktok_comment_replies" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":true}; The name "tiktok_comment_replies" says "comment": a word for a change.
Description, as the server wrote it Replies under one comment. Worth calling only when tiktok_video_comments reported reply_count above 0.
Annotations the server declares
- title: Comment replies
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
Changes things 14Claude Code: ask
tiktok_creator_followersA sample of a creator's followers (most recent), plus the total.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it A sample of a creator's followers (most recent), plus the total. One page only: TikTok does not page this list reliably, so this is a sample and not an export.
Annotations the server declares
- title: Creator followers
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
tiktok_creator_followingA sample of the accounts a creator follows, plus the total.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it A sample of the accounts a creator follows, plus the total. One page only, for the same reason as followers.
Annotations the server declares
- title: Creator following
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
tiktok_creator_liked_videosVideos a creator has liked.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Videos a creator has liked. Only works when the account keeps its likes public; most do not, and a private list returns no videos.
Annotations the server declares
- title: Creator liked videos
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
tiktok_creator_playlistsA creator's playlists (TikTok calls them mixes or series).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it A creator's playlists (TikTok calls them mixes or series). Most creators have none, which returns total 0.
Annotations the server declares
- title: Creator playlists
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
tiktok_creator_profileA creator's profile: handle, nickname, bio, follower, following and video counts, privacy and verification flags, and avatar.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it A creator's profile: handle, nickname, bio, follower, following and video counts, privacy and verification flags, and avatar.
Annotations the server declares
- title: Creator profile
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
tiktok_creator_videosA creator's posts, newest first, with stats.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it A creator's posts, newest first, with stats. Page by passing the previous response's max_cursor as cursor until has_more is 0. Pinned posts appear on page one only.
Annotations the server declares
- title: Creator videos
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
tiktok_explore_feedTikTok's Explore / Discover feed: what is trending now.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it TikTok's Explore / Discover feed: what is trending now. Not personalised and not cached, so each call returns a fresh set; call again for more.
Annotations the server declares
- title: Explore feed
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
tiktok_hashtag_videosVideos under a hashtag.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Videos under a hashtag. Pages hold about 12 videos whatever count asks for; page with cursor.
Annotations the server declares
- title: Hashtag videos
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
tiktok_live_streamsLive rooms matching a keyword, each with playable stream URLs per quality (FLV always, HLS when TikTok provides it), title and viewer count.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Live rooms matching a keyword, each with playable stream URLs per quality (FLV always, HLS when TikTok provides it), title and viewer count. URLs are signed (see expires_at), but a room usually ends long before its signature does; if one quality fails, try another.
Annotations the server declares
- title: Live streams
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
tiktok_sound_videosVideos TikTok associates with a sound.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Videos TikTok associates with a sound. Treat it as a feed seeded by the sound, not a strict filter: some results use a different sound, so check music_id on each row.
Annotations the server declares
- title: Sound videos
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
tiktok_video_commentsTop-level comments on a video, with like and reply counts.1 finding
Why it is in this group
- The name "tiktok_video_comments" says "comment": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "tiktok_video_comments" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":true}; The name "tiktok_video_comments" says "comment": a word for a change.
Description, as the server wrote it Top-level comments on a video, with like and reply counts. cursor is an offset: pass the previous response's cursor to continue. TikTok re-ranks between pages, so dedupe on comment_id.
Annotations the server declares
- title: Video comments
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
tiktok_video_download_urlDirect media URLs for one post: no-watermark video, watermarked video, audio, covers, and the images of a photo post.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Direct media URLs for one post: no-watermark video, watermarked video, audio, covers, and the images of a photo post. Links only, no bytes; they are signed and expire (see expires), so fetch promptly.
Annotations the server declares
- title: Video download URLs
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
tiktok_video_statsOne video or photo post by id: caption, plays, likes, comments, shares, saves, duration, hashtags, sound and author.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it One video or photo post by id: caption, plays, likes, comments, shares, saves, duration, hashtags, sound and author.
Annotations the server declares
- title: Video stats
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
tiktok_video_transcriptA video's spoken text from TikTok's own caption track: one joined string plus timed cues.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it A video's spoken text from TikTok's own caption track: one joined string plus timed cues. has_transcript false means the video has no caption track, which is common and is not an error.
Annotations the server declares
- title: Video transcript
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
Only reads 10Claude Code: allow
tiktok_hashtag_resolveHashtag name to its id, with total video and view counts.No findings
Why it is in this group
- The name "tiktok_hashtag_resolve" says "resolve": a word for reading.
Description, as the server wrote it Hashtag name to its id, with total video and view counts. Feed the id to tiktok_hashtag_videos.
Annotations the server declares
- title: Resolve a hashtag
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
tiktok_places_searchSearch TikTok places (points of interest) by name: address, coordinates, rating, review count and video count.No findings
Why it is in this group
- The name "tiktok_places_search" says "search": a word for reading.
Description, as the server wrote it Search TikTok places (points of interest) by name: address, coordinates, rating, review count and video count.
Annotations the server declares
- title: Search places
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
tiktok_resolve_usernameResolve a TikTok @handle to the account's numeric uid and sec_uid.No findings
Why it is in this group
- The name "tiktok_resolve_username" says "resolve": a word for reading.
Description, as the server wrote it Resolve a TikTok @handle to the account's numeric uid and sec_uid. Start here: every tiktok_creator_* tool takes the sec_uid this returns. An empty user_list means no exact match was found.
Annotations the server declares
- title: Resolve a username
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
tiktok_search_creatorsKeyword search over accounts, with follower counts.No findings
Why it is in this group
- The name "tiktok_search_creators" says "search": a word for reading.
Description, as the server wrote it Keyword search over accounts, with follower counts. Pages by offset, not cursor. For one exact @handle use tiktok_resolve_username instead: it is cheaper and more reliable.
Annotations the server declares
- title: Search creators
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
tiktok_search_hashtagsKeyword search over hashtags, with post and view counts.No findings
Why it is in this group
- The name "tiktok_search_hashtags" says "search": a word for reading.
Description, as the server wrote it Keyword search over hashtags, with post and view counts. One page only.
Annotations the server declares
- title: Search hashtags
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
tiktok_search_livesLive rooms on air right now that match a keyword, with the host's account.No findings
Why it is in this group
- The name "tiktok_search_lives" says "search": a word for reading.
Description, as the server wrote it Live rooms on air right now that match a keyword, with the host's account. One page only. For playable stream URLs use tiktok_live_streams.
Annotations the server declares
- title: Search live rooms
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
tiktok_search_photosKeyword search over photo-mode (carousel) posts, with image URLs and stats.No findings
Why it is in this group
- The name "tiktok_search_photos" says "search": a word for reading.
Description, as the server wrote it Keyword search over photo-mode (carousel) posts, with image URLs and stats. One page only.
Annotations the server declares
- title: Search photo posts
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
tiktok_search_soundsKeyword search over sounds, with usage counts.No findings
Why it is in this group
- The name "tiktok_search_sounds" says "search": a word for reading.
Description, as the server wrote it Keyword search over sounds, with usage counts. cursor is an offset: pass the previous response's cursor.
Annotations the server declares
- title: Search sounds
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
tiktok_search_videosKeyword search over videos.No findings
Why it is in this group
- The name "tiktok_search_videos" says "search": a word for reading.
Description, as the server wrote it Keyword search over videos. TikTok search is a bounded, re-ranked pool, not an endless list: ask for count 30, page with cursor, dedupe on video_id, and stop when two pages add nothing new.
Annotations the server declares
- title: Search videos
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
tiktok_sound_resolveSound title to music id, with the closest candidates.No findings
Why it is in this group
- The name "tiktok_sound_resolve" says "resolve": a word for reading.
Description, as the server wrote it Sound title to music id, with the closest candidates. Feed the id to tiktok_sound_videos.
Annotations the server declares
- title: Resolve a sound
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http tiktok https://mcp.toptik.app/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__tiktok__tiktok_resolve_username",
"mcp__tiktok__tiktok_sound_resolve",
"mcp__tiktok__tiktok_hashtag_resolve",
"mcp__tiktok__tiktok_search_videos",
"mcp__tiktok__tiktok_search_creators",
"mcp__tiktok__tiktok_search_hashtags",
"mcp__tiktok__tiktok_search_sounds",
"mcp__tiktok__tiktok_search_lives",
"mcp__tiktok__tiktok_search_photos",
"mcp__tiktok__tiktok_places_search"
],
"ask": [
"mcp__tiktok__tiktok_creator_profile",
"mcp__tiktok__tiktok_creator_videos",
"mcp__tiktok__tiktok_creator_liked_videos",
"mcp__tiktok__tiktok_creator_followers",
"mcp__tiktok__tiktok_creator_following",
"mcp__tiktok__tiktok_creator_playlists",
"mcp__tiktok__tiktok_video_stats",
"mcp__tiktok__tiktok_video_comments",
"mcp__tiktok__tiktok_comment_replies",
"mcp__tiktok__tiktok_video_download_url",
"mcp__tiktok__tiktok_video_transcript",
"mcp__tiktok__tiktok_sound_videos",
"mcp__tiktok__tiktok_hashtag_videos",
"mcp__tiktok__tiktok_explore_feed",
"mcp__tiktok__tiktok_live_streams"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as tiktok. Review it before you use it.