mcp-tiktok-brand-presence-mapper
MCP ブランド存在アフィールド上? Actually the expected: we should output shape. So: we should translate. So: we kind. So: we put. So: we write. So: we're. So, okay. We have to translate all. We'll do it.
Note: "MCP server" etc should be kept. Actually product names etc keep. So "TikTok Brand Presence Mapper MCP Server" keep as is. But we can translate? The instruction says product names keep verbatim. So "TikTok Brand Presence Mapper MCP Server" keep. But we should translate the prose. We'll do.
We have tables. We'll translate cell text but keep code spans etc.
Let's produce.
But careful: The first line is "# TikTok Brand Presence Mapper MCP Server" - it's a heading, but product name, keep as is? It is a product name. We can keep as is. However maybe we should translate "MCP Server" but it's a product name. Since it's the title, we keep.
Also "Mamba Labs" is organization - keep.
We'll translate everything else.
Let's write.
We'll translate "Smithery" badges - keep as is.
We'll translate links text? The link text is "Smithery" etc. Actually badges have text like "Smithery" - we should keep the link text as is because it's a brand. But we can keep.
We'll translate "MCP server for the Mamba Labs TikTok Brand Presence Mapper actor on Apify." -> "MCPサーバー、Mamba LabsのTikTok Brand Presence Mapperアクター(Apify上)用。" But careful.
We'll go step by step.
First heading is a title, keep.
Then badges - we'll keep entire HTML anchors as is? They are raw HTML. We must translate text content only. But the text content is "Smithery" etc. That's a brand, so keep.
Then blank line.
Translate "MCP server for the Mamba Labs TikTok Brand Presence Mapper actor on Apify.
Resolve a TikTok handle or a company domain to the brand account with follower, like and video counts."
Let's translate:
"MCP サーバー - Mamba Labs の TikTok Brand Presence Mapper アクター(Apify 上)用です。
TikTok のハンドル名または企業ドメインをブランドアカウントに解決し、フォロワー数・いいね数・動画数を取得します。"
But need to be careful with line breaks. We'll preserve structure.
Actually the input is:
"# TikTok Brand Presence Mapper MCP Server
[badges...]
MCP server for the Mamba Labs TikTok Brand Presence Mapper actor on Apify.
Resolve a TikTok handle or a company domain to the brand account with follower, like and video counts.
What it does
..."
We'll translate accordingly.
Let's produce complete translation.
We'll keep the GXP1 placeholder as is (it's in a paragraph? Actually "GXP1" appears alone? It's in the line "GXP1" - that is a placeholder, keep.
We'll translate "Quick start" -> "クイックスタート" etc.
Let's do.
Important: The instruction says preserve structure exactly. So we need to keep all headings, list markers, etc. We'll translate text.
We'll write translation. Given length, I'll output.
Let's start.
TikTok Brand Presence Mapper MCP Server
[badges are raw HTML, keep as is, but we need to output them exactly]
Actually the badges are in the input as raw HTML. We should output them as they are, but we can copy them exactly. We'll do.
So first lines:
TikTok Brand Presence Mapper MCP Server
Then blank line.
Now translate the following:
MCP server for the Mamba Labs TikTok Brand Presence Mapper actor on Apify.
-> MCP サーバー - Mamba Labs の TikTok Brand Presence Mapper アクター(Apify 上)用。
Resolve a TikTok handle or a company domain to the brand account with follower, like and video counts.
-> TikTok のハンドル名または企業ドメインをブランドアカウントに解決し、フォロワー数・いいね数・動画数を取得します。
Then blank line.
Related MCP server: Company Identity Resolver MCP Server
What it does
-> ## 機能
Then paragraph:
Resolve a TikTok handle, or a company domain, to that brand's official TikTok account. Returns follower, following, like and video counts, verification status, display name, bio and the account's outbound bio link, as one flat Clay ready row. Counts above roughly ten thousand are rounded by TikTok and the row flags that. A guessed account that fails the identity check is reported as identity_mismatch with no counts rather than being returned as the company's. Read only; requires an APIFY_TOKEN and consumes Apify credits per call.
We need to keep identity\_mismatch as code? Actually it is in backticks? It says identity_mismatch in the text? It's identity\_mismatch? Let's look at input: "reported as identity_mismatch" - It's not in backticks? Actually it is identity\_mismatch? In the original text: "reported as identity_mismatch" - In Markdown, backslashes? But it's not code. However we should keep the exact token as is? The instruction says keep package/module/function names etc. identity_mismatch is a status value, likely code. But it appears without backticks in the input. We should keep it verbatim as identity_mismatch? Actually it is identity\_mismatch with backslash? Let's see: In the input line: "reported as identity_mismatch" - there is a backslash before underscore? That may be escaping for Markdown. Actually in Markdown, underscore inside word may be escaped. But we should keep the exact text? Probably it's intended as identity_mismatch (code). The original shows identity\_mismatch but that's Markdown escaping. In translation we can keep identity\_mismatch? But we should preserve the text exactly? The instruction says keep inline code (...) verbatim. This is not in inline code, but it is a token. We should probably keep it as identity_mismatch without the backslash? Actually the source has identity\_mismatch - if we output exactly that, it's fine. But we might want to translate around it. I'll keep it as identity_mismatch (without backslash) but we need to preserve. Actually in the source, the backslash is there. But in Markdown rendering, it's an escape. The instruction says preserve structure exactly, but text content can be translated. For token names, keep verbatim. So we can keep identity_mismatch or identity\_mismatch? The "verbatim" means exactly as it appears. So we should keep identity\_mismatch (with backslash). But in the translated sentence we can put that.
We'll translate:
"TikTok のハンドル名または企業ドメインを、そのブランドの公式 TikTok アカウントに解決します。フォロワー数、フォロー中、いいね数、動画数、認証ステータス、表示名、自己紹介、アカウントの外部リンクを、Clay でそのまま使える 1 行のフラットな形式で返します。約 1 万以上のカウントは TikTok 側で丸められ、その行にはその旨がフラグ付けされます。本人確認を通過できない推測アカウントは、会社のアカウントとして返されず、identity\_mismatch として件数なしで報告されます。読み取り専用で、APIFY\_TOKEN が必要で、呼び出しごとに Apify のクレジットを消費します。"
But note "APIFY_TOKEN" - it's a token, so keep as is. We'll keep.
Then ## Quick start
-> ## クイックスタート
Then "Add this to your MCP client configuration:" -> "これをあなたの MCP クライアント設定に追加します:"
Then "GXP1" keep as is.
Then ## Prerequisites -> ## 前提条件
Then bullet list:
Node.js 18 or newer -> * Node.js 18 以上
An Apify API token from console.apify.com/account/integrations -> * console.apify.com/account/integrations から取得した Apify API トークン
Need to keep link as is.
Then paragraph:
The actor is pay per event and consumes Apify credits per call. Pricing is on the actor page.
Translation:
このアクターはイベントごとの従量課金で、呼び出しごとに Apify クレジットを消費します。料金は アクターページ にあります。
But keep the line break? The input has "Pricing is on the\n[actor page]..." So we can put line break similarly.
Example prompts -> ## 使用例のプロンプト
But better "プロンプト例". I'll use "## プロンプト例"
Then bullets:
"How many TikTok followers does Gymshark have?" -> * "Gymshark には TikTok のフォロワーが何人いますか?"
"Find the TikTok account for allbirds.com and tell me if it is verified." -> * "allbirds.com の TikTok アカウントを見つけて、認証されているかどうか教えてください。"
"Check whether patagonia.com has a TikTok presence at all." -> * "patagonia.com に TikTok のプレゼンスがあるかどうかを確認してください。"
Tool and inputs -> ## ツールと入力
Then "Tool: map_tiktok_brand_presence" -> "ツール: map_tiktok_brand_presence"
Then table:
Input | Type | Meaning |
| string | The TikTok handle, with or without the leading @, for example shopify. This is the PRIMARY input: only 4 of 14 B2B homepages declare a TikTok link, so |
| string | Bare company domain, for example shopify.com. Used to FIND the handle when you do not have one, and to identity check a handle that discovery guessed. |
| string | Optional. Improves search accuracy and is what the identity gate checks a discovered account against. |
| boolean | When "true" (default) the profile page is fetched and the counts are extracted. Set "false" to resolve the profile URL only, which is cheaper and need |
| boolean | When "false" (default) a successful lookup is cached for seven days and reused. Set "true" to force a fresh fetch. Sent as a string for Clay compatibi |
| boolean | TikTok answers most requests over cheap datacenter routing and blocks a minority with a bot detection page. When "true" (default) a blocked fetch is r |
We need to translate the "Meaning" column, but keep the code spans. Also note the table rows have truncated text? Actually the original has truncated due to line length? But we should preserve the structure. We'll translate the text as is.
Let's translate each row:
Row for handle:
The TikTok handle, with or without the leading @, for example shopify. This is the PRIMARY input: only 4 of 14 B2B homepages declare a TikTok link, so
-> TikTok のハンドル名。先頭の @ はあってもなくてもかまいません。例: shopify。これが PRIMARY 入力です。14 件中 4 件の B2B ホームページしか TikTok リンクを宣言していないため、
But it seems truncated at "so" - likely the source is truncated in the table? Actually the table cell might continue? But in the input it ends with "so" - so we can just translate that.
Row for company_domain:
Bare company domain, for example shopify.com. Used to FIND the handle when you do not have one, and to identity check a handle that discovery guessed.
-> 会社のベアードメイン。例: shopify.com。ハンドル名を持っていないときの検索に使用し、Discovery が推測したハンドル名の本人確認にも使用します。
But "identity check" – we can use "同一性チェック".
Row for company_name:
Optional. Improves search accuracy and is what the identity gate checks a discovered account against.
-> 任意です。検索精度を高め、Identity gate が発見されたアカウントを照合する基準です。
But keep "identity gate" maybe as is? It's not code, but we can translate? Actually it's a term. We'll keep "identity gate" as is? Maybe translate to "ID ゲート" but better keep. Since it's a concept. We'll keep "identity gate" as is? Could be "アイデンティティゲート". But we'll keep.
Row for includeFollowerCounts:
When "true" (default) the profile page is fetched and the counts are extracted. Set "false" to resolve the profile URL only, which is cheaper and need
-> "true"(デフォルト)の場合、プロフィールページを取得してカウントを抽出します。 "false" にするとプロフィール URL の解決のみを行い、より安価で、必要に応じて
Again truncated.
Row for skipCache:
When "false" (default) a successful lookup is cached for seven days and reused. Set "true" to force a fresh fetch. Sent as a string for Clay compatibi
-> "false"(デフォルト)の場合、成功したルックアップは 7 日間キャッシュされ再利用されます。 "true" にすると強制的に新しいフェッチを行います。Clay 互換性のため文字列として送信されます。
Row for escalateOnBlock:
TikTok answers most requests over cheap datacenter routing and blocks a minority with a bot detection page. When "true" (default) a blocked fetch is r
-> TikTok はほとんどのリクエストを安価なデータセンタールーティングで応答しますが、一部はボット検出ページでブロックします。 "true"(デフォルト)の場合、ブロックされたフェッチは r
Again truncated. Keep as is.
Reading the output -> ## 出力の読み方
Then paragraph:
Every row carries a per platform _status field, and it is the field to read
first. The vocabulary is the same across the whole Mamba Labs social family:
-> すべての行にはプラットフォームごとの _status フィールドがあり、最初に読むべきフィールドです。語彙は Mamba Labs のソーシャルファミリー全体で同じです:
Then table:
Status | Meaning |
| fetched and parsed, the value is there |
| we looked and there is no such profile |
| the profile exists and the value is not on the wire to us |
| the platform refused us, worth retrying later |
| we found a real profile and it belongs to someone else |
| you did not ask for this platform |
Note: The first column has code spans. Keep them. Translate meaning column:
ok: 取得・解析済み、値ありnot_found: 検索したが該当プロフィールなしnot_extractable: プロフィールは存在するが、値が取得できないblocked: プラットフォームに拒否された。後で再試行する価値ありidentity_mismatch: 実際のプロフィールを見つけたが、それは他人のものskipped: このプラットフォームを要求していない
Then paragraph:
false and null are never interchangeable. false means we looked and the
answer is no. null means we could not look. If you filter for companies with no
presence, filter on false, because null rows are unknown rather than absent.
-> false と null は決して同じ意味ではありません。 false は検索した結果「いいえ」という意味です。 null は検索できなかったことを意味します。プレゼンスがない企業でフィルタする場合は false でフィルタしてください。 null の行は不在ではなく不明だからです。
Full actor documentation
-> ## アクター完全ドキュメント
Then link: apify.com/mambalabs/tiktok-brand-presence-mapper
Keep link as is.
Mamba Labs GTM Suite
-> ## Mamba Labs GTM Suite
(Product name keep? It's a suite name, keep)
Then paragraph:
Mamba Labs builds a fleet of GTM enrichment actors that share one flat, Clay
ready output convention, so their rows join on company_domain with no cleaning
step. Full fleet: apify.com/mambalabs
-> Mamba Labs は、フラットな Clay 対応出力形式を共有する GTM エンリッチメントアクター群を開発しています。 そのため、行はクリーニングなしで company_domain で結合できます。 全アクター群: apify.com/mambalabs
License
-> ## ライセンス
Then "MIT" -> "MIT" (keep)
Now we need to output the whole thing with exact structure.
Let's compile.
Note: There is a blank line between heading and badges? In the input there is a blank line after heading? Actually:
"# TikTok Brand Presence Mapper MCP Server
[![..."] ..."
So we'll put a blank line.
After badges there is a blank line then "MCP server ..."
We'll do.
Also note there are backticks and escapes. We'll preserve.
Let's write the translation. We'll ensure no extra commentary.
We'll produce final.}
Available Tools
1 toolmap_tiktok_brand_presenceMap TikTok Brand PresenceARead-onlyIdempotent
Resolve a TikTok handle, or a company domain, to that brand's official TikTok account. Returns follower, following, like and video counts, verification status, display name, bio and the account's outbound bio link, as one flat Clay ready row. Counts above roughly ten thousand are rounded by TikTok and the row flags that. A guessed account that fails the identity check is reported as identity_mismatch with no counts rather than being returned as the company's. Read only; requires an APIFY_TOKEN and consumes Apify credits per call.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | No | The TikTok handle, with or without the leading @, for example shopify. This is the PRIMARY input: only 4 of 14 B2B homepages declare a TikTok link, so supplying the handle is both cheaper and far more reliable than asking the actor to find it. | |
| skipCache | No | When "false" (default) a successful lookup is cached for seven days and reused. Set "true" to force a fresh fetch. Sent as a string for Clay compatibility. | |
| company_name | No | Optional. Improves search accuracy and is what the identity gate checks a discovered account against. | |
| company_domain | No | Bare company domain, for example shopify.com. Used to FIND the handle when you do not have one, and to identity check a handle that discovery guessed. Supplying both is the best case. | |
| escalateOnBlock | No | TikTok answers most requests over cheap datacenter routing and blocks a minority with a bot detection page. When "true" (default) a blocked fetch is retried once over residential, which recovers most of them at a higher cost per recovered row. Set "false" to accept the block and return status blocked. Sent as a string for Clay compatibility. | |
| includeFollowerCounts | No | When "true" (default) the profile page is fetched and the counts are extracted. Set "false" to resolve the profile URL only, which is cheaper and needs no proxy. Sent as a string for Clay compatibility. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral disclosures beyond the annotations: TikTok rounds counts above roughly ten thousand and the row flags that; a failed identity check surfaces as identity_mismatch with zero counts rather than silently returning bad data; the escalateOnBlock retry semantic reveals the tool can transition to residential routing. It also names upstream behavior ('TikTok answers most requests over cheap datacenter routing') that contextualizes the blocked status. The 'Read only' claim is consistent with readOnlyHint=true; no contradiction.
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?
At roughly 105 words, the main description is dense but every clause earns its place: intent, output shape, rounding caveat, identity-failure semantics, and cost warning all load in sequence. It front-loads the core action before edge cases. A half-point off for the CSV-like return field list ('follower, following, like and video counts...') which could be trimmed, but that is minor — structure fidelity is high and the most important behavioral caveat (rounding) comes early.
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 mutation-adjacent tool with six parameters, zero required, no output schema, and no siblings, the description covers all the bases: it explains the return payload (counts, verification, bio, link), the two error/edge statuses (identity_mismatch, blocked), the rounding edge case, the read-only safety profile, and the cost implication. With no output schema present, the description's inventory of returned fields is what makes the tool callable without a single round-trip to the API. The only trivia an agent can't know is the exact JSON shape of the row — immaterial when Clay is the sink.
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%, so the baseline of 3 applies. The parameter descriptions themselves are exemplary — they explain tone (skipCache serialized as a string for Clay), priming (handle is PRIMARY), and failure modes (blocked on escalation). However, the main description itself adds no parameter-level meaning; it focuses on return shape and error states. No deduction needed, but also no bonus: the description correctly leaves the parameter documentation to the schema where it already exists at 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?
The description opens with a specific verb+resource pairing — "Resolve a TikTok handle, or a company domain, to that brand's official TikTok account" — and immediately enumerates the exact deliverable fields (follower counts, verification status, bio, outbound link). It goes far beyond a restatement of the tool name, and the identity-mismatch sentence further disambiguates what the tool is (an identity-verified resolver, not a fuzzy lookup). Even without sibling tools to distinguish from, nothing about the core purpose is left to inference.
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?
The description supplies clear operational context: it is read-only, requires an APIFY_TOKEN, and consumes credits per call. The parameter docs add routing guidance about preferring handle over domain discovery ("only 4 of 14 B2B homepages declare a TikTok link") and when to flip escalateOnBlock or includeFollowerCounts. It lacks an explicit 'use alternative X instead' statement, but with no siblings that exclusion is legally unnecessary; a small deduction for the cost/intent guidance being spread across parameters rather than fronted in the main body.
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.
1 tool update
v1.0.0- First observed
map_tiktok_brand_presence
TDQS
Scored across 1 tool
With only a single tool, there is no possibility of overlap or confusion between different operations.
The tool name 'map_tiktok_brand_presence' is clear, descriptive, and follows a consistent verb_noun pattern; no inconsistency issues with a single tool.
Having only one tool makes the surface feel thin for a server that ostensibly aims to map brand presence on TikTok, though it might be acceptable if the scope is extremely narrow. It falls into the borderline category.
The tool only resolves a single brand to its TikTok account and returns basic stats. There are significant gaps—no search, listing, comparison, or update capabilities—which would force agents to rely on external workarounds for related tasks.
Maintenance
Related MCP Connectors
TikTok profiles (followers, bio) and per-video stats by handle or URL. No login. Pay per result.
Public TikTok profiles, videos, comments and keyword search as JSON. No developer account.
Get social media data from Instagram and TikTok: profiles, posts, videos, comments, and more.
TikTok search demand, videos, creators, comments and captions for AI agents. OAuth or API key.
Related MCP Servers
- AlicenseAqualityDmaintenanceChecks username availability and retrieves account information across major social media platforms including YouTube, TikTok, Threads, X (Twitter), and Instagram, perfect for brand name qualification and competitive research.4269 npmMIT
- AlicenseAqualityAmaintenanceResolves any combination of company name, domain, or LinkedIn URL into the canonical company identity (name, domain, LinkedIn URL) with confidence scores and match method.145 npmMIT
- AlicenseAqualityBmaintenanceEnables resolving a company domain to its Instagram, Threads, and Facebook accounts with follower and post counts.119 npmMIT
- AlicenseAqualityBmaintenanceResolves company domains to their LinkedIn pages, providing exact follower counts and public firmographics such as industry, company size band, headquarters, founded year, and specialties.122 npmMIT