creatordb-mcp-server
OfficialcreatorDB MCP exposes CreatorDB V3 data through MCP tools for creator discovery, creator analytics, content search, brand/sponsor intelligence, taxonomy lookup, and account usage.
Search YouTube, Instagram, and TikTok creators by natural language or structured filters, with pagination and platform-specific fields.
Retrieve creator profiles, contact emails, performance metrics/history, audience demographics, and recent content details across all three platforms.
Search individual YouTube videos/shorts/streams, Instagram posts/reels, and TikTok videos by content or creator-level filters.
Inspect YouTube/Instagram sponsor relationships per creator and query brand-side sponsor data: brand search/list/profile, sponsored creators, performance, audience, and spend/CPM/CPE summaries.
Resolve YouTube/Instagram/TikTok niche and YouTube topic taxonomies; fetch YouTube subtitle metadata and download subtitles.
Check API credit usage by endpoint/platform; costs vary by tool, with some sponsor and contact calls being expensive.
Allows searching and retrieving Instagram creator data including profiles, performance metrics, audience demographics, and content details via the CreatorDB API.
Allows searching and retrieving TikTok creator data including profiles, performance metrics, audience demographics, and content details via the CreatorDB API. Note: TikTok brand/sponsor data is not indexed.
Allows searching and retrieving YouTube creator data including profiles, performance metrics, audience demographics, content details, and sponsorship information via the CreatorDB API.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@creatordb-mcp-serversearch for TikTok creators with over 1M followers in the US"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
creatordb-mcp-server
A Model Context Protocol server that exposes the CreatorDB V3 API to any MCP-compatible client (Claude Code, Claude Desktop, Cursor, etc.).
48 tools across seven surfaces:
Creator-side data — profile, performance, audience demographics, contact, content-detail, performance history for YouTube, Instagram, and TikTok
Creator search — natural-language search across all three platforms, plus structured filter search per platform (country, language, follower thresholds, niches, hashtags, audience demographics, etc.)
Brand-side / sponsor intelligence (YouTube + Instagram only — TikTok brand data is not indexed) — search CreatorDB's 10K+ indexed brands, pull a brand's full profile, list every creator a brand has sponsored, get aggregated audience demographics across a brand's sponsored creator pool, and cross-platform spend / CPM / CPE rollups. The heavier sponsor reads (
get_sponsor_creators,get_sponsor_performance,get_sponsor_audience,get_sponsor_summary) cost 15 credits each — use deliberately.get_sponsor_informationis 2,search_sponsors2,list_sponsors1.Content search — find individual posts (YouTube videos, shorts and streams; Instagram reels and posts; TikTok videos) by content-level filters (captions, hashtags, publish date, engagement thresholds, sponsorship) and creator-level filters, or within one creator's content. Different from creator search — this returns posts, not channels. Each call has a fixed price from a grid (time window, caption filter, follower floor, content type); with no window it searches the last 30 days.
Topic + niche taxonomies — paged, searchable catalogs (~490 topics per platform, ~16K YT niches, ~40K each on IG/TT) for resolving the per-creator topic/niche IDs returned in profile responses. Pass
searchto resolve a phrase to entry IDs rather than paging; search filters take theid.Bulk vetting —
vet_creatorsreturns engagement, audience and sponsor details for up to 150 creators in one call.Account — credit usage broken down by endpoint and platform.
Every tool returns the underlying V3 JSON plus a Credits used: N | Remaining: M footer line, so the AI knows exactly what it's spending.
Working with Claude Code? Open this README in Claude Code (or paste the URL into a Claude session) and say "set up this MCP for me." The steps below are written so an AI assistant can follow them top to bottom.
Quick start
There are two ways to connect, depending on your client:
Local clients (Claude Code, Claude Desktop, Cursor) run the server as a subprocess via
npx— see Install (local / stdio).Web / desktop / mobile clients connect to the hosted endpoint, or add CreatorDB straight from Claude's connector directory — see Remote connector.
Both expose the same 48 tools. Both need a CreatorDB V3 API key.
Prerequisites
For the local route: Node.js 22 or newer (
node -vto check)A CreatorDB V3 API key — get one from https://creatordb.app account settings, or ask your team admin
Pick a connection method below
Restart your MCP client so it picks up the new tools
Verify by running
/mcpin Claude Code —creatordbshould appear with statusconnected
Related MCP server: Influship MCP
Install (local / stdio)
For Claude Code, Claude Desktop, and Cursor. The server reads one environment variable: CREATORDB_API_KEY (your V3 key).
Method A — npx from npm (recommended)
The package is published to npm as @creatordbai/mcp-server. No local clone, no SSH key, no GitHub access required:
Claude Code:
claude mcp add creatordb -s user \
-e CREATORDB_API_KEY=YOUR_CREATORDB_API_KEY \
-- npx -y @creatordbai/mcp-serverClaude Desktop — edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"creatordb": {
"command": "npx",
"args": ["-y", "@creatordbai/mcp-server"],
"env": { "CREATORDB_API_KEY": "YOUR_CREATORDB_API_KEY" }
}
}
}If you have GitHub org access and want to track main instead of the npm release, swap the npm name for git+ssh://git@github.com/CreatorDB/creatordb-mcp-server.git — the repo's prepare script will build on install.
Method B — clone and build locally
Good if you want to read/modify the source, or if npx from git doesn't work in your environment.
git clone https://github.com/CreatorDB/creatordb-mcp-server.git
cd creatordb-mcp-server
npm install
npm run build
# Then register with Claude Code:
claude mcp add creatordb -s user \
-e CREATORDB_API_KEY=YOUR_CREATORDB_API_KEY \
-- node "$(pwd)/dist/index.js"For Claude Desktop, use the same JSON as Method A but swap command + args:
"command": "node",
"args": ["/absolute/path/to/creatordb-mcp-server/dist/index.js"],Method C — project-scoped via .mcp.json (best for teams)
Drop a .mcp.json into a CreatorDB project repo. Anyone who opens that repo in Claude Code gets prompted to enable the MCP — no per-person setup commands.
{
"mcpServers": {
"creatordb": {
"command": "npx",
"args": ["-y", "git+ssh://git@github.com/CreatorDB/creatordb-mcp-server.git"],
"env": { "CREATORDB_API_KEY": "${CREATORDB_API_KEY}" }
}
}
}${CREATORDB_API_KEY} reads from the user's shell environment, so the key stays out of git. Each teammate sets it once in their .zshrc/.bash_profile:
export CREATORDB_API_KEY=YOUR_CREATORDB_API_KEYRemote connector (Claude web, desktop, mobile)
Claude clients that can't spawn a local subprocess connect to the hosted endpoint instead of running npx. There are two ways in.
From the connector directory (easiest). CreatorDB is listed in Claude's connector directory. In Claude: Settings → Connectors → Add → Browse connectors, search CreatorDB, open CreatorDB MCP, and click Connect to Claude.
Add it manually. You can also add it directly: Settings → Connectors → Add → Add custom connector, and enter the URL:
https://mcp.creatordb.app/mcpLeave the Advanced OAuth Client ID / Secret fields empty — the server registers the client automatically.
Either way, you'll be prompted to enter your CreatorDB API key when you connect, and the same 48 tools appear.
Notes:
You'll be prompted to enter your key when you connect; the connector seals it into an encrypted session token and keeps no separate copy. CreatorDB stores the key only as the credential it issued you.
Programmatic clients calling the endpoint directly can instead send
Authorization: Bearer <your CreatorDB V3 API key>.Health check: https://mcp.creatordb.app/health (no auth, 0 credits) — returns
{"status":"ok",...}when the service is up.Hosted as a Firebase Cloud Function (gen 2) in
asia-northeast1; source is infunctions/.Don't have a key? Get one at https://app.creatordb.app or email hello@creatordb.app.
Changing your API key
You don't update a key inside the MCP server — it doesn't store keys. You change it in your client's MCP configuration and restart.
Local install (Claude Code, Claude Desktop, Cursor)
Edit the same config file you used during setup:
Claude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.json(macOS) or%APPDATA%\Claude\claude_desktop_config.json(Windows)Cursor:
~/.cursor/mcp.json(or the in-app MCP settings UI)Claude Code:
~/.mcp.jsonor your project's.mcp.json
Change the CREATORDB_API_KEY value, then fully restart the client (⌘Q + reopen for Claude Desktop, restart the Cursor app, etc.). MCP clients only read the key at process startup.
If you set the key from your shell environment (Method C above, with ${CREATORDB_API_KEY} syntax), update ~/.zshrc / ~/.bash_profile and restart your terminal before restarting the client.
Remote connector (Claude web, desktop, mobile)
In Settings → Connectors → CreatorDB, disconnect and reconnect, then enter the new key when prompted. (A programmatic client sending a Bearer token just starts sending the new key.)
One thing to know about rotating a leaked key
Changing the key on the client side only swaps which key your tools authenticate with. It does NOT invalidate the previous key. If you're rotating because the old key was exposed:
Go to your CreatorDB account and revoke the old key there — that's what actually kills it at the V3 API layer.
Then update the MCP client to use the new key as above.
The MCP server never persists your key past a single request, so there's no server-side "stored key" to purge.
Verify it works
After install, restart Claude Code (or your MCP client) and:
Run
/mcp— you should seecreatordblisted with status connectedAsk Claude something that uses the tools, e.g. "use creatordb to look up the YouTube profile for MrBeast (channelId UCX6OQ3DkcsbYNE6H8uQQuVA)"
The response should include creator data and a
Credits used: 2 | Remaining: …footer
Troubleshooting
Symptom | Cause | Fix |
| API key missing or wrong | Re-add with |
Tools work but every response ends | Stale tool schema from an older build of this server | Restart the MCP client — clients cache the schema at session start |
| Passing | IG endpoints take the handle as |
| npx cache permission issue |
|
| Method B didn't run |
|
Tool descriptions seem outdated vs this README | Schema cached from an old version |
|
Why restarts matter — MCP clients fetch the tool list once at session start. Server updates (new tools, renamed params, fixed costs) only show up after the client reconnects. This is the single most common confusion.
Upgrading to a newer published version?
npxcaches packages by exact version, so a configured client keeps running whatever version it first downloaded. To force-pull the latest, either pin to@latestin your config (npx -y @creatordbai/mcp-server@latestre-resolves each launch) or clear the npx cache once (rm -rf ~/.npm/_npx). Then restart the MCP client.
Releasing (maintainers)
The .github/workflows/release.yml workflow publishes to npm whenever a v*.*.* tag is pushed.
# bump version, commit, tag, push
npm version patch # or minor / major
git push && git push --tagsThe workflow validates that the tag matches package.json version, runs npm ci, builds, and publishes via npm Trusted Publishing with sigstore provenance attestation. No long-lived NPM_TOKEN is stored — the workflow exchanges a GitHub OIDC token for a short-lived npm publish token at runtime.
Roadmap
Goal: list in the MCP registry and Claude's MCP marketplace so the server shows up when users browse MCP servers from inside their client.
Contributions, issues, and feedback welcome — see Getting help below.
Tools
48 tools across six categories. Every tool returns a structured JSON payload plus a Credits used: N | Remaining: M footer line.
Account (1)
Tool | Cost | Notes |
| 0 | Daily request counts and credit consumption by endpoint. Defaults to last 7 days; takes optional |
Search (5)
Tool | Cost | Notes |
| dynamic (token-based) | Natural-language search across all three platforms, converting one sentence into filters in a single pass. For explicit natural-language requests; structured search is the default. |
| 1 per 10 filters | Structured filter search. Use |
| 1 per 10 filters | Structured filter search. Use |
| 1 per 10 filters | Structured filter search. Use |
| ~13–17 per creator found | Check up to 150 creators (any mix of platforms) in one call: followers, country, language, bio, recent posts, engagement, median views or likes, posting frequency, audience countries / gender / age, and recent sponsors (YouTube and Instagram). Replaces per-creator profile, performance, audience and sponsorship calls when shortlisting. |
Filter type gotcha: numeric ops (>, <, = on subscriber/follower/rate fields) require a number value, not a numeric string. "1000000" → VALIDATION_ERROR; 1000000 → ok.
Niche and topic values: the niches and topics filters take taxonomy IDs (e.g. id_canva_Education). A display name (Canva) or the Name/Category form is converted to the matching IDs and the result says what it was converted to; the first conversion per taxonomy costs 1 credit and is then cached. A name with no exact match returns the closest IDs instead of running the search.
Enrichment (fields): add data from other endpoints to each result, billed per result at fractional prices, e.g. { "profile": ["bio", "niches", "country", "mainLanguage"], "content-detail": { "recentVideos": 3 } } = 0.7 credits per result. Useful for checking fit without a profile call per creator.
Empty results: a search with no matches returns a note on how to widen it.
Server instructions: the server sends instructions at connect time describing how the data works (exact filters, taxonomy IDs, country-level location) and the search method that returns the most relevant creators: gather candidates with several searches that use different topic signals and sort orders, enrich them with fields, then keep only creators whose own content shows they fit. A thorough search this way typically uses 50-150 credits. Agents state their plan before searching, share a preview of clear fits when early results allow, make independent calls together in the same turn, list only clear fits, stop once they have the number of creators the user asked for, and check shortlisted creators with one vet_creators call instead of per-creator lookups. When the user asks for speed they take a quick path: map niches for every platform in one turn, run two searches per platform together, keep the clear fits. Clients connected before an update see new instructions after reconnecting.
Result size: enriched search results are shortened in steps to stay within what MCP clients show to the model (long descriptions and bios first, then top-10 hashtag and niche lists, then recent posts reduced to their essentials). The result says what was shortened; get_*_profile and get_*_content_detail return full text. Tool results are compact JSON.
Filter value notes: hashtag values match with or without a leading # and are case-insensitive. Ratio and percentile fields (audienceMaleRatio, audienceFemaleRatio, and YouTube's *Percentile fields) take a decimal from 0 to 1, not 0-100: 0.6 = 60%, 0.9 = top 10%.
Sponsors / brand data (8)
Brand-side intelligence: which brands sponsor creators, how much they spend, which creators they work with. Sponsor data covers YouTube and Instagram only — TikTok is not indexed for brands.
Brand-key: brandId, typically the brand's primary domain (e.g. "acer.com", "nike.com").
Tool | Cost | Returns |
| 2 per page | Brand search by structured filters. Lean records (brandId, name, logo, industries, country). |
| 1 per page | Paginated directory of all 10K+ indexed brands. |
| 2 | Full brand profile: aliases, keyPeople, industries, location, website, socialMedia, competitors. |
| 25 per page | Inverse of |
| 25 per page | Per-content sponsorship perf. Three stats scopes per creator (creatorTotal, allSponsored lifetime, this-brand-only). YT-only: estimatedCost, CPM. |
| 25 | Aggregated audience demographics across the brand's sponsored creator pool. IG block reserved but null today (backend YT-only). |
| 25 | Cross-platform rollup: totalSponsoredCreators/Content, per-platform creators + performance + growth30d. |
| 1 (0 if duplicate) | Submit a brand for indexing. Rate-limited 100/day per key. Returns submissionId + status. |
Cost warning — get_sponsor_creators, get_sponsor_performance, get_sponsor_audience, get_sponsor_summary each cost 25 credits per call. Use search_sponsors / list_sponsors / get_sponsor_information for cheap exploration first.
YouTube creator data (7 + 5 platform-specific)
Creator-key: channelId (the UC… form — @handle / /c/ / /user/ URLs are not accepted; resolve first).
Tool | Cost | Returns |
| 2 | Identity, subscribers, country, language, linked socials, channel categories, plus the creator's |
| 15 | Email addresses. |
| 3 | R20 (last 20 videos) + all-time (up to 800) engagement metrics; consistency scores; 30d/90d view windows. |
| 3 | Daily snapshots over the past N days. Takes |
| 10 | Age buckets, gender split, top countries. |
| 3 | Recent videos + shorts with per-item engagement. |
| 5 | Sponsored content grouped by indexed brand (recent posts only — empty list ≠ "no sponsors"). |
| 1–97 (grid) | Search individual videos, shorts and streams (different from |
| 1 | The YT TOPIC taxonomy (~490 entries with channelCount), paged. Same taxonomy as |
| 1 | The YT NICHE taxonomy (~16K entries with channelCount), paged. |
| 1 | Per-video subtitle track listing. Takes |
| 3 | Subtitle text for one video. Takes |
Instagram creator data (7 + 3)
Creator-key: uniqueId (the handle, no @).
Tool | Cost | Returns |
| 2 | Identity, followers, country, language, isBusinessAccount, linked socials, hashtags, account categories, plus the creator's |
| 15 | Email addresses. |
| 2 | First-page image + reels engagement; consistency scores. |
| 3 | Daily snapshots over the past N days. Takes |
| 10 | Age buckets, gender split, top countries. |
| 2 | Recent images + reels with per-item engagement. |
| 5 | Sponsored content grouped by indexed brand (recent posts only). |
| 1–92 (grid) | Search individual reels and posts (different from |
| 1 | The IG NICHE taxonomy (~40K entries), paged. For topics, use |
| 1 | The IG TOPIC taxonomy (~490 entries with channelCount), paged. Same taxonomy as YouTube with Instagram IDs ( |
TikTok creator data (7 + 2)
Creator-key: uniqueId (the handle, no @).
Tool | Cost | Returns |
| 2 | Identity, followers, country, language, hashtags, plus the creator's |
| 15 | Email addresses. |
| 2 | Recent videos engagement (views, likes, comments, shares); consistency scores. |
| 3 | Daily snapshots over the past N days. Takes |
| 10 | Age buckets, gender split, top countries. |
| 2 | Recent videos with audio metadata, duet/stitch/commerce flags, per-item engagement. |
| 1–28 (grid) | Search individual VIDEOS (different from |
| 1 | The TT NICHE taxonomy (~40K entries), paged. For topics, use |
| 1 | The TT TOPIC taxonomy (~490 entries with channelCount), paged. Same taxonomy as YouTube with TikTok IDs ( |
Cross-platform differences cheat-sheet
Dimension | YouTube | TikTok | |
Creator parameter |
|
|
|
Follower field |
|
|
|
Has a topic taxonomy | ✅ | ✅ | ✅ |
Has a niche taxonomy | ✅ | ✅ | ✅ |
Per-creator niches in | ✅ | ✅ | ✅ |
Per-creator topics in | ✅ | ✅ | ✅ |
Sponsorship per-brand endpoint | ✅ | ✅ | ❌ |
Content types in | videos + shorts | images + reels | videos |
| 3 | 2 | 2 |
Performance windows | R20 + all-time (up to 800) | First-page | Recent |
Engagement formula | (L+C+V) / subscribers | (L+C) / followers | (L+C+Shares) / followers |
Subtitles endpoints | ✅ | ❌ | ❌ |
Content-search endpoint | ✅ | ✅ | ✅ |
Brand-side sponsor data | ✅ | ✅ | ❌ |
Niche IDs are not interchangeable across platforms — id_vlog_PeopleBlogs (YT) and id_love_All (IG) live in different namespaces. Niche/topic IDs follow the pattern id_{slug}_{Category}, so you can group by category by splitting on the last _.
Response shape highlights
These are the fields that aren't obvious from the endpoint name but you'll reach for constantly. All confirmed against live responses.
/profile
Shared across YT/IG/TT:
subscriberGrowth: { g7, g30, g90 }— % change in subscribers/followers over the last 7/30/90 days. Free trend signal — no need to callperformance-historyif you only want the headline number.hashtags: [{ name, contentCount }]— hashtags the creator uses (note:namecarries the#on IG/TT).niches: ["id_vlog_PeopleBlogs", …]— per-creator niche IDs. To resolve the human-readable name + category + channelCount, cross-referencelist_{platform}_niches.relatedCreators— accounts the platform itself recommends or lists as related to the creator. YT: UC channelIds of channels YouTube recommends alongside this channel's videos, most frequent first. IG/TT: handles, passed through as the platform provides them. On TikTok the list often includes the creator's own handle. Cheap way to expand a seed list.hasEmail— whetherget_{platform}_contactwould return an email. Request it viafields(0.1 credit) before paying 15 for contact.isAgencyRepresented—truewhen CreatorDB has a record of agency representation;falsealso covers creators with no record.lastPublishTime/lastDbUpdateTime— Unix-ms; pair them to know how stale the snapshot is vs how recently the creator posted.country— ISO 3166-1 alpha-3 (e.g."USA","JPN"). On IG this value is derived from a content classifier rather than a self-declared field, and can occasionally be wrong for creators with multi-country presence — cross-check againstaudienceLocationsand the creator's bio if accuracy matters.
YT-only:
topics: ["id_challenges_Comedy", …]— coarse topic IDs (~490 per platform). Resolve vialist_{youtube,instagram,tiktok}_topics.totalViews— lifetime channel views, as shown on the channel's About panel.joinedDate— when the channel was created (Unix ms, day precision).Sponsored video / shorts CPM and rate bands (
videoPrice,shortsPrice) are no longer on profile; they're onget_youtube_performance.categoryBreakdown: [{ category, share }]— share of recent content by YouTube native category.hasMemberOnlyContents— boolean.
IG-only:
isBusinessAccount,isPrivateAccount— flags worth checking before promising audience data; private accounts can't be scraped.otherLinks— bio links array.imageLastPublishTime/reelsLastPublishTime— latest image post and latest reel (Unix ms);lastPublishTimeis the later of the two.
TT-only:
otherLinks— bio link (TikTok allows one).joinedDate— when the account was created (Unix ms).
/audience
Identical shape across platforms:
audienceLocations: [{ country, share }]— top 6 countries with shares summing to roughly 1.0.audienceGender: { maleRatio, femaleRatio }— sums to ~1.0; binary split only.audienceAvgAge— integer.audienceAgeBreakdown: [{ ageRange, share }]— fixed buckets13-17 | 18-24 | 25-34 | 35-44 | 45-54 | 55-64 | 65+. Always 7 entries; placeholder rows are all-zero (see footgun list below).
/performance
The R20-vs-all distinction is YT-only:
YT returns four sibling objects:
videosPerformanceRecent,videosPerformanceAll,shortsPerformanceRecent,shortsPerformanceAll. "Recent" = R20 (last 20). "All" = up to 800. Each haslikes/comments/views(withavg/median/min/max/percentile25/percentile75/iqr) and anengagementblock.IG returns
imagesPerformanceRecent+reelsPerformanceRecent. No all-time window.TT returns
videosPerformanceRecent. No all-time window.Every
engagementblock ends withengagementConsistency: { cv, medianVsMean, topBottomRatio, consistencyScore, consistencyLevel }.consistencyScoreis 0–100;consistencyLevelis"high"(81–100),"moderate"(51–80), or"low"(0–50). Requires ≥6 content pieces, otherwise the consistency block is absent.rankingblock carriesglobal,country,languagepercentile ranks fortotalSubscribers/totalFollowersandavgEngagementRate— useful for "is this creator above average for their country" without separate benchmarking.recentVideosGrowth.g7/g30/g90— engagement-rate delta over 7/30/90 days. Negative numbers mean engagement is declining.contentCountByDays: { 7d, 30d, 90d }— how many posts in each window (use to detect dormant creators).
/content-detail
Per-item objects across platforms:
publishTime(Unix-ms),contentId,likes,comments,views(YT/TT only — IG images have no view count),engagementRate(rounded to 4 decimals).hashtags: ["#example", …]— already includes#prefix.
Platform-specific extras:
YT:
length(seconds),isMemberOnly, content mix includes both videos and shorts.IG:
mentionedCreators—@-mentions in caption.TT:
audioId,audioTitle,audioAuthor,audioAlbum,isDuetEnabled,isAd,length(seconds),shares. The audio block is the cheapest way to find trending sounds.
Freshness rule — content published within the last 4 days is excluded from all metric calculations (all platforms). Pinned-post rule — on IG/TT, a pinned post older than 90 days is excluded if it would be the oldest item in the sample.
/sponsorship
YT and IG only — TikTok does not have a per-brand sponsorship endpoint.
sponsorList: [{ brandName, brandId, brandIgIds, sponsoredVideos, sponsoredVideosPerformance }].brandIgIds— the brand's IG handles. Use this to follow a brand from a sponsored creator back to the brand's own profile.sponsoredVideosincludes each sponsored content's full per-item engagement (same shape as/content-detail).Important caveat — only scans the most recent ~20–30 posts and only detects brands already indexed in CreatorDB. An empty
sponsorListis not proof the creator has no sponsors; it's "we didn't find indexed sponsors in their recent posts."
Search (search_{platform} and search_creators_nls)
Structured search response:
creatorList: [{ displayName, uniqueId, channelId (YT only), avatarUrl, totalSubscribers | totalFollowers }]— minimal projection; hydrate withget_*_profilefor full data.totalResults— total matching the filter set, not just the page.hasNextPage+nextOffset— pagination idiom. PassnextOffsetas the next request'soffsetto advance.
NLS response:
Same
creatorListshape as structured search, plus aplatform: "youtube" | "instagram" | "tiktok"field telling you which platform the AI routed to.Streamed over SSE under the hood; the MCP layer collects the final
data:event and returns it as one payload.Dynamic pricing — typically 1–10 credits depending on input + output token count.
/usage
records: [{ date (YYYYMMDD), requestCount, totalQuotaUsed, endpoints: { …per-endpoint counts }, platforms: { …per-platform counts }, quotaByPlatform }].totalQuotaUsedcan be fractional (e.g. 4.49 for an NLS call).endpointskeys are camelCase:getYoutubeProfile,getInstagramAudience,searchYoutube,getNLS, etc. Useful for building a spend dashboard.
Common footguns
Placeholder demographics: when CreatorDB doesn't have real audience data,
/audiencereturns the all-zero shape (audienceGender: { maleRatio: 0, femaleRatio: 0 }, age buckets all 0.0). Treat any row where male+female=0 as missing, not as "no gender data."Empty
sponsorList≠ no sponsors (see above).relatedCreatorsis unranked — order is not significance. Don't slice the first N and call them "top related"; sample or rerank by your own metric.Freshness lag —
lastDbUpdateTimeis when CreatorDB last refreshed. If it's older than ~14 days, the profile may not reflect recent breakout content.Niche channelCount drifts —
list_*_nichesis updated daily; don't cache it longer than that or your "creators in X niche" count will lag reality.Search the taxonomy, don't page it —
list_*_nichesreturns one page at a time (100 by default, largest first) because the full taxonomies run to ~40,000 entries on Instagram and TikTok. Both are a single flat "All" category with no structure to browse, and the top 100 entries account for only ~18% of creator assignments, so paging rarely gets you anywhere. Passsearchto resolve a phrase to niche IDs instead (the search filter takes each entry'sid). Matching is whole-word, soskinwill not findSkincare; CamelCase names are split (StreetFoodmatchesstreet food) and common variants are folded (vloggers→vlog,japanese→japan). On TikTok ~44% of niches have under 100 creators —minChannelCounttrims that tail.IG
countryis modelled, not self-declared — YouTube and TikTok return the country a creator set on their own profile; for Instagram, CreatorDB's location model supplies it, so IG has country coverage where the profile states nothing.
Filter reference (search tools)
Common fields across all three platforms:
displayName— string, supports fuzzyuniqueId— string, exactcountry— string, ISO 3166-1 alpha-3 (e.g."USA","JPN","GBR")mainLanguage— string, ISO 639-3 (e.g."eng","jpn","zhs")hashtags— string (with#prefix on IG/TT)niches— string (use IDs from the platform'slist_*_niches)mainAudienceLocation/mainAudienceAge/mainAudienceGender— stringhasSponsors— boolean
Platform-specific:
YouTube:
totalSubscribers(number),topics(string fromlist_youtube_topics)Instagram / TikTok:
totalFollowers(number)
Operators: >, <, = for numbers; =, in for strings; = for booleans. in takes an array of up to 100 values. pageSize max 100; filters max 10 per request.
Response envelope
Every tool returns the underlying CreatorDB V3 envelope:
{
"data": { },
"creditsUsed": 2,
"creditsAvailable": 953270.5,
"traceId": "abc-123",
"timestamp": 1779722787120,
"errorCode": "",
"errorDescription": "",
"success": true
}On error, the envelope carries errorCode, error, message, and details. The MCP layer flattens that into a clean error message with a TraceId: line for support.
Development
npm run dev # tsc --watch
npm run build # tsc once
npm start # node dist/index.jsSource layout:
src/
index.ts # registers all tools, stdio transport
tools/
account.ts # 1 tool
search.ts # 4 tools (NLS + 3 platform creator searches)
youtube.ts # 13 tools (incl. search_youtube_content)
instagram.ts # 10 tools (incl. search_instagram_content)
tiktok.ts # 9 tools (incl. search_tiktok_content)
sponsors.ts # 8 tools (brand-side sponsor intelligence)
util/
api-client.ts # fetch wrapper for REST + SSE
response.ts # MCP result formatter (credits, errors)Getting help
Bugs / feature requests / new endpoint coverage: open an issue at https://github.com/CreatorDB/creatordb-mcp-server/issues
API key / data questions: hello@creatordb.app
Just trying to install it on your machine? See SETUP.md — a 5-minute guide aimed at end users rather than contributors.
License
MIT
Available Tools
42 toolsget_api_usageAInspect
Get your CreatorDB API usage. Returns records: [{ date (YYYYMMDD), requestCount, totalQuotaUsed (can be fractional, e.g. NLS), endpoints (camelCase per-endpoint counts: getYoutubeProfile, searchInstagram, getNLS, etc.), platforms, quotaByPlatform }]. Free to call (0 credits). Defaults to last 7 days; pass start/end as Unix-ms strings to widen the window.
| Name | Required | Description | Default |
|---|---|---|---|
| start | No | Start date as Unix timestamp in milliseconds | |
| end | No | End date as Unix timestamp in milliseconds |
get_instagram_audienceAInspect
Get an Instagram creator's audience demographics: audienceLocations (top 6 countries with shares), audienceGender (maleRatio + femaleRatio, binary only), audienceAvgAge (integer), audienceAgeBreakdown (fixed 7 buckets: 13-17/18-24/25-34/35-44/45-54/55-64/65+). When data is missing the endpoint returns the placeholder shape (all 0.0) — treat male+female=0 as missing, not "no gender data." Costs 10 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| uniqueId | Yes | Instagram handle (e.g. "natgeo"). No "@" prefix and no URL. |
get_instagram_contactAInspect
Get an Instagram creator's contact email addresses (business/public-listed emails). Costs 15 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| uniqueId | Yes | Instagram handle (e.g. "natgeo"). No "@" prefix and no URL. |
get_instagram_content_detailAInspect
Get an Instagram creator's recent content (images + reels) with per-item engagement: likes, comments, views (reels only — images have no view count), caption, hashtags (with "#"), mentionedCreators (@-mentions), publishTime (Unix-ms), engagementRate. Content from the last 4 days is excluded from metric calculations. Pinned posts >90 days old are excluded if they would be the oldest item. Costs 2 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| uniqueId | Yes | Instagram handle (e.g. "natgeo"). No "@" prefix and no URL. |
get_instagram_performanceAInspect
Get an Instagram creator's engagement metrics on first-page content. Returns imagesPerformanceRecent + reelsPerformanceRecent with avg/median/min/max likes, comments, and (for reels) views, plus an engagement block using (L+C)/followers and consistencyScore (0–100; bands: high 81–100, moderate 51–80, low 0–50; requires ≥6 posts). ranking block carries global/country/language percentiles. recentReelsGrowth.g7/g30/g90 shows engagement-rate trend. contentCountByDays.7d/30d/90d shows posting cadence. IG has no all-time window (YouTube-only). Costs 2 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| uniqueId | Yes | Instagram handle (e.g. "natgeo"). No "@" prefix and no URL. |
get_instagram_performance_historyAInspect
Get daily metric snapshots (followers, content count, first-page engagement) for an Instagram creator. Returns the histories array of timestamped snapshots over the past N days. Costs 3 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| uniqueId | Yes | Instagram handle (e.g. "natgeo"). No "@" prefix and no URL. | |
| pastDayRange | Yes | How many past days of daily snapshots to return. String integer, 1–365. |
get_instagram_profileAInspect
Get an Instagram creator's profile: display name, follower count, biography, isVerified/isBusinessAccount flags, country (ISO 3166-1 alpha-3), main language, linked socials (YouTube/TikTok), hashtags used, account-level categories, and the creator's AI-classified niches. To browse the full IG niche taxonomy use list_instagram_niches. Costs 2 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| uniqueId | Yes | Instagram handle (e.g. "natgeo"). No "@" prefix and no URL. |
get_instagram_sponsorshipAInspect
Get an Instagram creator's sponsored content grouped by brand. Returns sponsorList: [{ brandName, brandId, brandIgIds, sponsoredVideos, sponsoredVideosPerformance }]. Each sponsoredVideo carries per-item engagement (same shape as content-detail). CAVEAT: only scans the most recent ~20–30 posts AND only detects brands already indexed — an empty sponsorList is NOT proof the creator has no sponsors. Costs 5 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| uniqueId | Yes | Instagram handle (e.g. "natgeo"). No "@" prefix and no URL. |
get_sponsor_audienceAInspect
Aggregated audience demographics across all creators a brand has sponsored. Returns data.youtube and/or data.instagram (each may be null) with audienceLocations (top 5 countries), audienceGender (maleRatio + femaleRatio), audienceAvgAge, audienceAgeBreakdown (fixed 7 buckets: 13-17/18-24/25-34/35-44/45-54/55-64/65+). IG block is reserved but always null today — backend only aggregates YT audience. Omit platform to request both. EXPENSIVE: costs 25 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| brandId | Yes | Brand ID (e.g. "acer.com"). | |
| platform | No | Platform scope. NOTE: TikTok sponsor data is not available — only YouTube and Instagram. |
get_sponsor_creatorsAInspect
List creators a brand has sponsored (inverse of get_*_sponsorship). Returns each creator with displayName, country, followers, sponsoredContent[] (URLs), topics, niches, sponsoredCount, lastSponsoredDate, avgRecentSponsoredEngagementRate (cross-brand aggregate: lifetime window on Instagram, R20 window on YouTube). EXPENSIVE: costs 25 credits per page.
| Name | Required | Description | Default |
|---|---|---|---|
| brandId | Yes | Brand ID (e.g. "acer.com"). | |
| platform | Yes | Platform scope. NOTE: TikTok sponsor data is not available — only YouTube and Instagram. | |
| pageSize | No | Results per page (max 100). | |
| offset | No | Number of records to skip for pagination. | |
| sortBy | No | Sort field. | lastSponsoredDate |
| desc | No | Sort descending (true) or ascending (false). |
get_sponsor_informationAInspect
Get a single brand's full profile: name, alias[], logo, description, companySize, keyPeople[], industries[], country, location, website, socialMedia[] (with platform-tagged URLs), competitors[], totalSponsoredContent, sponsoringPlatforms. Costs 2 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| brandId | Yes | Brand ID (typically the brand's primary domain, e.g. "acer.com", "nike.com"). |
get_sponsor_performanceAInspect
Detailed per-content sponsorship performance for a brand. Returns sponsoredCreators[] each with three stats scopes (creatorTotalStats = all content, creatorAllSponsoredStats = all sponsored content lifetime, creatorSpecificSponsoredStats = for this brand only) plus estimatedCost / estimatedCreatorCPM (YouTube-only — null for Instagram) and a content[] array with per-item views7d/30d/90d/Lifetime, likes, comments, engagementRate. EXPENSIVE: costs 25 credits per page.
| Name | Required | Description | Default |
|---|---|---|---|
| brandId | Yes | Brand ID (e.g. "acer.com"). | |
| platform | Yes | Platform scope. NOTE: TikTok sponsor data is not available — only YouTube and Instagram. | |
| pageSize | No | Results per page (max 100). | |
| offset | No | Number of records to skip for pagination. | |
| sortBy | No | Sort field. Numeric sorts use per-creator averages; `views` uses viewsLifetime. | publishTime |
| desc | No | Sort descending (true) or ascending (false). |
get_sponsor_summaryAInspect
Cross-platform sponsorship rollup for a brand. Returns data.summary with totalSponsoredCreators, totalSponsoredContent, and per-platform youtube + instagram sub-objects each carrying a creators block (sponsoredCreators, sponsoredContent30d, top-5 creatorLocationBreakdown, top-5 creatorLanguageBreakdown) and a performance block (estimatedTotalSpend 7d/30d/90d, estimatedCPM30d, estimatedCPE30d, views/likes/comments aggregates, growth30d deltas). Instagram spend/CPM/CPE always null today. EXPENSIVE: costs 25 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| brandId | Yes | Brand ID (e.g. "acer.com"). |
get_tiktok_audienceAInspect
Get a TikTok creator's audience demographics: audienceLocations (top 6 countries with shares), audienceGender (maleRatio + femaleRatio, binary only), audienceAvgAge (integer), audienceAgeBreakdown (fixed 7 buckets: 13-17/18-24/25-34/35-44/45-54/55-64/65+). When data is missing the endpoint returns the placeholder shape (all 0.0) — treat male+female=0 as missing. Costs 10 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| uniqueId | Yes | TikTok handle (e.g. "charlidamelio"). No "@" prefix and no URL. |
get_tiktok_contactAInspect
Get a TikTok creator's contact email addresses (public-listed). Costs 15 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| uniqueId | Yes | TikTok handle (e.g. "charlidamelio"). No "@" prefix and no URL. |
get_tiktok_content_detailAInspect
Get a TikTok creator's recent videos with per-item engagement: views, likes, comments, shares, engagementRate, length (seconds), isAd, hashtags (with "#"), publishTime (Unix-ms). Each item also carries TT-only audio metadata (audioId, audioTitle, audioAuthor, audioAlbum) and isDuetEnabled — the audio block is the cheapest hook into trending-sound analysis. Content from the last 4 days is excluded from metric calculations. Pinned posts >90 days old are excluded if they would be the oldest item. Costs 2 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| uniqueId | Yes | TikTok handle (e.g. "charlidamelio"). No "@" prefix and no URL. |
get_tiktok_performanceAInspect
Get a TikTok creator's engagement metrics on recent videos. Returns videosPerformanceRecent with avg/median/min/max views, likes, comments, shares, plus an engagement block using (L+C+Shares)/followers and consistencyScore (0–100; bands: high 81–100, moderate 51–80, low 0–50; requires ≥6 videos). ranking block carries global/country/language percentiles. recentVideosGrowth.g7/g30/g90 shows engagement-rate trend. contentCountByDays.7d/30d/90d shows posting cadence. TikTok has no all-time window (YouTube-only). Costs 2 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| uniqueId | Yes | TikTok handle (e.g. "charlidamelio"). No "@" prefix and no URL. |
get_tiktok_performance_historyBInspect
Get daily metric snapshots (followers, content count, recent engagement) for a TikTok creator. Returns the histories array of timestamped snapshots over the past N days. Costs 3 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| uniqueId | Yes | TikTok handle (e.g. "charlidamelio"). No "@" prefix and no URL. | |
| pastDayRange | Yes | How many past days of daily snapshots to return. String integer, 1–365. |
get_tiktok_profileAInspect
Get a TikTok creator's profile: display name, follower count, biography, isVerified flag, country (ISO 3166-1 alpha-3), main language, linked socials, hashtags, and the creator's AI-classified niches. To browse the full TT niche taxonomy use list_tiktok_niches. Costs 2 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| uniqueId | Yes | TikTok handle (e.g. "charlidamelio"). No "@" prefix and no URL. |
get_youtube_audienceAInspect
Get a YouTube creator's audience demographics: audienceLocations (top 6 countries with shares), audienceGender (maleRatio + femaleRatio, binary only), audienceAvgAge (integer), audienceAgeBreakdown (fixed 7 buckets: 13-17/18-24/25-34/35-44/45-54/55-64/65+). When data is missing the endpoint returns the placeholder shape (all 0.0) — treat male+female=0 as missing. Costs 10 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| channelId | Yes | YouTube channel ID (the immutable UC… form, e.g. "UCX6OQ3DkcsbYNE6H8uQQuVA"). "@handle", "/c/vanity", and "/user/legacy" URLs are NOT accepted here — resolve them to a UC channelId first. |
get_youtube_contactAInspect
Get a YouTube creator's contact email addresses (channel "for business" + public). Costs 15 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| channelId | Yes | YouTube channel ID (the immutable UC… form, e.g. "UCX6OQ3DkcsbYNE6H8uQQuVA"). "@handle", "/c/vanity", and "/user/legacy" URLs are NOT accepted here — resolve them to a UC channelId first. |
get_youtube_content_detailAInspect
Get a YouTube creator's recent content (videos + shorts) with per-item engagement: views, likes, comments, length (seconds), isMemberOnly flag (filter for member-only content), hashtags (with "#"), publishTime (Unix-ms), engagementRate. Content from the last 4 days is excluded from metric calculations. Costs 3 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| channelId | Yes | YouTube channel ID (the immutable UC… form, e.g. "UCX6OQ3DkcsbYNE6H8uQQuVA"). "@handle", "/c/vanity", and "/user/legacy" URLs are NOT accepted here — resolve them to a UC channelId first. |
get_youtube_performanceAInspect
Get a YouTube creator's engagement metrics. Returns four sibling objects: videosPerformanceRecent + shortsPerformanceRecent (R20: last 20 of each) and videosPerformanceAll + shortsPerformanceAll (up to 800). Each has avg/median/min/max/percentile25/percentile75/iqr for likes/comments/views, plus an engagement block with (L+C+V)/subscribers and consistencyScore (0–100; bands: high 81–100, moderate 51–80, low 0–50; requires ≥6 content pieces). ranking block carries global/country/language percentiles. recentVideosGrowth.g7/g30/g90 shows engagement-rate trend. contentCountByDays.7d/30d/90d shows posting cadence. Costs 2 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| channelId | Yes | YouTube channel ID (the immutable UC… form, e.g. "UCX6OQ3DkcsbYNE6H8uQQuVA"). "@handle", "/c/vanity", and "/user/legacy" URLs are NOT accepted here — resolve them to a UC channelId first. |
get_youtube_performance_historyAInspect
Get daily metric snapshots (subscribers, total content count, all-time performance) for a YouTube creator. Returns the histories array of timestamped snapshots over the past N days. Costs 3 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| channelId | Yes | YouTube channel ID (the immutable UC… form, e.g. "UCX6OQ3DkcsbYNE6H8uQQuVA"). "@handle", "/c/vanity", and "/user/legacy" URLs are NOT accepted here — resolve them to a UC channelId first. | |
| pastDayRange | Yes | How many past days of daily snapshots to return. String integer, 1–365. |
get_youtube_profileAInspect
Get a YouTube creator's profile: display name, subscriber count, description, isVerified, country (ISO 3166-1 alpha-3), main language, linked socials, channel-level hashtags, YouTube native channel categories, AI-classified topics (coarse) and niches (granular), subscriberGrowth.g7/g30/g90 trend deltas, relatedCreators UC IDs for discovery, and sponsored videoPrice + shortsPrice blocks with low/raw/high CPM and dollar bands (YouTube-only — IG/TT do not return pricing). Use list_youtube_topics / list_youtube_niches to resolve topic/niche IDs to human names. Costs 2 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| channelId | Yes | YouTube channel ID (the immutable UC… form, e.g. "UCX6OQ3DkcsbYNE6H8uQQuVA"). "@handle", "/c/vanity", and "/user/legacy" URLs are NOT accepted here — resolve them to a UC channelId first. |
get_youtube_sponsorshipAInspect
Get a YouTube creator's sponsored content grouped by brand. Returns sponsorList: [{ brandName, brandId, brandIgIds, sponsoredVideos, sponsoredVideosPerformance }]. brandIgIds are the brand's Instagram handles — useful to pivot from a sponsored creator back to the brand's own IG profile. sponsoredVideos carries per-item engagement (same shape as content-detail). CAVEAT: only scans the most recent ~20–30 posts AND only detects brands already indexed in CreatorDB — an empty sponsorList is NOT proof of no sponsorships. Costs 5 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| channelId | Yes | YouTube channel ID (the immutable UC… form, e.g. "UCX6OQ3DkcsbYNE6H8uQQuVA"). "@handle", "/c/vanity", and "/user/legacy" URLs are NOT accepted here — resolve them to a UC channelId first. |
get_youtube_subtitles_downloadAInspect
Download the subtitle track for a specific YouTube video. Per-video — pass videoId, not channelId. Costs 3 credits per download.
| Name | Required | Description | Default |
|---|---|---|---|
| videoId | Yes | YouTube video ID (the v= value in a watch URL) | |
| language | No | Subtitle language code (ISO 639-3, e.g. "eng", "jpn"). Defaults to the primary track. |
get_youtube_subtitles_metaAInspect
List available subtitle tracks for a SINGLE YouTube video: language codes, auto-generated vs human-uploaded. Per-video, not per-channel — pass the videoId of one video at a time. Use this before calling get_youtube_subtitles_download to know what languages exist. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| videoId | Yes | YouTube video ID (the v= value in a watch URL) |
list_instagram_nichesAInspect
List the full Instagram NICHE taxonomy used by CreatorDB — every available niche with channelCount per niche (the response is large: ~10K+ entries). NICHES are granular subcategories (e.g. "love/All", "fashion/All"). To see which niches a specific creator is classified under, use get_instagram_profile and read the niches field. Per-platform: IG/YT/TT each have their own niche taxonomy — they are not interchangeable. Instagram does NOT have a "topics" taxonomy (that is YouTube-only). Takes no parameters. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
list_sponsorsAInspect
Paginated directory of every brand indexed in CreatorDB (10K+ brands). Returns brandId, name, logo, industries, country, sponsoringPlatforms (TitleCase strings: "YouTube", "Instagram"), totalSponsoredContent. Use search_sponsors when you need filtering; this is for browsing the full catalog. Costs 1 credit per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pageSize | No | Results per page (max 100). | |
| offset | No | Number of records to skip for pagination. | |
| sortBy | No | Sort field. | name |
| desc | No | Sort descending (true) or ascending (false). |
list_tiktok_nichesAInspect
List the full TikTok NICHE taxonomy used by CreatorDB — every available niche with channelCount per niche (the response is large: ~10K+ entries). NICHES are granular subcategories (e.g. "Capcut/All", "Dance/All"). To see which niches a specific creator is classified under, use get_tiktok_profile and read the niches field. Per-platform: TT/YT/IG each have their own niche taxonomy — they are not interchangeable. TikTok does NOT have a "topics" taxonomy (that is YouTube-only) and does NOT have a per-brand sponsorship endpoint. Takes no parameters. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
list_youtube_nichesAInspect
List the full YouTube NICHE taxonomy used by CreatorDB — every available niche (14000+ entries) with channelCount per niche. NICHES are granular subcategories (e.g. "Vlog/People Blogs", "ASMR/People Blogs"). To see which niches a specific creator is classified under, use get_youtube_profile and read the niches field. Per-platform: YT/IG/TT each have their own niche taxonomy — they are not interchangeable. Takes no parameters. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
list_youtube_topicsAInspect
List the full YouTube TOPIC taxonomy used by CreatorDB — every available topic (~470+ entries) with channelCount per topic. TOPICS are a coarse, evolving classification (e.g. "Academic", "Finance", "Health Education"). YOUTUBE-ONLY: Instagram and TikTok do not have a topic taxonomy. To see which topics a specific creator is classified under, use get_youtube_profile and read the topics field. Takes no parameters. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
search_creators_nlsAInspect
Search for creators using natural language across YouTube, Instagram, and TikTok. The AI determines the platform from your query and converts it into structured filters. Response includes creatorList AND a platform field telling you which platform was chosen. Best for exploratory queries where you don't know exact filter names — fall back to search_youtube/instagram/tiktok when you need precise control over filters. Credit cost is dynamic (token-based, typically 1–10 credits).
| Name | Required | Description | Default |
|---|---|---|---|
| description | Yes | Natural language search query, e.g. "Find US-based YouTube beauty creators with over 1M subscribers". |
search_instagramAInspect
Search Instagram creators using structured filters. Costs 1 credit per 10 filters (max 10). Use totalFollowers (NOT totalSubscribers) for count thresholds. IG has niches but NOT topics (YouTube-only). Hashtag values need the "#" prefix to match the indexed hashTagsSearch field. Response: creatorList, totalResults, hasNextPage, nextOffset.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | Yes | Search filters (max 10). Billed at 1 credit per 10 filters. | |
| pageSize | No | Results per page (max 100). | |
| offset | No | Number of records to skip for pagination. | |
| sortBy | No | Field to sort by (e.g. totalSubscribers, totalFollowers, avgEngagementRate). | |
| desc | No | Sort descending (true) or ascending (false). |
search_instagram_contentAInspect
Search individual Instagram content (images, reels, slideshows) across CreatorDB's index. Different from search_instagram (which searches CREATORS) — this returns individual posts. Response includes contentList[] with contentId, contentType (slideshow|reel|video, sometimes null for legacy posts), description, thumbnail, url, publishTime (Unix-ms), isSponsored, partneredBrands[], likes/comments/engagementRate, hashtags, and a nested creator block. NO views and NO lengthSec (IG data model). Content-level filterable: postType, description (searches caption AND reel title together), hashtag, publishTime (integer "days ago" — semantic split with response field), likes, comments, engagement, isSponsored, partneredBrands, performanceLikes, performanceEngagement. Creator-level filters also supported. Costs 2 credits per page.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | Yes | Content filters (1–10). | |
| pageSize | No | Results per page (max 100). | |
| offset | No | Number of records to skip for pagination. | |
| sortBy | No | Sort field. | publishTime |
| desc | No | Sort descending (true) or ascending (false). |
search_sponsorsAInspect
Search the CreatorDB brand index using structured filters. Returns lean brand records (brandId, name, logo, industries, country). Costs 2 credits per page. Sponsor data covers YouTube and Instagram only — TikTok is not indexed for brands.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | Brand filters (max 10). Pass empty array to list unfiltered. | |
| pageSize | No | Results per page (max 100). | |
| offset | No | Number of records to skip for pagination. | |
| sortBy | No | Sort field. One of: name, totalSponsoredContent, estimatedTotalSpend7d / 30d / 90d. | |
| desc | No | Sort descending (true) or ascending (false). |
search_tiktokAInspect
Search TikTok creators using structured filters. Costs 1 credit per 10 filters (max 10). Use totalFollowers (NOT totalSubscribers) for count thresholds. TT has niches but NOT topics (YouTube-only). Hashtag values need the "#" prefix. Note: TikTok does not expose a per-brand sponsorship endpoint, so hasSponsors-style filtering is coarser than on YT/IG. Response: creatorList, totalResults, hasNextPage, nextOffset.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | Yes | Search filters (max 10). Billed at 1 credit per 10 filters. | |
| pageSize | No | Results per page (max 100). | |
| offset | No | Number of records to skip for pagination. | |
| sortBy | No | Field to sort by (e.g. totalSubscribers, totalFollowers, avgEngagementRate). | |
| desc | No | Sort descending (true) or ascending (false). |
search_tiktok_contentAInspect
Search individual TikTok content (videos) across CreatorDB's index. Different from search_tiktok (which searches CREATORS) — this returns individual posts. Response includes contentList[] with contentId, description, thumbnail, url, publishTime (Unix-ms), lengthSec, plays/likes/comments/shares/engagementRate, hashtags, audioTitle, audioAuthor, and a nested creator block. NO contentType field. NO isSponsored / partneredBrands — TikTok brand-attribution is not implemented (native isAd flag exists on get_tiktok_content_detail only). Content-level filterable: description, hashtag, publishTime (integer "days ago"), plays, diggs (request name) / likes (response name), comments, shares, engagement, lengthSec, performanceDiggs, performanceEngagement. Creator-level filters also supported. Engagement formula = (likes+comments+shares)/followers. Costs 2 credits per page.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | Yes | Content filters (1–10). | |
| pageSize | No | Results per page (max 100). | |
| offset | No | Number of records to skip for pagination. | |
| sortBy | No | Sort field. | publishTime |
| desc | No | Sort descending (true) or ascending (false). |
search_youtubeAInspect
Search YouTube creators using structured filters. Costs 1 credit per 10 filters (max 10). Use totalSubscribers (NOT totalFollowers) for count thresholds. YT-specific filterable fields: topics (coarse ~400-theme taxonomy — IG/TT don't have it), niches (granular; also on IG/TT but derived separately). Response: creatorList, totalResults, hasNextPage, nextOffset — pass nextOffset as the next request's offset to paginate.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | Yes | Search filters (max 10). Billed at 1 credit per 10 filters. | |
| pageSize | No | Results per page (max 100). | |
| offset | No | Number of records to skip for pagination. | |
| sortBy | No | Field to sort by (e.g. totalSubscribers, totalFollowers, avgEngagementRate). | |
| desc | No | Sort descending (true) or ascending (false). |
search_youtube_contentAInspect
Search individual YouTube content (videos, shorts, streams) across CreatorDB's index. Different from search_youtube (which searches CREATORS) — this returns individual posts matching content-level filters. Response includes contentList[] with contentId, contentType (video|shorts|stream), title, description, thumbnail, url, publishTime (Unix-ms), lengthSec, isSponsored, partneredBrands[], views/likes/comments/engagementRate, hashtags, language, category, and a nested creator block. Plus totalResults, hasNextPage, nextOffset for pagination. Content-level filterable fields: postType, title, description (NOTE: description filter is currently deferred — returns 400), hashtag, publishTime (filter value is integer "days ago", not Unix-ms — semantic split with the response field), views, likes, comments, engagement, isSponsored, partneredBrands, lengthSec, language, category, performanceViews, performanceEngagement. Creator-level filters also supported (creatorDisplayName, country, contentTopics, contentNiches, audienceLocation, etc.). The 4-day fresh-content exclusion does NOT apply here. Costs 2 credits per page.
| Name | Required | Description | Default |
|---|---|---|---|
| filters | Yes | Content filters (1–10). | |
| pageSize | No | Results per page (max 100). | |
| offset | No | Number of records to skip for pagination. | |
| sortBy | No | Sort field. | publishTime |
| desc | No | Sort descending (true) or ascending (false). |
submit_sponsorAInspect
Submit a brand for indexing. Returns submissionId + status ("accepted" / "processing" / "done" / "rejected") and existingBrandId if the brand was already indexed. Costs 1 credit on acceptance, 0 on duplicate (status=done) or rejection. Rate-limited to 100 submissions/day per API key (separate from the credit pool).
| Name | Required | Description | Default |
|---|---|---|---|
| brandName | Yes | Brand name (1–100 chars). | |
| brandUrl | Yes | Brand website URL — must include http:// or https://. | |
| competitors | No | Optional competitor brand names or URLs (max 10). | |
| notes | No | Optional free-form notes (≤500 chars). |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
42 tool updates
v1.3.0- First observed
get_api_usage - First observed
get_instagram_audience - First observed
get_instagram_contact - First observed
get_instagram_content_detail - First observed
get_instagram_performance - First observed
get_instagram_performance_history - First observed
get_instagram_profile - First observed
get_instagram_sponsorship - First observed
get_sponsor_audience - First observed
get_sponsor_creators - First observed
get_sponsor_information - First observed
get_sponsor_performance - First observed
get_sponsor_summary - First observed
get_tiktok_audience - First observed
get_tiktok_contact - First observed
get_tiktok_content_detail - First observed
get_tiktok_performance - First observed
get_tiktok_performance_history - First observed
get_tiktok_profile - First observed
get_youtube_audience - First observed
get_youtube_contact - First observed
get_youtube_content_detail - First observed
get_youtube_performance - First observed
get_youtube_performance_history - First observed
get_youtube_profile - First observed
get_youtube_sponsorship - First observed
get_youtube_subtitles_download - First observed
get_youtube_subtitles_meta - First observed
list_instagram_niches - First observed
list_sponsors - First observed
list_tiktok_niches - First observed
list_youtube_niches - First observed
list_youtube_topics - First observed
search_creators_nls - First observed
search_instagram - First observed
search_instagram_content - First observed
search_sponsors - First observed
search_tiktok - First observed
search_tiktok_content - First observed
search_youtube - First observed
search_youtube_content - First observed
submit_sponsor
TDQS
Scored across 42 tools
The platform×action naming makes most tools easy to tell apart (profile vs performance vs content vs sponsorship). A few close pairs—search_youtube vs search_youtube_content and get_*_performance vs get_*_performance_history—could still be misselected without reading descriptions, and search_creators_nls intentionally overlaps with the structured platform searches.
Snake_case verb-first naming is highly consistent: search_<platform>, get_<platform>_profile, list_*_niches, get_sponsor_*. Minor deviations like get_youtube_subtitles_download rather than download_youtube_subtitles, search_creators_nls, and the get_sponsor_information vs get_sponsor_summary pair keep it from a perfect 5.
At 42 tools, this is far over the 25+ threshold for a 'too many' score, even though the underlying API is broad. The repetitive platform triads and separate sponsor/content surfaces create a large, potentially overwhelming toolset for agents.
Coverage is very thorough for a read-heavy creator-research domain: each platform has profile/contact/performance/history/audience/content_detail and content search, plus a full sponsor side and API usage. Minor gaps are mostly backend/platform constraints—no TikTok sponsorship endpoint, IG sponsor audience always null, YouTube description filter deferred—rather than missing tool categories.
Related MCP Connectors
Find and analyze influencers with creator search, lookalikes, profiles, posts, and transcripts.
Search 1.8M+ YouTube, TikTok and Instagram creators with emails and run outreach from your AI agent.
Search 455M+ Instagram, TikTok and YouTube creators and analyze influencers from your AI assistant.
30+ marketing data tools for AI agents: keywords, SERP, backlinks, AI visibility, app store & commerce intelligence, Reddit/LinkedIn/Facebook/YouTube research, web search, page extraction, site audit, image & video generation, one-shot marketing apps. Bring your own API key from supamarketers.com — per-tool pricing in Credits.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides comprehensive influencer marketing data from Instagram, YouTube, and TikTok via the CreatorDB Headless API V3. It enables advanced creator search, profile analysis, and access to performance metrics and audience demographics.MIT

Influship MCPofficial
AlicenseAqualityCmaintenanceEnables AI-native creator discovery for influencer marketing, including creator search, lookalikes, profile lookup, and Instagram post transcript analysis.1443 npm1MIT- FlicenseNot gradedqualityDmaintenanceEnables Claude to pull exact YouTube creator stats (subscribers, views, engagement) and discover new creators, then write them into a Notion Influencers roster.-

Upriver MCPofficial
AlicenseNot gradedqualityDmaintenanceProvides AI applications with real-time, evidence-backed context on creators, audiences, brands, trends, and sponsorships, including breakout topic search and browsing tools.MIT