Scrape Everything MCP Server
OfficialProvides tools for fetching public Facebook profile data by username.
Provides tools for fetching public Instagram data, including profiles, photos, posts, reels, comments, and reel searches by username, URL, or shortcode.
Provides tools for retrieving public Pinterest data, including profiles, pins, boards, and search results.
Provides tools for fetching public Spotify data on tracks, artists, albums, and playlists by URL, ID, or name.
Provides tools for retrieving public Telegram data, including profiles, channel posts, and individual posts.
Provides tools for retrieving public TikTok data, including profiles, posts, videos, comments, transcripts, music, and hashtag information.
Provides tools for fetching public Twitch data, including channels, videos, and clips by username.
Provides tools for fetching public YouTube data, including channels/profiles, videos, searches, comments, transcripts, and playlists.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Scrape Everything MCP Serverget the last 10 posts from @nasa on instagram"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Scrape Everything MCP server
An MCP server for Scrape Everything. Public social data as clean JSON. It lets Claude, Cursor, VS Code, Windsurf and any other MCP client fetch public data from Instagram, TikTok, X, YouTube, Facebook, Telegram, Spotify, Pinterest and Twitch.
One tool per API endpoint. At startup the server reads the live catalog from
GET /v1/scrapersand registers a tool for each scraper (instagram_profile,tiktok_posts,youtube_transcript, ...). New endpoints appear without a package update.Works offline. If the catalog can't be fetched, the server starts from a bundled snapshot.
Shows the cost first. Every tool description lists its credit cost and the fields it returns. Failed calls are refunded.
Gives readable errors. API errors come back as tool errors that keep the error
codeandrequest_id. OnRATE_LIMITEDthe error includes the Retry-After wait. The server never retries on its own.Keeps results bounded. Results are JSON text, truncated at 100k characters by default, with a note when that happens.
Sends no telemetry. The only network calls go to the Scrape Everything API.
Get an API key
Create a key at https://scrapeeverything.com/dashboard/keys. Keys look like ssk_live_....
Related MCP server: Monocrawl MCP
Install
Claude Code
claude mcp add scrapeeverything -e SCRAPEEVERYTHING_API_KEY=ssk_live_... -- npx -y @scrapeeverything/mcpClaude Desktop
Edit claude_desktop_config.json (Settings, then Developer, then Edit Config):
{
"mcpServers": {
"scrapeeverything": {
"command": "npx",
"args": ["-y", "@scrapeeverything/mcp"],
"env": { "SCRAPEEVERYTHING_API_KEY": "ssk_live_..." }
}
}
}On Windows, if npx is not found, use "command": "cmd" and "args": ["/c", "npx", "-y", "@scrapeeverything/mcp"].
Cursor
Add this to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):
{
"mcpServers": {
"scrapeeverything": {
"command": "npx",
"args": ["-y", "@scrapeeverything/mcp"],
"env": { "SCRAPEEVERYTHING_API_KEY": "ssk_live_..." }
}
}
}VS Code (GitHub Copilot agent mode)
Add this to .vscode/mcp.json. VS Code prompts for the key and stores it securely:
{
"inputs": [
{ "type": "promptString", "id": "scrapeeverything-key", "description": "Scrape Everything API key", "password": true }
],
"servers": {
"scrapeeverything": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@scrapeeverything/mcp"],
"env": { "SCRAPEEVERYTHING_API_KEY": "${input:scrapeeverything-key}" }
}
}
}Or from a terminal:
code --add-mcp '{"name":"scrapeeverything","command":"npx","args":["-y","@scrapeeverything/mcp"],"env":{"SCRAPEEVERYTHING_API_KEY":"ssk_live_..."}}'Windsurf
Add this to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"scrapeeverything": {
"command": "npx",
"args": ["-y", "@scrapeeverything/mcp"],
"env": { "SCRAPEEVERYTHING_API_KEY": "ssk_live_..." }
}
}
}Self-hosted streamable HTTP
SCRAPEEVERYTHING_API_KEY=ssk_live_... npx -y @scrapeeverything/mcp --http --port 3333
# MCP endpoint: http://127.0.0.1:3333/mcp health: /healthHTTP mode is stateless and accepts POST only. By default it binds to 127.0.0.1 and only accepts loopback Host and Origin headers (127.0.0.1, localhost, [::1]), which blocks DNS rebinding. On loopback, each request can bring its own key with Authorization: Bearer ssk_live_... or x-api-key. If a request has no key, the server uses SCRAPEEVERYTHING_API_KEY.
To listen on any other address, you must set an inbound auth token. Without one the server refuses to start, so it can never act as an open proxy that spends your key:
SCRAPEEVERYTHING_MCP_AUTH_TOKEN="$(openssl rand -hex 32)" \
npx -y @scrapeeverything/mcp --http --host 0.0.0.0 --port 3333 --allowed-host mcp.example.comClients send
Authorization: Bearer <token>. The token is compared in constant time and must be at least 16 characters.With a token set, each client sends its own Scrape Everything key in
x-api-key. The server'sSCRAPEEVERYTHING_API_KEYis not used as a fallback unless you pass--allow-shared-key.--allowed-host(repeatable, orSCRAPEEVERYTHING_MCP_ALLOWED_HOSTS, comma-separated) restricts theHostheader. Requests that send anOriginheader must match an allowed host or an--allowed-origin(SCRAPEEVERYTHING_MCP_ALLOWED_ORIGINS).Terminate TLS in front of the server (a reverse proxy) so the token and keys are never sent in clear text.
Configuration
Variable | Default | Purpose |
| (none) | API key. Required for scraper tools and |
|
| API base URL. Must be https unless the host is loopback (for local dev, |
| (none) | HTTP mode: inbound bearer token. Required to bind to a non-loopback host. |
| (none) | HTTP mode: comma-separated extra |
| (none) | HTTP mode: comma-separated extra |
|
| Max characters per tool result before truncation. |
| off | Set it to |
About one_of: some endpoints accept one of several inputs, for example url or shortcode. Several clients reject a top-level anyOf in tool schemas, Anthropic's API among them. So by default the rule goes in the schema/tool description, and the server checks it before calling the API, which spends no credits. Set SCRAPEEVERYTHING_MCP_SCHEMA_ANYOF=1 if your client supports anyOf.
Tools
Tool | Credits | Required input |
| 0 | (none). Returns email, plan, credits and rate/concurrency limits. |
| 0 | optional |
| 1 |
|
| 2 |
|
| 1 | one of |
| 1 | one of |
| 1 | one of |
| 2 |
|
| 3 |
|
| 1 |
|
| 2 |
|
| 1 | one of |
| 1 |
|
| 1 |
|
| 1 | one of |
| 1 | one of |
| 1 | one of |
| 2 | one of |
| 1 |
|
| 1 | one of |
| 1 | one of |
| 1 | one of |
| 1 |
|
| 1 | one of |
| 1 | one of |
| 1 | one of |
| 1 |
|
| 1 |
|
| 2 |
|
| 1 | one of |
| 1 | one of |
| 1 | one of |
| 1 | one of |
| 1 | one of |
| 1 |
|
| 2 |
|
| 1 | one of |
| 2 |
|
| 2 | one of |
| 1 |
|
| 1 |
|
| 1 |
|
The live catalog is the source of truth. Ask your assistant to run list_scrapers to see the current list.
Development
npm install
npm run build
npm test
npm run update-catalog # refresh catalog/scrapers.json (honours SCRAPEEVERYTHING_API_URL)
node dist/index.js --helpInspect the server interactively with npx @modelcontextprotocol/inspector node dist/index.js.
Org and scope placeholders
org.config.json is the one place that records the GitHub org (scrapeeverything) and the npm scope (@scrapeeverything). To change them, run:
npm run apply-org -- --github-org <org> --npm-scope @<scope>That rewrites package.json (name, mcpName, repository), server.json, smithery.yaml and this README. The MCP Registry name io.github.<org>/mcp must match the GitHub org that publishes it. glama.json lists the GitHub usernames of the Glama maintainers, so put the founder's GitHub username there.
Releasing
Run
npm version patch(orminor/major). This also syncsserver.json.Run
git push --follow-tags.The
release.ymlworkflow publishes to npm with provenance (NPM_TOKENsecret), then publishesserver.jsonto the official MCP Registry through GitHub OIDC.
About Scrape Everything
Scrape Everything is a REST API for public social media data. Send a username, link or ID and get clean, typed JSON from Instagram, TikTok, X, YouTube, Facebook, Telegram, Spotify, Pinterest and Twitch. Pay per successful request with prepaid credits that never expire. New accounts start with 100 free credits. https://scrapeeverything.com
License
MIT © 2026 Scrape Everything
Available Tools
42 toolsfacebook_profileFacebook pageARead-onlyIdempotent
Public Facebook Page/profile metadata from Open Graph tags: name, bio, image and (for Pages) like/follower/talking-about counts. Cost: 1 credit per successful call (failed calls are refunded). Returns: username (string), name (string), like_count (integer, nullable), follower_count (integer, nullable), talking_about_count (integer, nullable), bio (string), profile_url (string), profile_image_url (string, nullable).
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Page/profile vanity name, numeric profile ID, or facebook.com URL. Example: "cristiano" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/non-destructive, so the bar is lower, and the description still adds real value: the Open Graph data source (implying data may be sparse for profiles with restricted OG tags) and an explicit cost model of 1 credit per successful call with failed calls refunded. Rate limits and behavior on missing/private profiles are not covered.
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?
Three tight lines, front-loaded with what is returned, followed by cost and the return shape. No filler sentences; the dense return-field list is justified because no output schema exists.
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?
With no output schema, the description compensates by enumerating every returned field and its nullability, plus cost and data provenance. For a one-parameter read-only scraper this covers everything an agent needs before invoking it.
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 single 'username' parameter already documents accepted forms (vanity name, numeric ID, or facebook.com URL) with an example. The description adds nothing about the parameter, so this sits at the baseline for a fully documented schema.
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 specific resource (public Facebook Page/profile metadata) and enumerates the exact fields returned (name, bio, image, like/follower counts). The platform is unambiguous and separates it from the instagram_profile / x_profile / tiktok_profile siblings by name alone, though the description never explicitly contrasts them.
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?
Usage is implied rather than stated: an agent can infer 'call this when you want Facebook profile metadata', and the '(for Pages)' qualifier hints that count fields only apply to Pages. There is no explicit when-to-use, no exclusions (e.g. private profiles), and no pointer to sibling tools for posts or comments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_accountScrape Everything accountARead-onlyIdempotent
Show the current API key's account: email, plan, remaining credits and rate/concurrency limits. Free (no credits).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds value beyond that: it discloses the exact response contents (email, plan, credits, rate/concurrency limits) and that the call consumes no credits, which is a real behavioral trait. It stops short of stating what happens with an invalid or expired key.
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?
Two short sentences, zero filler. The resource and returned fields are front-loaded, and the cost note is a compact trailing qualifier.
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?
There is no output schema, so the description carries the burden of describing the return value — and it does so by naming the key fields. For a zero-parameter read tool with annotations covering safety, this is nearly complete; only error/auth-failure behavior is unaddressed.
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 tool takes zero parameters and the description correctly does not invent any. With no inputs to explain, the baseline for this dimension applies.
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?
Uses a specific verb ("Show") on a specific resource ("the current API key's account") and enumerates the fields returned: email, plan, remaining credits, rate/concurrency limits. This is clearly distinct from the sibling scraping endpoints, though it does not explicitly name or exclude any of them.
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?
"Free (no credits)" gives a concrete condition for calling it — useful before running credit-consuming scrapers to check remaining balance and limits. There is no explicit when-not guidance, but with zero siblings offering account data the alternative space is effectively empty.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_commentsInstagram commentsARead-onlyIdempotent
The most recent comments (up to 15) on an Instagram post or reel by URL or shortcode: text, time, likes, GIFs and author, plus the post's total comment count.
Cost: 1 credit per successful call (failed calls are refunded).
Provide one of: url OR shortcode.
Returns: shortcode (string), link (string), comment_count (integer, nullable), comments (array), comments_fetched (integer), has_more (boolean).
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Post, reel or IGTV URL (a bare shortcode also works). Example: "https://www.instagram.com/reel/DYxz0A8Kinw/" | |
| limit | No | Maximum number of comments to return. Logged-out Instagram exposes the 15 newest top-level comments. Example: 15 | |
| shortcode | No | Post shortcode; alias used only when url is empty. Example: "DYxz0A8Kinw" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. The description adds genuinely new behavior: pricing at 1 credit per successful call with failed calls refunded, a hard 15-comment ceiling, and a nullable comment_count plus has_more flag. It stops short of explaining pagination semantics for has_more, which keeps it from a 5.
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?
Three tight lines: scope first, then cost, then input rule, then return shape. Every sentence carries information, and the return-type enumeration is necessary because no output schema exists.
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?
With no output schema, the explicit field list (shortcode, link, comment_count, comments, comments_fetched, has_more) is exactly what an agent needs to plan around the response. The main residual gap is that it does not warn the agent that a failed or empty result is charged differently, or clarify what drives has_more.
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 schema already explains url, shortcode and limit in more detail than the description. The description's 'Provide one of: url OR shortcode' merely restates the schema's own constraint and it says nothing about limit, so baseline 3 applies.
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 specific verb and resource: 'the most recent comments (up to 15) on an Instagram post or reel by URL or shortcode'. The 15-comment cap and the accepted identifiers make the scope unambiguous, and it is plainly distinct from sibling tools like instagram_post or instagram_reel that fetch post-level data.
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?
It gives the input selection rule ('Provide one of: url OR shortcode') and a cost model, which implies usage, but never states when to pick this over instagram_post/instagram_reel or that it returns only top-level logged-out comments. No explicit when-not or alternative routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_photosInstagram postsBRead-onlyIdempotent
An Instagram profile plus its most recent posts (up to 60) with type, caption, thumbnail and engagement counts where available. Cost: 2 credits per successful call (failed calls are refunded). Returns: id (string), username (string), full_name (string), biography (string), external_url (string, nullable), profile_pic_url (string, nullable), profile_pic_url_hd (string, nullable), is_private (boolean), is_verified (boolean), is_business_account (boolean), category_name (string, nullable), follower_count (integer, nullable), following_count (integer, nullable), post_count (integer, nullable), has_highlights (boolean, nullable), highlight_count (integer, nullable), posts (array), posts_fetched (integer), posts_source (string), has_more (boolean).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of posts to return. Example: 12 | |
| username | Yes | Instagram username, @handle or profile URL. Example: "nasa" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description does add genuinely useful non-schema behavior — 2 credits per successful call with refunds on failure, a hard cap of 60 posts, and nullable/optional fields flagged as such. However it says nothing about what happens with private profiles or how has_more/posts_source behave, which are the behaviors an agent actually needs to interpret results.
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?
Purpose is front-loaded, then cost, then returns, which is a sensible order and contains no filler prose. The return-value list is long, but since no output schema exists it is doing real work rather than padding.
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?
It compensates well for the missing output schema by enumerating every returned field, and it discloses pricing and post limits. What it omits is the sibling boundary (profile-only vs profile+posts) and error/private-account behavior, which for a paid, open-world scraper is a meaningful gap.
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 both parameters are self-documented with examples, so the baseline applies. The description adds only an indirect hint — the 'up to 60' ceiling implies limit is bounded server-side — but does not explain limit's default, or that username accepts a handle or URL (the schema carries that).
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 concretely what the tool returns: a profile object plus up to 60 recent posts with type, caption, thumbnail and engagement counts. That is clear enough to understand the resource, but it never distinguishes this from the sibling instagram_profile, which by name sounds like the same thing — the 'plus posts' delta is buried rather than contrasted.
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?
There is no when-to-use guidance at all: nothing says to pick this over instagram_profile or instagram_post, and no prerequisites (private accounts, rate limits) are mentioned. The only contextual note is pricing, which is not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_postInstagram postBRead-onlyIdempotent
A single Instagram post/reel by URL or shortcode: owner, type, likes, comments, views, caption, timestamp, thumbnail and video URL, plus every photo and video of an album.
Cost: 1 credit per successful call (failed calls are refunded).
Provide one of: url OR shortcode.
Returns: shortcode (string), media_id (string, nullable), link (string), owner_username (string, nullable), owner_full_name (string, nullable), owner_profile_pic_url (string, nullable), owner_is_verified (boolean, nullable), type (string), is_video (boolean), product_type (string, nullable), like_count (integer, nullable), like_and_view_counts_disabled (boolean, nullable), comment_count (integer, nullable), view_count (integer, nullable), taken_at (integer, nullable), taken_at_text (string, nullable), caption (string), thumbnail_url (string, nullable), video_url (string, nullable), media (array).
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Post, reel or IGTV URL (a bare shortcode also works). Example: "https://www.instagram.com/p/DYxz0A8Kinw/" | |
| shortcode | No | Post shortcode; alias used only when url is empty. Example: "DYxz0A8Kinw" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered without prose. The description adds genuinely new behavioral information: a pricing rule ('Cost: 1 credit per successful call, failed calls are refunded'), which tells the agent retries are cheap and failures are not billed. It does not disclose behavior for private or deleted posts, which is the remaining gap.
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 purpose and cost are correctly front-loaded in the first two lines, which is good structure. However, the description then dumps roughly twenty return fields as one flat comma-separated block, which is hard to scan and would read better as a compact summary or omitted entirely in favor of 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?
With only two optional parameters and no output schema, the description carries the return-shape burden and does so by enumerating every field, including nullability. It is nearly complete; the notable omission is any explanation of the nested 'media' array for albums or what the 'type' and 'product_type' string values signify.
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%, with both parameters documented including examples and the alias precedence ('shortcode; alias used only when url is empty'). The description's restatement of 'provide one of url OR shortcode' adds nothing beyond the schema, so the 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 pairing ('A single Instagram post/reel by URL or shortcode') and enumerates exactly what data it returns, so an agent knows this fetches one media item with its full metadata. It loses a point because it never distinguishes itself from the close siblings instagram_reel and instagram_photos, which appear to cover overlapping ground.
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 only guidance is a parameter rule ('Provide one of: `url` OR `shortcode`'), which restates the schema rather than explaining when to pick this tool. There is no statement of when-not-to-use it or which sibling to choose for a reel, a photo album, or a comment listing, all of which exist in the sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_profileInstagram profileARead-onlyIdempotent
Public profile of an Instagram account: bio, avatar, verification/business flags, follower/following/post counts and story-highlight info. Cost: 1 credit per successful call (failed calls are refunded). Returns: id (string), username (string), full_name (string), biography (string), external_url (string, nullable), profile_pic_url (string, nullable), profile_pic_url_hd (string, nullable), is_private (boolean), is_verified (boolean), is_business_account (boolean), category_name (string, nullable), follower_count (integer, nullable), following_count (integer, nullable), post_count (integer, nullable), has_highlights (boolean, nullable), highlight_count (integer, nullable).
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Instagram username, @handle or profile URL. Example: "instagram" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely new behavior: a 1-credit cost with refunds on failed calls, which an agent cannot infer from structured fields. It stops short of describing failure modes (private account, rate limit) or latency.
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?
Front-loaded with purpose, then cost, then returns — a sensible order for an agent scanning quickly. The return-field enumeration is long but earns its place because no output schema exists. Minor trim possible where both profile_pic_url and profile_pic_url_hd are listed with identical nullable typing.
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?
With no output schema, the description carries the return contract itself and does so field-by-field with types and nullability, plus credit cost. What is missing is edge-case behavior: whether private accounts return partial data, and what a failed/refunded call looks like to the caller.
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 single username parameter is documented with accepted forms (@handle, plain username, profile URL) and an example. The description adds nothing about the parameter beyond the schema, so the baseline of 3 applies.
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 names a specific resource (public Instagram profile) and enumerates exactly what it carries — bio, avatar, verification/business flags, follower/following/post counts, highlights. That field list cleanly separates it from siblings like instagram_photos, instagram_post, or instagram_comments, which return content rather than account metadata.
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?
Usage is only implied: the resource name and returned fields make it obvious you call this when you need account-level metadata rather than posts. There is no explicit 'use this instead of instagram_photos when...' routing, no mention of what happens for private or nonexistent accounts, and no prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_reelInstagram reelBRead-onlyIdempotent
A single Instagram reel by URL or shortcode: owner, caption, likes, comments, duration, resolution, audio, cover image and a downloadable MP4 link.
Cost: 1 credit per successful call (failed calls are refunded).
Provide one of: url OR shortcode.
Returns: shortcode (string), link (string), media_id (string, nullable), owner_username (string, nullable), owner_full_name (string, nullable), owner_profile_pic_url (string, nullable), owner_is_verified (boolean, nullable), caption (string), like_count (integer, nullable), comment_count (integer, nullable), like_and_view_counts_disabled (boolean, nullable), view_count (integer, nullable), taken_at (integer, nullable), taken_at_text (string, nullable), duration_seconds (number, nullable), width (integer, nullable), height (integer, nullable), has_audio (boolean, nullable), audio (object, nullable), thumbnail_url (string, nullable), video_url (string, nullable), video_url_expires_at (string, nullable).
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Reel URL (/reel/, /reels/ and /p/ links work; a bare shortcode also works). Example: "https://www.instagram.com/reel/DYxz0A8Kinw/" | |
| shortcode | No | Reel shortcode; alias used only when url is empty. Example: "DYxz0A8Kinw" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, open world), yet the description adds genuinely new behavior: a cost model of 1 credit per successful call with failed calls refunded, plus a complete field-by-field return contract including which fields can be null. It does not explain failure modes (private/deleted reels) or what video_url_expires_at implies for downstream use, which keeps it short of a 5.
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 cost and argument lines are tight and front-loaded, but the bulk of the description is a long comma-free run of field names with repeated '(string, nullable)' annotations that reads like a dumped schema rather than a curated summary. It earns its place somewhat (no output schema exists), yet it could have been compressed into grouped categories.
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?
With no output schema, the return-field enumeration is necessary and the description supplies it in full; both parameters are covered and the cost/refund behavior is disclosed. The remaining gap is error behavior and freshness (video_url_expires_at is listed but its consequence is unexplained), which an agent handling retries would want.
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 both parameters already carry examples and precedence rules (shortcode 'used only when url is empty'). The description's 'Provide one of: `url` OR `shortcode`' merely restates the schema-level description, adding no new syntax or format meaning beyond it, so the 3 baseline applies.
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 resource and scope: 'A single Instagram reel by URL or shortcode', then enumerates the data returned (owner, caption, likes, duration, MP4 link). The word 'single' implicitly separates it from the sibling list tool instagram_reels and the search tool instagram_reels_search, but those siblings are never named, so the differentiation is inferential rather than explicit.
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?
There is argument-level guidance ('Provide one of: `url` OR `shortcode`') but no when-to-use guidance at all: nothing says when to pick this over instagram_reels, instagram_reels_search, or instagram_post, and no exclusions or prerequisites are stated. The credit cost is a useful constraint but is not a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_reelsInstagram reelsARead-onlyIdempotent
An Instagram profile's Reels tab (up to 50 reels) with views, likes, comments, cover image and approximate publish time, plus profile basics. Cost: 2 credits per successful call (failed calls are refunded). Returns: id (string), username (string), full_name (string), is_verified (boolean), profile_pic_url (string, nullable), follower_count (integer, nullable), reels (array), reels_fetched (integer), has_more (boolean).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of reels to return. Example: 12 | |
| username | Yes | Instagram username, @handle or profile URL. Example: "nasa" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely non-structured behavior: a cost of 2 credits per successful call with refunds on failure, and a hard ceiling of 50 reels. It does not explain what happens for private accounts or whether a partial 'has_more' result still consumes full credits.
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 definition is front-loaded with the resource and scope, then splits cost and return shape into their own labeled sections, which is easy to scan. The Returns block is dense but each field maps to real output; the parenthetical field list in the first sentence partially duplicates the Returns line.
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?
With no output schema, the explicit Returns block is necessary and well chosen, covering profile fields, the reels array, reels_fetched and has_more. The remaining gap is that has_more is listed without explaining pagination (whether a larger limit or a cursor is needed) and credit/refund behavior on partial results is unstated.
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% on both parameters, so the schema already carries username formats and limit semantics, making 3 the baseline. The only added meaning is the implicit cap of 50 reels on 'limit', which the schema's bare 'minimum: 0' does not express — useful but marginal.
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 specific resource and scope: an Instagram profile's Reels tab, capped at 50 reels, with the per-reel fields it returns (views, likes, comments, cover image, approximate publish time) plus profile basics. That clearly separates it from the single-item 'instagram_reel' and from 'instagram_reels_search', but the description never names those siblings, so the differentiation is inferential rather than explicit.
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?
Usage is implied by the resource name — use this when you have a username and want that profile's reels. There is no explicit statement of when to prefer 'instagram_reels_search' (search by keyword/hashtag) or 'instagram_reel' (single reel), and no note about private or non-existent profiles, so an agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_reels_searchInstagram reels searchARead-onlyIdempotent
Find Instagram reels for a keyword through search-engine results, then open each reel for its owner, caption, likes, comments, views, duration, audio, cover image and MP4 link. Cost: 3 credits per successful call (failed calls are refunded). Returns: query (string), date_posted (string, nullable), page (integer), reels (array), reels_found (integer), reels_fetched (integer), has_more (boolean).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Search results page, about 10 reels per page. Values outside 1-10 are rejected. Example: 1 | |
| limit | No | How many of the page's reels to open for full details. Example: 10 | |
| query | Yes | Keyword or phrase to search for, 1-100 characters. site: and !bang operators are ignored. Example: "dogs" | |
| date_posted | No | Only reels the search engine dates within this window: last-week, last-month or last-year. Omit for any time. Example: "last-month" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only, non-destructive annotations, it discloses the two-stage search-and-open behavior, the external search-engine dependency, and the specific per-reel data retrieved. It also gives unusually useful operational billing details: 3 credits per successful call and refunds for failed calls.
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 purpose and retrieval behavior are front-loaded, followed by compact cost and return-value information. Although the first sentence contains a long field list and the return line is dense, both provide useful information without filler or repetition of annotations.
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 fully documented input schema and safety annotations, the description supplies enough mechanism, cost, pagination-related output, and result information for reliable invocation. Because there is no output schema, its treatment of the nested reels objects remains incomplete: the first sentence lists available data but not exact object keys, types, or nullability.
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%, and the schema already explains query, page, limit, and date_posted, including constraints and examples. The description reinforces the keyword-search purpose but adds little parameter-specific meaning beyond those structured descriptions, so the high-coverage baseline applies.
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 states the verb and resource: finding Instagram reels by keyword through search-engine results, then retrieving detailed information for each reel. The search-engine mechanism and field list clarify its scope, although it does not explicitly distinguish itself from siblings such as instagram_reel or instagram_reels.
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?
It provides a clear use case: keyword-based reel discovery followed by detailed retrieval, rather than merely implying a generic Instagram search. It does not explain when to prefer a sibling tool or when this indirect search-engine approach is unsuitable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scrapersList Scrape Everything scrapersARead-onlyIdempotent
List the available scrapers (platform, action, tool name, credit cost, parameters). Free. Optionally filter by platform, e.g. "instagram".
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | Only list scrapers for this platform (e.g. instagram, tiktok, youtube). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world behavior, so the bar is lower. The description still adds real value beyond them by disclosing that listing is 'Free' (no credit spend, unlike the actual scraper calls) and by naming the metadata each entry carries, including credit cost.
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?
Two short sentences: the first front-loads what is returned, the second covers cost and the optional filter. Every clause carries information and nothing is padded.
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?
With no output schema, the description correctly compensates by enumerating the fields returned per scraper. For a single optional-parameter, read-only listing tool, nothing an agent needs in order to call it 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% and the single optional platform parameter is fully documented in the schema. The description only restates the filter with the same example given in the schema, adding no new syntax or matching semantics, so the baseline 3 applies.
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 specific verb and resource ('List the available scrapers') and enumerates the returned fields (platform, action, tool name, credit cost, parameters). This clearly distinguishes it from the many sibling action tools like instagram_profile or tiktok_posts, which perform scraping rather than describe it.
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 'Free' note and the optional platform filter with an example ('e.g. "instagram"') make the intended discovery use case clear. It stops short of explicitly saying 'call this before invoking a scraper tool' or naming when not to use it, so it falls just short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinterest_boardPinterest boardARead-onlyIdempotent
A public Pinterest board: name, description, pin/follower/section counts, owner and cover image, plus its first pins with images, links and engagement counts.
Cost: 2 credits per successful call (failed calls are refunded).
Provide one of: url OR username + board.
Returns: board (object), pins (array), pins_fetched (integer), has_more (boolean).
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Board URL: https://www.pinterest.com/<username>/<board>/. Example: "https://www.pinterest.com/nasa/learn-with-nasa/" | |
| board | No | Board slug as in the URL; a board name with spaces is converted to a slug. Example: "learn-with-nasa" | |
| limit | No | Maximum number of pins to return (logged-out Pinterest serves at most about 25 pins of a board). Example: 20 | |
| username | No | Board owner's username, @handle or profile URL; used with board when url is empty. Example: "nasa" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description adds genuinely new behavioral context: an explicit cost of 2 credits per successful call with refunds on failure, and the 'public' scope restriction on which boards are reachable. It stops short of describing pagination semantics for `has_more` beyond listing the return keys.
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?
Four short, front-loaded segments — resource contents, cost, parameter requirement, return shape — with no filler sentences. The return-key list is compact and skimmable. Slight redundancy in restating the one-of parameter rule that the schema already enforces.
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?
With no output schema, the description usefully compensates by enumerating the return keys (board, pins, pins_fetched, has_more) and describing what the board object contains. Cost and the public-only scope round it out. The remaining gap is sibling disambiguation — nothing tells an agent why to pick this over pinterest_pins for a board's pins.
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% — every parameter already carries an example and explanation, including the /<username>/<board>/ URL format and the ~25-pin logged-out cap on `limit`. The description only repeats the one-of requirement that the schema's own object-level description already states, adding no syntax, default or format detail beyond it. Baseline 3 applies when the schema does all the heavy lifting.
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 gives a specific verb-plus-resource picture: it names the resource (a public Pinterest board) and enumerates exactly what is returned — name, description, pin/follower/section counts, owner, cover image, plus first pins with images, links and engagement. That is far more concrete than a restatement of the title. It loses a point because it never distinguishes itself from the close siblings pinterest_pins and pinterest_profile, which plausibly surface overlapping data.
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 line 'Provide one of: `url` OR `username` + `board`' gives real invocation guidance about which parameter combinations are valid. However, there is no statement of when to reach for this tool rather than pinterest_pins, pinterest_profile or pinterest_search, and no exclusions or prerequisites beyond the 'public' qualifier. Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinterest_pinPinterest pinARead-onlyIdempotent
A single Pinterest pin by URL or ID: title, description, image/video, outbound link, engagement counts, board and pinner.
Cost: 1 credit per successful call (failed calls are refunded).
Provide one of: url OR id.
Returns: id (string), link (string), title (string), description (string), alt_text (string, nullable), dominant_color (string, nullable), image_url (string, nullable), image_width (integer, nullable), image_height (integer, nullable), is_video (boolean), video_url (string, nullable), video_duration_ms (integer, nullable), repin_count (integer, nullable), reaction_count (integer, nullable), comment_count (integer, nullable), favorite_count (integer, nullable), share_count (integer, nullable), outbound_link (string, nullable), outbound_domain (string, nullable), created_at (string, nullable), board_name (string, nullable), board_url (string, nullable), pinner_username (string, nullable), pinner_full_name (string, nullable), pinner_image_url (string, nullable).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Numeric pin ID; used only when url is empty. Example: "142567144449027286" | |
| url | No | Pin URL or a pin.it short share link (a bare pin ID also works). Example: "https://www.pinterest.com/pin/142567144449027286/" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description still adds genuinely new behavior beyond those annotations: a per-call cost of 1 credit with refunds on failure, plus a full field manifest, which matters because there is no output schema to disclose the shape of a result.
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?
Structure is front-loaded: identity of the resource, then cost, then the invocation rule, then the return fields. The long return list is verbose but justified, because there is no output schema and it is the only way the agent learns what comes back.
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 two-parameter, zero-required read tool with no output schema it covers the essentials: the accepted identifier forms, a stated exclusivity rule, a cost model and the complete response field list. Only mapping to the sibling list and board tools is left implicit.
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%, including an example URL and pin ID format, so the schema does the heavy lifting. The description restates the mutually exclusive 'url OR id' rule without adding format, precedence or normalization details beyond what the parameters already say, making the baseline 3 correct.
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 names a specific resource and envelope: a single Pinterest pin fetched by URL or ID, with an enumerated set of fields (title, description, image/video, outbound link, engagement counts, board, pinner). The word 'single' implicitly separates it from the plural pinterest_pins sibling, but no sibling is named explicitly, so this stops short of a 5.
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 only guidance is the input contract 'Provide one of: url OR id', which is an invocation rule rather than a when-to-use rule. Nothing tells the agent when to reach for pinterest_pins, pinterest_search or pinterest_board instead. For a straightforward single-entity lookup this is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinterest_pinsPinterest pinsARead-onlyIdempotent
A Pinterest profile plus its recent pins (up to 50) with images/videos, titles, descriptions, links and engagement counts. Cost: 2 credits per successful call (failed calls are refunded). Returns: user_id (string, nullable), username (string), full_name (string), about (string), website_url (string, nullable), domain (string, nullable), is_verified (boolean), follower_count (integer, nullable), following_count (integer, nullable), pin_count (integer, nullable), board_count (integer, nullable), video_pin_count (integer, nullable), profile_image_url (string, nullable), pins (array), pins_fetched (integer), has_more (boolean).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of pins to return. Example: 12 | |
| username | Yes | Pinterest username, @handle or profile URL. Example: "nasa" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds genuinely new context the annotations cannot: a cost of 2 credits per successful call with refunds on failure, which is operationally important for an agent deciding whether to call. It stops short of explaining what happens on a private/nonexistent profile or how to page beyond the 50-pin cap.
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?
Front-loaded with purpose, then cost, then a return-field inventory — a sensible order for a tool with no output schema. The long enumeration of return fields is justified by the absence of a structured output schema, though it is dense and could have been grouped by type rather than listed flatly.
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?
With no output schema, the field-by-field Returns list does the necessary work of telling the agent what comes back, and cost plus the 50-pin ceiling round out the operational picture. The remaining gap is pagination and error behavior: has_more is returned but there is no cursor parameter, so an agent cannot tell whether more pins are reachable or how.
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 both parameters are already documented, giving a baseline of 3. The description adds one real piece of meaning the schema lacks: pins are capped at 50 regardless of the requested limit, a constraint the schema does not encode (limit has only a minimum of 0 and no maximum).
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 opening clause names the exact resource and scope: 'A Pinterest profile plus its recent pins (up to 50) with images/videos, titles, descriptions, links and engagement counts.' That is specific enough to separate it from pinterest_pin (single pin) and pinterest_profile (bare profile), but it never names those siblings explicitly, so the differentiation is inferred rather than stated.
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?
There is no when-to-use guidance at all: no mention of when to prefer pinterest_profile, pinterest_pin, pinterest_search or pinterest_board, and no prerequisites or failure conditions. The only hint is the 'plus its recent pins' framing and the 50-pin cap, which implies usage but does not guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinterest_profilePinterest profileARead-onlyIdempotent
Public Pinterest profile: name, about, website, verification and follower/following/pin/board/video-pin counts. Cost: 1 credit per successful call (failed calls are refunded). Returns: user_id (string, nullable), username (string), full_name (string), about (string), website_url (string, nullable), domain (string, nullable), is_verified (boolean), follower_count (integer, nullable), following_count (integer, nullable), pin_count (integer, nullable), board_count (integer, nullable), video_pin_count (integer, nullable), profile_image_url (string, nullable).
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Pinterest username, @handle or profile URL. Example: "nasa" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context: the cost model (1 credit per successful call, failed calls refunded), which affects how freely an agent retries or fans out calls. It also notes that several fields may be null, hinting that sparse or private profiles return partial data.
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?
Three tightly packed lines: purpose, cost, return fields. The return enumeration is long but justified because no output schema exists, and the purpose is front-loaded ahead of the cost and field list.
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?
With no output schema, the description correctly compensates by listing every returned field and its type/nullability, and it discloses the credit cost. The only gap is operational guidance on failure modes for private or missing profiles, which is a minor omission for a single-parameter read 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?
Schema coverage is 100% and the single 'username' parameter is already documented with accepted forms (@handle, profile URL) and an example, so the baseline of 3 applies. The description adds no further parameter meaning beyond implying only public profiles are resolvable.
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 names a specific resource ('Public Pinterest profile') and enumerates the exact fields retrieved, so an agent knows this returns profile-level metadata rather than pins or boards. It does not explicitly contrast itself with siblings like pinterest_pins or pinterest_board, but the resource distinction is clear enough from the name plus field list.
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?
Usage is only implied: 'Public Pinterest profile' suggests calling it when you need account-level stats, and the sibling names imply pinterest_pins/pinterest_board handle other content. There is no explicit when-to-use, when-not-to-use, or routing statement, and no mention of what happens for private or nonexistent profiles.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinterest_searchPinterest searchARead-onlyIdempotent
Search Pinterest pins by keyword: up to 50 results with images/videos, titles, descriptions, outbound links, board and pinner. Cost: 2 credits per successful call (failed calls are refunded). Returns: query (string), pins (array), pins_fetched (integer), has_more (boolean).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of pins to return. Example: 20 | |
| query | Yes | Search keywords (up to 200 characters). Example: "minimalist kitchen" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare read-only, idempotent, open-world, non-destructive semantics, so the bar is lower. The description still adds genuinely useful context the annotations cannot convey: the 2-credit cost per successful call with refunds on failure, and the up-to-50 result ceiling. It does not explain how has_more should be acted on, which is the remaining behavioral gap.
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?
Three tight lines, front-loaded with purpose, then cost, then return shape. Every sentence carries distinct information and nothing is repeated from the schema or annotations.
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?
With no output schema, the description usefully enumerates the return fields and flags has_more, and it discloses the credit cost. It is nearly complete for a two-parameter search tool, though it omits any note on how to retrieve additional pages when has_more is true.
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, but the description adds real meaning: the effective ceiling of 50 results, which the schema leaves unbounded (limit has only a minimum of 0, no maximum). It does not clarify how limit interacts with that cap or what happens when the cap is hit.
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 ("Search Pinterest pins by keyword"), which cleanly separates it from the single-item pinterest_pin and the list-oriented pinterest_pins. It does not explicitly name those siblings or state the contrast, so it stops short of full differentiation.
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?
Keyword search implies the usage context, but there is no explicit when-to-use guidance, no exclusions, and no reference to alternatives like pinterest_pins or pinterest_board for profile- or board-scoped retrieval. The agent must infer the routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_albumSpotify albumARead-onlyIdempotent
A Spotify album by link/URI/ID: title, artists, release date, cover and the full track list.
Cost: 1 credit per successful call (failed calls are refunded).
Provide one of: url OR id OR album.
Returns: id (string), link (string), title (string), artists_text (string), release_date (string, nullable), is_explicit (boolean), image_url (string, nullable), track_count (integer), tracks (array).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | 22-character album ID. Example: "151w1FgRZfnKZA9FEcg9Z3" | |
| url | No | Album link, URI or ID. Example: "https://open.spotify.com/album/151w1FgRZfnKZA9FEcg9Z3" | |
| album | No | Alias (link, URI or ID). Example: "spotify:album:151w1FgRZfnKZA9FEcg9Z3" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld/non-destructive, so the safety profile is covered. The description adds genuinely new operational context: a cost model (1 credit per successful call, failed calls refunded) that an agent cannot get from annotations or schema. It stops short of describing error behavior for invalid identifiers.
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?
Front-loaded with the resource and payload, then cost, then a compact typed return list. The return-field enumeration is long but earns its place because there is no output schema; wording is otherwise tight 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 simple read-only fetch with no output schema, the description covers selection, accepted identifiers, billing, and return shape. Complete enough to invoke correctly; only failure-mode behavior is unstated, which is a minor gap.
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%, and each property already documents its format and an example. The description's 'Provide one of: url OR id OR album' duplicates the schema-level description verbatim, so it adds no meaning beyond structured data; baseline 3 applies.
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 the exact resource (a Spotify album) plus the identifier forms accepted and the payload returned (title, artists, release date, cover, full track list). This cleanly separates it from siblings like spotify_track, spotify_artist and spotify_playlist without ambiguity.
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?
Usage is implied rather than stated: you call it to fetch album detail when you already have a link/URI/ID. The 'Provide one of: url OR id OR album' line gives input selection guidance, but there is no explicit when-to-use-this-vs-sibling routing or mention of what to do if you only have a track name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_artistSpotify artistARead-onlyIdempotent
A Spotify artist by link/URI/ID: name, image and top tracks (~10) with durations and preview URLs.
Cost: 1 credit per successful call (failed calls are refunded).
Provide one of: url OR id OR artist.
Returns: id (string), link (string), name (string), image_url (string, nullable), top_tracks (array), top_tracks_count (integer).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | 22-character artist ID. Example: "06HL4z0CvFAxyc27GXpf02" | |
| url | No | Artist link, URI or ID. Example: "https://open.spotify.com/artist/06HL4z0CvFAxyc27GXpf02" | |
| artist | No | Alias (link, URI or ID). Example: "spotify:artist:06HL4z0CvFAxyc27GXpf02" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, non-destructive, so the safety profile is covered. The description adds genuinely new information not present in annotations: a cost of 1 credit per successful call with refunds on failure, and the top-tracks cap of ~10. It omits failure/not-found behavior and any rate-limit context.
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?
Three short, front-loaded lines covering what it does, cost, and inputs/returns — easy to scan. Minor redundancy in restating the mutually-exclusive alias rule that the schema already declares.
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?
With no output schema, the description usefully enumerates return fields (id, link, name, image_url, top_tracks, top_tracks_count), which is a real service to the agent. However, it says nothing about what happens with an invalid ID or an artist with no top tracks, and does not clarify how top tracks are ranked.
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 schema fully documents all three aliases and their formats. The description's 'Provide one of: url OR id OR artist' duplicates the input schema's own top-level description rather than adding meaning, so the baseline 3 applies.
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 names a specific resource (a Spotify artist) and enumerates contents: name, image, and ~10 top tracks with durations and preview URLs. It implicitly distinguishes itself from siblings like spotify_track and spotify_album by resource type, but never explicitly states the contrast.
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?
It gives an input-selection rule ('Provide one of: url OR id OR artist'), which is basic operational guidance. There is no when-to-use/when-not guidance relative to spotify_track, spotify_album, or spotify_playlist, and no indication of which alias form is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_playlistSpotify playlistARead-onlyIdempotent
A public Spotify playlist by link/URI/ID: title, owner, cover, total duration and up to ~50 tracks.
Cost: 1 credit per successful call (failed calls are refunded).
Provide one of: url OR id OR playlist.
Returns: id (string), link (string), title (string), owner (string), image_url (string, nullable), total_duration_ms (integer, nullable), track_count (integer), tracks (array).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | 22-character playlist ID. Example: "37i9dQZF1DXcBWIGoYBM5M" | |
| url | No | Playlist link, URI or ID. Example: "https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M" | |
| playlist | No | Alias (link, URI or ID). Example: "spotify:playlist:37i9dQZF1DXcBWIGoYBM5M" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description provides critical operational context beyond the annotations, specifically mentioning the cost (1 credit per call) and the refund policy. This is highly valuable behavioral insight for the agent.
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 reasonably structured, starting with a high-level summary, moving to operational costs, defining the input modes, and concluding with a full output specification. It avoids unnecessary fluff.
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?
The description is extremely thorough, covering resource limits (~50 tracks), required input mechanisms (three formats), operational costs, and a detailed specification of the output fields and types, making it functionally complete for the agent.
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?
Since the schema coverage is 100%, the baseline is high. The description reinforces the constraint that only one of the three optional parameters must be provided, a constraint that adds clear meaning even if documented in the schema.
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 fetching details (title, owner, duration, tracks) for a public Spotify playlist, which distinguishes it from other music-related siblings like `spotify_track` or `spotify_artist`.
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 explicitly states the tool is for public playlists and dictates the required input format: providing exactly one of the three acceptable parameters. No specific exclusions (e.g., private playlists) are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_trackSpotify trackARead-onlyIdempotent
A Spotify track by link/URI/ID: title, artists, duration, release date, explicit flag, cover image and 30-second preview URL.
Cost: 1 credit per successful call (failed calls are refunded).
Provide one of: url OR id OR track.
Returns: id (string), link (string), title (string), artists (array), duration_ms (integer, nullable), release_date (string, nullable), is_explicit (boolean), is_playable (boolean), has_video (boolean), preview_url (string, nullable), image_url (string, nullable).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | 22-character track ID. Example: "0V3wPSX9ygBnCm8psDIegu" | |
| url | No | Track link, URI or ID. Example: "https://open.spotify.com/track/0V3wPSX9ygBnCm8psDIegu" | |
| track | No | Alias (link, URI or ID). Example: "spotify:track:0V3wPSX9ygBnCm8psDIegu" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, open-world, and non-destructive behavior, while the description adds the credit cost/refund policy and the exact nullable return fields. It does not cover authentication or rate limits, but the cost and output disclosure add meaningful context beyond 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 definition is front-loaded and compact, with identifier requirements, cost, and return fields presented in short, relevant lines. Every sentence contributes to invocation or interpretation.
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 simple read-only lookup with no output schema, the description supplies accepted input forms, cost behavior, and a complete return-field summary. No major gap remains for correct invocation.
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%, and the description only repeats 'Provide one of: url OR id OR track', which the input schema already states. It adds no extra syntax, precedence, or format guidance beyond the schema.
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 identifies a specific Spotify track by link/URI/ID and enumerates the returned metadata, clearly distinguishing it from sibling tools such as spotify_artist, spotify_album, and spotify_playlist.
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?
It specifies acceptable identifier forms and the credit cost, but does not explicitly say when to use this tool versus sibling resources or list any preconditions. The track-vs-album distinction is implied by the name and resource description rather than stated as guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_postTelegram postARead-onlyIdempotent
A single public Telegram channel message by link: text, media, views, date, forward info, link preview and channel info.
Cost: 1 credit per successful call (failed calls are refunded).
Provide one of: url OR post OR username + id.
Returns: channel (object), id (integer, nullable), post (string), link (string), type (string), text (string), photo_urls (array), video_url (string, nullable), video_thumb_url (string, nullable), video_duration (string, nullable), view_count (integer, nullable), view_count_text (string, nullable), posted_at (string, nullable), is_forwarded (boolean), forwarded_from (string, nullable), link_preview (object, nullable).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Message ID; only together with username. Example: 342 | |
| url | No | Message link t.me/<channel>/<id>. Example: "https://t.me/durov/342" | |
| post | No | Alias of url, e.g. 'durov/342'. Example: "durov/342" | |
| username | No | Channel username; only together with id. Example: "durov" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), yet the description adds real value beyond them: a per-call cost of 1 credit with refunds for failures, and the constraint that this reads public channels only. It does not cover auth needs or rate limiting, which is why it is not a 5.
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 identity, cost, and input rule are front-loaded in short lines, which is good structure. The trailing "Returns:" enumeration runs to roughly sixteen fields on a single line, which is dense but largely justified since there is no output schema to convey that information elsewhere.
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?
With no output schema, the description compensates by enumerating return fields and their nullability, and it discloses the credit cost and public-channel limitation. Remaining gaps are minor for a read-only lookup tool: failure behavior and explicit routing to sibling listing tools are absent.
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%, and each parameter already carries its own explanation and examples, so the description's restatement of the "one of url OR post OR username + id" rule duplicates the schema's own description field. Baseline 3 is appropriate; no additional syntax or format detail is added beyond the schema.
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 first sentence names a specific resource and scope: "A single public Telegram channel message by link" with the data it carries (text, media, views, date, forward info, link preview, channel info). The word "single" implicitly separates it from the plural sibling telegram_posts, but no sibling is named explicitly, so it stops short of full differentiation.
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?
Usage is only implied through the input constraint "Provide one of: `url` OR `post` OR `username` + `id`", which tells the agent how to satisfy the call but not when to choose this tool over telegram_posts or telegram_profile. No exclusions, prerequisites, or alternatives are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_postsTelegram channel postsARead-onlyIdempotent
A public Telegram channel's header (counters, description) plus its latest messages (up to 100) with text, media, views and dates. Cost: 2 credits per successful call (failed calls are refunded). Returns: username (string), name (string), is_verified (boolean), description (string), photo_url (string, nullable), subscriber_count (integer, nullable), subscriber_count_text (string, nullable), photo_count (integer, nullable), video_count (integer, nullable), file_count (integer, nullable), link_count (integer, nullable), link (string), posts_fetched (integer), has_more (boolean), posts (array).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of messages to return. Example: 25 | |
| username | Yes | Public channel username, @handle or t.me link. Example: "durov" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, open-world, and non-destructive behavior. The description adds useful operational context beyond that: public-only scope, a cap of up to 100 messages, credit cost, and refund policy for failed calls.
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 front-loaded and efficient. The return-field list is lengthy but justified because there is no output schema, though it could be slightly more compact.
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?
With no output schema, the description compensates by listing return fields and clarifying cost/refund behavior. It covers the essentials for this two-parameter read-only tool, though pagination behavior beyond has_more is not explained.
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 schema already documents username and limit. The description adds meaningful context by indicating that the tool returns the latest messages and that the maximum is 100, which refines the limit parameter beyond the schema.
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 states that it retrieves a public Telegram channel header plus its latest messages, including counters, text, media, views, and dates. This distinguishes it from telegram_post by making clear it returns multiple messages, though it does not explicitly name siblings such as telegram_profile.
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 implied use case is clear: fetching a channel overview and recent posts. However, it gives no explicit when-to-use guidance or alternatives, such as when to use telegram_profile versus telegram_posts, leaving the agent to infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_profileTelegram profileARead-onlyIdempotent
Telegram channel/group/bot/user card from t.me: name, type, verification, description, photo and subscriber/member/online counts. Cost: 1 credit per successful call (failed calls are refunded). Returns: username (string), name (string), type (string), is_verified (boolean), description (string), photo_url (string, nullable), subscriber_count (integer, nullable), member_count (integer, nullable), online_count (integer, nullable), monthly_users (integer, nullable), extra_text (string, nullable), link (string), preview_url (string, nullable).
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Telegram username, @handle or t.me link. Example: "durov" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world behavior, so the bar is lower; the description adds genuinely new operational context by disclosing the 1-credit cost and the refund policy for failed calls. It does not cover failure modes (private/nonexistent handles) or rate limits, which keeps it short of a 5.
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?
Purpose is front-loaded in the first sentence, followed by cost and then a return-field list; every element is informative. The return enumeration is long but justified because no output schema exists.
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?
With no output schema, the description compensates by listing every returned field with its type and nullability, and it also discloses the credit cost. An agent has everything needed to call the tool and interpret the response.
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?
There is a single parameter with 100% schema description coverage, including a concrete example ('durov'), so the schema carries the parameter semantics. The description adds nothing about accepted input forms beyond what the schema already states.
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 names a specific verb+resource combination ('Telegram channel/group/bot/user card from t.me') and enumerates exactly which fields the card contains, which cleanly separates it from sibling tools like telegram_posts or telegram_post.
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 scope statement implies when to use this tool (profile-level metadata rather than content), but there is no explicit when-to-use/when-not guidance and no named alternative such as telegram_posts for retrieving messages.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_commentsTikTok video commentsARead-onlyIdempotent
Top-level comments on a TikTok video by URL or ID: text, likes, reply count, time, pinned and creator-liked flags and the commenter, plus the video's total comment count. Up to 100 comments.
Cost: 1 credit per successful call (failed calls are refunded).
Provide one of: url OR id.
Returns: video_id (string), comment_count (integer, nullable), comments (array), comments_fetched (integer), has_more (boolean).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Numeric video ID. Example: "7694335322922044703" | |
| url | No | TikTok video URL, or a short share link (vm.tiktok.com/..., tiktok.com/t/...). Example: "https://www.tiktok.com/@khaby.lame/video/7694335322922044703" | |
| limit | No | Maximum number of comments to return. Example: 20 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only, idempotent, open-world annotations, it discloses the credit charge, refunds for failed calls, result cap, and response shape. Ordering, the default limit, and what an agent can do when `has_more` is true remain unstated.
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 front-loads scope and returned content, then presents cost, the invocation constraint, and a compact response-field list. It is dense but easy to scan, with nearly every clause supplying actionable information.
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 simple three-parameter read tool without an output schema, the comment-content summary and explicit return fields make the definition largely complete. The remaining gaps are the default limit, ordering, exact nested comment-object fields, and guidance for handling `has_more`.
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?
Although schema coverage is 100%, the description adds the useful overall ceiling of 100 comments and prominently reinforces the mutually exclusive URL-or-ID requirement. It does not clarify the default `limit` or whether values above 100 are rejected or clamped.
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 retrieval of top-level comments for a single TikTok video, accepted identifier forms, and the information returned. Its platform, resource, and top-level scope distinguish it from tiktok_video, tiktok_posts, and the other platforms' comment 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 instruction to provide exactly one of `url` or `id`, together with the top-level-only scope and 100-comment ceiling, gives clear invocation context. It does not explicitly route agents elsewhere for replies, video metadata, or situations requiring more than 100 comments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_hashtagTikTok hashtag statsBRead-onlyIdempotent
TikTok hashtag stats: ID, title, description, total video and view counts, and cover image. Cost: 1 credit per successful call (failed calls are refunded). Returns: id (string, nullable), title (string), description (string), link (string, nullable), video_count (integer, nullable), view_count (integer, nullable), cover_url (string, nullable), is_commerce (boolean).
| Name | Required | Description | Default |
|---|---|---|---|
| hashtag | Yes | Hashtag with or without #, or a tiktok.com/tag/... URL. Example: "learnfromkhaby" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely new operational context: a cost of 1 credit per successful call with refunds on failure, plus the nullable nature of most returned fields. It does not state what happens when a hashtag does not exist, which is the main remaining behavioral gap.
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 opening clause and the Returns line both enumerate the same fields (id, title, description, video/view counts, cover), so the content is stated twice with only types added the second time. Cost and Returns are correctly separated and front-loaded, but the duplication wastes space.
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?
With no output schema, documenting the return shape and the credit cost is exactly the right compensation, and it is done thoroughly with types and nullability. What is missing is edge-case behavior (nonexistent or private hashtags) and any note on empty/nullable field conditions, which matters for a single-parameter lookup 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?
Schema coverage is 100% and the schema already explains that the hashtag may include or omit '#' or be a full tiktok.com/tag/... URL, with an example. The description adds nothing about the parameter, which matches the baseline 3 when the schema does the heavy lifting.
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 title/description pair identifies a specific resource (a TikTok hashtag) and enumerates the stats returned, which separates it from sibling tools like tiktok_profile, tiktok_posts, and tiktok_video. It lacks an explicit verb ("fetch" / "look up"), so the read intent is only implied by the field list and the annotations.
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?
There is no guidance on when to use this versus siblings such as tiktok_posts or tiktok_music, and no statement about when not to use it. The only implicit cue is that the input is a hashtag rather than a video or profile, which the agent must infer from the schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_musicTikTok soundARead-onlyIdempotent
A TikTok sound by URL or ID: title, artist, duration, original-sound flag, cover, audio URL and how many videos use it, plus the top videos using it (max 12, from the public embed).
Cost: 2 credits per successful call (failed calls are refunded).
Provide one of: url OR id.
Returns: id (string), title (string, nullable), author (string, nullable), album (string, nullable), duration (integer, nullable), is_original (boolean, nullable), cover_url (string, nullable), play_url (string, nullable), video_count (integer, nullable), link (string), videos (array), videos_fetched (integer), has_more (boolean).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Numeric sound (music) ID. Example: "7694335437137087262" | |
| url | No | TikTok sound URL (tiktok.com/music/...). Example: "https://www.tiktok.com/music/original-sound-7694335437137087262" | |
| limit | No | Maximum number of videos to return. Example: 12 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish a safe, idempotent, open-world read, so the description correctly spends its words elsewhere: the 2-credit cost with refunds on failure, the 12-video cap, and the fact that videos come from the public embed. That is exactly the kind of cost/limit context annotations cannot carry; only the lack of any error or rate-limit detail keeps it from a 5.
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 purpose and cost are front-loaded in two short lines, and the field list is justified because no output schema exists. The "Returns:" line is a dense type dump (`string, nullable` repeated) that is slightly mechanical but not padded.
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?
With no output schema and no required parameters, the description carries its weight: it documents the return shape, the cost model, the video cap and the embed source. It is only short on edge cases such as url/id precedence and how `has_more`/`videos_fetched` interact with `limit`.
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 restates the url/id exclusivity already in the schema and adds only marginal meaning, e.g. the "max 12" ceiling for `limit`, while leaving open whether an explicit `limit` can exceed 12.
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?
"A TikTok sound by URL or ID" plus an enumeration of returned fields (title, artist, duration, is_original, cover, play_url, video_count) makes the resource and scope unmistakable, and it reads as clearly distinct from tiktok_video/tiktok_posts. It stops short of a 5 because it never explicitly contrasts itself with those siblings or states a verb like "fetch".
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 only guidance is an input constraint ("Provide one of: `url` OR `id`"), which is a parameter rule rather than a when-to-use rule. There is no mention of when to pick this over tiktok_video, no prerequisites, and no statement of what happens if both `url` and `id` are supplied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_postsTikTok videosARead-onlyIdempotent
A TikTok profile summary plus its newest videos (max 12, from the public embed) with cover, play URL and play count. Cost: 1 credit per successful call (failed calls are refunded). Returns: user_id (string, nullable), username (string), nickname (string), signature (string), is_verified (boolean), is_private (boolean), follower_count (integer, nullable), following_count (integer, nullable), heart_count (integer, nullable), avatar_url (string, nullable), posts (array), posts_fetched (integer), has_more (boolean).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of videos to return. Example: 12 | |
| username | Yes | TikTok username, @handle or profile URL. Example: "khaby.lame" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely new behavior: a 1-credit cost with refunds on failure, and the important constraint that videos come from the public embed and cap at 12. It does not explain what has_more means or how pagination would work.
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?
Purpose is front-loaded in the first sentence, followed by cost and then returns, which is a sensible order for an agent. The returns list is long but each field earns its place because no output schema exists; only has_more is listed without explanation.
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?
With no output schema, the description compensates by enumerating the return fields and their nullability. Combined with cost disclosure, the source limitation (public embed) and the 12-video cap, an agent has what it needs to call this correctly and predict the payload.
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; username formats and limit are already documented in the schema. The description adds one real constraint the schema lacks, that the ceiling is 12 regardless of limit, but says nothing further about limit behavior such as what limit=0 returns.
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+resource: a TikTok profile summary plus its newest videos, with cover, play URL and play count. It distinguishes itself reasonably from tiktok_video (one video) by emphasizing the profile summary, but never names tiktok_profile, so the boundary with that closest sibling is left implicit.
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?
Usage is only implied by the phrase 'profile summary plus its newest videos'; there is no explicit when-to-use, when-not, or named alternative such as tiktok_profile for profile-only data or tiktok_video for a single clip. The agent can infer the case from the content list, but must do the routing work itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_profileTikTok profileARead-onlyIdempotent
Public TikTok profile: nickname, bio, link, verification, follower/following/like/video counts, avatar, region and creation date. Cost: 1 credit per successful call (failed calls are refunded). Returns: user_id (string, nullable), username (string), full_name (string), biography (string), external_url (string, nullable), is_private (boolean), is_verified (boolean), follower_count (integer, nullable), following_count (integer, nullable), like_count (integer, nullable), video_count (integer, nullable), profile_image_url (string, nullable), region (string, nullable), created_at (string, nullable).
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | TikTok username, @handle or profile URL. Example: "khaby.lame" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description goes beyond them with a real operational fact the annotations cannot express: cost is 1 credit per successful call and failed calls are refunded. It does not say what happens on a private or nonexistent handle, which is the main remaining behavioral gap.
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?
Two sentences, both earning their place: the first front-loads purpose and payload, the second covers cost and return shape. The field list is long but dense and, since no output schema exists, is the only place that information lives.
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?
With no output schema, the description compensates by enumerating every returned field with type and nullability, and it discloses billing. What it omits is failure behavior for private or nonexistent accounts and any notion of rate limits or caching, which matter for an open-world scraper 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?
Only one parameter exists and schema coverage is 100%, with the schema itself documenting that username accepts a handle, @handle, or profile URL and giving an example. The description adds no format or validation meaning beyond that, so the baseline 3 applies.
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 names a specific resource (public TikTok profile) and enumerates exactly what data it yields (bio, verification, follower counts, avatar, region, creation date). The platform is explicit, so an agent can separate it from instagram_profile or youtube_profile, though it never explicitly frames the split against the closest sibling, tiktok_posts.
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?
There is no when-to-use or when-not-to-use guidance and no named alternatives (e.g. use tiktok_posts for a profile's videos). The only usage signal is the word 'Public', implying private profiles are out of scope, which is implicit rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_transcriptTikTok video transcriptARead-onlyIdempotent
Timestamped transcript of a TikTok video from its captions (auto-generated or creator-added), with the caption languages available. Pick a language with lang.
Cost: 1 credit per successful call (failed calls are refunded).
Provide one of: url OR id.
Returns: video_id (string), language (string), is_auto_generated (boolean, nullable), available_languages (array), segments (array), text (string), segment_count (integer).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Numeric video ID. Example: "7696087114202647826" | |
| url | No | TikTok video URL, or a short share link (vm.tiktok.com/..., tiktok.com/t/...). Example: "https://www.tiktok.com/@esan_doctor/video/7696087114202647826" | |
| lang | No | Caption language: a code like en or es, or TikTok's code like eng-US. Defaults to the video's original language. Example: "en" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, open-world, so the description adds genuinely new behavior: a cost of 1 credit per successful call with failed calls refunded, plus the caption origin and the language-selection behavior. This is exactly the context an agent needs that structured fields cannot supply.
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?
Front-loaded purpose, then a cost line, an input constraint, and a compact Returns line — each sentence carries distinct information with no filler. The parenthetical return-type list is dense but scannable, and nothing is buried under preamble.
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?
With no output schema, the description compensates by enumerating the return fields (video_id, language, is_auto_generated, available_languages, segments, text, segment_count). Cost, refund policy, and input constraint are all stated for a simple three-parameter read tool, leaving no material gap.
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 all three parameters (id, url, lang) are already fully documented in the schema, making the baseline 3. The description reinforces the either/or constraint and hints that available_languages enables a two-step language pick, but adds no format or syntax detail beyond the schema.
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?
"Timestamped transcript of a TikTok video from its captions (auto-generated or creator-added)" states a specific resource and output artifact, and the caption-source parenthetical clarifies what kind of transcript. It does not name a sibling to distinguish itself from (e.g. tiktok_video, youtube_transcript), so an agent must infer the boundary rather than read it.
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 input-selection guidance ("Provide one of: `url` OR `id`" and "Pick a language with lang"), which is real usage help. It never says when to choose this over tiktok_video or youtube_transcript, nor what happens if the video has no captions at all — no exclusions or alternatives are offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_videoTikTok videoARead-onlyIdempotent
A single TikTok video by URL, short link or ID: caption, timestamp, like/comment/share/play/save counts, cover, duration, the MP4 file (without watermark when available), author and music with its audio file.
Cost: 1 credit per successful call (failed calls are refunded).
Provide one of: url OR video OR id.
Returns: id (string), link (string, nullable), description (string), created_at (string, nullable), like_count (integer, nullable), comment_count (integer, nullable), share_count (integer, nullable), play_count (integer, nullable), save_count (integer, nullable), cover_url (string, nullable), dynamic_cover_url (string, nullable), duration (integer, nullable), video_url (string, nullable), video_has_watermark (boolean, nullable), width (integer, nullable), height (integer, nullable), author (object), music (object).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Numeric video ID. Example: "6718335390845095173" | |
| url | No | TikTok video URL, or a short share link (vm.tiktok.com/..., tiktok.com/t/...). Example: "https://www.tiktok.com/@scout2015/video/6718335390845095173" | |
| video | No | Alias of url (URL or ID). Example: "https://www.tiktok.com/embed/v2/6718335390845095173" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only and open-world annotations, it discloses a charge of 1 credit per successful call, refunds for failed calls, and conditional watermark-free MP4 availability. The return list also communicates nullable fields, though failure modes and any rate or access limits are not described.
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?
Purpose, pricing, invocation, and results are presented in a predictable order with no filler. The exhaustive Returns list makes the text long, but it is largely justified because no output schema is supplied.
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 simple single-item lookup, the definition supplies the locator choices, cost behavior, and a typed, nullable field list sufficient to invoke and interpret most results. It leaves author/music object internals and concrete error behavior unspecified, which prevents full completeness in the absence of an output schema.
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 covers all three parameters with formats, examples, and the alias relationship, and the object schema also states the one-of input rule. The description repeats that rule and accepted locator types but adds little new parameter syntax or validation detail, so it sits at the high-coverage baseline.
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 identifies the resource and scope precisely: one TikTok video located by URL, short link, or ID, with metadata, media, author, and music returned. “Single” also separates it from collection-style siblings such as tiktok_posts, although it does not name that sibling explicitly.
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?
It gives a clear use case—retrieving one known video when the agent has a URL, short link, or ID—and explicitly instructs the agent to provide one of url, video, or id. It does not state when to prefer tiktok_posts, tiktok_transcript, or tiktok_comments, so alternative selection remains inferential.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitch_channelTwitch channelARead-onlyIdempotent
Twitch channel info: display name, description, partner/affiliate status, followers, images and live-stream / last-broadcast details. Cost: 1 credit per successful call (failed calls are refunded). Returns: user_id (string, nullable), username (string), display_name (string), description (string), created_at (string, nullable), is_partner (boolean), is_affiliate (boolean), follower_count (integer, nullable), profile_image_url (string, nullable), banner_image_url (string, nullable), is_live (boolean), stream (object, nullable), last_broadcast (object, nullable).
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Twitch login name or channel URL. Example: "shroud" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and open-world, so the safety profile is covered without the description. The description adds genuinely useful operational context in the per-call credit cost and the refund policy for failed calls, but says nothing about rate limits, auth, or error conditions beyond cost.
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?
Front-loaded with the purpose, then cost, then returns, which is good information ordering. The return-field enumeration is long but earns its place since no output schema exists; the leading name restatement ('Twitch channel info') is the only mild redundancy.
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?
With no output schema, the description correctly compensates by listing every return field with types and nullability, which is exactly what an agent needs to use the result. It stops short of describing the nested stream/last_broadcast object structure and failure cases for nonexistent channels.
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 single username parameter is fully documented in the schema at 100% coverage, including a concrete example and the accepted 'login name or channel URL' forms. The description adds no parameter meaning beyond that, so the 3 baseline applies.
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 specific resource (Twitch channel) and enumerates the exact fields retrieved, so the agent knows precisely what this returns. It never explicitly contrasts itself with twitch_videos or twitch_clips, but 'channel info' versus video/clip resources is distinguishable from the name and content.
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?
Usage is implied rather than stated: an agent can infer this is the right tool for channel-level metadata and the wrong one for videos or clips, but there is no explicit when-to-use or exclusion language. No mention of behavior for missing or non-existent channels.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitch_clipsTwitch clipsARead-onlyIdempotent
A Twitch channel's most viewed clips for a period (last day, week, month or all time, up to 50) with views, duration, creator, game and the source VOD timestamp. Cost: 1 credit per successful call (failed calls are refunded). Returns: user_id (string, nullable), username (string), display_name (string), period (string), clips (array), clips_fetched (integer), has_more (boolean).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of clips to return. Example: 20 | |
| period | No | Time window: last_day, last_week, last_month or all_time. Example: "last_week" | |
| username | Yes | Twitch login name or channel URL. Example: "shroud" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, open-world), so the description's job is to add context — and it does, disclosing the credit cost model including refunds on failure, which is operationally important and not present in structured fields. It stops short of describing rate limits or what happens at the 50-item boundary.
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?
Three tightly packed lines: capability first, then cost, then returns, each labeled and front-loaded. No filler, and the returns list is necessary because no output schema exists.
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?
With no output schema, the description correctly supplies return fields (user_id, username, display_name, period, clips, clips_fetched, has_more), and the credit cost rounds out operational needs. The main gap is the absence of any routing hint versus the sibling Twitch tools, which matters in a 41-tool surface.
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, but the description adds a constraint the schema lacks: the effective ceiling of 50 results for 'limit' (the schema declares only a minimum of 0 with no maximum). The period values are restated from the schema, so that portion is redundant rather than additive.
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 names a specific resource and scope — 'most viewed clips for a period' with an explicit field list (views, duration, creator, game, VOD timestamp) and a size cap. It is clearly distinguishable from twitch_channel and twitch_videos by resource noun, though it never explicitly says so.
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?
Usage is only implied by the resource name; there is no statement of when to choose this over twitch_videos or twitch_channel, nor any prerequisites. The period options and 50-clip ceiling give some practical framing, but no exclusions or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitch_videosTwitch videosARead-onlyIdempotent
A Twitch channel's latest videos (past broadcasts, highlights or uploads, up to 50) with title, duration, view count, dates, thumbnail and game. Cost: 1 credit per successful call (failed calls are refunded). Returns: user_id (string, nullable), username (string), display_name (string), type (string), total_count (integer, nullable), videos (array), videos_fetched (integer), has_more (boolean).
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Video type: archive (past broadcasts), highlight, upload or all. Example: "archive" | |
| limit | No | Maximum number of videos to return. Example: 20 | |
| username | Yes | Twitch login name or channel URL. Example: "shroud" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context beyond that: a 1-credit cost with refunds on failure, a 50-video ceiling, and a note that results may be truncated (has_more, videos_fetched).
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?
Front-loaded purpose sentence, then labeled Cost and Returns lines. No filler, and the two highest-value facts (cap and cost) are surfaced immediately.
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?
With no output schema, the description carries the return contract and does so thoroughly, including nullable fields and pagination-style flags. It stops short of describing error cases or auth requirements, which keeps it just below full completeness for an open-world read 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?
Schema coverage is 100%, and the schema documents type, limit, and username with examples. The description adds a constraint not present in the schema — the 'up to 50' cap on results — which materially informs how to set limit, plus the mapping of the three video kinds to the type parameter.
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 specific verb-and-resource ('A Twitch channel's latest videos') and enumerates the covered video kinds (past broadcasts, highlights, uploads) plus the returned fields, which separates it from twitch_clips by content type. It does not explicitly name twitch_clips or twitch_channel as alternatives, so sibling differentiation is implied rather than stated.
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 use case (fetch a channel's recent videos) but never says when to prefer this over twitch_channel or twitch_clips, nor any prerequisites. There are no exclusions or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x_postX postARead-onlyIdempotent
A single X post (tweet) by URL or ID: text, author, reply/quote/retweet info, media and engagement counts including views.
Cost: 1 credit per successful call (failed calls are refunded).
Provide one of: url OR id.
Returns: id (string), link (string, nullable), text (string), lang (string, nullable), created_at (string, nullable), author_username (string, nullable), is_pinned (boolean), is_retweet (boolean), retweeted_from (string, nullable), is_reply (boolean), in_reply_to (string, nullable), is_quote (boolean), quoted (object, nullable), reply_count (integer, nullable), retweet_count (integer, nullable), quote_count (integer, nullable), like_count (integer, nullable), bookmark_count (integer, nullable), view_count (integer, nullable), media (array).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Tweet ID; used only when url is empty. Example: "20" | |
| url | No | Tweet URL (a bare tweet ID also works). Example: "https://x.com/jack/status/20" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a read-only, idempotent, non-destructive, open-world lookup. The description adds useful behavioral context by stating the credit cost, refund policy for failed calls, and the full set of returned fields.
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 front-loaded with the core purpose, then cost, input rule, and return fields. The long return-field list is justified because there is no output schema, though 'engagement counts including views' is slightly redundant with the later view_count field.
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 read-only single-post lookup with no output schema, the description supplies the key return shape, nullable fields, cost model, and input selection rule. Nothing essential for calling the tool correctly appears to be 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 description coverage is 100%, so the schema already documents both url and id with examples and precedence. The description repeats 'Provide one of: url OR id' but does not add meaning beyond the schema.
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 retrieving a single X post by URL or ID and lists the post data returned. It distinguishes itself from the sibling list tool x_posts through the word 'single', though it does not explicitly name that alternative.
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?
Usage is implied by 'A single X post (tweet) by URL or ID' and the instruction to provide either url or id. There is no explicit when-to-use guidance versus x_posts for multiple posts or x_profile for account data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x_postsX postsARead-onlyIdempotent
An X profile plus its recent timeline (up to 60 tweets incl. pinned, retweets and own replies) with text, media and engagement counts. Cost: 2 credits per successful call (failed calls are refunded). Returns: user_id (string, nullable), username (string), full_name (string), biography (string), location (string), external_url (string, nullable), is_private (boolean), is_verified (boolean), is_blue_verified (boolean), follower_count (integer, nullable), following_count (integer, nullable), tweet_count (integer, nullable), like_count (integer, nullable), media_count (integer, nullable), listed_count (integer, nullable), created_at (string, nullable), profile_image_url (string, nullable), profile_banner_url (string, nullable), posts (array), posts_fetched (integer), has_more (boolean).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of tweets to return. Example: 20 | |
| username | Yes | X username, @handle or profile URL. Example: "tesla" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely non-derivable behavior: a cost of 2 credits per successful call with failed calls refunded, plus the 60-tweet cap and has_more flag. It does not explain how 'limit' interacts with the 60-item ceiling or what happens when the account is private and posts are withheld.
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?
It is front-loaded: the capability and the 60-tweet cap appear in the first sentence, followed by clearly labeled 'Cost:' and 'Returns:' lines. The 20-field Returns enumeration is dense, but with no output schema it is doing necessary work rather than padding.
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 two-parameter read tool with no output schema, the definition covers the important gaps: return shape, credit cost and refund policy, tweet cap, and the has_more flag. What remains unstated is pagination behavior and how limit maps onto the 60-tweet ceiling, which is a real but minor omission given the otherwise thorough field list.
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 both parameters (username, limit) are already documented with examples in the schema. The description adds only indirect meaning, implying that limit governs the number of timeline tweets returned. Baseline 3 is appropriate where the schema carries the parameter burden.
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 resource and scope: an X profile plus its recent timeline, capped at 60 tweets including pinned, retweets and own replies, with text, media and engagement counts. That is much more precise than the bare name 'x_posts'. It does not explicitly contrast itself with the sibling x_profile, so an agent must infer that this tool is the profile-plus-timeline superset.
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?
Usage is only implied: the phrase 'plus its recent timeline (up to 60 tweets)' suggests this is the choice when profile metadata and recent posts are both needed, while x_profile and x_post are the narrower alternatives. No sentence tells the agent when to prefer this over those siblings, and no exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
x_profileX profileARead-onlyIdempotent
Public X (Twitter) profile: bio, location, verification, follower/following/tweet/like/media/listed counts, avatar and banner. Cost: 1 credit per successful call (failed calls are refunded). Returns: user_id (string, nullable), username (string), full_name (string), biography (string), location (string), external_url (string, nullable), is_private (boolean), is_verified (boolean), is_blue_verified (boolean), follower_count (integer, nullable), following_count (integer, nullable), tweet_count (integer, nullable), like_count (integer, nullable), media_count (integer, nullable), listed_count (integer, nullable), created_at (string, nullable), profile_image_url (string, nullable), profile_banner_url (string, nullable).
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | X username, @handle or profile URL. Example: "tesla" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds a billing trait the annotations cannot express (1 credit per successful call, failed calls refunded) and enumerates nullable return fields, but says nothing about error/not-found handling or rate limits beyond cost.
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?
Three front-loaded lines: what it returns, what it costs, and the exact return shape. The long field enumeration is dense but earns its place because no output schema exists. Slightly list-heavy but not padded.
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?
With no output schema, spelling out every returned field and its nullability is the right compensation, and the cost/refund note covers billing behavior. Remaining gaps are minor: behavior when the account is private or nonexistent, and any rate limits, are unstated.
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?
There is a single required parameter with 100% schema description coverage that already explains accepted forms ('@handle or profile URL', with an example). The description adds no meaning beyond the schema, so the baseline of 3 applies.
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 names a specific resource (public X/Twitter profile) and enumerates exactly what it fetches — bio, location, verification, follower/following/tweet/like/media/listed counts, avatar and banner. It is clearly distinct from siblings such as x_posts and x_post by virtue of the resource and the field list, though it never explicitly states 'retrieve' or names the sibling it excludes.
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?
Usage is only implied by the resource ('public profile'), with no explicit when-to-use, when-not-to-use, or routing to alternatives like x_posts. The cost line gives useful operating context but not selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_commentsYouTube commentsARead-onlyIdempotent
Top-level comments of a YouTube video by URL or ID, sorted by top or newest: text, author, likes, reply count, pinned and hearted flags, plus the total comment count.
Cost: 1 credit per successful call (failed calls are refunded).
Provide one of: url OR id.
Returns: video_id (string), sort (string), comment_count (integer, nullable), comments_fetched (integer), has_more (boolean), comments (array).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | 11-character video ID. Example: "dQw4w9WgXcQ" | |
| url | No | YouTube video URL (watch, youtu.be, shorts, live or embed link; a bare ID also works). Example: "https://www.youtube.com/watch?v=dQw4w9WgXcQ" | |
| sort | No | top or newest. Default top. Example: "newest" | |
| limit | No | Maximum number of comments to return. Example: 20 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world behavior, so the safety profile is covered. The description adds information annotations cannot carry: a cost of 1 credit per successful call with failed calls refunded, which matters for agent budget decisions. It does not discuss rate limits or paging depth cost, keeping this below a 5.
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?
Four compact, front-loaded lines: purpose first, then cost, then the input constraint, then the return shape. Every line carries distinct information 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?
With no output schema, the absence of a return contract would be a serious gap, and the description compensates by naming the exact return keys including has_more and comments_fetched. Cost is also disclosed. What is missing is how limit interacts with has_more/pagination and whether comment replies are reachable at all, which leaves a small but real gap for a 4-parameter 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?
Schema description coverage is 100%, so every parameter is already documented, including the url/id constraint and the sort default. The description's "Provide one of: `url` OR `id`" repeats the schema-level rule rather than adding meaning. Baseline 3 applies where the schema does the heavy lifting.
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?
"Top-level comments of a YouTube video by URL or ID, sorted by top or newest" names a specific resource, its scope (top-level, i.e. not replies), and the retrieval modes. It also enumerates the returned fields, so the agent knows exactly what it gets. It stops short of naming a sibling it is not (e.g. youtube_video or youtube_transcript), so it is clear but not sibling-routing.
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?
Usage is only implied: an agent infers it should call this when it wants comment text for a specific video. There is no explicit statement of when to prefer youtube_video (metadata), youtube_transcript, or youtube_playlist instead, and no stated prerequisites such as the video needing comments enabled.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_playlistYouTube playlistARead-onlyIdempotent
A YouTube playlist by URL or ID: title, description, owner channel, video and view counts, plus its videos (max 100) with views, publish time and duration.
Cost: 1 credit per successful call (failed calls are refunded).
Provide one of: url OR id.
Returns: playlist_id (string), title (string), description (string), channel (object, nullable), video_count (integer, nullable), video_count_text (string, nullable), view_count (integer, nullable), view_count_text (string, nullable), thumbnail_url (string, nullable), url (string), videos_fetched (integer), has_more (boolean), videos (array).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Playlist ID (PL..., OLAK5uy_..., UU...). Example: "PLOzDu-MXXLlj7croDcwz33c-a5rpNEBNe" | |
| url | No | Playlist URL or any YouTube link with a list= parameter (a bare playlist ID also works). Example: "https://www.youtube.com/playlist?list=PLOzDu-MXXLlj7croDcwz33c-a5rpNEBNe" | |
| limit | No | Maximum number of videos to return. Example: 10 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, so the description correctly spends its words elsewhere: the 1-credit cost, the refund policy on failure, and the 100-video ceiling with has_more signalling. That is real behavior an agent cannot get from the structured fields. It stops short of describing ordering or pagination mechanics beyond the has_more flag.
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?
Front-loaded with the resource and payload, then cost, then input rule, then returns — good ordering with no filler sentences. The returns line is a long field-by-field enumeration, but since no output schema exists it earns its place.
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?
With no output schema, the explicit return-shape listing is genuinely necessary and is provided, along with cost and the video cap. An agent has enough to call it correctly; the remaining gap is what happens when a playlist exceeds 100 videos beyond the has_more flag.
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 schema already documents id, url, and limit including examples, making 3 the baseline. The description adds only the max-100 video ceiling, and it is unclear whether that cap applies to the `limit` parameter or to the returned videos array, so the added meaning is marginal rather than decisive.
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 names the specific resource (a YouTube playlist) and enumerates exactly what is returned: title, description, owner channel, video and view counts, plus its videos. That is far more than a restatement of the name. It does not distinguish itself from siblings like youtube_videos or youtube_video, but the verb+resource is unambiguous.
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 only routing guidance is 'Provide one of: `url` OR `id`', which constrains input shape rather than when to choose this tool over youtube_video, youtube_videos, or youtube_profile. The purpose is obvious enough that an agent can infer usage, but no alternative is named and no exclusion is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_profileYouTube channelARead-onlyIdempotent
YouTube channel info by handle, channel ID or URL: title, description, approximate subscriber/video counts, avatar and banner.
Cost: 1 credit per successful call (failed calls are refunded).
Provide one of: username OR channel.
Returns: channel_id (string, nullable), handle (string, nullable), title (string), description (string), keywords (string), subscriber_count (integer, nullable), subscriber_count_text (string, nullable), video_count (integer, nullable), video_count_text (string, nullable), is_family_safe (boolean), channel_url (string, nullable), avatar_url (string, nullable), banner_url (string, nullable), available_countries (integer, nullable).
| Name | Required | Description | Default |
|---|---|---|---|
| channel | No | Alias of username (same accepted formats). Example: "UCX6OQ3DkcsbYNE6H8uQQuVA" | |
| username | No | Channel @handle, handle, channel ID or channel URL. Example: "@MrBeast" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safe-read, idempotent and open-world behavior, yet the description adds genuinely new context: a 1-credit cost per successful call with refunds on failure. The enumerated return fields with nullability also set expectations for partial data, which annotations do not 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?
Front-loaded with purpose, then cost, then input constraint, then returns; each line is distinct and functional. The long return-field enumeration is justified because no output schema exists, though it reads as a slightly dense run-on.
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 two-parameter read tool with no output schema, the description covers purpose, cost, input selection and the full return shape including nullable fields. The only gap is behavior when both identifier parameters are provided or when a channel is not found.
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 both parameters carry their own descriptions and examples, so the schema does the heavy lifting. The description's 'by handle, channel ID or URL' and 'Provide one of' lines repeat what the schema already states, adding no new syntax or edge-case meaning (e.g. what happens if both are supplied).
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 specific resource (YouTube channel) and the identifying inputs (handle, channel ID or URL), plus the fields returned. An agent can distinguish it from youtube_videos or youtube_search by the resource alone, though the description never explicitly names those 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 only usage rule is 'Provide one of: `username` OR `channel`', which is an input constraint rather than when-to-use guidance. It does not say when to prefer this over youtube_search or youtube_videos, but the implied 'look up one channel' use case is discoverable from the purpose line.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_searchYouTube searchARead-onlyIdempotent
Search YouTube by keyword: videos, Shorts, channels and playlists with views, publish time, duration and channel. Optional type, popularity sort and upload-date filters. Cost: 1 credit per successful call (failed calls are refunded). Returns: query (string), type (string), sort (string), upload_date (string, nullable), results_fetched (integer), has_more (boolean), results (array).
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | relevance or popularity (view_count is accepted as an alias). Default relevance. Example: "popularity" | |
| type | No | Result type: all, video, shorts, channel or playlist. Default all. Example: "video" | |
| limit | No | Maximum number of results to return. Example: 10 | |
| query | Yes | Search keywords (max 200 characters). Example: "lofi hip hop" | |
| upload_date | No | Only results uploaded within: today, week, month or year. Example: "week" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds genuine context beyond that: a per-call cost of 1 credit with refunds on failure, which affects how freely an agent retries or fans out. It stops short of stating rate limits or how has_more should be used to page.
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?
Three short, front-loaded lines: purpose, cost, returns. No filler. The returns line is somewhat list-like, but since no output schema exists it earns its place rather than repeating structured data.
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?
With no output schema, the description correctly compensates by naming the response envelope (query, type, sort, upload_date, results_fetched, has_more, results) and the cost model. The remaining gap is that result objects are only described as array<object> with a loose mention of views/duration/channel, and the limit/has_more paging relationship is left implicit.
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%, with each of the five parameters (including query, type, sort, upload_date, limit) documented with accepted values and examples. The description only restates those filters at a high level and adds no format or interaction detail, so the baseline of 3 applies.
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 ("Search YouTube by keyword") and enumerates the result kinds (videos, Shorts, channels, playlists) plus the fields carried back (views, publish time, duration, channel). That is enough to separate it from the fetch-specific siblings like youtube_video or youtube_playlist, but it never names those siblings or explicitly contrasts search with retrieval.
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?
Usage is implied by the word "search" and by the mention of "Optional type, popularity sort and upload-date filters", which signals this is the discovery entry point. There is no explicit when-to-use/when-not statement and no routing to alternatives such as youtube_videos or youtube_profile for known-channel lookups, so the agent must infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_transcriptYouTube transcriptBRead-onlyIdempotent
Transcript of a YouTube video from its captions: timed segments, joined plain text, chosen language and the list of available caption languages.
Cost: 1 credit per successful call (failed calls are refunded).
Provide one of: url OR id.
Returns: video_id (string), language (string), language_name (string), is_auto_generated (boolean), available_languages (array), segment_count (integer), text (string), segments (array).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | 11-character video ID. Example: "dQw4w9WgXcQ" | |
| url | No | YouTube video URL (watch, youtu.be, shorts, live or embed link; a bare ID also works). Example: "https://www.youtube.com/watch?v=dQw4w9WgXcQ" | |
| lang | No | Caption language code such as en, de, pt-BR or es-419. Default: the video's original language. Example: "en" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds genuinely useful non-annotation context — the 1-credit cost with refunds on failure — and enumerates the return fields, but says nothing about failure modes such as videos lacking captions or rate limits. The cost disclosure is the strongest addition and lifts it above baseline.
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?
Front-loaded with the purpose, then two compact labeled lines for cost/input and returns; no filler prose. Minor waste in restating 'Provide one of: url OR id', which duplicates the schema description verbatim, but overall it is tight and scannable.
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?
With no output schema, the explicit return-field enumeration (video_id, language, is_auto_generated, available_languages, text, segments) is a real contribution, and the cost line covers billing expectations. However, for a tool whose practical failure mode is 'no captions exist', the absence of any note on missing/auto-generated caption fallback leaves a meaningful behavioral gap.
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 id, url and lang are fully documented in the schema itself, including examples and defaulting behavior. The description only echoes the one-of constraint and alludes to language selection through the return fields; it adds no syntax or format detail beyond the schema. Baseline 3 applies.
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 specific resource (YouTube video transcript from captions) plus the exact shape of what comes back: timed segments, joined plain text, chosen language, and available caption languages. That makes it trivially distinguishable from siblings like youtube_video (metadata) and tiktok_transcript (different platform) without opening a schema.
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?
Contains no when-to-use or when-not-to-use guidance relative to alternatives; the only directive is the input constraint 'Provide one of: url OR id', which merely restates the schema's own description. Nothing tells the agent when to prefer this over youtube_video, or what to do when captions are unavailable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_videoYouTube videoARead-onlyIdempotent
A single YouTube video by URL or ID: title, description, exact views, likes, duration, publish date, category, keywords and channel.
Cost: 1 credit per successful call (failed calls are refunded).
Provide one of: url OR id OR video.
Returns: video_id (string), link (string), title (string), description (string), duration_seconds (integer, nullable), view_count (integer, nullable), like_count (integer, nullable), published_at (string, nullable), category (string, nullable), is_live (boolean), is_family_safe (boolean, nullable), playability (string, nullable), keywords (array), thumbnail_url (string, nullable), thumbnails (array), channel (object).
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | 11-character video ID. Example: "0e3GPea1Tyg" | |
| url | No | YouTube video URL (a bare ID also works). Example: "https://www.youtube.com/watch?v=jNQXAC9IVRw" | |
| video | No | Alias (URL or ID). Example: "https://youtu.be/dQw4w9WgXcQ" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations' safe, read-only profile, the description discloses the meaningful billing behavior: one credit per successful call and refunds for failed calls. The return contract also documents nullable fields and status flags, although it adds little about error conditions or data freshness.
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 front-loaded with purpose, followed by cost, input requirements, and the return contract in a logical order. The initial metadata summary partly duplicates the longer Returns list, but the list is justified because no output schema is supplied.
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 simple three-parameter read tool, the definition covers lookup scope, input selection, pricing and failure refunds, and a typed return contract with nullability. The detailed Returns section is especially valuable given the absence of an output schema, leaving no significant invocation-critical gap.
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%, including formats and examples for all three parameters, so the baseline is 3. The description repeats the useful one-of requirement and URL-or-ID semantics but adds no substantial parameter meaning beyond the structured schema.
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 opening line clearly defines a single-video metadata lookup by URL or ID and enumerates the information retrieved. Specifying 'a single YouTube video' also distinguishes its scope from plural or adjacent siblings such as youtube_videos, youtube_comments, and youtube_transcript.
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 a clear usage context: use it for one known video identified by URL or ID, and provide exactly one of url, id, or video. It does not explicitly explain when to choose youtube_search or youtube_videos instead, so alternative-selection guidance remains implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_videosYouTube videosARead-onlyIdempotent
A YouTube channel summary plus its latest uploads (max 30) with title, approximate views, relative publish time, duration and thumbnail, with the channel header (handle, description, banner, video count).
Cost: 1 credit per successful call (failed calls are refunded).
Provide one of: username OR channel.
Returns: channel_id (string, nullable), title (string), channel_url (string, nullable), avatar_url (string, nullable), subscriber_count (integer, nullable), subscriber_count_text (string, nullable), handle (string, nullable), description (string), keywords (string), video_count (integer, nullable), video_count_text (string, nullable), is_family_safe (boolean), banner_url (string, nullable), available_countries (integer, nullable), videos_fetched (integer), has_more (boolean), videos (array).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of videos to return. Example: 5 | |
| channel | No | Alias of username (same accepted formats). Example: "UCX6OQ3DkcsbYNE6H8uQQuVA" | |
| username | No | Channel @handle, handle, channel ID or channel URL. Example: "MrBeast" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and open-world behavior, so the description's job is to add context — and it does: billing ('1 credit per successful call, failed calls are refunded'), a hard cap of 30 uploads, and the caveat that views are 'approximate' and publish time is 'relative'. It stops short of explaining has_more/pagination mechanics or default limit behavior.
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?
Well front-loaded: purpose first, then cost, then required inputs, then return shape. The long return-field enumeration is verbose but earns its place because no output schema exists; the field-by-field nullability listing could be tightened into a 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?
Since there is no output schema, documenting the return fields (channel_id, handle, videos array, has_more, etc.) is genuinely necessary and done well. The remaining gap is behavioral: how pagination via has_more works and how `limit` interacts with the 30-video cap.
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. The description only contributes the 'max 30' ceiling and the username/channel exclusivity, both of which the schema already states, and it never clarifies whether `limit` can exceed 30 or what the default is.
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 opening sentence names a specific verb+resource pair: 'A YouTube channel summary plus its latest uploads (max 30)' and enumerates the per-video fields returned. This is clearly distinct from youtube_video or youtube_comments, but it does not say how it differs from the closely related sibling youtube_profile, which an agent could easily confuse it with.
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?
'Provide one of: `username` OR `channel`' is a parameter constraint, not usage guidance — and it merely restates the input schema. The description never says when to pick this over youtube_profile, youtube_search, youtube_playlist, or twitch_videos, nor does it mention prerequisites or failure conditions.
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.
42 tool updates
v0.1.0- First observed
facebook_profile - First observed
get_account - First observed
instagram_comments - First observed
instagram_photos - First observed
instagram_post - First observed
instagram_profile - First observed
instagram_reel - First observed
instagram_reels - First observed
instagram_reels_search - First observed
list_scrapers - First observed
pinterest_board - First observed
pinterest_pin - First observed
pinterest_pins - First observed
pinterest_profile - First observed
pinterest_search - First observed
spotify_album - First observed
spotify_artist - First observed
spotify_playlist - First observed
spotify_track - First observed
telegram_post - First observed
telegram_posts - First observed
telegram_profile - First observed
tiktok_comments - First observed
tiktok_hashtag - First observed
tiktok_music - First observed
tiktok_posts - First observed
tiktok_profile - First observed
tiktok_transcript - First observed
tiktok_video - First observed
twitch_channel - First observed
twitch_clips - First observed
twitch_videos - First observed
x_post - First observed
x_posts - First observed
x_profile - First observed
youtube_comments - First observed
youtube_playlist - First observed
youtube_profile - First observed
youtube_search - First observed
youtube_transcript - First observed
youtube_video - First observed
youtube_videos
TDQS
Scored across 42 tools
The platform_action pattern helps, but there is real overlap: instagram_post explicitly also handles reels, so it competes with instagram_reel, and instagram_photos is a profile+posts tool that is easily confused with both instagram_profile and instagram_post. The singular/plural pairs (x_post vs x_posts, youtube_video vs youtube_videos, tiktok_video vs tiktok_posts) require reading descriptions to distinguish 'one item' from 'list', and the '_profile' vs '_posts/_videos/_pins' pattern (bare profile vs profile+recent items) is not self-evident from names alone.
The dominant convention is platform_resource (instagram_profile, tiktok_video, youtube_video, spotify_track, pinterest_pin, twitch_channel), applied consistently across all ten platforms. Deviations are minor: utility tools use verb_noun (get_account, list_scrapers), and several platform tools use plurals for list-oriented results (instagram_photos, tiktok_posts, youtube_videos), which is slightly inconsistent since '_photos' returns a profile plus posts rather than a pure list.
42 tools exceeds the comfortable 3-15 range and feels heavy, though it is spread across ten distinct platforms (~4 tools each), which justifies much of the breadth. The count is at the upper bound; fewer platforms or consolidated 'scrape everything for X' tools would reduce overload, but no single tool is clearly redundant.
Coverage is strong where present—most platforms have profile, list, single-item and where relevant comments/transcript/search tools. But there are notable gaps: Facebook has only facebook_profile (no posts, comments or search), and several platforms lack search entirely (Instagram via hashtag only, X, Spotify, Twitch). Agents will hit dead ends for common cross-platform workflows like searching or fetching comments on Facebook.
Maintenance
Related MCP Connectors
Schedule and publish social posts across 9 platforms (Instagram, LinkedIn, X, TikTok, Facebook, Threads, Pinterest, Bluesky, Mastodon) straight from Claude, ChatGPT, Cursor, or any MCP client. Create, edit, and reschedule posts, upload media, and pull account and post analytics, follower demographics, and best-time windows. 20 tools, free on every plan.
Agent-first social media publishing, scheduling, analytics, and unified inbox API + 16-tool MCP server across 18 social platforms (X, LinkedIn, Instagram, YouTube, TikTok, Threads, Bluesky, Reddit, Telegram, Discord, Mastodon, Facebook, Pinterest).
Social media data for AI agents: one MCP address, 18 platforms. Pay per call; failed calls are free.
Your agent needs X/Twitter data — who follows a competitor, what a community is posting, who quoted that tweet, what is trending in Japan. Normally that means applying for an X developer account, passing app review, and managing a quota per endpoint. **What you can ask for** • "Who follows @stripe, and which of them are verified?" • "Pull every reply and quote on this tweet and summarise what people object to." • "List this community's moderators and its posts this week." • "What is trending in Japan right now?" • "Give me the full thread context behind this link, including the long-form article." **How to use it** Point any MCP client at https://mcp.aisa.one/twitter-api/mcp and sign in with OAuth — there is no key to create or paste. 29 read tools: users (profile, about, batch lookup by id, search, followers, verified followers, followings, follow check), tweets (timeline, latest, mentions, advanced search, replies, quotes, retweeters, thread context, articles), communities, lists, Spaces and trends. **Why this rather than the source** No developer account to apply for, no app review, no per-endpoint quota to manage. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Ask for a handle's followers here, then ask the same agent for that brand's search traffic, its backlinks, or the people to contact — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/social/mcp for X plus Instagram, Reddit, Pinterest and YouTube; https://mcp.aisa.one/gtm/mcp for those plus Similarweb and Apollo.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides unified access to social media data across nine networks (Instagram, TikTok, YouTube, etc.) through a set of MCP tools for profiles, posts, search, and comments, backed by the SocialBridge API.-

Monocrawl MCPofficial
AlicenseNot gradedqualityCmaintenanceEnables AI agents to retrieve live public data from 70+ platforms — profiles, posts, comments, transcripts, products, prices, reviews, listings, jobs, ads and search results — plus website crawls and live browser sessions through 650+ endpoints in one response format. Includes free cost previews, per-call credit caps, safe retries, refunded failures and scheduled monitoring.21 npm11MIT
insightsocialofficial
AlicenseNot gradedqualityBmaintenanceEnables AI agents to search, describe and call 239 social data endpoints across Instagram, TikTok, LinkedIn, Facebook, YouTube, X, Reddit, Threads and Pinterest through a single API key, covering profiles, posts, comments, followers, hashtags, ads and transcripts with one unified schema. Full responses are saved server-side and can be re-sliced for free with jq, fields or size outlines, so agents pull only the data they need into context.236 npmMIT
ProLevelMax MCPofficial
AlicenseNot gradedqualityCmaintenanceEnables AI agents and developers to discover, inspect, run, and schedule live public social media data collection from 157 platforms, including Reddit, TikTok, Instagram, X, YouTube, Xiaohongshu, and Douyin. It supports previews, cost quotes, async runs, and download links via remote MCP, an Agent Skill, or REST API.MIT