Skip to content

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.

Final · 1Changes · 14

25 tools: 1 do something that can't be undone, 14 change things and 10 only read.

Scanned Oct 21, 2026

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/mcp

Findings

Matches of fixed checks, with the text they matched.

2 warn
  • The server marks "tiktok_video_comments" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":true}; The name "tiktok_video_comments" says "comment": a word for a change.

    What this check looks for
  • The server marks "tiktok_comment_replies" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":true}; The name "tiktok_comment_replies" says "comment": a word for a change.

    What this check looks for

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".

      Matched text

      annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":true}; The name "tiktok_comment_replies" says "comment": a word for a change.

      What this check looks for
    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".

      Matched text

      annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":true}; The name "tiktok_video_comments" says "comment": a word for a change.

      What this check looks for
    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_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/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.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.