{"name":"io.github.RidioDevelopment/socialcrawl","slug":"ridiodevelopment-socialcrawl","title":"SocialCrawl","description":"One API for 65 platforms and 572 endpoints: social, commerce, retail, jobs, finance, web scraping.","url":"https://mcp.market/server/ridiodevelopment-socialcrawl","rating":null,"grade":"B","score":84,"certified":false,"status":"active","category":"finance","tags":["finance"],"presence":{"score":24,"stars":0,"forks":0,"downloads_week":474,"last_push_at":"2026-04-10T13:53:09.000Z","license":"MIT"},"uptime":{"percent":100,"checks":3,"ok":3,"last_checked_at":"2026-09-20T04:36:02.450Z","last_ok_at":"2026-09-20T04:36:02.450Z","latency_ms":88},"claimed":false,"transport":"mixed","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/RidioDevelopment/socialcrawl-mcp","website":null,"version":"1.10.0","remotes":[{"type":"streamable-http","url":"https://mcp.socialcrawl.dev/mcp","headers":[{"description":"Bearer <SOCIALCRAWL_API_KEY>. Optional — discovery tools work without it. Get a free key at socialcrawl.dev (100 credits, no credit card required).","isSecret":true,"name":"Authorization"}]}],"packages":[{"registryType":"npm","identifier":"socialcrawl-mcp","version":"1.10.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"Your SocialCrawl API key. Get a free key at socialcrawl.dev (100 credits, no credit card required).","isRequired":true,"format":"string","isSecret":true,"name":"SOCIALCRAWL_API_KEY"}]}],"tools":[{"name":"socialcrawl_check_balance","description":"Check the credit balance and the credit ledger for the authenticated SocialCrawl account. Default view calls GET /v1/credits/balance (balance + recent-deduction summary); `view: \"transactions\"` calls GET /v1/credits/transactions for dispute-grade itemised receipts — every deduction and refund with its amount, balance_after, endpoint, and request_id, which is how you confirm what a metered endpoint actually charged after its upfront hold was refunded down. Both cost 0 credits. Requires a valid SOCIALCRAWL_API_KEY.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"view":{"type":"string","enum":["balance","transactions"],"description":"'balance' (default) returns the current credit balance and recent-deduction summary. 'transactions' returns the itemised credit ledger — every deduction and refund keyed by request_id, which is how you confirm what a metered endpoint actually charged after its upfront hold was refunded."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"transactions: page size (1-100, default 50)."},"cursor":{"type":"string","description":"transactions: opaque keyset cursor from a previous response's next_cursor."},"requestId":{"type":"string","description":"transactions: fetch the receipt(s) for one request id (e.g. 'req-a1b2c3d4e5f6')."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"socialcrawl_cohorts","description":"Answer 'which of THESE specific public identities is talking about my keywords?' — the opposite of open social listening. You upload a panel of up to 10,000 platform-qualified public handles (instagram, tiktok, youtube, twitter, threads, bluesky, truth-social, kwai, twitch, linkedin), submit a keyword query bounded to a recent window, and read back the matching posts per member PLUS a coverage record for every member, including the ones that matched nothing — so a partial crawl can never read as 'nobody talked about you'. Actions: create, add_members (1,000 per call, upsert on external_id so a nightly re-push is safe), estimate_cost (local, no API call — sizes the reservation before you commit), query (async, returns 202), query_status, query_results (paged, carries `items` + `coverage`), query_cancel, get, delete. Matching is deterministic: literal, whole-word, Unicode-normalized — no stemming, fuzzy matching, or alias inference. Every lifecycle call costs 0 credits; only the query is metered — it reserves a worst-case ceiling at submission and refunds down to the pages that actually succeeded. SocialCrawl only ever receives platform + handle + your opaque external_id, encrypted at rest. Requires a valid SOCIALCRAWL_API_KEY.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"action":{"type":"string","enum":["create","get","delete","add_members","query","query_status","query_results","query_cancel","estimate_cost"],"description":"Cohort operation. Lifecycle order: 'create' a cohort → 'add_members' (up to 1,000 per call, 10,000 per cohort) → 'estimate_cost' locally to size max_credits → 'query' (async, 202) → 'query_status' until it succeeds → 'query_results' (page with cursor). Also 'get' a cohort, 'query_cancel' a running query, and 'delete' a cohort with everything under it. Everything except 'query' costs 0 credits."},"cohort_id":{"type":"string","description":"Cohort id from 'create'. Required for get/delete/add_members/query."},"query_id":{"type":"string","description":"Query id from 'query'. Required for query_status/query_results/query_cancel."},"idempotencyKey":{"type":"string","format":"uuid","description":"UUIDv4 for the write actions (create/add_members/query), which the API requires. Omit it and one is generated and echoed back — but supply your own (or reuse the echoed one) to make a retry replay the original call instead of creating a second cohort or reserving a second query."},"name":{"type":"string","maxLength":120,"description":"create: human-readable label, up to 120 characters."},"retention_days":{"type":"integer","minimum":7,"maximum":90,"description":"create: 7-90, default 30. When it elapses the cohort and everything under it is purged. Uploading members or submitting a query renews the clock."},"members":{"type":"array","items":{"type":"object","properties":{"external_id":{"type":"string","description":"Your own opaque key, echoed back on every match and coverage row so you can join to your records. Optional in the API, but without it a match cannot be tied back to anything."},"platform":{"type":"string","enum":["instagram","tiktok","youtube","twitter","threads","bluesky","truth-social","kwai","twitch","linkedin"],"description":"The identity's platform. Only these ten are supported."},"handle":{"type":"string","description":"The public account handle — or the full profile URL for LinkedIn."}},"required":["platform","handle"],"additionalProperties":false},"maxItems":1000,"description":"add_members (or estimate_cost): up to 1,000 identities per call, 10,000 per cohort. Rows are FLAT — a member with identities on several platforms is several rows sharing one external_id, not a nested array. Re-sending an external_id updates its identity rather than adding a row, so a nightly full re-push is safe. LinkedIn takes the full profile URL, not a bare handle."},"platform_counts":{"type":"object","additionalProperties":{"type":"integer","minimum":0},"description":"estimate_cost: the panel's platform mix as { instagram: 4000, youtube: 1000, ... } when you want a ceiling without passing the identities themselves."},"keywords":{"type":"array","items":{"type":"string"},"maxItems":20,"description":"query (required): up to 20 terms. Matching is literal and whole-word after Unicode NFKC case-folding — no stemming, fuzzy matching, or brand-alias inference. Pass 'Acme' and 'AcmeCo' separately if you want both."},"date_from":{"type":"string","description":"query (required): a full RFC3339 timestamp (e.g. '2026-08-01T00:00:00.000Z'), not a bare calendar date. It bounds how far back each crawl reaches."},"date_to":{"type":"string","description":"query: optional RFC3339 upper bound on the window."},"max_pages_per_identity":{"type":"integer","minimum":1,"maximum":20,"description":"query (required, no default) and estimate_cost: page budget per member, 1-20. Twitter, Bluesky, Threads and Twitch serve one fixed page per identity and ignore anything above 1."},"max_items_per_identity":{"type":"integer","minimum":1,"maximum":1000,"description":"query (required, no default): item budget per member, 1-1,000."},"max_credits":{"type":"integer","minimum":1,"maximum":1000000,"description":"query (required, no default): your own safety limit. Submission fails with a 400 before any credit is held if the computed ceiling exceeds it — run action 'estimate_cost' first to size it."},"platforms":{"type":"array","items":{"type":"string","enum":["instagram","tiktok","youtube","twitter","threads","bluesky","truth-social","kwai","twitch","linkedin"]},"description":"query: restrict the run to a subset of the platforms present in the cohort. Omit to query them all."},"limit":{"type":"integer","minimum":1,"maximum":500,"description":"query_results: page size, 1-500 (default 100). It governs the coverage list too."},"cursor":{"type":"string","description":"query_results: pass `next_cursor` back verbatim. Keep going until it is null."}},"required":["action"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"socialcrawl_discover","description":"The API describing itself, live, at 0 credits — the `/v1/utility/*` family. 'quickstart': everything needed for a first successful call (auth, base URL, response envelope, billing model, the full error taxonomy, rate limits, paging). 'catalog': every endpoint with its live metered-aware price, params, and paging flag — filter by platform/search/method. 'endpoint': one endpoint's complete usage guide — every parameter with type and example, the exact pricing rule, cache TTL, paging recipe, an example response, a copy-paste curl, and related endpoints. 'llms': the agent context corpus for the whole API or one platform. 'freshness': compare the live registry against this server's bundled catalogue to check whether this MCP version has fallen behind the API. 'status': every platform's live circuit-breaker state from the public `GET /v1/status` meta route — read it before retrying a persistent 502/503, since a degraded platform is the breaker holding traffic off a failing upstream. These answer from the live registry at request time, so unlike bundled data they can never drift from what is actually callable — use them when correctness matters more than latency, or when an endpoint looks unknown. Without an API key everything except 'llms' still answers from bundled data ('status' needs no key at all).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"action":{"type":"string","enum":["quickstart","catalog","endpoint","llms","freshness","status"],"description":"'quickstart' (default): auth, base URL, envelope, billing, the error taxonomy, limits, and a first call — GET /v1/utility/quickstart. 'catalog': the machine-readable list of every endpoint with live metered-aware prices — GET /v1/utility/endpoints. 'endpoint': one endpoint's complete usage guide, params, pricing rule, cache, paging, example response, curl, and related endpoints — GET /v1/utility/endpoint. 'llms': the agent context corpus for the whole API or one platform — GET /v1/utility/llms. 'freshness': compare the live registry against this server's bundled catalogue to see whether this MCP version is current. 'status': every platform's live circuit-breaker state — GET /v1/status, the public meta route to read before retrying a persistent 502 or 503."},"platform":{"type":"string","description":"Scope to one platform slug (e.g. 'tiktok'). Applies to quickstart, catalog, and llms."},"search":{"type":"string","description":"catalog: case-insensitive substring filter over endpoint paths and summaries."},"method":{"type":"string","enum":["GET","POST","PATCH","DELETE"],"description":"catalog: filter by HTTP method. endpoint: disambiguate a resource registered under more than one method (the stateful `web` family)."},"id":{"type":"string","description":"endpoint (required): the endpoint id as 'platform/resource' (e.g. 'tiktok/profile'), a path ('/v1/tiktok/profile'), or a full URL."},"format":{"type":"string","enum":["markdown","json"],"description":"llms: 'markdown' (default) returns the corpus text; 'json' returns a structured context object."},"live":{"type":"boolean","description":"Set false to answer from this server's bundled catalogue instead of calling the live API. Default is live whenever an API key is configured; without a key everything except 'llms' falls back to bundled data automatically."},"page":{"type":"integer","minimum":1,"description":"Page number (default 1). Long output is paged, not truncated."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"socialcrawl_get_docs","description":"Retrieve SocialCrawl API documentation. Topics: 'overview' (compact intro), 'full' (comprehensive reference for all 575 endpoints), 'authentication', 'credits', 'pricing' (per-endpoint cost for every endpoint), 'errors', 'idempotency', 'pagination' (universal cursor contract), 'caching' (TTLs and free hits), 'hydration' (the opt-in `include=` row joins, what each fills and what it costs), 'response-schema' (the canonical envelope and unified objects), 'limits' (rate, concurrency, timeouts), 'monitors' (scheduled-recipe wrapper), 'cohorts' (audience-filtered mention search over a panel you supply), 'discovery' (the free self-describing utility endpoints), or any platform slug (e.g., 'tiktok', or 'web' for the web-scraping/browser-automation surface). No API key required.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"page":{"type":"integer","minimum":1,"description":"Page number for long topics (default 1). Topics longer than one response are paged rather than truncated — the footer tells you how many pages there are. 'full' and the largest platform topics span several pages."},"topic":{"type":"string","default":"overview","description":"Documentation topic: 'overview', 'full', 'authentication', 'credits', 'pricing' (per-endpoint costs), 'errors', 'idempotency', 'pagination', 'caching', 'hydration' (opt-in `include=` row joins), 'response-schema', 'limits', 'monitors', 'discovery', or a platform slug (e.g., 'tiktok', or 'web' for the scraping/browser surface)."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"socialcrawl_list_endpoints","description":"List endpoints with their full parameter contract — required + optional params, types, integer ranges, enum values, parameter couplings, CSV limits, pagination style, cache TTL, and per-endpoint pricing (including metered bands). Pass a `platform` for that platform's reference, or a `search` term to find an endpoint across all 65 platforms / 575 endpoints. Filter with `method`, `maxCost`, and `hydrating` (endpoints that can fill their own rows in one call via `include=`). No API key required.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"platform":{"type":"string","enum":["web","tiktok","instagram","youtube","twitter","linkedin","facebook","reddit","threads","pinterest","twitch","snapchat","truthsocial","telegram","kick","kwai","tiktokshop","perplexity","google","amazon","google_shopping","google_news","finance","google_trends","trustpilot","g2","google_play","app_store","tripadvisor","walmart","target","wayfair","home_depot","ebay","etsy","sephora","aliexpress","hm","kohls","klarna","gumtree","yelp","utility","linktree","linkbio","linkme","komi","pillar","polymarket","hackernews","quora","douyin","github","tavily","naver","rumble","bluesky","spotify","apple_music","search","prism","content_analysis","on_page","jobs","us_congress_trades"],"description":"Platform slug (e.g., 'tiktok', 'instagram', 'youtube'). Omit it and pass `search` to look for an endpoint across all platforms."},"search":{"type":"string","description":"Free-text search over endpoint names, summaries, descriptions, archetypes, and tags (e.g. 'transcript', 'reviews', 'followers'). Works with or without `platform` — without one it searches all platforms."},"method":{"type":"string","enum":["GET","POST","PATCH","DELETE"],"description":"Only show endpoints served with this HTTP method."},"maxCost":{"type":"number","minimum":0,"description":"Only show endpoints that cost at most this many credits per call (metered endpoints are judged by their ceiling)."},"hydrating":{"type":"boolean","description":"Only show endpoints that can fill their own rows in the same call via an `include=` row join (e.g. a search page that can carry engagement counts). Use it to find the one call that answers a question instead of a page plus one lookup per row."},"detail":{"type":"string","enum":["compact","full"],"description":"'full' (default for a single platform) prints every parameter with its type, range, enum values, and couplings. 'compact' prints the summary table only — use it when searching broadly."},"page":{"type":"integer","minimum":1,"description":"Page number (default 1). Output longer than one response is paged, not truncated — the footer says how many pages there are and repeats your filters."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"socialcrawl_list_platforms","description":"List all 65 platforms available through SocialCrawl (575 endpoints — social media, commerce, marketplaces & product reviews, retail (Amazon, Walmart, Target, Home Depot, eBay, Klarna, AliExpress, Etsy, Sephora, H&M, Kohl's, Wayfair, Gumtree, Google Shopping), app stores, places, travel & local (Tripadvisor, Yelp, Google Business), business & software reputation (Trustpilot, G2), jobs & salaries, markets & finance, US congressional trading, news, web research and full scraping/browser automation, on-page SEO audits, prediction markets, search trends, Korean search (Naver), content analysis, and cross-platform Prism composites). Grouped by category, with each platform's endpoint count, credit range, and available data. No API key required.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"socialcrawl_monitors","description":"Create and manage stateful monitors that re-run any SocialCrawl recipe (a registry endpoint or a Prism composite) on a cadence (hourly/daily/weekly/cron), deliver each result to a signed webhook, raise alerts on metric thresholds/changes, and accumulate a per-run time-series. 'Prism answers once; monitors watch it for you.' Actions: create, list, get, runs, timeseries, pause, resume, delete. Managing monitors costs 0 credits; each scheduled run bills the underlying recipe's normal cost plus a 1-credit scheduling premium. Requires a valid SOCIALCRAWL_API_KEY.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"action":{"type":"string","enum":["create","list","get","runs","timeseries","pause","resume","delete"],"description":"Monitor operation: 'create' a scheduled monitor, 'list' your monitors, 'get' one, 'runs' for its run history, 'timeseries' for its metric series, 'pause'/'resume' it, or 'delete' it."},"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$","description":"Monitor id. Required for get/runs/timeseries/pause/resume/delete."},"recipe":{"type":"string","description":"create: the recipe to run each cadence — any registered endpoint or Prism composite as 'platform/resource' (e.g., 'prism/brand-mentions', 'tiktok/profile')."},"params":{"type":"object","additionalProperties":{},"description":"create: parameters passed to the recipe on every run (e.g., { keyword: 'acme' })."},"cadence":{"type":"string","description":"create: 'hourly', 'daily', 'weekly', or a cron expression (e.g., '0 9 * * 1')."},"webhook_url":{"type":"string","description":"create: HTTPS URL that receives each run's signed (HMAC-SHA256) result."},"name":{"type":"string","description":"create: optional human-readable label."},"alert_rules":{"type":"array","items":{"type":"object","properties":{"metric":{"type":"string"},"op":{"type":"string","enum":["gt","lt","gte","lte","abs_change_gt","pct_change_gt","pct_change_lt"]},"value":{"type":"number"},"window":{"type":"string","enum":["1d","1w"]}},"required":["metric","op","value"],"additionalProperties":false},"description":"create: optional alert rules on the recipe's computed metrics — e.g., [{ metric: 'negative_share', op: 'pct_change_gt', value: 25 }]."},"suppress_webhook_unless_alert":{"type":"boolean","description":"create: only fire the webhook when an alert rule trips (default false)."},"output_schema":{"type":"object","additionalProperties":{},"description":"create: optional JSON schema to shape the delivered payload."},"webhook_secret":{"type":"string","description":"create: optional signing secret (8-200 chars); otherwise one is generated and returned once."},"status":{"type":"string","description":"Filter. For list: 'active' | 'paused' | 'all'. For runs: 'ok' | 'partial' | 'failed' | 'skipped'."},"cursor":{"type":"string","description":"list/runs: pagination cursor."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"list/runs: page size (1-100, default 20)."},"from":{"type":"string","description":"runs/timeseries: ISO start of the time window."},"to":{"type":"string","description":"runs/timeseries: ISO end of the time window."},"include":{"type":"string","enum":["result"],"description":"runs: set to 'result' to include each run's full stored result envelope."},"metric":{"type":"string","description":"timeseries: comma-separated metric keys to project (defaults to all stable computed keys)."}},"required":["action"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"socialcrawl_pricing","description":"Exact credit pricing for every one of the 575 SocialCrawl endpoints. 'overview' returns the tier ladder (329 standard / 211 advanced / 35 premium), every free endpoint, every flat override, all 71 metered endpoints with their min-max band and exact charging rule, cache TTLs, and the full refund matrix. 'endpoint' gives one endpoint's price, metered rule, price-driving parameters, paging cost, and worst case. 'platform' gives a platform's whole cost table. 'list' ranks and filters endpoints by cost (maxCost/minCost/model/search/sort) — e.g. \"everything I can call for 1 credit\" or \"the most expensive endpoints\". 'hydration' catalogues every opt-in `include=` row join — what each fills, its per-row rate, its row cap, and what a fully-joined page holds. On 'endpoint', pass the `include` (and `rows`) you intend to send and the band becomes the exact upfront hold, itemised per join. Use this before spending credits. No API key required.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"action":{"type":"string","enum":["overview","endpoint","platform","list","hydration"],"description":"'overview' (default): the tier ladder, every free endpoint, every flat override, every metered band with its rule, cache TTLs, and the refund matrix. 'endpoint': one endpoint's exact price, metered rule, price-driving params, row joins, and worst case (needs platform + resource) — add `include`/`rows` for an exact quote instead of a band. 'platform': the cost table for one platform (needs platform). 'list': rank/filter endpoints by price across platforms. 'hydration': every `include=` row join in the API, what each one fills, what it costs per row and what a fully-joined page holds (optionally scoped with `platform`)."},"platform":{"type":"string","enum":["web","tiktok","instagram","youtube","twitter","linkedin","facebook","reddit","threads","pinterest","twitch","snapchat","truthsocial","telegram","kick","kwai","tiktokshop","perplexity","google","amazon","google_shopping","google_news","finance","google_trends","trustpilot","g2","google_play","app_store","tripadvisor","walmart","target","wayfair","home_depot","ebay","etsy","sephora","aliexpress","hm","kohls","klarna","gumtree","yelp","utility","linktree","linkbio","linkme","komi","pillar","polymarket","hackernews","quora","douyin","github","tavily","naver","rumble","bluesky","spotify","apple_music","search","prism","content_analysis","on_page","jobs","us_congress_trades"],"description":"Platform slug. Required for 'endpoint' and 'platform' actions; filters the 'list' action."},"resource":{"type":"string","description":"Resource path for the 'endpoint' action (e.g., 'profile', 'comments', 'jobs/{job_id}')."},"method":{"type":"string","enum":["GET","POST","PATCH","DELETE"],"description":"HTTP method. Disambiguates the `web` platform, where one resource is served by several methods; also filters the 'list' action."},"search":{"type":"string","description":"list: free-text filter over platform, resource, summary, and archetype."},"model":{"type":"string","enum":["ladder","flat","metered","free"],"description":"list: filter by billing model — 'ladder' (tier rate per request), 'flat' (per-endpoint override), 'metered' (query-dependent, ceiling deducted then refunded down), or 'free' (0 credits)."},"include":{"type":"string","description":"endpoint: the `include=` row-join tokens you intend to send (comma-separated, e.g. 'engagement' or 'engagement,channel'). Turns the quoted band into the exact hold for that call, itemised per join. Costs nothing to ask."},"rows":{"type":"integer","minimum":1,"description":"endpoint: the row cap you intend to send alongside `include` (the endpoint's own `limit`). A row join holds per row, so capping the rows caps the credits — quote it before you spend it."},"maxCost":{"type":"number","minimum":0,"description":"list: only endpoints that can cost at most this many credits (metered judged by their ceiling)."},"minCost":{"type":"number","minimum":0,"description":"list: only endpoints that cost at least this many credits (metered judged by their floor)."},"sort":{"type":"string","enum":["cost_asc","cost_desc","platform","name"],"description":"list: sort order (default 'cost_desc' — most expensive first)."},"limit":{"type":"integer","minimum":1,"maximum":200,"description":"list: maximum rows to return (1-200, default 40)."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"socialcrawl_request","description":"Make an API request to any of the 575 SocialCrawl endpoints. Fetches real-time data (profiles, posts, comments, transcripts, search results, products, offers and price history, reviews, apps, places and stores, jobs and salary ranges, news, market quotes and financial statements, congressional trade disclosures, SEO audits, trends, analytics, and cross-platform Prism composites) from 65 platforms. Most endpoints are GET (pass query params in `params`); batch endpoints (e.g. youtube/videos, prism/profiles) are POST — pass the array/object body in `body`. For web scraping/crawling/browser automation use the `socialcrawl_web` tool instead. Requires a valid SOCIALCRAWL_API_KEY. Validates the platform, resource, required params, oneOf groups, enum values, integer ranges, parameter couplings, and CSV limits locally first, so a malformed call fails free instead of burning credits. Reports the endpoint's price (and metered rule) with every response, and on an endpoint that supports row joins it either quotes the exact hold for the `include=` you sent or tells you the join is available and what it costs. Pass an optional idempotencyKey to make the request retry-safe (replays return the original response and deduct 0 credits).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"platform":{"type":"string","enum":["web","tiktok","instagram","youtube","twitter","linkedin","facebook","reddit","threads","pinterest","twitch","snapchat","truthsocial","telegram","kick","kwai","tiktokshop","perplexity","google","amazon","google_shopping","google_news","finance","google_trends","trustpilot","g2","google_play","app_store","tripadvisor","walmart","target","wayfair","home_depot","ebay","etsy","sephora","aliexpress","hm","kohls","klarna","gumtree","yelp","utility","linktree","linkbio","linkme","komi","pillar","polymarket","hackernews","quora","douyin","github","tavily","naver","rumble","bluesky","spotify","apple_music","search","prism","content_analysis","on_page","jobs","us_congress_trades"],"description":"Platform slug (e.g., 'tiktok', 'instagram', 'youtube')"},"resource":{"type":"string","minLength":1,"description":"Resource path (e.g., 'profile', 'post/comments', 'search')"},"params":{"type":"object","additionalProperties":{"type":"string"},"description":"Query parameters as key-value pairs (e.g., { handle: 'charlidamelio' }). For GET endpoints these are the query string. For POST batch endpoints, put scalar query params here (e.g. { hl: 'en' }) and the array/object body in `body`."},"body":{"type":"object","additionalProperties":{},"description":"JSON request body for POST batch endpoints (e.g. youtube/videos, prism/profiles). Put array/object params here — e.g. { ids: ['dQw4w9WgXcQ'] } or { items: [{ platform: 'tiktok', handle: '@scout2015' }] }. Ignored for GET endpoints. Use socialcrawl_list_endpoints to see which params belong in the body. For the web-scraping platform use the socialcrawl_web tool instead."},"idempotencyKey":{"type":"string","minLength":16,"description":"Optional Idempotency-Key header. Lets you safely retry the same request — replays return the original response and deduct 0 credits (24h TTL)."}},"required":["platform","resource"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"socialcrawl_web","description":"Full web scraping, search, and browser automation (Firecrawl-backed). Sync reads: 'scrape' (URL → markdown/HTML/screenshot/links), 'search' (web search with page content), 'map' (discover a site's URLs), 'extract' (LLM structured data from a page). Async jobs (submit, then poll with job_get/job_list, stop with job_cancel): 'crawl' a whole site, 'batch_scrape' many URLs, 'agent' (autonomous multi-step web task). Change detection: monitor_create/list/get/update/delete/checks (re-check a URL on a cadence → webhook). Interactive browser: session_create/get/list, session_execute (run code in the live page), session_close. Pricing varies by action (scrape 1cr, search 2cr, extract/session_create 5cr, agent 25cr; jobs/monitors/sessions management 0cr) — see the 'web' get_docs topic. Requires a valid SOCIALCRAWL_API_KEY.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"action":{"type":"string","enum":["scrape","search","map","extract","crawl","batch_scrape","agent","job_list","job_get","job_cancel","job_errors","crawl_preview","monitor_create","monitor_list","monitor_get","monitor_update","monitor_delete","monitor_checks","session_create","session_list","session_get","session_execute","session_close"],"description":"Web operation. Sync (returns data now): scrape, search, map, extract. Async jobs: crawl, batch_scrape, agent → then job_get/job_list/job_cancel to poll, and job_errors for a job's per-page failure feed. crawl_preview dry-runs a crawl's parameters for free before you pay for it. Change detection: monitor_create/list/get/update/delete/checks. Interactive browser: session_create/list/get/execute/close."},"id":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$","description":"Job / monitor / session id. Required for *_get, *_cancel, *_delete, *_update, *_checks, *_execute, and job_errors actions. Returned by the matching *_create / *_list action."},"input":{"type":"object","additionalProperties":{},"description":"Operation parameters. For sync/GET actions these are query params (e.g. { url: 'https://example.com', formats: 'markdown,screenshot' } for scrape; { query: 'ai agents', limit: 10 } for search). For POST/PATCH actions this is the JSON body (e.g. { url, prompt, model } for agent; { url, cadence_minutes, webhook_url } for monitor_create; { code, language } for session_execute). Use socialcrawl_list_endpoints for platform 'web', or the 'web' get_docs topic, for the full per-action parameter list."},"idempotencyKey":{"type":"string","minLength":16,"description":"Optional Idempotency-Key for the async job submitters (crawl, batch_scrape). Replays return the original job and deduct 0 credits."}},"required":["action"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":84,"grade":"B","scanned_at":"2026-09-20T00:24:33.203Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T00:24:33.191Z","components":{"code":{"score":25,"max":25,"notes":["55 source files scanned"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 986ms"]},"poisoning":{"score":15,"max":15,"notes":["10 tool descriptions checked"]},"auth":{"score":8,"max":15,"notes":["API key sent as a header"]},"maintenance":{"score":8,"max":15,"notes":["last push 162 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"probes":[{"url":"https://mcp.socialcrawl.dev/mcp","reachable":true,"authRequired":false,"latencyMs":986,"serverInfo":{"name":"socialcrawl-mcp","version":"1.12.0"}}],"packages":[{"registryType":"npm","identifier":"socialcrawl-mcp","version":"1.10.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":4,"publishedAt":"2026-09-08T09:46:57.525Z","repositoryUrl":"git+https://github.com/RidioDevelopment/socialcrawl-mcp.git","weeklyDownloads":474}],"repo":{"found":true,"owner":"RidioDevelopment","repo":"socialcrawl-mcp","archived":false,"pushedAt":"2026-04-10T13:53:09Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/169679360?v=4","ownerCreatedAt":"2024-05-13T14:02:25Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/169679360?v=4&s=128","source":"github"},"presence":{"stars":0,"forks":0,"downloadsWeek":474,"license":"MIT","lastPushAt":"2026-04-10T13:53:09.000Z","score":24}}}},"grade_history":[],"reviews":[]}