{"name":"app.toptik/tiktok","slug":"toptik-tiktok","title":"TopTik — TikTok data","description":"TikTok data for agents: videos, creators, comments, search, transcripts. 25 tools, pay per call.","url":"https://mcp.market/server/toptik-tiktok","rating":null,"grade":"C","score":56,"certified":false,"status":"active","category":"search","tags":["search"],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":null,"website":"https://toptik.app/","version":"1.0.0","remotes":[{"type":"streamable-http","url":"https://mcp.toptik.app/mcp"}],"packages":[],"tools":[{"name":"tiktok_comment_replies","description":"Replies under one comment. Worth calling only when tiktok_video_comments reported reply_count above 0.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"pattern":"^\\d{6,25}$","description":"The numeric video id."},"comment_id":{"type":"string","minLength":1,"pattern":"^\\d{6,25}$","description":"comment_id from tiktok_video_comments."},"count":{"description":"Replies per page. (1-50, default 20)","type":"integer","minimum":1,"maximum":50},"cursor":{"description":"Offset from the previous response. Omit for page one. (default 0)","type":"integer","minimum":0,"maximum":9007199254740991},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["id","comment_id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_creator_followers","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"pattern":"^(MS4w[A-Za-z0-9_-]{20,}|\\d{6,25})$","description":"sec_uid (MS4w…) or numeric uid."},"count":{"description":"Followers to return. (1-50, default 20)","type":"integer","minimum":1,"maximum":50},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_creator_following","description":"A sample of the accounts a creator follows, plus the total. One page only, for the same reason as followers.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"pattern":"^(MS4w[A-Za-z0-9_-]{20,}|\\d{6,25})$","description":"sec_uid (MS4w…) or numeric uid."},"count":{"description":"Accounts to return. (1-50, default 20)","type":"integer","minimum":1,"maximum":50},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_creator_liked_videos","description":"Videos a creator has liked. Only works when the account keeps its likes public; most do not, and a private list returns no videos.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"pattern":"^MS4w[A-Za-z0-9_-]{20,}$","description":"sec_uid (MS4w…). A numeric uid is not accepted here."},"count":{"description":"Videos per page. (1-35, default 20)","type":"integer","minimum":1,"maximum":35},"cursor":{"description":"max_cursor from the previous page. Omit for page one. (default 0)","type":"integer","minimum":0,"maximum":9007199254740991},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_creator_playlists","description":"A creator's playlists (TikTok calls them mixes or series). Most creators have none, which returns total 0.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"pattern":"^(MS4w[A-Za-z0-9_-]{20,}|\\d{6,25})$","description":"sec_uid (MS4w…) or numeric uid."},"cursor":{"description":"cursor from the previous page. Omit for page one. (default 0)","type":"integer","minimum":0,"maximum":9007199254740991},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_creator_profile","description":"A creator's profile: handle, nickname, bio, follower, following and video counts, privacy and verification flags, and avatar.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"pattern":"^(MS4w[A-Za-z0-9_-]{20,}|\\d{6,25})$","description":"sec_uid (MS4w…) or numeric uid, from tiktok_resolve_username."},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_creator_videos","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"pattern":"^(MS4w[A-Za-z0-9_-]{20,}|\\d{6,25})$","description":"sec_uid (MS4w…) or numeric uid."},"count":{"description":"Posts per page. (1-35, default 20)","type":"integer","minimum":1,"maximum":35},"cursor":{"description":"max_cursor from the previous page. Omit for page one. (default 0)","type":"integer","minimum":0,"maximum":9007199254740991},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_explore_feed","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"count":{"description":"Videos to return. (1-18, default 12)","type":"integer","minimum":1,"maximum":18},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_hashtag_resolve","description":"Hashtag name to its id, with total video and view counts. Feed the id to tiktok_hashtag_videos.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"The hashtag, with or without #."},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["name"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_hashtag_videos","description":"Videos under a hashtag. Pages hold about 12 videos whatever count asks for; page with cursor.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"pattern":"^\\d{1,25}$","description":"hashtag id from tiktok_hashtag_resolve."},"count":{"description":"Videos per page; TikTok caps this near 12. (1-30, default 20)","type":"integer","minimum":1,"maximum":30},"cursor":{"description":"cursor from the previous page. Omit for page one. (default 0)","type":"integer","minimum":0,"maximum":9007199254740991},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_live_streams","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":80,"description":"Search keywords."},"count":{"description":"Rooms to return. (1-30, default 20)","type":"integer","minimum":1,"maximum":30},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["q"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_places_search","description":"Search TikTok places (points of interest) by name: address, coordinates, rating, review count and video count.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":80,"description":"Place name or keywords."},"count":{"description":"Places to return. (1-30, default 20)","type":"integer","minimum":1,"maximum":30},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["q"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_resolve_username","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"handle":{"type":"string","minLength":1,"maxLength":80,"description":"The @handle, with or without the leading @."},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["handle"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_search_creators","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":80,"description":"Search keywords."},"count":{"description":"Results per page. (1-30, default 10)","type":"integer","minimum":1,"maximum":30},"offset":{"description":"Number of results to skip: 0, then count, then 2 x count. (default 0)","type":"integer","minimum":0,"maximum":9007199254740991},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["q"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_search_hashtags","description":"Keyword search over hashtags, with post and view counts. One page only.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":80,"description":"Search keywords."},"count":{"description":"Results to return. (1-30, default 20)","type":"integer","minimum":1,"maximum":30},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["q"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_search_lives","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":80,"description":"Search keywords."},"count":{"description":"Rooms to return. (1-30, default 20)","type":"integer","minimum":1,"maximum":30},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["q"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_search_photos","description":"Keyword search over photo-mode (carousel) posts, with image URLs and stats. One page only.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":80,"description":"Search keywords."},"count":{"description":"Results to return. (1-30, default 20)","type":"integer","minimum":1,"maximum":30},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["q"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_search_sounds","description":"Keyword search over sounds, with usage counts. cursor is an offset: pass the previous response's cursor.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":80,"description":"Search keywords."},"count":{"description":"Results per page. (1-30, default 20)","type":"integer","minimum":1,"maximum":30},"cursor":{"description":"cursor from the previous page. Omit for page one. (default 0)","type":"integer","minimum":0,"maximum":9007199254740991},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["q"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_search_videos","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"q":{"type":"string","minLength":1,"maxLength":80,"description":"Search keywords."},"count":{"description":"Results per page. 30 yields the most distinct results per call. (1-30, default 20)","type":"integer","minimum":1,"maximum":30},"cursor":{"description":"cursor from the previous page. Omit for page one. (default 0)","type":"integer","minimum":0,"maximum":9007199254740991},"sort_type":{"description":"0 = relevance (default), 1 = most liked. (0-3)","type":"integer","minimum":0,"maximum":3},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["q"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_sound_resolve","description":"Sound title to music id, with the closest candidates. Feed the id to tiktok_sound_videos.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":80,"description":"The sound's title as TikTok shows it."},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["title"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_sound_videos","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"pattern":"^\\d{6,25}$","description":"music id from tiktok_sound_resolve or any video row."},"cursor":{"description":"cursor from the previous page. Omit for page one. (default 0)","type":"integer","minimum":0,"maximum":9007199254740991},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_video_comments","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"pattern":"^\\d{6,25}$","description":"The numeric video id."},"count":{"description":"Comments per page. (1-50, default 20)","type":"integer","minimum":1,"maximum":50},"cursor":{"description":"Offset from the previous response. Omit for page one. (default 0)","type":"integer","minimum":0,"maximum":9007199254740991},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_video_download_url","description":"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.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"pattern":"^\\d{6,25}$","description":"The numeric video id."},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_video_stats","description":"One video or photo post by id: caption, plays, likes, comments, shares, saves, duration, hashtags, sound and author.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"pattern":"^\\d{6,25}$","description":"The numeric video id — the digits after /video/ in a TikTok link."},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"tiktok_video_transcript","description":"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.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"pattern":"^\\d{6,25}$","description":"The numeric video id."},"lang":{"description":"Language tag such as en or es-MX. Omit to get the original track.","type":"string","minLength":1,"maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})?$"},"expand":{"description":"false (default): a compact JSON summary sized for a model's context. true: the complete, unmodified response from the data API — can exceed 500 KB for list tools, so ask for it only when a field you need is missing from the compact form. Same price either way.","type":"boolean"}},"required":["id"],"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":56,"grade":"C","scanned_at":"2026-09-19T09:53:14.253Z","report":{"scannerVersion":"0.1.3","scannedAt":"2026-09-19T09:53:14.198Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":17,"max":20,"notes":["remote reachable in 2236ms"]},"poisoning":{"score":15,"max":15,"notes":["25 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 3 write-action tools with no auth"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":4,"max":10,"notes":["verified namespace with website, no repo"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"},{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"probes":[{"url":"https://mcp.toptik.app/mcp","reachable":true,"authRequired":false,"latencyMs":2236,"serverInfo":{"name":"toptik-tiktok","version":"1.0.0"}}],"packages":[],"repo":{"found":false},"icon":{"url":"https://toptik.app/icon.png?icon.1eu8xzutizrdn.png","source":"site","width":512,"height":512},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}