SocialCrawl
Server Details
One API for 65 platforms and 572 endpoints: social, commerce, retail, jobs, finance, web scraping.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- RidioDevelopment/socialcrawl-mcp
- GitHub Stars
- 0
- Server Listing
- socialcrawl-mcp
TDQS
Most tools cover distinct functional areas (credits, cohorts, monitors, generic requests, web scraping), but the metadata surface is crowded: discover, get_docs, list_endpoints, list_platforms, and pricing overlap around API/docs/endpoint discovery. The long descriptions help, but an agent could easily pick the wrong one for 'list endpoints' or 'what does X cost.'
All tools share the socialcrawl_ prefix and snake_case, but after that the pattern is mixed: check/get/list/discover/request are verb-based, while cohorts/monitors/pricing/web are noun-only resource names. This is readable but not a consistent verb_noun convention.
Ten tools is within the ideal scope for a very broad API surface and covers both a generic escape hatch and specialized workflows. A small amount of redundancy among the documentation/pricing/discovery tools keeps this from being a perfect 5.
The generic socialcrawl_request plus socialcrawl_web gives broad coverage of the 572 endpoints, and dedicated cohorts, monitors, balance, and pricing tools fill major workflows. Minor gaps exist, such as no update action for the stateful monitors, but nothing creates a dead end.
Available Tools
10 toolssocialcrawl_cohortsSocialCrawl Cohorts — Audience-Filtered Mention SearchADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | create: human-readable label, up to 120 characters. | |
| limit | No | query_results: page size, 1-500 (default 100). It governs the coverage list too. | |
| action | Yes | 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. | |
| cursor | No | query_results: pass `next_cursor` back verbatim. Keep going until it is null. | |
| date_to | No | query: optional RFC3339 upper bound on the window. | |
| members | No | 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. | |
| keywords | No | 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. | |
| query_id | No | Query id from 'query'. Required for query_status/query_results/query_cancel. | |
| cohort_id | No | Cohort id from 'create'. Required for get/delete/add_members/query. | |
| date_from | No | 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. | |
| platforms | No | query: restrict the run to a subset of the platforms present in the cohort. Omit to query them all. | |
| max_credits | No | 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. | |
| idempotencyKey | No | 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. | |
| retention_days | No | 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. | |
| platform_counts | No | estimate_cost: the panel's platform mix as { instagram: 4000, youtube: 1000, ... } when you want a ceiling without passing the identities themselves. | |
| max_items_per_identity | No | query (required, no default): item budget per member, 1-1,000. | |
| max_pages_per_identity | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavior beyond the annotations: lifecycle calls cost 0 credits while queries are metered with reservation and refunds, query is async and returns 202, matching is literal and deterministic with no stemming or fuzzy inference, and coverage is returned even for members with zero matches so partial crawls are not misread. It also discloses privacy handling and the API key requirement. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but dense and front-loaded. The first sentence states the core purpose and differentiation, the action list embeds lifecycle order, and separate sentences address matching behavior, credit costs, and privacy. Every sentence contributes useful decision or invocation signal; there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description covers the essential return shape (items plus coverage), the asynchronous query flow via query_status, the credit reservation model, and the required API key. Combined with the highly detailed input schema and action enum, an agent has enough context to select, invoke, and interpret this multi-action tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents each parameter in detail, so the baseline is 3. The description adds meaningful cross-parameter context: estimate_cost is local and sizes max_credits, add_members upserts on external_id, query_results carries items plus coverage, and matching semantics clarify keywords/date constraints. It does not individually elaborate every parameter, but the schema already carries that weight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete question and explicitly positions the tool as 'the opposite of open social listening'. It states the resource (a cohort of up to 10,000 public handles), the action (keyword mention search), and the result (matching posts plus coverage), making it easy to distinguish from open-listening siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly tells an agent when to use this tool: when the target set is a known panel of specific identities rather than the open social graph. It also provides a helpful lifecycle order for the actions. However, it does not explicitly name sibling alternatives like socialcrawl_discover or socialcrawl_monitors, so the exclusion guidance is implied rather than direct.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
socialcrawl_discoverSocialCrawl API Self-Discovery (utility endpoints)ARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | endpoint (required): the endpoint id as 'platform/resource' (e.g. 'tiktok/profile'), a path ('/v1/tiktok/profile'), or a full URL. | |
| live | No | 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 | No | Page number (default 1). Long output is paged, not truncated. | |
| action | No | '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. | |
| format | No | llms: 'markdown' (default) returns the corpus text; 'json' returns a structured context object. | |
| method | No | catalog: filter by HTTP method. endpoint: disambiguate a resource registered under more than one method (the stateful `web` family). | |
| search | No | catalog: case-insensitive substring filter over endpoint paths and summaries. | |
| platform | No | Scope to one platform slug (e.g. 'tiktok'). Applies to quickstart, catalog, and llms. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds substantial context beyond those: live registry answers avoid drift, bundled fallback behavior without an API key, status requiring no key, zero-credit utility access, and paged rather than truncated output. This richly discloses operational behavior without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but organized around the six action modes, and it front-loads the core purpose: the API describing itself live at zero credits. Every sentence contributes useful behavioral or usage context, though the density makes it somewhat heavy as a single block.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description explains what each action returns, including quickstart content, catalog format, endpoint guides, llms corpus options, freshness comparison, and status circuit-breaker data. It also covers auth fallback, paging behavior, and billing context, making the tool effectively self-sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter coverage with detailed descriptions, including enums and per-action explanations. The description adds high-level context around live versus bundled data and when to use actions, but it does not add significant per-parameter meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as live self-discovery of the SocialCrawl API at zero credits, covering the /v1/utility/* family and enumerating each action mode. It is specific about the resource and behavior, though it does not explicitly differentiate itself from sibling tools like socialcrawl_get_docs or socialcrawl_list_endpoints by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives actionable guidance: use these live endpoints when correctness matters more than latency, when an endpoint looks unknown, and read 'status' before retrying persistent 502/503 errors. It does not explicitly name sibling alternatives or state when not to use the tool, but the context is clear enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
socialcrawl_get_docsGet SocialCrawl DocumentationARead-onlyIdempotentInspect
Retrieve SocialCrawl API documentation. Topics: 'overview' (compact intro), 'full' (comprehensive reference for all 572 endpoints), 'authentication', 'credits', 'pricing' (per-endpoint cost for every endpoint), 'errors', 'idempotency', 'pagination' (universal cursor contract), 'caching' (TTLs and free hits), '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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 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 | No | Documentation topic: 'overview', 'full', 'authentication', 'credits', 'pricing' (per-endpoint costs), 'errors', 'idempotency', 'pagination', 'caching', 'response-schema', 'limits', 'monitors', 'discovery', or a platform slug (e.g., 'tiktok', or 'web' for the scraping/browser surface). | overview |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds that retrieval needs no API key, which is useful operational context, but it does not disclose output shape or how long responses are paged; the pagination detail is present in the schema, not the description. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main purpose is front-loaded and every parenthetical earns its place by clarifying a topic. It is dense and somewhat hard to scan as a single long sentence, but there is no filler or redundant repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Together with the schema and annotations, the description covers topic semantics, defaults, pagination behavior, and auth requirements, leaving little needed to invoke the tool correctly. The main gap is the lack of explicit guidance about sibling tools that share topic names, which could cause a misrouted call if the agent wants live data rather than documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents both parameters with 100% coverage, so the baseline is 3. The description adds real value by defining each topic in parentheses and introducing the 'platform slug' concept with examples, which goes beyond the schema's bare enumeration.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb and resource: 'Retrieve SocialCrawl API documentation.' It then enumerates every topic value with a gloss, so an agent knows exactly what kind of content is returned and can distinguish this doc-lookup tool from sibling data/action tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the tool is for documentation lookup and adds a useful prerequisite ('No API key required'). However, it never explicitly addresses overlaps with sibling tools like socialcrawl_pricing, socialcrawl_monitors, or socialcrawl_discover, even though those topics appear in the same docs. The agent is left to infer that live data should come from siblings rather than from this documentation tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
socialcrawl_list_endpointsList Endpoints for a PlatformARead-onlyIdempotentInspect
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 / 572 endpoints. Filter with method and maxCost. No API key required.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 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. | |
| detail | No | '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. | |
| method | No | Only show endpoints served with this HTTP method. | |
| search | No | 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. | |
| maxCost | No | Only show endpoints that cost at most this many credits per call (metered endpoints are judged by their ceiling). | |
| platform | No | Platform slug (e.g., 'tiktok', 'instagram', 'youtube'). Omit it and pass `search` to look for an endpoint across all platforms. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations: 'No API key required' addresses authentication, and the mention of 'per-endpoint pricing (including metered bands)' and 'cache TTL' tells the agent what to expect in return. This exceeds the baseline set by annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: four sentences, each earning its place. The primary action and return contract are front-loaded, followed by query modes, filters, and the auth note. There is no filler or redundancy with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description enumerates what the returned full parameter contract contains, and the schema richly documents all six optional parameters including pagination behavior. The combination of description, schema, and annotations gives an agent everything needed to call this tool correctly for reference lookups and cross-platform searches.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter already has a detailed description in the schema. The main description mostly restates the schema's guidance (platform vs. search, method and maxCost filters) without adding new parameter-level meaning. The '65 platforms / 572 endpoints' statistic adds scope context but not semantic detail, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'List endpoints with their full parameter contract.' It enumerates exactly what the contract includes (types, ranges, enums, couplings, pricing) and distinguishes this from siblings like socialcrawl_list_platforms by focusing on endpoints rather than platforms. No ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the primary query modes: 'Pass a platform for that platform's reference, or a search term to find an endpoint across all 65 platforms / 572 endpoints' and 'Filter with method and maxCost.' This provides clear context for use, though it does not explicitly name sibling alternatives or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
socialcrawl_list_platformsList SocialCrawl PlatformsARead-onlyIdempotentInspect
List all 65 platforms available through SocialCrawl (572 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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds useful context beyond that by noting that no API key is required and by describing the response shape: grouped by category with endpoint count, credit range, and available data. This goes beyond what the annotations alone reveal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded effectively, but the description becomes one very long parenthetical enumeration of categories and examples. While informative, this reduces scannability; the same information could be delivered more concisely as a short category list or shorter summary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only catalog listing tool with no output schema, the description is largely complete: it states the full scope, the output contents, the grouping scheme, and the lack of an API key requirement. It lacks explicit sibling-routing guidance, but that is not essential for understanding this particular tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
This tool has zero parameters and 100% schema coverage, so there is no parameter documentation burden. The description appropriately adds no invented parameter details and instead communicates access context and result contents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'List all 65 platforms available through SocialCrawl.' It then clarifies the scope by enumerating covered categories and stating the returned fields, making it clearly distinguishable from a sibling like socialcrawl_list_endpoints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is useful for browsing the platform catalog and selecting platforms by category, credit range, or available data. However, it never explicitly explains when to choose this over related tools such as socialcrawl_list_endpoints or socialcrawl_discover, and it provides no exclusions or alternative routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
socialcrawl_monitorsManage SocialCrawl MonitorsADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Monitor id. Required for get/runs/timeseries/pause/resume/delete. | |
| to | No | runs/timeseries: ISO end of the time window. | |
| from | No | runs/timeseries: ISO start of the time window. | |
| name | No | create: optional human-readable label. | |
| limit | No | list/runs: page size (1-100, default 20). | |
| action | Yes | 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. | |
| cursor | No | list/runs: pagination cursor. | |
| metric | No | timeseries: comma-separated metric keys to project (defaults to all stable computed keys). | |
| params | No | create: parameters passed to the recipe on every run (e.g., { keyword: 'acme' }). | |
| recipe | No | create: the recipe to run each cadence — any registered endpoint or Prism composite as 'platform/resource' (e.g., 'prism/brand-mentions', 'tiktok/profile'). | |
| status | No | Filter. For list: 'active' | 'paused' | 'all'. For runs: 'ok' | 'partial' | 'failed' | 'skipped'. | |
| cadence | No | create: 'hourly', 'daily', 'weekly', or a cron expression (e.g., '0 9 * * 1'). | |
| include | No | runs: set to 'result' to include each run's full stored result envelope. | |
| alert_rules | No | create: optional alert rules on the recipe's computed metrics — e.g., [{ metric: 'negative_share', op: 'pct_change_gt', value: 25 }]. | |
| webhook_url | No | create: HTTPS URL that receives each run's signed (HMAC-SHA256) result. | |
| output_schema | No | create: optional JSON schema to shape the delivered payload. | |
| webhook_secret | No | create: optional signing secret (8-200 chars); otherwise one is generated and returned once. | |
| suppress_webhook_unless_alert | No | create: only fire the webhook when an alert rule trips (default false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as mutable/destructive and non-idempotent, and the description adds substantial behavioral context: monitors are stateful, management costs 0 credits while scheduled runs add a 1-credit premium, webhook delivery is signed, alerts and time-series accumulation exist, and a valid API key is required. This goes well beyond the annotation hints and gives the agent important operational expectations. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence earns its place: core purpose, tagline, action enumeration, billing model, and auth requirement. The description is compact relative to an 18-parameter multi-action tool and front-loads the primary function before operational details. There is no fluff or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex multi-action tool with no output schema, the description provides strong operational context including billing, auth, stateful behavior, and webhook signing. The parameter schema handles the detailed field semantics. The only notable gap is that the description does not explain the return shapes for list/get/runs/timeseries, which would be useful given no output schema is declared.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all 18 parameters with descriptions, so the baseline is 3. The tool description reinforces high-level concepts like cadence, webhook delivery, alerts, and time-series, but it does not add per-parameter meaning beyond what the schema already provides. The schema itself carries the full semantic load for individual parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Create and manage stateful monitors') and immediately scopes the behavior: re-running recipes on cadence, delivering signed webhook results, raising alerts, and storing time-series. It lists all eight actions explicitly and distinguishes the tool from one-shot recipe execution via the tagline 'Prism answers once; monitors watch it for you.' This is clearly differentiated from siblings like socialcrawl_request.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: when a recipe must be re-run on a cadence, delivered to a webhook, or monitored for metric changes. It contrasts with one-shot execution using the tagline, and it clarifies billing implications. It does not explicitly name sibling alternatives or state hard exclusions, but the usage context is strong enough for an agent to select it correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
socialcrawl_pricingSocialCrawl Pricing & Credit CostsARead-onlyIdempotentInspect
Exact credit pricing for every one of the 572 SocialCrawl endpoints. 'overview' returns the tier ladder (327 standard / 210 advanced / 35 premium), every free endpoint, every flat override, all 41 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". Use this before spending credits. No API key required.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | list: sort order (default 'cost_desc' — most expensive first). | |
| limit | No | list: maximum rows to return (1-200, default 40). | |
| model | No | 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). | |
| action | No | '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, and worst case (needs platform + resource). 'platform': the cost table for one platform (needs platform). 'list': rank/filter endpoints by price across platforms. | |
| method | No | HTTP method. Disambiguates the `web` platform, where one resource is served by several methods; also filters the 'list' action. | |
| search | No | list: free-text filter over platform, resource, summary, and archetype. | |
| maxCost | No | list: only endpoints that can cost at most this many credits (metered judged by their ceiling). | |
| minCost | No | list: only endpoints that cost at least this many credits (metered judged by their floor). | |
| platform | No | Platform slug. Required for 'endpoint' and 'platform' actions; filters the 'list' action. | |
| resource | No | Resource path for the 'endpoint' action (e.g., 'profile', 'comments', 'jobs/{job_id}'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only and idempotent; the description adds meaningful context: no API key required, output includes cache TTLs and the refund matrix, and list evaluation rules for metered costs. It does not discuss staleness or rate limits, but those are minor given the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense and front-loaded: first sentence states the tool's exact scope, then each action's deliverable is listed, ending with an example. Every sentence earns its place; no filler or tautology.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 10-parameter, 4-action tool with no output schema, the description covers every action mode, the contents returned by each, auth requirements, and representative use cases. The parameter schema handles the remaining syntax details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with thorough parameter descriptions, so baseline is 3. The description adds value by grouping actions, noting that endpoint/platform actions require the platform parameter, stating the default action is 'overview', and giving real query examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise purpose: exact credit pricing for all 572 endpoints, and enumerates four actions with exact outputs. This clearly separates it from sibling tools like socialcrawl_request or socialcrawl_check_balance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context ('Use this before spending credits') and concrete query examples for the list action. It does not explicitly name sibling alternatives or state when not to use it, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
socialcrawl_requestMake a SocialCrawl API RequestARead-onlyIdempotentInspect
Make an API request to any of the 572 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. Pass an optional idempotencyKey to make the request retry-safe (replays return the original response and deduct 0 credits).
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | 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. | |
| params | No | 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`. | |
| platform | Yes | Platform slug (e.g., 'tiktok', 'instagram', 'youtube') | |
| resource | Yes | Resource path (e.g., 'profile', 'post/comments', 'search') | |
| idempotencyKey | No | Optional Idempotency-Key header. Lets you safely retry the same request — replays return the original response and deduct 0 credits (24h TTL). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds several behaviors beyond the annotations: local validation prevents malformed calls from costing credits, responses report endpoint price and metered rules, and idempotencyKey enables retry-safe behavior with 0-credit replays. None of these contradict the annotations, and they substantially enrich the agent's understanding of call semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-organized: it opens with purpose, then covers HTTP method conventions, alternatives, authentication, validation, pricing, and retry semantics in a logical order. Each sentence conveys distinctive information needed for a generic 572-endpoint gateway, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and enormous endpoint variety, the description covers every essential operational aspect: platform/resource identification, GET/POST handling, body/params mapping, required API key, free local validation, cost reporting, idempotency, and routing to the correct sibling tool. It appropriately defers exhaustive endpoint details to list_endpoints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaningful interaction-level semantics: it clearly distinguishes when to use `params` versus `body`, gives concrete examples for each, and explains the role of idempotencyKey beyond the schema's field description. This exceeds baseline by helping the agent assemble requests correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: making an API request to any of the 572 SocialCrawl endpoints, and lists the broad data categories and platforms it covers. It distinguishes itself from the socialcrawl_web sibling by explicitly excluding web scraping/crawling/browser automation use cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage guidance: most endpoints are GET with query params in `params`, while batch endpoints are POST with body in `body`. It explicitly directs users to the socialcrawl_web tool for web scraping alternatives and references socialcrawl_list_endpoints to determine where parameters belong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
socialcrawl_webSocialCrawl Web Scraping & Browser AutomationADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Job / monitor / session id. Required for *_get, *_cancel, *_delete, *_update, *_checks, *_execute, and job_errors actions. Returned by the matching *_create / *_list action. | |
| input | No | 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. | |
| action | Yes | 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. | |
| idempotencyKey | No | Optional Idempotency-Key for the async job submitters (crawl, batch_scrape). Replays return the original job and deduct 0 credits. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry destructiveHint=true, readOnlyHint=false, and openWorldHint=true, so the bar is lower. The description adds valuable behavioral context beyond them: API key requirement, per-action credit costs, async submit-then-poll behavior, monitor re-check cadence, and idempotency semantics. It does not detail destructive consequences, but destructiveHint and action names like delete/cancel/close provide the baseline warning.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every clause earns its place: it front-loads the purpose, organizes 23 actions into sync, async, monitor, and browser groups, and attaches pricing, docs pointer, and auth requirements. For the breadth of this tool, the length is justified and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and a large action surface, the description is remarkably complete: it covers workflows, auth, costs, and points to get_docs for the full per-action parameter list. It leaves response shapes and detailed error semantics to the docs, which is a reasonable trade-off given the scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 even without parameter information in the tool description. The description enriches action semantics but does not add per-parameter detail beyond what the input schema already provides for action, id, input, and idempotencyKey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear, agent-facing purpose: 'Full web scraping, search, and browser automation (Firecrawl-backed),' then enumerates the action groups and their outputs. It is specific enough about what the tool does, though it does not explicitly contrast itself with sibling tools like socialcrawl_request or socialcrawl_monitors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives strong internal routing guidance: sync reads vs. async jobs, monitor cadence with webhook, interactive browser sessions, and even a free crawl_preview dry-run. It does not state explicit 'when not to use' conditions or compare against sibling alternatives, but for this broad umbrella tool the action-level guidance is quite usable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
10 tool updates
- First observed
socialcrawl_check_balance - First observed
socialcrawl_cohorts - First observed
socialcrawl_discover - First observed
socialcrawl_get_docs - First observed
socialcrawl_list_endpoints - First observed
socialcrawl_list_platforms - First observed
socialcrawl_monitors - First observed
socialcrawl_pricing - First observed
socialcrawl_request - First observed
socialcrawl_web
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity – fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge – works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge – works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
One API for public web data across social, directories and real estate, as clean JSON.
Hundreds of scraping & data APIs through one key. USD pay-per-request, normalized schemas, failover.
Unified social-media data across 10 networks: profiles, posts, search, comments, cross-search.
Structured web data from 31 platforms: Google, YouTube, Amazon, Walmart, Reddit, TikTok, LinkedIn
Related MCP Servers
- -licenseNot gradedqualityCmaintenanceTwitter/X, YouTube, Reddit, Google and more - 100+ endpoints in total. No account, no OAuth, no subscription. Pay per call in USDC, or top up once and spend one balance across all of them.-
- AlicenseAqualityNot gradedmaintenanceUnified API for Government Data and Web Scraping100-

SocialCrawlofficial
AlicenseAqualityDmaintenanceSocialCrawl provides the "best" quality public web data on the internet. Access 65+ real-time social media, e-commerce and public web data from a single API with a single schema.511813MIT
Crawlora MCPofficial
AlicenseBqualityAmaintenanceHosted MCP server for structured public web data — 319 tools across search, maps, commerce, social & finance, returning clean JSON.105005361MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
socialcrawl_check_balanceCheck SocialCrawl Credit BalanceARead-onlyIdempotent Inspect
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.TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and idempotentHint annotations, the description discloses meaningful behavior: the exact GET endpoints, that "both cost 0 credits," that a valid SOCIALCRAWL_API_KEY is required, and the ledger semantics including upfront holds being refunded down. This goes well beyond what annotations alone convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two dense sentences with no filler. It front-loads the core purpose, then delivers endpoint details, use-case guidance, cost, and authentication requirements in a compact, readable structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description covers what each view returns, when to use each, cost, authentication, and the purpose of the ledger. The schema covers pagination details via cursor and limit, so nothing essential for calling the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameters are already well documented. The description adds value by explaining the purpose of the view switch and how request_id relates to confirming actual metered charges, but it does not add additional semantics for limit or cursor beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear, specific action: "Check the credit balance and the credit ledger for the authenticated SocialCrawl account." It additionally names the two underlying endpoints, making the tool's scope unmistakable and easily distinguishable from siblings like socialcrawl_request or socialcrawl_pricing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly explains when to use the balance view versus the transactions view, especially for "dispute-grade itemised receipts" and confirming what a metered endpoint actually charged. It does not explicitly contrast this tool with sibling tools, but the siblings are functionally distinct enough that the internal view guidance is the main decision point.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.