LamaTok — TikTok MCP
lamatok-mcp
LamaTok — TikTok 데이터 API용 MCP 서버입니다. npm에서 이용 가능합니다: lamatok-mcp.
시작 시 LamaTok OpenAPI 사양에서 MCP 도구를 자동으로 생성하므로, 더 이상 사용되지 않는(deprecated) GET 엔드포인트를 제외한 모든 엔드포인트가 별도의 수동 래퍼 없이 노출됩니다. 도구는 REST 엔드포인트와 1:1로 매핑됩니다 (GET /v1/user/by/username → get_v1_user_by_username).
100개의 무료 API 요청 받기
**이 링크로 가입**하시면 100개의 무료 LamaTok 요청을 받으실 수 있습니다. 신용카드는 필요하지 않습니다. MCP 서버를 연결하고, Claude/Cursor/Codex에서 몇 가지 프롬프트를 테스트하며, 본격적으로 사용하기 전에 데이터 품질을 평가하기에 충분한 양입니다.
Related MCP server: DataLikers — Instagram & TikTok MCP
빠른 시작
lamatok.com에서 API 키를 받으세요.
AI 어시스턴트에 서버를 추가하세요.
어시스턴트에게 다음과 같이 질문해 보세요:
"@nasa의 TikTok 프로필을 가져와줘."
"user_id 6707206320333226502의 최근 동영상 10개를 나열해줘."
"해시태그
photography에 대한 최근 TikTok 동영상을 찾아줘."
Claude Code
claude mcp add lamatok -e LAMATOK_KEY=your-api-key -- npx -y lamatok-mcpClaude Desktop
claude_desktop_config.json에 추가하세요:
{
"mcpServers": {
"lamatok": {
"command": "npx",
"args": ["-y", "lamatok-mcp"],
"env": {
"LAMATOK_KEY": "your-api-key"
}
}
}
}Cursor / Windsurf
Claude Desktop과 동일한 방식입니다. 앱의 MCP 설정 파일 내 mcpServers 블록 아래에 추가하세요.
Zed
~/.config/zed/settings.json에 추가하세요:
{
"context_servers": {
"lamatok": {
"command": "npx",
"args": ["-y", "lamatok-mcp"],
"env": {
"LAMATOK_KEY": "your-api-key"
}
}
}
}OpenAI Codex
~/.codex/config.toml에 추가하세요:
[mcp_servers.lamatok]
command = "npx"
args = ["-y", "lamatok-mcp"]
[mcp_servers.lamatok.env]
LAMATOK_KEY = "your-api-key"도구
도구는 시작 시 라이브 LamaTok OpenAPI 사양에서 생성되므로, 목록은 항상 현재 API와 일치합니다. (작성 시점 기준) 다음 그룹에 걸쳐 약 19개의 도구가 있습니다:
그룹 | 도구 수 | 예시 |
| 9 |
|
| 8 |
|
| 2 |
|
각 도구 이름은 해당 엔드포인트를 반영합니다 (GET /v1/user/by/username → get_v1_user_by_username). 어시스턴트는 MCP를 통해 tools/list를 호출하여 매개변수 스키마가 포함된 최신 전체 목록을 가져올 수 있습니다. /sys, Legacy, System 태그 그룹은 기본적으로 제외됩니다.
설정
변수 | 설명 | 필수 여부 |
| LamaTok 액세스 키 ( | 예 |
| 기본 URL. 기본값: | 아니요 |
| OpenAPI 사양 URL. 기본값: | 아니요 |
| 화이트리스트: 해당 태그가 포함된 작업만 포함 (쉼표로 구분) | 아니요 |
| 블랙리스트: 제외할 추가 태그 ( | 아니요 |
| API 호출당 타임아웃. 기본값: | 아니요 |
| 시작 시 사양 가져오기 타임아웃. 기본값: | 아니요 |
| 각 API 응답에서 읽을 최대 바이트 수. 기본값: | 아니요 |
| OpenAPI 사양에서 읽을 최대 바이트 수. 기본값: | 아니요 |
Legacy, System, /sys 태그는 기본적으로 제외됩니다. 더 이상 사용되지 않는(deprecated) 작업도 건너뜁니다.
LAMATOK_URL이 api.lamatok.com 이외의 호스트를 가리키는 경우, 서버는 시작 시 경고를 출력합니다. 키가 해당 주소로 전송되므로, 직접 호스팅하거나 프록시된 LamaTok에만 사용하십시오.
작동 원리
AI Assistant ←stdio→ lamatok-mcp ──https──> api.lamatok.com
│
└─ fetches /openapi.json once on startup,
builds one MCP tool per GET endpoint도구 인수는 엔드포인트의 query 및 path 매개변수에 매핑됩니다. 응답 본문은 그대로(JSON 텍스트) 반환됩니다. 2xx가 아닌 응답은 HTTP 상태 코드와 본문을 포함한 도구 오류로 표시됩니다.
개발
git clone https://github.com/subzeroid/lamatok-mcp.git
cd lamatok-mcp
npm install
npm run build
LAMATOK_KEY=your-key node dist/index.js감시(watch) 모드에서 실행:
LAMATOK_KEY=your-key npm run dev테스트 실행 (단위 테스트 + 로컬 모의 서버에 대한 stdio 스모크 테스트, 네트워크/API 키 불필요):
npm test라이선스
MIT
Available Tools
23 toolsget_v1_hashtag_infoARead-only
Get a TikTok hashtag (challenge) by name: pass hashtag without #. Use it to get the hashtag id that get_v1_hashtag_medias needs. Live request to TikTok, billed per call. (GET /v1/hashtag/info)
| Name | Required | Description | Default |
|---|---|---|---|
| hashtag | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, so the safety profile is covered. The description adds genuinely new context beyond annotations: it is a live TikTok request, billed per call, and hits GET /v1/hashtag/info — material for cost-aware planning.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short clauses, front-loaded with the core action, then the routing dependency, then the cost/endpoint note. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-param read with no output schema, the description covers input format, the dependency on get_v1_hashtag_medias, and cost. It does not hint at the response payload (e.g., that the hashtag id is returned), a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With one required parameter and 0% schema description coverage, the description carries the burden and does so usefully: it tells the agent to pass the hashtag name without the '#' prefix. It omits the 1-50 length constraint present in the schema, so not a full 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a TikTok hashtag (challenge) by name'), which is clearly distinct from sibling user/media tools like get_v1_media_by_id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: 'Use it to get the hashtag id that get_v1_hashtag_medias needs', naming the dependent sibling and the condition for calling it. No when-not or exclusion guidance is given, so it falls 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.
get_v1_hashtag_mediasARead-only
List videos under a TikTok hashtag, one page per call. Pass the hashtag id (from get_v1_hashtag_info, not the name); count sets the page size (default 30) and cursor pages through. Use get_v2_search to search by free text instead. Live request to TikTok, billed per call. (GET /v1/hashtag/medias)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| count | No | ||
| cursor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), so the bar is lower. The description still adds operationally important context: it is a live request to TikTok, billed per call, and returns a single page driven by cursor. It stops short of describing rate limits, error modes, or the response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences, front-loaded with what the tool does and the id prerequisite, then pagination, then the alternative, then billing/cost. Nothing is redundant and the endpoint is appended as a compact footnote.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paginated read tool with no output schema, the description covers the essentials: source of the id, page sizing, cursor paging, cost, and the sibling alternative. It does not hint at the shape of the returned video objects, which is a minor gap given no output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the schema only carries bare titles, so the description carries the full burden — and it does: `id` must be the hashtag id rather than the name, `count` is the page size (default 30), and `cursor` drives pagination. All three parameters gain meaning absent from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List videos under a TikTok hashtag') plus the per-call granularity ('one page per call'). It is clearly distinguishable from the nearest siblings: get_v1_hashtag_info (hashtag metadata) and get_v2_search (free-text search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite ('Pass the hashtag id (from get_v1_hashtag_info, not the name)') and an explicit alternative with its selecting condition ('Use get_v2_search to search by free text instead'). An agent can route correctly without opening any schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_v1_media_by_idARead-only
Get a TikTok video by numeric video id. Use it when you have the id from another tool; use get_v1_media_by_url when you have a link. Returns the video object; use get_v1_media_comments_by_id for its comments. Live request to TikTok, billed per call. (GET /v1/media/by/id)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely non-structured context: this is a live request to TikTok and it is billed per call, which an agent needs for cost/rate decisions. It does not, however, describe failure modes or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, each with a distinct job (purpose, selection rule, related tool/return, cost), front-loading the identifier requirement before the routing guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers what it returns, which sibling to use instead, which sibling to use next, and the billing/network reality, with no output schema needed since the return is described. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the burden; it characterizes the id as numeric and as coming from another tool, which clarifies the ^\d{19}$ pattern the schema only encodes silently. It stops short of stating the 19-digit format or example, but adds real meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a TikTok video by numeric video id') and immediately differentiates itself from the sibling get_v1_media_by_url. An agent can pick the right tool without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('when you have the id from another tool') and when-to-use-the-alternative ('use get_v1_media_by_url when you have a link'), plus a routing hint to get_v1_media_comments_by_id for comments. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_v1_media_by_urlARead-only
Get a TikTok video by its link. Use it when you have a tiktok.com URL; use get_v1_media_by_id when you already have the numeric video id. Returns the video object; pass its id to the comment tools. Live request to TikTok, billed per call. (GET /v1/media/by/url)
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | A TikTok media link. Accepted forms: 'https://www.tiktok.com/@username/video/7329151448644734213', 'https://www.tiktok.com/@username/photo/7563287743757962503', '/@username/video/7329151448644734213', 'https://vm.tiktok.com/ABCDEfghK/' (also vt.tiktok.com and /t/<code>). A profile, hashtag or non-TikTok link is answered 400. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/destructive, so the safety profile is covered. The description adds genuinely useful behavior beyond annotations: it is a live request to TikTok and is billed per call. It also discloses the downstream workflow (pass the returned id to comment tools), though it doesn't describe result fields or rate/error behavior beyond the schema's 400 note.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero waste. Purpose and sibling routing are front-loaded, followed by workflow, then billing/endpoint metadata.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description states what is returned and how to chain it. Combined with the fully documented param and the safety annotations, this is nearly complete; only concrete return fields or pagination detail are absent, which is minor for a single-resource fetch.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single `url` param already documents accepted link forms and the 400 behavior for non-media links. The description adds no parameter semantics beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get a TikTok video by its link') and immediately distinguishes itself from the sibling get_v1_media_by_id by input type. An agent can route between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the condition that selects this tool ('when you have a tiktok.com URL') and the alternative with its own condition ('use `get_v1_media_by_id` when you already have the numeric video id'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_v1_media_comment_replies_by_idARead-only
Get replies under one comment of a TikTok video, one page per call. Use it to read a thread; use get_v1_media_comments_by_id for the top-level comments. Pass media_id and comment_id (both from the comments tool); count sets the page size and cursor pages through. Live request to TikTok, billed per call. (GET /v1/media/comment/replies/by/id)
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| cursor | No | ||
| media_id | Yes | ||
| comment_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, and open-world. The description adds meaningful context beyond that: one page per call, cursor-based pagination, and that this is a live TikTok request billed per call. Rate limits and error behavior remain unstated, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose, then sibling routing, then parameter roles and the billing caveat. No redundant or filler sentences; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still conveys pagination behavior and per-call billing, which is enough to invoke it correctly. Return-shape specifics are absent but a paged read tool rarely needs them spelled out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the burden, and it does well: media_id and comment_id are sourced from the comments tool, count is the page size, cursor pages through. It omits the 19-digit pattern constraint, but that lives in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Get replies under one comment of a TikTok video.' It explicitly distinguishes itself from the sibling top-level comments tool, so an agent can route correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('read a thread') and names the alternative ('use get_v1_media_comments_by_id for the top-level comments'). It also explains where the required IDs come from (the comments tool), removing ambiguity about prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_v1_media_comments_by_idARead-only
Get comments on a TikTok video, one page per call. Use get_v1_media_comment_replies_by_id for replies under one comment. Pass the video id; count sets the page size (default 30) and cursor pages through. Live request to TikTok, billed per call. (GET /v1/media/comments/by/id)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| count | No | ||
| cursor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and destructiveHint=false, so safety is covered. The description adds genuinely new context: 'Live request to TikTok, billed per call' and one-page-per-call pagination behavior. It stops short of rate-limit or return-shape detail, but the cost/billing disclosure is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action, then sibling routing, then parameters, then the billing caveat, closing with the raw endpoint. Every sentence earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but annotations cover the safety profile and the description covers parameters, pagination, and billing. It is complete enough for correct invocation, though the id format and count bounds are left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the burden, and it largely does: it explains id (video id), count (page size, default 30), and cursor (pages through). It omits the 19-digit id format constraint and any bounds on count, so it does not fully compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get comments on a TikTok video') and immediately distinguishes itself from the sibling that handles replies. An agent can tell it apart from get_v1_media_comment_replies_by_id without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative tool and the condition that selects it ('Use get_v1_media_comment_replies_by_id for replies under one comment'), and explains how to iterate pages via cursor. The routing decision is fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_v1_media_music_download_by_idARead-only
Get a download link for the audio track of a TikTok video, by video id. Returns the file URL and the HTTP headers to send with it; the file itself is not downloaded. Use get_v1_media_music_download_by_url when you have a link and get_v1_media_video_download_by_id for the video file. Live request to TikTok, billed per call. (GET /v1/media/music/download/by/id)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | examples: '7329151448644734213' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly/openWorld/non-destructive; the description adds genuinely new behavioral facts: the response is a URL plus HTTP headers rather than the file, the file is not downloaded, it is a live request to TikTok, and it is billed per call. These are the traits an agent needs before invoking a metered network call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each load-bearing: what it returns, which siblings to use instead, and the billing/live-call caveat. The core purpose is front-loaded and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by explaining exactly what is returned (file URL and the headers to send with it) and what is not (the file itself). For a one-parameter read tool, an agent has everything needed to call and interpret it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'id' parameter already carries a pattern and an example, so the schema does the heavy lifting. The description only restates 'by video id' without adding format or validation meaning beyond the schema, which is the baseline-3 case for full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get), resource (download link for the audio track of a TikTok video) and the key input (by video id). It explicitly differentiates itself from the sibling tools that fetch the video file or take a URL, so an agent can distinguish it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names both alternatives by exact tool name and the condition that selects each: use music_download_by_url when you have a link, and video_download_by_id for the video file. This is explicit when-to-use/when-not guidance rather than implied context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_v1_media_music_download_by_urlARead-only
Get a download link for the audio track of a TikTok video, by the video's URL. Returns the file URL and the HTTP headers to send with it; the file itself is not downloaded. Use get_v1_media_music_download_by_id when you have the video id and get_v1_media_video_download_by_url for the video file. Live request to TikTok, billed per call. (GET /v1/media/music/download/by/url)
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | A TikTok media link. Accepted forms: 'https://www.tiktok.com/@username/video/7329151448644734213', 'https://www.tiktok.com/@username/photo/7563287743757962503', '/@username/video/7329151448644734213', 'https://vm.tiktok.com/ABCDEfghK/' (also vt.tiktok.com and /t/<code>). A profile, hashtag or non-TikTok link is answered 400. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety (readOnlyHint, openWorldHint, destructiveHint). The description adds that it returns a file URL and HTTP headers (not the file itself) and that it's a live billed request. It doesn't mention rate limits, auth needs, or error behavior, but these are minor gaps given the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences: first states purpose and return format, second gives alternatives and billing context. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, return value, alternatives, and billing. No output schema exists, so the description's explanation of what is returned (file URL and headers, not the file) is valuable. Could mention pagination or rate limits, but overall complete for a simple GET tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema itself details accepted URL forms and rejection cases. The description only says 'by the video's URL', adding no syntax or format detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (download link for the audio track of a TikTok video) with clear scope. It names sibling tools get_v1_media_music_download_by_id and get_v1_media_video_download_by_url, so the agent can distinguish it without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use this tool when you have the video's URL and points to the alternative for video id and video file downloads. It also notes billing: live request to TikTok, billed per call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_v1_media_video_download_by_idARead-only
Get a download link for a TikTok video by video id. Returns the file URL and the HTTP headers to send with it; the file itself is not downloaded. watermark (default true) selects the watermarked version. Use get_v1_media_video_download_by_url when you have a link and get_v1_media_music_download_by_id for the audio track only. Live request to TikTok, billed per call. (GET /v1/media/video/download/by/id)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | examples: '7329151448644734213' | |
| watermark | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the description is not carrying the safety burden. It still adds genuinely useful non-obvious context: it returns a URL plus the HTTP headers to send, the file itself is not downloaded, and each call is a live, billed TikTok request. It stops short of describing failure modes or auth/rate-limit specifics, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then return behavior, then parameter note, then sibling routing, then cost. Every sentence earns its place, though the trailing '(GET /v1/media/video/download/by/id)' endpoint restates the name and is mildly redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only fetch with no output schema, the description covers what the tool returns (URL + headers), what it does not do (no file download), the watermark toggle, cost, and sibling selection. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%: `id` is documented with a pattern and example, but `watermark` has no description in the schema. The description fills that gap directly by explaining the default-true behavior and that it 'selects the watermarked version', which is exactly the missing semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope: 'Get a download link for a TikTok video by video id', and explicitly distinguishes itself from the URL variant and the music-track sibling. An agent can tell it apart from get_v1_media_video_download_by_url without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names two alternatives with the exact condition that selects each: 'Use `get_v1_media_video_download_by_url` when you have a link and `get_v1_media_music_download_by_id` for the audio track only.' Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_v1_media_video_download_by_urlARead-only
Get a download link for a TikTok video by its URL. Returns the file URL and the HTTP headers to send with it; the file itself is not downloaded. watermark (default true) selects the watermarked version. Use get_v1_media_video_download_by_id when you have the video id and get_v1_media_music_download_by_url for the audio track only. Live request to TikTok, billed per call. (GET /v1/media/video/download/by/url)
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | A TikTok media link. Accepted forms: 'https://www.tiktok.com/@username/video/7329151448644734213', 'https://www.tiktok.com/@username/photo/7563287743757962503', '/@username/video/7329151448644734213', 'https://vm.tiktok.com/ABCDEfghK/' (also vt.tiktok.com and /t/<code>). A profile, hashtag or non-TikTok link is answered 400. | |
| watermark | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/openWorld/non-destructive, but the description adds valuable beyond-schema context: the return is a file URL plus headers (the file itself is not downloaded), watermark defaults to true, and requests are live and billed per call. This billing and return-format detail is exactly the kind of behavioral insight the annotation set does not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then scoping rules, then routing alternatives, then cost model. Every sentence adds a distinct piece of information with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-param read tool with no output schema, this covers the return shape (URL + headers, file not downloaded), parameter default behavior, sibling routing, and per-call billing. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%. The url parameter is richly documented in the schema itself (accepted forms, 400 behavior), so the description needn't repeat it. The description does add meaning for watermark ('default true' selects the watermarked version), which is not in the schema. Baseline 3 is appropriate given the schema does the heavy lifting on url.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get a download link) and resource (TikTok video by URL), and explicitly distinguishes from siblings get_v1_media_video_download_by_id and get_v1_media_music_download_by_url by naming the condition that selects each.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit alternatives: use by_id when you have the video id, music tool for audio only. Clear when/when-not with no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_v1_user_by_usernameARead-only
Get a TikTok profile by username (without @). Use it first for any account; if it answers 404 ProfileUnavailable, use get_v3_user_by_username, which also returns profiles TikTok does not serve on the web. Returns the user object; take the user's secUid from it for the by-secUid tools. Live request to TikTok, billed per call. (GET /v1/user/by/username)
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, and the description adds real value beyond them: it is a live request, billed per call, may return 404 ProfileUnavailable, and the returned user object carries the secUid needed by the by-secUid tools. That chaining and cost context is exactly what annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all load-bearing: purpose, fallback routing, return/chaining plus cost. The endpoint annotation is appended compactly and nothing is repeated from structured fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description covers the return value ('the user object'), the key field to extract (secUid), the error case, and the cost model. Nothing an agent needs to invoke or chain this call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with 0% schema description coverage, so the description must compensate. It does so meaningfully by specifying the format constraint '(without @)', which the schema's bare string type does not express, though it omits the 2–24 length bounds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a TikTok profile by username') and explicitly distinguishes itself from the sibling get_v3_user_by_username by naming the fallback relationship. An agent can tell the two apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit ordering rule ('Use it first for any account') plus the exact trigger for switching tools ('404 ProfileUnavailable'), naming the alternative. Both when-to-use and when-to-switch are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_v1_user_followers_by_secUidARead-only
List a TikTok user's followers by secUid, one page per call. Use it when you already have the secUid from a profile; use get_v1_user_followers_by_username when you only have a handle. For the next page pass next_page_id from the previous response as page_id; count sets the page size (default 30). Live request to TikTok, billed per call. (GET /v1/user/followers/by/secUid)
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| secUid | Yes | ||
| page_id | No | Use value of field `next_page_id` from response for getting next page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds real behavioral context beyond them: one page per call, live request to TikTok, billed per call, and the default page size. It doesn't mention rate limits, follower ordering, or what happens at the end of pagination, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the primary action and scope, then routing, then pagination mechanics. Every clause carries information and nothing is repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description partially compensates by naming the response field next_page_id and the pagination contract. It stops short of describing the follower record shape or end-of-list behavior, which would fully close the gap for a paged read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description must carry weight, and it does: it defines count as page size with a default of 30 and explains that page_id should be fed from the previous response's next_page_id. Only the secUid format (pattern/length, already in schema) is left unelaborated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('List a TikTok user's followers by secUid'), scopes the behavior ('one page per call'), and names the sibling it is not ('use get_v1_user_followers_by_username when you only have a handle'). An agent can distinguish it from the many other get_v1_user_* siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit trigger ('use it when you already have the secUid from a profile') and an explicit alternative with its own selecting condition. It also explains the pagination workflow (pass next_page_id as page_id), leaving no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_v1_user_followers_by_usernameARead-only
List a TikTok user's followers by username, one page per call. Use it when you have a handle; use get_v1_user_followers_by_secUid when you already have the secUid and get_v1_user_following_by_username for accounts the user follows. For the next page pass next_page_id from the previous response as page_id; count sets the page size (default 30). Live request to TikTok, billed per call. (GET /v1/user/followers/by/username)
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| page_id | No | Use value of field `next_page_id` from response for getting next page | |
| username | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, open-world behavior. The description adds real value beyond them: one page per call, the pagination handoff (next_page_id -> page_id), and that it is a live billed request to TikTok. It stops short of describing rate limits or failure modes, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Roughly three dense sentences, all front-loaded with purpose first, then routing, then pagination and cost. Every sentence carries distinct information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description still conveys the relevant return mechanic (next_page_id for pagination). Combined with the annotations, an agent has enough to invoke and page correctly, though response shape beyond the cursor is unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description must compensate, and it does: it explains page_id chaining from the previous response and defines count as page size with a default of 30. Only username's format is left unstated, which is minor.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List'), resource ('TikTok user's followers'), and lookup key ('by username'). It explicitly differentiates from the secUid variant and the following variant, so an agent can pick it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit selection rule ('use it when you have a handle') and names two alternatives with the conditions that favor them (secUid variant when you already have a secUid; following variant for accounts the user follows). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_v1_user_following_by_secUidARead-only
List accounts a TikTok user follows by secUid, one page per call. Use it when you already have the secUid from a profile; use get_v1_user_following_by_username when you only have a handle. For the next page pass next_page_id from the previous response as page_id; count sets the page size (default 30). Live request to TikTok, billed per call. (GET /v1/user/following/by/secUid)
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| secUid | Yes | ||
| page_id | No | Use value of field `next_page_id` from response for getting next page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and destructiveHint=false, so safety is covered; the description adds genuinely useful context beyond them: it is a live TikTok request billed per call, and it discloses pagination semantics (one page per call, next_page_id chaining). It does not describe rate limits or failure modes, but the added operational context is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tightly packed sentences, front-loaded with purpose and the routing decision, then pagination mechanics and cost, then the endpoint. No filler; every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter read tool with no output schema, the description supplies everything needed: how to identify the target, when to pick this tool over its sibling, how to paginate, and the cost model. Return structure is only partially implied, but the pagination field is called out explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only `page_id` is described), but the description compensates by explaining that `page_id` should carry `next_page_id` from the previous response and that `count` sets page size with default 30. That covers all three parameters, though it adds little about `secUid`'s format beyond the schema's pattern/length constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List accounts a TikTok user follows by `secUid`') with explicit scope, and names the sibling it is not (get_v1_user_following_by_username) so an agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear when-to-use condition ('when you already have the `secUid` from a profile') and names the exact alternative plus the condition that selects it ('when you only have a handle'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_v1_user_following_by_usernameARead-only
List accounts a TikTok user follows by username, one page per call. Use it when you have a handle; use get_v1_user_following_by_secUid when you already have the secUid and get_v1_user_followers_by_username for the user's followers. For the next page pass next_page_id from the previous response as page_id; count sets the page size (default 30). Live request to TikTok, billed per call. (GET /v1/user/following/by/username)
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| page_id | No | Use value of field `next_page_id` from response for getting next page | |
| username | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, so safety is covered; the description adds real behavioral context beyond them — that each call is a live billed TikTok request and that pagination is one page per call with next_page_id chaining. It stops short of describing the response payload shape (per-account fields), which is the only notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose then routing then pagination mechanics, with essentially no filler; the trailing '(GET /v1/user/following/by/username)' is mild redundancy against the tool name but harmless. Dense but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly carries the pagination contract and the next_page_id handoff, which is the main thing an agent needs to iterate pages. It is complete enough to call correctly, though it never hints at what fields come back per followed account.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (count and username undocumented in-schema), and the description compensates: it defines count as page size with default 30 and explains the page_id/next_page_id continuation contract. Username's format constraints (2-24 chars) are left to the schema only, keeping this below a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List accounts a TikTok user follows by username') plus the paging granularity ('one page per call'). It explicitly names the sibling tools it is not (secUid variant, followers variant), so an agent can disambiguate without reading schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit selection rule: use this when you have a handle, use get_v1_user_following_by_secUid when you have the secUid, and get_v1_user_followers_by_username for followers. When-to-use and alternatives are both covered with no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_v1_user_playlists_by_secUidARead-only
List a TikTok user's playlists by secUid, one page per call. Use it when you already have the secUid from a profile; use get_v1_user_playlists_by_username when you only have a handle. For the next page pass next_page_id from the previous response as page_id; count sets the page size (default 30). Live request to TikTok, billed per call. (GET /v1/user/playlists/by/secUid)
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| secUid | Yes | ||
| page_id | No | Use value of field `next_page_id` from response for getting next page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, open-world), and the description adds non-obvious operational context: it is a live billed request to TikTok and returns one page per call. It omits rate-limit/error behavior, so it falls just short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core purpose, followed by sibling routing, pagination mechanics, and cost/endpoint metadata. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paginated list tool with no output schema, the description supplies the missing return-value contract (the `next_page_id` field) and the billing/live-request caveat, so an agent has everything needed to call and iterate correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (just `page_id`), so the description compensates well: it explains where `secUid` comes from and, crucially, that `next_page_id` from the prior response must be passed as `page_id`, plus the `count` default of 30. Minor gap: no mention of the `secUid` length/pattern constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (a TikTok user's playlists) scoped by `secUid`, and explicitly contrasts itself with `get_v1_user_playlists_by_username`, letting an agent distinguish it from the many sibling user endpoints without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool ('when you already have the `secUid` from a profile') and names the exact alternative for the other case ('when you only have a handle'). It also gives concrete pagination guidance for the next call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_v1_user_playlists_by_usernameARead-only
List a TikTok user's playlists by username, one page per call. Use it when you have a handle; use get_v1_user_playlists_by_secUid when you already have the secUid, and get_v2_user_medias_by_secUid for all of the user's videos. For the next page pass next_page_id from the previous response as page_id; count sets the page size (default 30). Live request to TikTok, billed per call. (GET /v1/user/playlists/by/username)
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| page_id | No | Use value of field `next_page_id` from response for getting next page | |
| username | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, so the safety profile is covered. The description adds non-obvious operational context: it is a live TikTok request billed per call, and it advances one page per invocation via `next_page_id` -> `page_id`. Auth requirements and rate limits are not mentioned, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense paragraph with purpose and routing front-loaded, followed by pagination mechanics, cost note, and the raw endpoint as a trailing reference. Every sentence carries distinct information; nothing is restated from the name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description supplies the one return detail an agent needs (the `next_page_id` field for paging), plus cost and routing context. Missing are return-shape basics beyond pagination and any auth/rate-limit notes, but for a 3-param read-only list tool this is close to complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only `page_id` is documented), so the description must compensate, and it does: it explains the `next_page_id`->`page_id` handoff and that `count` sets page size with a default of 30. It does not mention the username length bounds (2-24) that the schema enforces, so a small gap remains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope ('List a TikTok user's playlists by username, one page per call') and immediately disambiguates from two named siblings covering the secUid variant and the user-videos endpoint. An agent can select this tool without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing rules: use this when you have a handle, use get_v1_user_playlists_by_secUid when you have a secUid, use get_v2_user_medias_by_secUid for videos. It also states the pagination procedure and the `count` default, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_v1_user_suggested_by_secUidARead-only
List the accounts TikTok suggests as related to a user, by secUid, one page per call. Use it when you already have the secUid from a profile; use get_v1_user_suggested_by_username when you only have a handle. For the next page pass next_page_id from the previous response as page_id; count sets the page size (default 30). Live request to TikTok, billed per call. (GET /v1/user/suggested/by/secUid)
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| secUid | Yes | ||
| page_id | No | Use value of field `next_page_id` from response for getting next page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, destructiveHint=false) and openness (openWorldHint), so the description's added value is the billing/live-call disclosure ('Live request to TikTok, billed per call') and the one-page-per-call pagination behavior. It does not describe rate limits or failure modes, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences: purpose, sibling routing, pagination mechanics, cost. Front-loaded with the core operation and zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still tells the agent how to paginate (read `next_page_id` from the response) and that the call is billed. Combined with annotations covering safety, an agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, so the description carries real weight: it explains `count` sets page size (default 30) and that `page_id` should be fed the previous response's `next_page_id`. The `secUid` format/length constraints remain schema-only, but the description meaningfully supplements the undocumented params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource (TikTok suggested/related accounts) scoped by `secUid`, and explicitly distinguishes itself from the sibling `get_v1_user_suggested_by_username` by identifier type. An agent can select it without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit condition for use ('when you already have the `secUid` from a profile') and names the alternative tool plus the condition that selects it (only a handle). No inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_v1_user_suggested_by_usernameARead-only
List the accounts TikTok suggests as related to a user, by username, one page per call. Use it to find similar accounts when you have a handle; use get_v1_user_suggested_by_secUid when you already have the secUid and get_v2_search to search by keyword instead. For the next page pass next_page_id from the previous response as page_id; count sets the page size (default 30). Live request to TikTok, billed per call. (GET /v1/user/suggested/by/username)
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| page_id | No | Use value of field `next_page_id` from response for getting next page | |
| username | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: live request to TikTok, billed per call, and the pagination contract (one page per call, next_page_id flows into page_id).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences: purpose first, alternatives second, operational details third. Zero filler, and the distinguishing information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still conveys the pagination return contract (next_page_id), cost model, and endpoint path. Everything an agent needs to call and chain this tool is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only page_id is described in the schema), so the description must compensate. It clarifies page_id's role via the pagination flow and notes count sets page size with default 30, adding practical meaning beyond the bare integer type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the accounts TikTok suggests as related to a user') with the scoping dimension (by username) that separates it from the secUid variant. An agent can distinguish it from get_v1_user_suggested_by_secUid without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes to alternatives with conditions: use get_v1_user_suggested_by_secUid when you already have the secUid, and get_v2_search for keyword search. This is the when-to-use/when-not guidance done properly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_v2_searchARead-only
Search TikTok by keyword, one page per call. Use it when you have a topic rather than a handle, link or id; use get_v1_user_by_username for an exact handle and get_v1_hashtag_info for a hashtag. For the next page pass next_page_id from the previous response as page_id; offset is superseded and cannot page on its own. Live request to TikTok, billed per call. (GET /v2/search)
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| offset | No | Superseded by page_id. On its own it cannot page: results past the first page belong to a search this parameter does not name. | |
| keyword | Yes | ||
| page_id | No | Use value of field `next_page_id` from response for getting next page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and non-destructive, so the safety profile is covered. The description adds context annotations cannot: it is a live, per-call billed request against TikTok, and it discloses the paging contract (next_page_id -> page_id) and that offset is superseded. It stops short of describing result shape or failure/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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, each doing distinct work: routing, pagination mechanics, and cost. The disambiguation clause is front-loaded right after the purpose statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-output-schema, read-only search tool, the description covers routing, pagination, and cost — the main things an agent needs. Minor gaps remain on result volume/limits and what a page contains, but nothing blocks correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, so the description must carry weight, and it does for the tricky params: it explains the page_id/offset relationship and that offset cannot page alone. `count` (default 20, max 30) is left entirely to the schema with no textual elaboration, which keeps it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search TikTok by keyword') plus a scope constraint ('one page per call'), and names the sibling resources it is not for (handle, link, id, hashtag). An agent can distinguish it from get_v1_hashtag_info and get_v1_user_by_username without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('when you have a topic rather than a handle, link or id') paired with named alternatives for the other cases. It also gives forward guidance on pagination flow and deprecation of `offset`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_v2_user_likes_by_secUidARead-only
List videos a TikTok user has liked, one page per call. Use get_v2_user_medias_by_secUid for the user's own videos. Pass the user's secUid (from the profile tool); count sets the page size and cursor pages through. Live request to TikTok, billed per call. (GET /v2/user/likes/by/secUid)
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| cursor | No | ||
| secUid | Yes | User sec_uid |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/openWorld/non-destructive, and the description adds material context beyond them: 'one page per call', 'Live request to TikTok, billed per call'. Cost and pagination semantics are exactly the kind of thing annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the resource, then sibling routing, then parameter semantics, then cost/pagination, then the raw endpoint. Every sentence carries distinct information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and low schema coverage, the description supplies pagination mechanics and billing, which is what an agent needs to call this safely. Return shape is not described, but the pagination note implies the page structure adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only secUid is documented in the schema), so the description must compensate — and it does: count = page size, cursor = page-through mechanism, secUid sourced from the profile tool. It omits the count max of 50, which the schema carries.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List videos a TikTok user has liked') and explicitly distinguishes itself from the sibling get_v2_user_medias_by_secUid. An agent can pick between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative tool and the condition that selects it ('for the user's own videos'), and tells the agent where secUid comes from. No explicit when-not-use guidance beyond the sibling pointer, but the routing is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_v2_user_medias_by_secUidARead-only
List a TikTok user's videos, one page per call. Use it to read an account's content; use get_v2_user_likes_by_secUid for videos the user liked and get_v1_media_by_id for one video's details. Pass the user's secUid (from the profile tool); count sets the page size and max_cursor pages through. Live request to TikTok, billed per call. (GET /v2/user/medias/by/secUid)
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| secUid | Yes | User sec_uid | |
| max_cursor | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false. The description adds genuinely new operational context beyond them: it is a live request to TikTok billed per call, and results are paginated one page per call via `max_cursor`. It does not cover rate limits, auth requirements, or quota failure behavior, so it falls short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences, front-loaded with the core action before routing guidance and parameter notes. No filler or repetition of the title, and the trailing endpoint notation is a useful compact reference.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paginated read tool with no output schema, the description covers purpose, routing, pagination mechanics, and cost, with annotations carrying the safety profile. It doesn't characterize the returned video fields, but that is a minor gap for a list endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (`count` and `max_cursor` have no schema descriptions, `secUid` just says 'User sec_uid'), so the description must compensate. It does: it explains that `secUid` comes from the profile tool, that `count` sets page size, and that `max_cursor` pages through results. It omits the count max of 50 and cursor format details, which keeps it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource and scope: 'List a TikTok user's videos, one page per call.' It explicitly distinguishes itself from the two nearest siblings (`get_v2_user_likes_by_secUid` for liked videos, `get_v1_media_by_id` for a single video), so an agent can route without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States when to use it ('read an account's content') and names both alternatives with the condition that selects each, including where to obtain the required `secUid` (from the profile tool). Nothing about tool selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_v3_user_by_usernameARead-only
Get a TikTok profile by username, including profiles TikTok does not serve on the web (the ones get_v1_user_by_username answers with 404 ProfileUnavailable). Use it as the fallback when the v1 tool fails; the response has the same shape. Live request to TikTok, billed as 1 request per call and 2-3 for a restored profile. (GET /v3/user/by/username)
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, but the description adds materially new context: it is a live TikTok request, billed at 1 request per call and 2-3 for a restored profile, and the response shape matches the v1 tool. Cost/rate behavior is exactly the kind of trait annotations cannot express. It stops short of describing latency or partial-failure handling, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the capability and the sibling routing, then cost and endpoint path. Every sentence carries distinct information with no repetition of the tool name or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-param read tool with no output schema, the description covers purpose, fallback trigger, cost, and endpoint. The one gap is that 'the response has the same shape' defers the return structure to a sibling rather than stating it, which mildly burdens the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One parameter with 0% schema description coverage; the schema only supplies min/max length. The description implies a username via the tool name and the GET path, but adds no format, casing, or '@'-prefix guidance beyond what the schema already shows.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a TikTok profile by username') and explicitly scopes it against the sibling get_v1_user_by_username, naming the case the v1 tool cannot serve (404 ProfileUnavailable). An agent can distinguish this tool from its nearest sibling without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use it as the fallback when the v1 tool fails' and names the exact failure condition that selects it. The when-to-use rule and the alternative are both stated, leaving nothing to inference.
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.
7 tool updates
v1.1.1- Changed
get_v1_media_by_url1 field changed- changed
Input schema / properties / url / descriptionPrevious value: -"examples: 'https://www.tiktok.com/@username/video/1023456772335574271' or '/@username/video/1023456772335574271'or 'https://vt.tiktok.com/ABCDEfghK/'"New value: +"A TikTok media link. Accepted forms: 'https://www.tiktok.com/@username/video/7329151448644734213', 'https://www.tiktok.com/@username/photo/7563287743757962503', '/@username/video/7329151448644734213', 'https://vm.tiktok.com/ABCDEfghK/' (also vt.tiktok.com and /t/<code>). A profile, hashtag or non-TikTok link is answered 400."
- Changed
get_v1_media_music_download_by_url1 field changed- changed
Input schema / properties / url / descriptionPrevious value: -"examples: 'https://www.tiktok.com/@username/video/7329151448644734213' or '/@username/video/7329151448644734213'or 'https://vt.tiktok.com/ABCDEfghK/'"New value: +"A TikTok media link. Accepted forms: 'https://www.tiktok.com/@username/video/7329151448644734213', 'https://www.tiktok.com/@username/photo/7563287743757962503', '/@username/video/7329151448644734213', 'https://vm.tiktok.com/ABCDEfghK/' (also vt.tiktok.com and /t/<code>). A profile, hashtag or non-TikTok link is answered 400."
- Changed
get_v1_media_video_download_by_url1 field changed- changed
Input schema / properties / url / descriptionPrevious value: -"examples: 'https://www.tiktok.com/@username/video/7329151448644734213' or '/@username/video/7329151448644734213'or 'https://vt.tiktok.com/ABCDEfghK/'"New value: +"A TikTok media link. Accepted forms: 'https://www.tiktok.com/@username/video/7329151448644734213', 'https://www.tiktok.com/@username/photo/7563287743757962503', '/@username/video/7329151448644734213', 'https://vm.tiktok.com/ABCDEfghK/' (also vt.tiktok.com and /t/<code>). A profile, hashtag or non-TikTok link is answered 400."
- Added
get_v2_search - Added
get_v2_user_likes_by_secUid - Added
get_v2_user_medias_by_secUid - Added
get_v3_user_by_username
19 tool updates
v1.0.2- First observed
get_v1_hashtag_info - First observed
get_v1_hashtag_medias - First observed
get_v1_media_by_id - First observed
get_v1_media_by_url - First observed
get_v1_media_comment_replies_by_id - First observed
get_v1_media_comments_by_id - First observed
get_v1_media_music_download_by_id - First observed
get_v1_media_music_download_by_url - First observed
get_v1_media_video_download_by_id - First observed
get_v1_media_video_download_by_url - First observed
get_v1_user_by_username - First observed
get_v1_user_followers_by_secUid - First observed
get_v1_user_followers_by_username - First observed
get_v1_user_following_by_secUid - First observed
get_v1_user_following_by_username - First observed
get_v1_user_playlists_by_secUid - First observed
get_v1_user_playlists_by_username - First observed
get_v1_user_suggested_by_secUid - First observed
get_v1_user_suggested_by_username
TDQS
Scored across 23 tools
Tools are mostly distinct by resource and identifier type (username vs secUid, id vs url), and descriptions explicitly cross-reference alternatives. However, the many near-duplicate pairs (e.g. following by username vs secUid, download by id vs url) require careful reading to avoid misselection.
All tool names follow a highly consistent snake_case pattern: get_<version>_<resource>_<action>_<qualifier>. The version prefixes (v1, v2, v3) are the only variation and clearly reflect API endpoints.
23 tools is on the heavy side for a single MCP server, falling into the 16-25 borderline range. While each tool maps to a distinct TikTok API endpoint, the set feels large and could overwhelm an agent without strong routing guidance.
The surface covers user profiles, relationships, playlists, media, downloads, comments, hashtags, and search well. Minor gaps exist, such as no direct user lookup by secUid and no trending/live endpoints, but core read-only TikTok workflows are supported.
Maintenance
Related MCP Connectors
Hosted MCP server for DataLikers — Instagram & TikTok data API. 51 tools: Instagram user search by demographics (gender/age/race/country/city), profiles, bulk lookup, engagement, posts & reels, comments, hashtags, locations, stories, highlights, music, business accounts, top users; TikTok users, videos, comments, hashtags, playlists and top charts. Streamable HTTP, Bearer API key. Free tier: 100 requests on signup at https://datalikers.com/p/1by27bwg
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for HikerAPI — auto-generates 100+ Instagram tools (profiles, posts, reels, stories, comments, hashtags, locations) from the live OpenAPI spec. Local stdio via npx -y hikerapi-mcp, requires only HIKERAPI_KEY.4463 npm8MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for DataLikers — 51 tools for Instagram & TikTok data: Instagram user search by demographics (gender/age/race/country/city), profiles, engagement, posts, comments, hashtags, locations, stories, business accounts; TikTok users, videos, comments, hashtags, playlists. Local stdio via npx -y datalikers-mcp, requires only DATALIKERS_API_KEY.13 npm9MIT

CutPro MCPofficial
AlicenseNot gradedqualityCmaintenanceMCP server exposing the full CutPro v1 API as 34 tools for AI clients — analyze videos, submit clipping jobs, manage clips, render, and publish posts. Supports stdio, Streamable HTTP, and OAuth 2.1.251 npm2MIT- AlicenseNot gradedqualityDmaintenanceAn MCP server that exposes FortiCNAPP (formerly Lacework) API 2.0 operations as typed, auth-aware tools generated from the API spec at startup, supporting both local stdio and remote Streamable HTTP transports.MIT