Public social, ad library and Google Maps data: TikTok, Instagram, YouTube, X, Facebook and more.
Maintained by@theanujkapoor(verified)Also a maintainer?
Call this server's tools from your browser. Nothing to install.
SignalShelf API key (dashboard → API keys; 1,000 free credits)
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Validate all profile inputs before fetching any. Returns per-item successes/errors. Each successful fresh live item costs one credit; demos/cache hits/failures cost zero. Maximum ten items, processed sequentially.
One to ten profile lookups, each with the same fields as signalshelf_profile.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http signalshelf https://signalshelf.dev/mcp \ --header 'x-api-key: YOUR_X_API_KEY'
Headers
x-api-key (required): SignalShelf API key (dashboard → API keys; 1,000 free credits)Tool list last changed Nov 9, 2026.
Validate all profile inputs before fetching any. Returns per-item successes/errors. Each successful fresh live item costs one credit; demos/cache hits/failures cost zero. Maximum ten items, processed sequentially.
| Argument | Type | Description |
|---|---|---|
| items* | array | One to ten profile lookups, each with the same fields as signalshelf_profile. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"platform",
"handle"
],
"properties": {
"mode": {
"enum": [
"demo",
"live"
],
"type": "string",
"default": "demo",
"description": "demo returns labeled illustrative data for zero credits; explicitly choose live for real data."
},
"handle": {
"type": "string",
"maxLength": 253,
"minLength": 1,
"description": "Public profile handle. Instagram also accepts its supported public profile URL."
},
"platform": {
"enum": [
"instagram",
"tiktok",
"youtube",
"bluesky",
"threads",
"pinterest",
"snapchat",
"linkedin",
"twitch",
"github",
"mastodon"
],
"type": "string",
"description": "Social platform of the profile."
},
"freshness": {
"enum": [
"live",
"1h",
"24h",
"7d"
],
"type": "string",
"default": "24h",
"description": "Maximum accepted cache age. live forces refresh except for a shared in-flight refresh."
}
},
"additionalProperties": false
},
"maxItems": 10,
"minItems": 1,
"description": "One to ten profile lookups, each with the same fields as signalshelf_profile."
}
},
"additionalProperties": false
}Search SignalShelf operations (~250 across TikTok, Instagram, Facebook, X, LinkedIn, YouTube, Google Maps, reviews, ad libraries…). Pass query and/or platform to get matching operations with full parameter schemas and credit prices; with no filters returns a compact index. No source fetches and zero credits.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum operations to return (1-200). |
| query | string | Words to match, e.g. "instagram reels" or "maps reviews". |
| platform | string | e.g. tiktok, instagram, web, google-maps. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Maximum operations to return (1-200)."
},
"query": {
"type": "string",
"maxLength": 200,
"description": "Words to match, e.g. \"instagram reels\" or \"maps reviews\"."
},
"platform": {
"type": "string",
"maxLength": 40,
"description": "e.g. tiktok, instagram, web, google-maps."
}
},
"additionalProperties": false
}Read the authenticated account’s current database balance. Zero credits. No other account details or API keys are returned.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"additionalProperties": false
}Return a normalized public profile and cache/cost metadata. Default demo mode is illustrative and free. Explicit live mode charges one credit only for a successful fresh fetch; accepted cache hits and failures cost zero. Public-page engines can be blocked or incomplete.
| Argument | Type | Description |
|---|---|---|
| mode | string | demo returns labeled illustrative data for zero credits; explicitly choose live for real data. |
| handle* | string | Public profile handle. Instagram also accepts its supported public profile URL. |
| platform* | string | Social platform of the profile. |
| freshness | string | Maximum accepted cache age. live forces refresh except for a shared in-flight refresh. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"platform",
"handle"
],
"properties": {
"mode": {
"enum": [
"demo",
"live"
],
"type": "string",
"default": "demo",
"description": "demo returns labeled illustrative data for zero credits; explicitly choose live for real data."
},
"handle": {
"type": "string",
"maxLength": 253,
"minLength": 1,
"description": "Public profile handle. Instagram also accepts its supported public profile URL."
},
"platform": {
"enum": [
"instagram",
"tiktok",
"youtube",
"bluesky",
"threads",
"pinterest",
"snapchat",
"linkedin",
"twitch",
"github",
"mastodon"
],
"type": "string",
"description": "Social platform of the profile."
},
"freshness": {
"enum": [
"live",
"1h",
"24h",
"7d"
],
"type": "string",
"default": "24h",
"description": "Maximum accepted cache age. live forces refresh except for a shared in-flight refresh."
}
},
"additionalProperties": false
}Fetch any implemented public resource found with signalshelf_capabilities — TikTok, Instagram, Threads, Facebook, X, LinkedIn, YouTube, Reddit, Pinterest, Spotify, Google Maps/Search/News, app stores, Amazon, Trustpilot, ad libraries and more (platform "web", resource = op key like "tiktok/video/comments"). params must match that operation’s schema. Live public data: a successful fresh result costs the operation’s credits (usually 1; heavier ops 2+, shown in capabilities); accepted cache hits and failures cost zero.
| Argument | Type | Description |
|---|---|---|
| params | object | Only parameters listed by capabilities for the selected resource, including pagination. Booleans and string lists are allowed where the schema says so. |
| platform* | string | Platform that owns the resource, as listed by signalshelf_capabilities (use "web" for op keys like "tiktok/video/comments"). |
| resource* | string | An implemented resource name returned by signalshelf_capabilities. |
| freshness | string | Maximum accepted cache age. live forces refresh except for a shared in-flight refresh. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"platform",
"resource"
],
"properties": {
"params": {
"type": "object",
"default": {},
"description": "Only parameters listed by capabilities for the selected resource, including pagination. Booleans and string lists are allowed where the schema says so.",
"propertyNames": {
"type": "string",
"maxLength": 64
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 2048
},
{
"type": "integer",
"maximum": 1000,
"minimum": 0
},
{
"type": "boolean"
},
{
"type": "array",
"items": {
"type": "string",
"maxLength": 2048
},
"maxItems": 25
}
]
}
},
"platform": {
"enum": [
"github",
"bluesky",
"reddit",
"instagram",
"facebook",
"youtube",
"twitch",
"threads",
"tiktok",
"tiktok-shop",
"facebook-ad-library",
"apple-music",
"snapchat",
"web"
],
"type": "string",
"description": "Platform that owns the resource, as listed by signalshelf_capabilities (use \"web\" for op keys like \"tiktok/video/comments\")."
},
"resource": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "An implemented resource name returned by signalshelf_capabilities."
},
"freshness": {
"enum": [
"live",
"1h",
"24h",
"7d"
],
"type": "string",
"default": "24h",
"description": "Maximum accepted cache age. live forces refresh except for a shared in-flight refresh."
}
},
"additionalProperties": false
}Read up to 100 recent lookup events belonging to the authenticated account, without source payloads, account IDs, or secrets. Zero credits.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Number of most recent lookup events to return (1-100, default 20). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Number of most recent lookup events to return (1-100, default 20)."
}
},
"additionalProperties": false
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 9, 2026.
What changed in this server's tools since we started watching, newest first. Each change is scanned again.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Number of most recent lookup events to return (1-100, default 20)."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 200,
"description": "Words to match, e.g. \"instagram reels\" or \"maps reviews\"."
},
"platform": {
"type": "string",
"maxLength": 40,
"description": "e.g. tiktok, instagram, web, google-maps."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Maximum operations to return (1-200)."
},
"query": {
"type": "string",
"maxLength": 200,
"description": "Words to match, e.g. \"instagram reels\" or \"maps reviews\"."
},
"platform": {
"type": "string",
"maxLength": 40,
"description": "e.g. tiktok, instagram, web, google-maps."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"platform",
"resource"
],
"properties": {
"params": {
"type": "object",
"default": {},
"description": "Only parameters listed by capabilities for the selected resource, including pagination. Booleans and string lists are allowed where the schema says so.",
"propertyNames": {
"type": "string",
"maxLength": 64
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 2048
},
{
"type": "integer",
"maximum": 1000,
"minimum": 0
},
{
"type": "boolean"
},
{
"type": "array",
"items": {
"type": "string",
"maxLength": 2048
},
"maxItems": 25
}
]
}
},
"platform": {
"enum": [
"github",
"bluesky",
"reddit",
"instagram",
"facebook",
"youtube",
"twitch",
"threads",
"tiktok",
"tiktok-shop",
"facebook-ad-library",
"apple-music",
"snapchat",
"web"
],
"type": "string"
},
"resource": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "An implemented resource name returned by signalshelf_capabilities."
},
"freshness": {
"enum": [
"live",
"1h",
"24h",
"7d"
],
"type": "string",
"default": "24h",
"description": "Maximum accepted cache age. live forces refresh except for a shared in-flight refresh."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"platform",
"resource"
],
"properties": {
"params": {
"type": "object",
"default": {},
"description": "Only parameters listed by capabilities for the selected resource, including pagination. Booleans and string lists are allowed where the schema says so.",
"propertyNames": {
"type": "string",
"maxLength": 64
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 2048
},
{
"type": "integer",
"maximum": 1000,
"minimum": 0
},
{
"type": "boolean"
},
{
"type": "array",
"items": {
"type": "string",
"maxLength": 2048
},
"maxItems": 25
}
]
}
},
"platform": {
"enum": [
"github",
"bluesky",
"reddit",
"instagram",
"facebook",
"youtube",
"twitch",
"threads",
"tiktok",
"tiktok-shop",
"facebook-ad-library",
"apple-music",
"snapchat",
"web"
],
"type": "string",
"description": "Platform that owns the resource, as listed by signalshelf_capabilities (use \"web\" for op keys like \"tiktok/video/comments\")."
},
"resource": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "An implemented resource name returned by signalshelf_capabilities."
},
"freshness": {
"enum": [
"live",
"1h",
"24h",
"7d"
],
"type": "string",
"default": "24h",
"description": "Maximum accepted cache age. live forces refresh except for a shared in-flight refresh."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"platform",
"handle"
],
"properties": {
"mode": {
"enum": [
"demo",
"live"
],
"type": "string",
"default": "demo",
"description": "demo returns labeled illustrative data for zero credits; explicitly choose live for real data."
},
"handle": {
"type": "string",
"maxLength": 253,
"minLength": 1,
"description": "Public profile handle. Instagram also accepts its supported public profile URL."
},
"platform": {
"enum": [
"instagram",
"tiktok",
"youtube",
"bluesky",
"threads",
"pinterest",
"snapchat",
"linkedin",
"twitch",
"github",
"mastodon"
],
"type": "string"
},
"freshness": {
"enum": [
"live",
"1h",
"24h",
"7d"
],
"type": "string",
"default": "24h",
"description": "Maximum accepted cache age. live forces refresh except for a shared in-flight refresh."
}
},
"additionalProperties": false
},
"maxItems": 10,
"minItems": 1
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"platform",
"handle"
],
"properties": {
"mode": {
"enum": [
"demo",
"live"
],
"type": "string",
"default": "demo",
"description": "demo returns labeled illustrative data for zero credits; explicitly choose live for real data."
},
"handle": {
"type": "string",
"maxLength": 253,
"minLength": 1,
"description": "Public profile handle. Instagram also accepts its supported public profile URL."
},
"platform": {
"enum": [
"instagram",
"tiktok",
"youtube",
"bluesky",
"threads",
"pinterest",
"snapchat",
"linkedin",
"twitch",
"github",
"mastodon"
],
"type": "string",
"description": "Social platform of the profile."
},
"freshness": {
"enum": [
"live",
"1h",
"24h",
"7d"
],
"type": "string",
"default": "24h",
"description": "Maximum accepted cache age. live forces refresh except for a shared in-flight refresh."
}
},
"additionalProperties": false
},
"maxItems": 10,
"minItems": 1,
"description": "One to ten profile lookups, each with the same fields as signalshelf_profile."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"platform",
"handle"
],
"properties": {
"mode": {
"enum": [
"demo",
"live"
],
"type": "string",
"default": "demo",
"description": "demo returns labeled illustrative data for zero credits; explicitly choose live for real data."
},
"handle": {
"type": "string",
"maxLength": 253,
"minLength": 1,
"description": "Public profile handle. Instagram also accepts its supported public profile URL."
},
"platform": {
"enum": [
"instagram",
"tiktok",
"youtube",
"bluesky",
"threads",
"pinterest",
"snapchat",
"linkedin",
"twitch",
"github",
"mastodon"
],
"type": "string"
},
"freshness": {
"enum": [
"live",
"1h",
"24h",
"7d"
],
"type": "string",
"default": "24h",
"description": "Maximum accepted cache age. live forces refresh except for a shared in-flight refresh."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"platform",
"handle"
],
"properties": {
"mode": {
"enum": [
"demo",
"live"
],
"type": "string",
"default": "demo",
"description": "demo returns labeled illustrative data for zero credits; explicitly choose live for real data."
},
"handle": {
"type": "string",
"maxLength": 253,
"minLength": 1,
"description": "Public profile handle. Instagram also accepts its supported public profile URL."
},
"platform": {
"enum": [
"instagram",
"tiktok",
"youtube",
"bluesky",
"threads",
"pinterest",
"snapchat",
"linkedin",
"twitch",
"github",
"mastodon"
],
"type": "string",
"description": "Social platform of the profile."
},
"freshness": {
"enum": [
"live",
"1h",
"24h",
"7d"
],
"type": "string",
"default": "24h",
"description": "Maximum accepted cache age. live forces refresh except for a shared in-flight refresh."
}
},
"additionalProperties": false
}