API Direct
Server Details
Search and read public data from X/Twitter, Reddit, YouTube, Instagram, TikTok, Facebook, Threads, Bluesky, Trustpilot, Amazon, Google Maps, news, forums and the web. 90+ read-only tools plus ready-made research playbooks (lead finding, brand monitoring, review mining). Hosted: connect with an API key; 50 free requests per endpoint each month.
- Status
- Healthy
- Uptime
- 100.0% over 60 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-03-26
- URL
TDQS
Scored across 134 tools
Tools are cleanly differentiated by platform and resource type, with descriptions that explicitly cross-reference related tools. Despite the large number, each tool targets a unique endpoint or operation, and there is no meaningful overlap that would cause misselection.
Names consistently follow a platform_entity_action pattern in snake_case, with domain prefixes that make purpose immediately clear. Minor deviations like get_youtube_comments and get_skill do not disrupt the overall predictable convention.
With 134 tools, the surface vastly exceeds the typical 3-15 range and the rubric's 50+ threshold for extreme mismatch. While each tool maps to a distinct API endpoint, the count is excessive and likely to overwhelm an agent or cause selection paralysis.
Coverage is extensive across most platforms, with comprehensive read operations for profiles, posts, comments, likes, followers, and search. However, notable gaps exist, such as missing Reddit post details and a very limited Truth Social surface, preventing full lifecycle coverage.
Available Tools
134 toolsamazon_best_sellersAmazon Best SellersARead-onlyInspect
Get Amazon rankings for a category: Best Sellers, New Releases, Movers & Shakers, Most Wished For or Gift Ideas. Each item has rank, rank change, ASIN, title, price and rating. Up to 50 items per page; rankings cover the top 100. Billed $0.005 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1 or 2 (default: 1). Each page returns up to 50 items; rankings cover the top 100. | |
| type | No | Ranking type | best_sellers |
| country | No | Marketplace country code (default: "us") | us |
| category | Yes | Category slug, e.g. electronics or software (see https://apidirect.io/docs/amazon-categories) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld and non-destructive, so safety is covered. The description adds genuinely useful operational context not in the annotations: per-request billing ($0.005), the 50-item page limit, and top-100 ranking coverage.
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 sentences, front-loaded with the resource and ranking types, then return fields, then limits and cost. 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 description carries the return-value burden and does so (rank, rank change, ASIN, title, price, rating). Pagination, category scope and pricing are all covered; only an explicit alternative-tool pointer 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 description coverage is 100%, so all four parameters (page, type, country, category) are already documented, including the enum values and the category-doc URL. The description repeats the pagination/top-100 context but adds no parameter meaning beyond the schema. Baseline 3.
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 (Get) and resource (Amazon rankings for a category), and enumerates the five ranking types it covers. An agent can distinguish it from search_amazon_products and amazon_product_details, which retrieve products rather than category rankings.
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's nature (rankings listings), but the description gives no explicit when-to-use or when-not-to-use guidance and never names search_amazon_products as the alternative for keyword-based product lookup. Nothing is misleading, but the routing guidance is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
amazon_product_detailsAmazon Product DetailsARead-onlyInspect
Get an Amazon product by ASIN (from search_amazon_products). Returns pricing, buy box with seller_id, availability, condition, photos, videos, specs, feature bullets, description, per-star rating breakdown and top reviews. Billed $0.005 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| asin | Yes | 10-character Amazon ASIN (e.g. B07ZPKN6YR) | |
| country | No | Marketplace country code (default: "us") | us |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), so the bar is lower. The description adds genuinely new context the annotations cannot: per-request billing ($0.005) and an enumeration of returned fields (pricing, buy box/seller_id, availability, reviews). It doesn't mention rate limits or failure modes, but the cost disclosure is the key non-structural trait.
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 verb+key input, followed by a dense return-value enumeration, then the billing note. Every clause earns its place, though the return list is long enough to read as a run-on rather than sharply prioritized.
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 must convey return shape, and it does so thoroughly (pricing, buy box with seller_id, availability, condition, media, specs, ratings, reviews). Combined with billing and input provenance, an agent has everything needed to invoke and interpret the call.
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 only 2 params, so the baseline is 3. The description adds value by tying ASIN to its origin (search_amazon_products), which the schema does not explain, clarifying the expected input provenance beyond the raw format example.
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 ('Get') and resource ('Amazon product by ASIN') and immediately distinguishes itself from the sibling search_amazon_products by naming it as the ASIN source. An agent can tell this is a details-lookup, not a discovery tool, without opening either 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?
The parenthetical '(from search_amazon_products)' gives clear context that this tool follows a search step, which is useful routing guidance. It stops short of stating when not to use it or what to do if the ASIN is unknown/expired, so no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
amazon_seller_productsAmazon Seller ProductsARead-onlyInspect
Get the products an Amazon seller sells, by seller ID. Returns the same product objects as search_amazon_products plus the seller's total catalog size. Sort by price, reviews, newest or best sellers. About 16 results per page. Billed $0.005 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1-50 (default: 1). Each page returns ~16 results. | |
| country | No | Marketplace country code (default: "us") | us |
| sort_by | No | Sort order | relevance |
| seller_id | Yes | Amazon seller ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: ~16 results per page, a per-request cost of $0.005, and that the seller's total catalog size is returned alongside the products. It does not discuss auth or rate limits, but for a read-only endpoint this is solid.
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?
Five short sentences, front-loaded with the purpose and return content, then sort options, page size and billing. Every sentence carries distinct information an agent needs; 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 description usefully states what comes back (product objects plus catalog size) and adds pagination and cost context. The country parameter is left to the schema, and no explicit alternatives are offered, but an agent has enough to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema documents seller_id, page, country and the sort_by enum on its own. The description's mention of sort options (price, reviews, newest, best sellers) loosely echoes the enum without adding syntax or defaults, so the baseline 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?
States a specific verb and resource (get the products an Amazon seller sells) scoped by seller ID, and explicitly ties itself to search_amazon_products by saying it returns the same product objects. This lets an agent distinguish it from the seller siblings (amazon_seller_profile, amazon_seller_reviews) and from the search tool without opening any 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?
Usage is implied by the purpose (browse a specific seller's catalog) and the relationship to search_amazon_products is noted, but there is no explicit when-to-use/when-not guidance or routing against alternatives like amazon_best_sellers or amazon_seller_profile. An agent must infer the selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
amazon_seller_profileAmazon Seller ProfileARead-onlyInspect
Get an Amazon seller's profile by seller ID (main_buy_box.seller_id from amazon_product_details). Returns name, logo, about text, registered business name and address, average rating, total ratings, positive-feedback percentage and a feedback breakdown over 30 days, 90 days, 12 months and lifetime. Billed $0.005 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Marketplace country code (default: "us") | us |
| seller_id | Yes | Amazon seller ID (e.g. A2L77EE7U53NWQ) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, so the safety profile is covered. The description adds genuinely new operational context: the $0.005 per-request billing cost and the full list of returned fields including the feedback time windows. No mention of rate limits or failure modes, but the billing disclosure is a valuable addition.
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 dense sentences with zero filler; the identity/scope statement is front-loaded, followed by the return payload and the cost. Every clause carries information an agent can act 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?
There is no output schema, and the description compensates by enumerating the returned fields (name, logo, about, registered business name/address, rating, total ratings, positive-feedback percentage, 30/90/12-month/lifetime breakdown). Combined with the annotations covering safety and the explicit cost, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented there, including the country default, so the baseline is 3. The description adds only that seller_id is sourced from main_buy_box.seller_id on amazon_product_details, which is a useful provenance hint but not format or constraint 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?
States a specific verb and resource ('Get an Amazon seller's profile by seller ID') and distinguishes itself from siblings like amazon_seller_products and amazon_seller_reviews by naming the exact entity returned. The parenthetical pointing at main_buy_box.seller_id from amazon_product_details makes the resource 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?
Gives clear context for when this tool applies by telling the agent where the required seller_id comes from (amazon_product_details), which is the key prerequisite. It does not explicitly say when to prefer amazon_seller_products or amazon_seller_reviews instead, so no exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
amazon_seller_reviewsAmazon Seller ReviewsARead-onlyInspect
Get customer feedback on an Amazon seller by seller ID. Each review has author, text, star rating, date and whether the seller responded. Filter by star rating or positive/critical; page until has_next_page is false. Billed $0.005 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1-50 (default: 1) | |
| country | No | Marketplace country code (default: "us") | us |
| seller_id | Yes | Amazon seller ID | |
| star_rating | No | Star rating filter | all |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive. The description adds value beyond them by disclosing pricing ($0.005 per request) and the shape of the returned reviews, plus the existence of a sentiment surcharge. It does not cover auth, rate limits, or pagination cap behavior explicitly.
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 sentences, front-loaded with purpose, then filtering/pagination, then cost. No filler; every sentence conveys something actionable.
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 supplies the essential return fields (author, text, star rating, date, seller responded), plus pagination and billing behavior. Annotations cover the safety profile, so nothing critical is missing 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%, so the schema already documents seller_id, country, page, star_rating, and get_sentiment. The description reinforces the filter semantics and pagination loop but adds no syntax or format detail 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?
States a specific verb+resource (get customer feedback on an Amazon seller) and the keying parameter (seller ID), which cleanly separates it from amazon_seller_products and amazon_seller_profile. An agent can distinguish this from siblings 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?
Gives concrete operational guidance: filter by star rating or positive/critical, and page until has_next_page is false. It does not name alternatives or state when-not-to-use, so it falls short of a 5, but the invocation context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_requestsBatch RequestsARead-onlyInspect
Run up to 100 API Direct REST requests in one call, mixing any endpoints the other tools cover (e.g. 50 twitter_user_profile and 50 instagram_user_profile lookups). Each item gives a /v1 endpoint path and that endpoint's query parameters, as documented at https://apidirect.io/docs/batch. Items run concurrently and each returns its own status and body, in input order. /v1/web/ai-mode isn't supported. Large batches can take several minutes. The batch call is free; each item is billed at its endpoint's normal rate.
| Name | Required | Description | Default |
|---|---|---|---|
| requests | Yes | 1-100 items to execute. Each item's params are exactly the query parameters that endpoint accepts when called directly (string or number values). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld annotations: concurrency, per-item status and body returned in input order, a latency warning ('large batches can take several minutes'), and a cost model ('the batch call is free; each item is billed at its endpoint's normal rate'). Partial-failure semantics are implied by each item returning its own status.
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-loads the capability and limit in the first clause, then stacks constraints, execution semantics, exclusion, latency, and billing with no filler. Every sentence carries distinct operational 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?
With no output schema, the description supplies the return contract (per-item status and body, in input order), the input contract, the exclusion, and the cost/latency profile. An agent has everything needed to construct and interpret a batch call.
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 already 100%, so the baseline is 3. The description still adds value by defining what an item's params mean ('that endpoint's query parameters') and pointing to external documentation for the accepted values, plus reiterating the 1-100 bound.
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 (Run) and resource (up to 100 API Direct REST requests in one call) and immediately distinguishes itself from every sibling by describing itself as a meta-tool that mixes 'any endpoints the other tools cover'. The example (50 twitter_user_profile + 50 instagram_user_profile) makes the abstraction concrete.
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?
Explains that items run concurrently, that batching is the point, and names an exclusion (/v1/web/ai-mode isn't supported), which steers endpoint selection. It stops short of an explicit 'use this instead of N sequential single-endpoint calls when X' rule, so the agent must infer the trigger condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bluesky_post_commentsBluesky Post CommentsARead-onlyInspect
Get the replies to a Bluesky post by URL or AT URI post_id (provide exactly one). Returns every reply Bluesky serves, up to 10 levels deep, as a flat list of full posts whose in_reply_to_id points at the parent. Billed $0.003 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Bluesky post URL, e.g. https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l (max 500 characters). | |
| post_id | No | The post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters). | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so safety is covered. The description adds genuinely useful behavior beyond that: replies are returned up to 10 levels deep as a flat list of full posts whose in_reply_to_id points at the parent, plus a concrete cost of $0.003 per request.
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 sentences, front-loaded with the action and identifier rule, followed by return shape and cost. Every sentence carries distinct information 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?
With no output schema, the description compensates by describing the return shape (flat list of full posts with in_reply_to_id pointing at the parent), the traversal depth, and the per-request price. An agent has everything needed to call it correctly and predict 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?
Schema coverage is 100% so the baseline is 3, but the description adds the mutual-exclusivity rule ('provide exactly one' of url or post_id) that the schema itself does not state, which is meaningful invocation guidance.
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 ('Get the replies to a Bluesky post') and specifies the two accepted identifiers (URL or AT URI post_id), which distinguishes it cleanly from siblings like bluesky_post_likes, bluesky_post_quotes and bluesky_post_reposts that target the same parent 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?
Usage is implied by the verb and resource, and the 'provide exactly one' constraint tells the agent how to supply identifiers, but there is no explicit when-to-use/when-not guidance or named alternative for retrieving related post data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bluesky_post_detailsBluesky Post DetailsARead-onlyInspect
Get one Bluesky post by URL or AT URI post_id (provide exactly one). Returns text, author, date, engagement metrics (likes, replies, reposts, quotes, bookmarks), media, link card and quoted post. Billed $0.003 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Bluesky post URL, e.g. https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l (max 500 characters). | |
| post_id | No | The post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters). | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds genuinely useful context beyond the schema: the exact billing rate ($0.003/request) and the sentiment surcharge, plus what fields come back. Return format specifics like pagination are not addressed, but this is a single-item fetch so that gap is minor.
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 compact sentences: identification rule first, then return contents, then cost. Every clause carries information an agent needs; nothing is repeated from the schema verbatim.
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 returned fields (text, author, date, engagement metrics, media, link card, quoted post). Combined with the cost and the param rule, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds the mutual-exclusivity rule ('provide exactly one' of url/post_id) which the schema itself does not state, and surfaces get_sentiment's effect, earning credit above 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?
States a specific verb ('Get') and resource ('one Bluesky post') with a clear identification mechanism (URL or AT URI). An agent can distinguish this from siblings like bluesky_post_comments, bluesky_post_likes, and search_bluesky without opening any 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?
The 'provide exactly one' of url or post_id constraint is an explicit usage rule. However, it names no alternatives or when-not conditions (e.g., when to use this vs. search_bluesky or batch_requests), so guidance is clear but incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bluesky_post_likesBluesky Post LikesARead-onlyInspect
Get the users who liked a Bluesky post, newest first, by URL or AT URI post_id (provide exactly one). Returns each user's handle, display name, DID, bio, verification status, profile picture, join date and like time. Up to 50 per page. Billed $0.003 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Bluesky post URL, e.g. https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l (max 500 characters). | |
| pages | No | Number of pages to fetch, 1-20 (default: 1). Each page returns up to 50 accounts; you are billed per page returned. | |
| post_id | No | The post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, destructiveHint, openWorldHint), so the bar is lower. The description adds genuinely valuable behavior beyond that: billing at $0.003 per page, a 50-per-page cap, and newest-first ordering, which the agent would not otherwise know.
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 sentences, front-loaded with the core purpose, then inputs, then return fields and cost. No wasted words; every clause carries 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?
With no output schema, the description capably enumerates returned fields, pagination and billing. Params are fully documented in schema. Complete enough to call correctly, though it doesn't note whether more than one of url/post_id is rejected or takes precedence.
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. However, the description adds the mutual-exclusion rule ("provide exactly one" of url or post_id), which is a real constraint not stated in the schema, giving it value above 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?
States a specific verb and resource: "Get the users who liked a Bluesky post, newest first." The direction of the relationship is unambiguous, distinguishing it from siblings like bluesky_user_likes (posts a user liked) or bluesky_post_reposts.
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?
Provides a usage constraint on inputs ("by URL or AT URI post_id (provide exactly one)"), which is useful, but gives no guidance on when to prefer this tool over alternatives and no explicit exclusions. Implied usage only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bluesky_post_quotesBluesky Post QuotesARead-onlyInspect
Get the posts that quote a Bluesky post, newest first, by URL or AT URI post_id (provide exactly one). Returns each quoting post's text, author, engagement metrics and media. Up to 50 per page. Billed $0.003 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Bluesky post URL, e.g. https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l (max 500 characters). | |
| pages | No | Number of pages to fetch, 1-20 (default: 1). Each page returns up to 50 posts; you are billed per page returned. | |
| post_id | No | The post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters). | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, so the safety profile is covered. The description adds genuinely useful context beyond them: page size cap (50), newest-first ordering, returned fields, and per-page billing at $0.003, which matters for an agent managing cost. No pagination token or rate-limit detail, but nothing is misstated.
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 tightly packed sentences that front-load the operation and input constraint, then the return contents, ordering, page cap and price. Every clause earns its place 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?
With no output schema and 100% schema coverage, the description must explain returns and it does (text, author, engagement metrics, media), plus pagination, ordering and billing. An agent has everything needed to invoke and budget the call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already documented; the baseline is 3. The description adds the mutual-exclusivity rule ('provide exactly one' of url/post_id) that the schema does not state, which is meaningful semantic value.
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?
Specific verb+resource: retrieves posts that quote a given Bluesky post, ordered newest first. It clearly distinguishes itself from siblings like bluesky_post_comments, bluesky_post_likes and bluesky_post_reposts, which return different engagement sets.
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?
States the input constraint clearly: provide exactly one of URL or AT URI post_id, which routes the caller correctly. No explicit when-not or named alternative, but the context is unambiguous for this endpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bluesky_post_repostsBluesky Post RepostsARead-onlyInspect
Get the users who reposted a Bluesky post, newest first, by URL or AT URI post_id (provide exactly one). Returns each user's handle, display name, DID, bio, verification status, profile picture and join date. Up to 50 per page. Billed $0.003 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Bluesky post URL, e.g. https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l (max 500 characters). | |
| pages | No | Number of pages to fetch, 1-20 (default: 1). Each page returns up to 50 accounts; you are billed per page returned. | |
| post_id | No | The post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, open world). The description adds genuinely useful behavior beyond them: newest-first ordering, a 50-per-page cap, and a per-page billing rate of $0.003, which matters for cost-aware callers. It stops short of pagination/cursor behavior, but the disclosure is strong.
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?
A single tight paragraph that front-loads the purpose, then the return payload, then the cost/limit constraints. Every sentence carries information; 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?
No output schema exists, but the description enumerates the returned fields (handle, display name, DID, bio, verification, profile picture, join date), plus page size and billing. An agent has everything needed to invoke and interpret the result.
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, but the description adds the mutual-exclusivity rule ('provide exactly one' of URL or AT URI post_id) that the schema does not express. This is meaningful semantics beyond the structured fields.
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 ('Get the users who reposted a Bluesky post'), names the ordering ('newest first'), and is clearly distinguishable from siblings like bluesky_post_likes, bluesky_post_quotes, and bluesky_post_comments. An agent can select this without opening the 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?
Usage is implied by the precise name and the 'provide exactly one' input constraint, so an agent knows the context. However, there is no explicit when-to-use/when-not guidance and no routing to alternative sibling tools (e.g. quotes or likes) for adjacent questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bluesky_user_followersBluesky User FollowersARead-onlyInspect
Get a Bluesky user's followers, newest first, by handle, DID or profile URL (provide exactly one of username or url). Returns handle, display name, DID, bio, verification status, profile picture and join date. Up to 50 per page. Billed $0.003 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Bluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters). | |
| pages | No | Number of pages to fetch, 1-20 (default: 1). Each page returns up to 50 accounts; you are billed per page returned. | |
| username | No | Bluesky handle, e.g. bsky.app, with or without leading @, or the account's DID (max 100 characters). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, so the safety profile is covered. The description adds genuinely useful behavioral context beyond annotations: newest-first ordering, 50-per-page pagination, and per-page billing ($0.003), which an agent needs for cost/scope decisions.
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 tight sentences with zero waste; the core purpose and identifier constraint are front-loaded, followed by return fields, pagination, and cost. Every sentence 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 description usefully enumerates return fields (handle, display name, DID, bio, verification, picture, join date) and covers pagination and billing. Minor omissions like rate limits or auth needs remain, but the definition is complete enough to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema documents the parameters well (baseline 3). The description adds value by stating the 'exactly one of username or url' exclusivity constraint, which the schema does not enforce (0 required params), directly guiding correct invocation.
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 ('Get a Bluesky user's followers'), plus the ordering ('newest first') and the accepted identifier forms (handle, DID, profile URL). This clearly distinguishes it from the sibling bluesky_user_following.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context on how to invoke it and an explicit input constraint ('provide exactly one of username or url'). It does not, however, name the alternative sibling (bluesky_user_following) or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bluesky_user_followingBluesky User FollowingARead-onlyInspect
Get the accounts a Bluesky user follows, newest first, by handle, DID or profile URL (provide exactly one of username or url). Returns handle, display name, DID, bio, verification status, profile picture and join date. Up to 50 per page. Billed $0.003 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Bluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters). | |
| pages | No | Number of pages to fetch, 1-20 (default: 1). Each page returns up to 50 accounts; you are billed per page returned. | |
| username | No | Bluesky handle, e.g. bsky.app, with or without leading @, or the account's DID (max 100 characters). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, open-world), so the bar is lower. The description adds genuinely useful behavioral context the annotations don't: newest-first ordering, 50-per-page cap, and $0.003 per-page billing. It stops short of describing edge cases like empty/private lists.
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 sentences: purpose first, then inputs, then return fields, then pagination/billing. Every clause carries information and none is redundant.
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 paginated list tool with no output schema, the description covers return fields, pagination limits, billing, and the input exclusivity rule. Combined with annotations that carry safety and world-openness, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds the mutual-exclusion rule ('exactly one of username or url') that the schema itself does not express since all params are optional. That extra input-contract detail lifts it above 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?
States a precise verb+resource ('Get the accounts a Bluesky user follows') and adds ordering ('newest first') and the accepted identifier forms. It is clearly distinguishable from the sibling bluesky_user_followers, which is the inverse relationship.
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 an input constraint ('provide exactly one of username or url') and the billing/page model, but never states when to use this versus alternatives such as bluesky_user_followers or bluesky_user_profile. Usage is implied by the verb rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bluesky_user_likesBluesky User LikesARead-onlyInspect
Get the posts a Bluesky user liked, newest first, by handle, DID or profile URL (provide exactly one of username or url). Returns each full post plus liked_at, when the user liked it. Up to 50 per page. Billed $0.003 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Bluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters). | |
| pages | No | Number of pages to fetch, 1-20 (default: 1). Each page returns up to 50 posts; you are billed per page returned. | |
| username | No | Bluesky handle, e.g. bsky.app, with or without leading @, or the account's DID (max 100 characters). | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, openWorld, non-destructive). The description adds meaningful behavior beyond them: pagination cap ('Up to 50 per page'), cost ('Billed $0.003 per page'), and the shape of returned data including liked_at. Auth/rate-limit behavior is still 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?
Front-loaded with the primary action, then ordering, identification, return shape, pagination, and cost. Every clause carries information; nothing is wasted or redundant.
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 listing tool with full schema coverage and no output schema, the description covers return contents (full post + liked_at), ordering, page size, cost, and the input constraint. An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds the mutual-exclusivity constraint (exactly one of username or url) that the schema (0 required params) does not express. That is genuine added semantic value over the structured fields.
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 ('Get the posts a Bluesky user liked') plus ordering ('newest first') and identification methods. The 'liked' framing inherently separates it from siblings like bluesky_user_posts (authored) and bluesky_post_likes (who liked a 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 description gives an input constraint ('provide exactly one of username or url') but no when-to-use guidance or explicit alternatives. Use versus siblings like bluesky_user_posts is only implied by the resource name, so this lands at minimum-viable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bluesky_user_postsBluesky User PostsARead-onlyInspect
Get a Bluesky user's feed by handle, DID or profile URL (provide exactly one of username or url): their posts, replies and reposts, pinned post first then newest first, each flagged is_reply, is_repost and is_pinned. Returns post text, engagement metrics, media, link cards and quoted posts. Up to 50 posts per page. Billed $0.003 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Bluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters). | |
| pages | No | Number of pages to fetch, 1-20 (default: 1). Each page returns up to 50 posts; you are billed per page returned. | |
| username | No | Bluesky handle, e.g. bsky.app, with or without leading @, or the account's DID (max 100 characters). | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/openWorld/non-destructive, but the description adds genuinely non-derivable behavior: pinned-post-first then newest-first ordering, up to 50 posts per page, and $0.003 per-page billing. Cost disclosure is especially valuable and is not in any structured field.
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?
One dense sentence plus a short returns/pricing clause; the input constraint is front-loaded, ordering and output shape follow, and pricing closes. 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 description carries the return burden and does so: post text, engagement metrics, media, link cards, quoted posts, and is_reply/is_repost/is_pinned flags, plus pagination and cost. Nothing essential to calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, and the description earns a bump by adding the mutual-exclusivity rule ('exactly one of username or url') that the schema does not express. Per-page billing semantics reinforce the pages 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 ('Get a Bluesky user's feed') and scopes the content precisely: posts, replies, reposts, with ordering. It implicitly distinguishes itself from post-level siblings like bluesky_post_details, but never names an alternative, so an agent must infer the boundary.
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 parenthetical 'provide exactly one of username or url' is a real input constraint, but there is no when-to-use guidance versus siblings such as bluesky_user_profile, search_bluesky, or bluesky_user_likes. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bluesky_user_profileBluesky User ProfileARead-onlyInspect
Get a Bluesky user's profile by handle, DID or profile URL (provide exactly one of username or url). Returns display name, bio, follower, following and post counts, verification status, profile picture, banner, join date and the pinned post's ID. Billed $0.003 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Bluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters). | |
| username | No | Bluesky handle, e.g. bsky.app, with or without leading @, or the account's DID (max 100 characters). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, openWorld, and destructive=false, so the safety profile is handled. The description adds genuinely non-structured context: the exact response fields returned and the per-request billing cost ($0.003), which an agent needs for cost-sensitive planning.
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?
A single compact paragraph, front-loaded with the action and accepted inputs, followed by return fields and pricing. The enumeration of return fields is slightly long but each item is informative, so no sentence is wasted.
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 returned fields, and it also discloses the identifier exclusivity constraint and the billing rate. An agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds the mutual-exclusivity rule ('provide exactly one of username or url') that is not expressed in the schema itself. This is meaningful semantic value beyond the field-level descriptions.
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 (Get) and resource (Bluesky user's profile) plus the accepted identifier forms (handle, DID, profile URL). It is clearly distinguishable from siblings like bluesky_user_followers, bluesky_user_posts, or search_bluesky_users.
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 real constraint ('provide exactly one of username or url'), which is useful operational guidance, but it never states when to choose this tool over search_bluesky_users or the other Bluesky profile-adjacent siblings. Usage is implied by the profile-lookup framing rather than explicitly routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_group_detailsFacebook Group DetailsARead-onlyInspect
Get a Facebook group by URL. Returns name, group ID, description, privacy setting, member count, location and cover photo. Pass the group ID to facebook_group_posts. Billed $0.008 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Facebook group URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/no-destructive, so the safety profile is covered. The description adds value beyond them by disclosing the exact returned fields and the per-request cost ($0.008), which is a meaningful behavioral trait for a billed API. It stops just short of describing rate limits or failure modes.
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 sentences, front-loaded with the core action, followed by return values and the chaining/cost notes. Every sentence earns its place 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?
With no output schema, the description compensates by enumerating returned fields and the downstream handoff, plus billing cost. For a single-parameter read tool, an agent has everything needed to call it correctly and use the result.
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% for the single 'url' parameter, so the schema documents it fully. The description only restates 'by URL' and adds no format or syntax detail beyond what the schema provides. Baseline 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?
States a specific verb ('Get') and resource ('Facebook group') with the input modality ('by URL'). Clearly distinguishes itself from siblings like facebook_group_posts and facebook_page_details by name and resource type.
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?
Provides clear workflow guidance: 'Pass the group ID to facebook_group_posts,' which tells the agent how this tool chains into the next step. It does not state explicit when-not conditions or compare against alternatives like search_facebook_pages, but the context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_group_postsFacebook Group PostsARead-onlyInspect
Get posts from a public Facebook group by numeric group ID (from facebook_group_details). Returns post text, author details, engagement metrics and media. Sort by newest or relevance. Billed $0.008 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch (1-15, default 1). Billed per page. | |
| sort_by | No | Sort order: most_recent or relevance (default: most_recent) | most_recent |
| group_id | Yes | Facebook group ID (numeric) | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds genuinely useful context beyond that: what is returned (post text, author, engagement metrics, media) and the per-page pricing of $0.008, which matters for a paged, billable endpoint.
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 sentences, each earning its place: purpose and ID source first, then return contents, then sorting and cost. Nothing is padded and the most important routing information is front-loaded.
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 what is returned, and it covers the input prerequisite, sorting choice and billing model. An agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including enums, defaults and the per-page billing note for 'pages', so the schema carries the parameter burden. The description adds little parameter-level detail beyond restating sort options and the page-based billing already 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?
States a specific verb and resource ('Get posts from a public Facebook group') with the key scoping detail that the group must be public and identified by numeric ID. It distinguishes itself from facebook_group_details by naming it as the source of the ID, and the 'group' vs 'page' framing separates it from facebook_page_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?
Gives clear prerequisites: the group must be public and the group_id must be numeric, sourced from facebook_group_details. It also documents sort options and billing behavior, but never states when to use this versus search_facebook_posts or how it differs from facebook_page_posts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_page_detailsFacebook Page DetailsARead-onlyInspect
Get a Facebook page by URL. Returns name, page_id, follower and like counts, categories, contact info, rating and verification status, plus the delegate_page_id and reels_page_id that facebook_page_videos and facebook_page_reels need. Billed $0.008 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Facebook page URL (e.g. https://www.facebook.com/facebook) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, so the safety profile is covered. The description adds genuinely new context the annotations cannot express: a per-request price of $0.008, and the fact that the response carries downstream identifiers other tools depend on. It omits error behavior for invalid or missing pages.
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, zero filler. The core action and returned fields are front-loaded, and the billing note is placed last where it does not obstruct the primary 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?
There is no output schema, and the description compensates well by enumerating the returned fields and the cross-tool identifiers. Pricing is disclosed. What remains missing is failure behavior (invalid URL, page not found, rate limiting), a minor gap 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?
One parameter at 100% schema coverage, so the schema already documents the url argument and gives an example. The description adds no syntax, format, or validation detail beyond the schema, which is the expected baseline when structured data does the work.
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?
Specific verb+resource ('Get a Facebook page by URL') plus an explicit enumeration of what is returned (name, page_id, follower/like counts, categories, contact info, rating, verification status). This clearly separates it from search_facebook_pages and the sibling facebook_page_posts/photos/reels 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?
No explicit when-to-use vs search_facebook_pages, and no prerequisite that a page URL must already be known. The description does imply usage by noting the returned delegate_page_id and reels_page_id are required by facebook_page_videos and facebook_page_reels, which is a useful chaining signal but not full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_page_photosFacebook Page PhotosARead-onlyInspect
Get photos from a Facebook page by numeric page ID (from facebook_page_details). Returns photo IDs and image URLs. Billed $0.008 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch (1-15, default 1). Billed per page. | |
| page_id | Yes | Facebook page ID (numeric) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only, external nature is covered. The description adds the billing rate ($0.008 per page), which is useful cost context not in annotations. It doesn't describe rate limits, pagination, or return structure beyond listing what's returned.
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 compact sentences that front-load the action and resource, then add return details and billing. No wasted words, though it could be slightly more front-loaded on the ID source.
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?
Given annotations cover the safety profile and the schema covers parameters, the description adds billing and ID source context. It's largely complete for a simple read operation, though pagination behavior when requesting multiple pages isn't described.
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 fully documented in the schema. The description adds no syntax or format details beyond what the schema provides, making the baseline 3 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?
States a specific verb ('Get photos') and resource ('from a Facebook page') with the required identifier. Distinguishes from siblings like facebook_page_videos and facebook_page_posts by naming the media type and the ID source.
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?
Implies usage by specifying the page ID comes from facebook_page_details, which is useful routing. However, it doesn't state when to use this versus other page media tools or what prerequisites exist beyond the ID source.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_page_postsFacebook Page PostsARead-onlyInspect
Get posts from a Facebook page by numeric page ID (from facebook_page_details). Returns post text, engagement metrics, reaction breakdown and media. Optionally limit to a date range. Billed $0.008 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch (1-15, default 1). Billed per page. | |
| page_id | Yes | Facebook page ID (numeric) | |
| end_date | No | Only posts up to this date (YYYY-MM-DD) | |
| start_date | No | Only posts from this date onward (YYYY-MM-DD) | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful non-schema context: the $0.008 per-page billing rate and the fact that results include engagement metrics and reaction breakdowns. It does not mention pagination or rate limits, keeping 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?
Three tight sentences: what it does, what it returns, the optional filter, and the cost. Nothing is wasted and the core purpose plus the pricing signal are front-loaded.
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-value burden and does so (post text, engagement, reactions, media). Annotations cover the read-only/open-world safety profile, parameters are fully documented in the schema, and the cost model is disclosed — an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 and the schema already documents pages, page_id, start_date, end_date and get_sentiment. The description still adds meaning by tying page_id to its origin tool and reiterating that date filtering is optional, plus the per-page billing linkage — modest but real value 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?
States a specific verb and resource ('Get posts from a Facebook page'), pins the input to a numeric page ID sourced from facebook_page_details, and enumerates the returned content (post text, engagement metrics, reaction breakdown, media). This cleanly separates it from siblings like facebook_group_posts, facebook_page_photos, facebook_page_reels, and search_facebook_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?
Gives clear context: fetch posts for one known page, optionally narrowed by date range, with the page ID obtained from facebook_page_details. It does not name exclusions or alternatives (e.g., search_facebook_posts when the page is unknown or keyword search is wanted), so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_page_reelsFacebook Page ReelsARead-onlyInspect
Get reels from a Facebook page by its reels_page_id (from facebook_page_details). Returns reel metadata and engagement metrics. Billed $0.008 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch (1-10, default 1). Billed per page. | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. | |
| reels_page_id | Yes | Reels page ID (from page details endpoint) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context not present in the annotations: per-page billing at $0.008 and the fact that pages are billed per fetched page. It does not cover pagination or rate limits, so it stops 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?
Three short sentences, zero filler, with the core action and identifier front-loaded before the return and cost details. Every sentence contributes something distinct.
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-value burden and does so briefly ('reel metadata and engagement metrics'), and all parameters are documented via the schema. The picture is adequate, though a note on result volume/pagination would close the remaining 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 the schema already documents all three parameters including the billing note on 'pages' and the sentiment surcharge on 'get_sentiment'. The description's only parameter-adjacent detail (the id origin) is already echoed in the schema, so it adds little beyond the 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 states a specific verb and resource ('Get reels from a Facebook page') and names the required identifier and its source endpoint, so an agent knows exactly what is produced. It does not explicitly contrast itself with nearby siblings such as facebook_page_videos or facebook_page_posts, so it falls short of a full 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 parenthetical '(from facebook_page_details)' implies a prerequisite lookup step, which is useful routing context. However, there is no explicit when-to-use/when-not statement and no named alternative (e.g., use facebook_page_videos for non-reel video content), leaving usage implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_page_reviewsFacebook Page ReviewsARead-onlyInspect
Get reviews of a Facebook page by numeric page ID (from facebook_page_details). Returns review text, recommendation status and author info. Billed $0.008 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch (1-15, default 1). Billed per page. | |
| page_id | Yes | Facebook page ID (numeric) | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so safety is covered. The description adds genuine value beyond them by disclosing the billing model ($0.008 per page) and the returned fields (review text, recommendation status, author info), though it omits auth or rate-limit details.
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 sentences, front-loaded with the core action and input source, then returns, then cost. Every sentence earns its place 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 read-only fetch tool with no output schema, the description adequately covers the input provenance and returned content, and the pages parameter bounds are in the schema. Pagination/cost interplay could be slightly clearer, but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description adds meaning by specifying that page_id is numeric and sourced from facebook_page_details. It does not describe the pages or get_sentiment semantics, but those are fully 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?
States a specific verb and resource ('Get reviews of a Facebook page') and names the input source (numeric page ID from facebook_page_details), which clearly separates it from siblings like facebook_page_posts, facebook_page_photos, and place_reviews. An agent can identify this as the page-review endpoint without opening the 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?
It gives clear context by pointing out that the page_id comes from facebook_page_details, effectively routing the agent through the right prerequisite call. It lacks explicit when-not-to-use or named alternative tools, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_page_videosFacebook Page VideosARead-onlyInspect
Get videos from a Facebook page by its delegate_page_id (from facebook_page_details). Returns video metadata and play counts. Billed $0.008 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch (1-15, default 1). Billed per page. | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. | |
| delegate_page_id | Yes | Delegate page ID (from page details endpoint) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, open-world), and the description adds value beyond them: explicit per-page billing ($0.008) and the shape of the result ('video metadata and play counts'). It stops short of pagination or rate-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?
Three short sentences, front-loaded with the core action and identifier, then return content, then cost. Each sentence carries distinct information 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?
With no output schema, the description usefully names what comes back (metadata and play counts) and discloses billing. For a 3-parameter, annotated read tool this is nearly complete; only pagination/volume limits are 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?
Schema coverage is 100%, so the schema already documents pages and get_sentiment in detail. The description adds only the provenance hint for delegate_page_id ('from facebook_page_details'), which is a small but real addition over the schema text.
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+resource ('Get videos from a Facebook page') and the keying identifier (delegate_page_id), so an agent knows exactly what is returned. It does not explicitly differentiate itself from the close siblings facebook_page_reels or search_facebook_videos, which is the only gap.
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 usage by pointing to facebook_page_details as the source of delegate_page_id, a useful prerequisite. However, it never states when to prefer this over facebook_page_reels or search_facebook_videos, so routing between near-identical siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_post_commentsFacebook Post CommentsARead-onlyInspect
Get the comments on a Facebook post by post ID (pfbid or numeric, from facebook_page_posts, facebook_group_posts or search_facebook_posts). Returns each comment's text, author details, reaction and reply counts, date and any attachment. Billed $0.008 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch (1-20, default 1). Billed per page. | |
| post_id | Yes | Facebook post ID (pfbid or numeric, from facebook_page_posts, facebook_group_posts, or search_facebook_posts) | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered; the description adds value beyond that with per-page billing ('Billed $0.008 per page') and an explicit enumeration of returned fields (text, author, reaction/reply counts, date, attachments). It does not disclose pagination/cursor 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?
Three sentences, front-loaded with the core action and resource, followed by output contents and pricing. Every sentence earns its place 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?
With no output schema, the description usefully summarizes the return fields, and it covers the ID source, pagination range, and cost. It is nearly complete; only cursor/pagination continuity and rate-limit behavior are 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%, so all three parameters are already documented in the schema. The description reinforces the pfbid-or-numeric format for post_id and ties billing to pages, but adds no syntax or meaning beyond what the schema already carries, making 3 the correct 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?
States a specific verb and resource ('Get the comments on a Facebook post by post ID') and immediately clarifies the ID format (pfbid or numeric). An agent can distinguish it from siblings like facebook_page_posts (the post source) or search_facebook_posts 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?
Names the prerequisite workflow by pointing to facebook_page_posts, facebook_group_posts, or search_facebook_posts as sources of the required post_id, which tells the agent how to be in a position to call this tool. It stops short of stating when-not-to-use it or naming a comment-specific alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_skillGet Skill PlaybookARead-onlyInspect
Get one skill's step-by-step playbook with your inputs filled in: the ordered tool calls and filters that produce its outcome, for you to run. Pass the skill_id from list_skills, or the skill name the user gave (close matches resolve). Omit inputs and the playbook lists what to ask the user for. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| inputs | No | The skill's inputs as key/value pairs, e.g. {"competitor": "Notion"}. Optional — omit and the playbook will tell you what to ask the user for. | |
| skill_id | Yes | The skill id from list_skills, e.g. "competitor-conquest-radar". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, and non-open-world behavior. The description adds useful behavioral context: the playbook contains ordered tool calls and filters, inputs can be omitted to get a prompt for the user, and the operation is free.
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 action and output, then covers invocation details and the omitted-input case. It is appropriately sized with no redundant sentences.
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-only tool with no output schema, the description explains what the playbook contains, how to identify the skill, and what happens when inputs are omitted. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by noting that a human-readable skill name can be passed and close matches will resolve, while also reinforcing the omit-inputs behavior for the inputs 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?
The description states a specific verb and resource: get one skill's step-by-step playbook, including ordered tool calls and filters. It distinguishes this from list_skills by making clear this retrieves a single playbook rather than a 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?
It explains how to supply skill_id from list_skills or a user-provided skill name with close-match resolution. It also says omitting inputs produces a list of questions for the user. It lacks explicit when-not-to-use guidance, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_youtube_commentsYouTube Video CommentsARead-onlyInspect
Get the comments on a YouTube video by URL or video ID. Returns each comment's text, author, like and reply counts, date, link and up to 5 preview replies. Sort by newest or relevance. Up to about 100 comments per page. Billed $0.005 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | YouTube video URL or 11-character video ID | |
| pages | No | Number of pages to fetch, 1-20 (default: 1). Each page returns up to ~100 comments. | |
| sort_by | No | Sort order: most_recent (newest first) or relevance (default: relevance) | relevance |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint=true, destructiveHint=false, openWorldHint=true), yet the description adds real behavioral context: pagination size (~100 comments per page), the return shape (text, author, counts, date, link, up to 5 preview replies), and per-page billing cost ($0.005). The cost and pagination disclosures are exactly the kind of thing annotations cannot 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?
Four tight sentences, front-loaded with purpose then outputs, sorting, pagination, and cost. Every sentence carries information, though the 'per page' concept is mentioned twice, slightly redundant.
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-value burden and does so, listing returned fields plus the preview-replies limit. Combined with annotations covering safety and the explicit cost note, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so url, pages, and sort_by are fully documented in the schema itself. The description largely restates them (URL or ID, newest or relevance, ~100 per page), adding no syntax or edge-case guidance beyond the schema. Baseline 3 applies 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?
States a specific verb (get) and resource (comments on a YouTube video) with the input forms (URL or video ID). An agent can distinguish it from youtube_video_details (metadata) and social comment tools on other platforms without opening any 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?
The description implies the use case (fetching comments for a given video) and mentions inputs, but never states when to choose this over siblings like youtube_video_details or when not to use it. Usage is inferred from the resource, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ai_modeGoogle AI ModeARead-onlyInspect
Ask Google AI Mode a prompt and get its structured answer (reply_parts: paragraphs, headings, lists, images) with reference_links citations. Pass session_token from a previous response to ask a follow-up in the same conversation. Answers can take over a minute. Use search_web for plain search results. Billed $0.005 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | The AI Mode prompt (max 12000 characters) | |
| country | No | 2-letter country code (default: "us") | us |
| language | No | 2-letter language code (default: "en") | en |
| session_token | No | Token from a prior response to continue the conversation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/openWorldHint/destructiveHint, so the bar is lower, yet the description adds material context: answers 'can take over a minute' (latency) and 'Billed $0.005 per request' (cost). It also discloses the continuation mechanism, which is behavior an agent must know before calling.
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 tight sentences, front-loaded with the core action and output shape, then latency/cost/alternative. Every sentence carries information, though the output-shape parenthetical is slightly dense.
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 naming the return fields (reply_parts, reference_links) and covering latency, billing, and session continuation. An agent has everything needed to decide and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so prompt, country, language, and session_token are already documented in the schema. The description reinforces session_token's conversational-continuation meaning but adds no syntax or format detail beyond what the schema provides, 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 ('Ask Google AI Mode a prompt') and enumerates the shape of the answer (reply_parts: paragraphs, headings, lists, images) plus citations. This distinguishes it cleanly from the many search_* siblings 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?
Explicitly routes the agent: 'Use search_web for plain search results,' and describes the follow-up flow via session_token. The condition selecting this tool (AI-synthesized answers vs. plain results) is stated, not implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_comment_repliesInstagram Comment RepliesARead-onlyInspect
Get the replies to one Instagram comment, by post URL or shortcode (provide exactly one) plus the comment_id from instagram_post_comments. Returns each reply's text, author details (including whether Instagram labels the commenter AI-generated), like count, date, link and parent comment. Returns an empty list when there are no replies. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Instagram post or reel URL, e.g. https://www.instagram.com/p/CxYQJO8xuC6/ (max 500 characters) | |
| code | No | The post's shortcode, e.g. CxYQJO8xuC6, or numeric media ID (max 50 characters) | |
| pages | No | Number of pages to fetch, 1-10 (default: 1) | |
| comment_id | Yes | The comment's numeric ID, from instagram_post_comments (comment_id) | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavioral context: per-page billing ($0.006), empty-list return when no replies exist, and the fields returned. It doesn't cover pagination limits or failure modes, so 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?
Front-loaded with purpose, then input rule, then return contents and billing. Dense and largely waste-free, though the enumerated return fields make it slightly long — justified since there is no output 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 no output schema, the description compensates by enumerating returned fields (text, author details incl. AI-label flag, like count, date, link, parent comment), plus billing and empty-result behavior. Combined with annotations, an agent has everything needed to call and interpret 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%, so the baseline is 3, but the description adds the cross-parameter rule that url and code are mutually exclusive and one is required — a constraint the schema does not express. It also names the source of comment_id (instagram_post_comments), aiding correct parameter population.
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 ('Get the replies to one Instagram comment') and scopes it to a single comment, clearly distinguishing it from sibling instagram_post_comments (which lists top-level comments). An agent can identify the tool's role without opening the 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?
Explains the prerequisite ('the comment_id from instagram_post_comments') and the constraint 'provide exactly one' of url or code, which tells the agent how to invoke it. It lacks an explicit statement of when not to use it (e.g., for top-level comments, use instagram_post_comments), so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_hashtag_postsInstagram Hashtag PostsARead-onlyInspect
Get Instagram posts and reels for a hashtag. Returns the same post objects as search_instagram plus the hashtag's total post count (top tab only). sort_by picks the tab: top (default), recent or reels. Up to about 30 new posts per page. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-10 (default: 1). Each page adds up to about 30 posts (repeats across pages are removed) | |
| hashtag | Yes | Hashtag, with or without the leading # (max 100 characters), e.g. summer | |
| sort_by | No | Hashtag tab: top (default), recent (newest first), or reels (Reels only) | top |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, openWorld), so the description's real value is the operational context it adds: per-page billing ($0.006/page), a ~30-posts-per-page ceiling, and deduplication across pages. It stops short of describing auth requirements or result ordering guarantees, so it is strong but not exhaustive.
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 sentences, front-loaded with the core action, then return shape, tab selection, pagination, and cost. No sentence is redundant and the cost caveat is placed last where it belongs.
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 burden of describing returns and does so by naming the shared post object shape and the extra hashtag post count, plus pagination and cost. It leans on the sibling tool's definition rather than describing fields itself, which is a minor gap for a no-output-schema 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 all four parameters (hashtag, pages, sort_by, get_sentiment) are already documented in the schema. The description restates the tab semantics and page yield but adds no syntax, format, or constraint detail beyond the schema, 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 ("Get Instagram posts and reels for a hashtag") and explicitly anchors itself to a sibling by noting it returns "the same post objects as search_instagram plus the hashtag's total post count." An agent can distinguish it from search_instagram and instagram_user_posts without opening either 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?
The description explains that sort_by selects the tab (top default, recent, reels), which implies usage, and the search_instagram comparison hints at differentiation. However, it never states when to prefer this tool over search_instagram or a user-posts tool, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_highlight_storiesInstagram Highlight StoriesARead-onlyInspect
Get the stories saved in one Instagram highlight, by highlight ID (from instagram_user_highlights) or highlight URL. Returns the highlight's title and cover plus each story's media URLs, post time, link stickers, mentions, tagged users, location, audio and AI detection method. Media URLs expire after about 6-24 hours. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| highlight_id | Yes | Highlight ID, e.g. 17987606483520330 (also accepts highlight:17987606483520330), or a highlight URL like https://www.instagram.com/stories/highlights/17987606483520330/ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, and the description goes well beyond them with two operationally critical facts: media URLs expire after ~6-24 hours and each request is billed $0.006. It also enumerates the returned payload (title, cover, media URLs, post time, stickers, mentions, tags, location, audio, AI detection).
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 and accepted input forms come first, followed by return contents, then the two operational caveats (expiry, price). Every clause carries information, and the return-field list is justified by the absence of an output 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 no output schema, the description covers return values itself, and it adds the expiry and billing caveats an agent needs before calling. Nothing material is missing 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 schema already gives ID/URL examples, so the baseline is 3; the description adds provenance by stating the ID comes from instagram_user_highlights, which helps the agent construct the argument correctly rather than guess.
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 ('Get the stories saved in one Instagram highlight') and scopes it to a single highlight, distinguishing it from instagram_user_highlights (which enumerates highlights) and instagram_user_stories (which returns current stories). An agent can select it without opening the 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?
Explicitly names the prerequisite source for the input ('from instagram_user_highlights'), which tells the agent the typical call order. It does not state when to avoid this tool or what to do if the highlight is private/expired, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_post_commentsInstagram Post CommentsARead-onlyInspect
Get the comments on an Instagram post or reel by URL or shortcode (provide exactly one). Returns each comment's text, author details (including whether Instagram labels the commenter AI-generated), like and reply counts, date and link. Sort by popular (includes pinned) or recent. Up to 15 comments per page. Use instagram_comment_replies for a comment's replies. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Instagram post or reel URL, e.g. https://www.instagram.com/p/CxYQJO8xuC6/ (max 500 characters) | |
| code | No | The post's shortcode, e.g. CxYQJO8xuC6, or numeric media ID (max 50 characters) | |
| pages | No | Number of pages to fetch, 1-20 (default: 1). Each page returns up to 15 comments | |
| sort_by | No | Sort order: popular (default, includes pinned comments) or recent | popular |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/destructive=false, so safety is covered. The description adds real behavioral context: per-page billing cost ($0.006), page/comment caps (15 per page), sort semantics (popular includes pinned), and the returned fields. It stops short of rate limits or error behavior, so 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?
Front-loads what the tool does, then input method, return fields, sorting, pagination, sibling routing, and billing. Every sentence carries information with no waste.
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 fully explains the return shape (text, author with AI-generated label, like/reply counts, date, link). Combined with pagination, sort, and billing notes, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents url, code, pages, sort_by (including the pinned note), and get_sentiment. The description reinforces sort and pagination but adds no syntax or format detail beyond the schema, 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 (Get) and resource (comments on an Instagram post or reel), plus the accepted identifiers (URL or shortcode). It is clearly distinguishable from the sibling instagram_comment_replies, which it explicitly routes replies to.
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?
Names the alternative explicitly ('Use instagram_comment_replies for a comment's replies') and the condition that selects it, plus the constraint to provide exactly one of url/code. The routing to the sibling is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_post_detailsInstagram Post DetailsARead-onlyInspect
Get one Instagram post, reel or IGTV video by URL or shortcode (provide exactly one). Returns caption, like, comment, share and view counts, media URLs, carousel slides, audio track, tagged users, location, author details and Instagram's AI label. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Instagram post, reel, or story URL, e.g. https://www.instagram.com/p/CxYQJO8xuC6/ (max 500 characters) | |
| code | No | The post's shortcode, e.g. CxYQJO8xuC6, or numeric media ID (max 50 characters) | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), so the bar is lower. The description still adds valuable behavior beyond them: per-request billing at $0.006 and an extensive enumeration of the returned fields. It stops short of mentioning auth or rate-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?
Two sentences, both front-loaded with the essential scope and input constraint, then the return inventory and price. No filler or 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 carries the return-value burden and does so thoroughly (counts, media, carousel, audio, tags, location, author, AI label). Input constraints and cost are both covered, leaving no material gap for calling the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents url, code, and get_sentiment. The description contributes the mutual-exclusivity rule ('provide exactly one'), which the schema does not state and which incidentally explains the otherwise odd zero-required-parameters shape.
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 (Get) and resource (one Instagram post, reel or IGTV video) and names the accepted identifiers (URL or shortcode). An agent can immediately distinguish this single-item fetch from the sibling listing/comment/like tools without opening the 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?
The description constrains input ('provide exactly one' of URL or shortcode), which is genuine usage guidance. However, it never says when to prefer this over siblings like instagram_post_comments, instagram_post_likes, or instagram_user_posts, so routing guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_post_likesInstagram Post LikesARead-onlyInspect
Get the users who liked an Instagram post or reel, by URL or shortcode (provide exactly one). Returns username, full name, user ID, verification and privacy status and profile picture for every liker Instagram exposes (typically several hundred), plus the total like count, in one request. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Instagram post or reel URL, e.g. https://www.instagram.com/p/CxYQJO8xuC6/ (max 500 characters) | |
| code | No | The post's shortcode, e.g. CxYQJO8xuC6, or numeric media ID (max 50 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, so the bar is lower. The description goes beyond them by disclosing the return cardinality ('typically several hundred'), that it is a single request, and the exact billing cost ($0.006 per request) — genuinely useful operational 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?
Two tightly packed sentences, front-loaded with the verb and resource; the exclusivity constraint, return shape, and cost all appear without filler. Every clause 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 description carries the burden well by enumerating returned fields (username, full name, user ID, verification/privacy, picture) and the total like count. It stops short of describing failure modes or result caps, but is adequate for a two-param 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%, so the baseline is 3. The description adds a real constraint not encoded in the schema: the two parameters are mutually exclusive and exactly one must be supplied, which meaningfully changes how an agent builds the call.
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+resource ('Get the users who liked an Instagram post or reel') and narrows scope with the URL/shortcode input modes. An agent can distinguish it from instagram_post_comments and instagram_post_details without opening the 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?
The description gives an input constraint ('provide exactly one' of URL or shortcode), which is useful, but never says when to choose this tool over the adjacent siblings (post details, comments) or what prerequisites/auth apply. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_user_followersInstagram User FollowersARead-onlyInspect
Get an Instagram user's followers by username or profile URL (provide exactly one). Returns username, full name, user ID, verification and privacy status and profile picture, 50 per page. Verified accounts return only their first ~50 followers, and pages beyond that are not billed. Pass query to search the followers instead (up to 50 matches, billed as one page). Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Instagram profile URL, e.g. https://instagram.com/natgeo (max 500 characters) | |
| pages | No | Number of pages to fetch, 1-40 (default: 1). Each page returns up to 50 followers; verified accounts return the first page only | |
| query | No | Optional keyword to search this user's followers by username or name (max 100 characters). Returns up to 50 matches in a single request; pages is ignored | |
| username | No | Instagram username, with or without leading @ (max 100 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, so the safety profile is clear. The description adds substantial behavioral context beyond annotations: billing cost ($0.006 per page), a verified-account cap (first ~50 followers, later pages not billed), and query-mode billing rules. This is rich transparency about cost and edge-case 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?
The description is a single, front-loaded paragraph that moves from purpose to return fields to pagination/billing to the query alternative. It is dense but every sentence carries useful information. Slightly packed, but no wasted words.
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?
Given the tool's complexity (two input modes, pagination, billing, verified-account limits) and the absence of an output schema, the description covers return fields, pagination, cost, and special cases. Annotations cover safety, and schema covers parameters. Nothing critical is missing 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%, so baseline is 3. The description adds meaning beyond the schema: it enforces 'provide exactly one' of username or URL, and clarifies that query mode returns up to 50 matches billed as one page (schema notes pages is ignored but the description ties it to billing). These additions earn a 4.
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: 'Get an Instagram user's followers by username or profile URL.' The resource is unambiguous and clearly distinct from siblings like instagram_user_following, which the name itself already differentiates. No ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives parameter-level usage ('provide exactly one' of username/url) and an in-tool alternative ('Pass query to search the followers instead'), but does not state when to use this tool versus external alternatives like instagram_user_following or search_instagram_users. Usage is implied by the name and description but no explicit when/when-not guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_user_followingInstagram User FollowingARead-onlyInspect
Get the accounts an Instagram user follows, by username or profile URL (provide exactly one). Returns username, full name, user ID, verification and privacy status and profile picture, 50 per page. Pass query to search the list instead (up to 50 matches, billed as one page). Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Instagram profile URL, e.g. https://instagram.com/natgeo (max 500 characters) | |
| pages | No | Number of pages to fetch, 1-40 (default: 1). Each page returns up to 50 accounts | |
| query | No | Optional keyword to search the accounts this user follows by username or name (max 100 characters). Returns up to 50 matches in a single request; pages is ignored | |
| username | No | Instagram username, with or without leading @ (max 100 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover only the safety profile (readOnly, openWorld, non-destructive), and the description adds substantive behavior beyond that: page size (50 accounts), per-page billing ($0.006), the fact that query is billed as one page, and that pages is ignored when query is set. It also enumerates the returned fields, which matters because there is no output schema.
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 sentences, each carrying distinct load: identification rule, return shape, then the query-override and pricing caveat. Front-loaded with the primary action and free of 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 description supplies the return field list; with four parameters and no required ones, it supplies the mutual-exclusion rule; and it discloses pricing and pagination. An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds cross-parameter semantics the schema does not state: the exactly-one constraint between url and username, and the override relationship where query causes pages to be ignored. Format details like the 500/100-character limits remain schema-only.
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 (Get) and resource (the accounts an Instagram user follows) with the two accepted identifier forms. It is clearly distinguishable from the sibling instagram_user_followers, which is the inverse relationship.
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?
Explicitly says to provide exactly one of username or profile URL, and routes the agent to the query mode for searching within the list rather than fetching it whole. It does not, however, name sibling alternatives such as instagram_user_followers or search_instagram_users for the case where the target account is unknown.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_user_highlightsInstagram User HighlightsARead-onlyInspect
List an Instagram user's story highlights by username or profile URL (provide exactly one). Returns each highlight's ID, title, story count, cover image, created and updated dates and link. Pass a highlight ID to instagram_highlight_stories for its stories. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Instagram profile URL, e.g. https://instagram.com/natgeo (max 500 characters) | |
| username | No | Instagram username, with or without leading @ (max 100 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so safety is covered. The description adds genuinely new operational context: the $0.006 per-request billing and the exact shape of the returned highlight fields, which the annotations cannot 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?
Three tight sentences: purpose first, then the two input forms and constraint, then downstream routing and cost. No filler, and every clause carries 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?
No output schema exists, but the description enumerates the return fields (ID, title, story count, cover image, dates, link), so an agent knows what to expect. Combined with the billing note and sibling routing, nothing needed to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds the mutual-exclusivity constraint ('provide exactly one') that the schema itself does not express. That is real semantics beyond the structured fields.
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 (List) plus resource (an Instagram user's story highlights) and names both accepted input forms. It is clearly distinguishable from siblings such as instagram_user_stories and instagram_highlight_stories.
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?
Specifies the 'provide exactly one' selection rule between username and URL, and explicitly routes downstream work to instagram_highlight_stories for the stories themselves. No explicit when-not-to-use guidance, but the alternative is named with its condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_user_postsInstagram User PostsARead-onlyInspect
Get an Instagram user's recent posts and reels (their feed) by username or profile URL (provide exactly one). Returns captions, engagement metrics (likes, comments, shares, views), author metadata, hashtags, mentions and Instagram's AI label. Up to 12 posts per page. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Instagram profile URL, e.g. https://instagram.com/natgeo (max 500 characters) | |
| pages | No | Number of pages to fetch, 1-20 (default: 1). Each page returns up to 12 posts | |
| username | No | Instagram username, with or without leading @ (max 100 characters) | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, openWorld), so the bar is lower. The description earns credit by disclosing operational traits annotations cannot: 'Up to 12 posts per page' and 'Billed $0.006 per page', which directly affect how an agent sizes the 'pages' argument.
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 dense sentences with no filler: the retrieval scope, the required one-of input rule, the returned fields, and pagination/cost all arrive in the first read-through. Nothing repeats the name or title verbatim.
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 an open-world read tool with no output schema, the description enumerates the returned payload (captions, engagement metrics, author metadata, hashtags, mentions, AI label), pagination limits, and cost. Inputs, outputs and pricing are all covered, leaving nothing an agent needs for a correct call.
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 the mutual-exclusivity rule between 'username' and 'url' ('provide exactly one') that the schema does not express via required fields or oneOf. It also restates the per-page volume that maps to the 'pages' parameter, mildly strengthening the schema's own text.
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 ('Get an Instagram user's recent posts and reels (their feed)') and scopes it to user-level retrieval, which cleanly separates it from siblings like instagram_hashtag_posts, instagram_post_details and search_instagram. An agent can identify the target resource without opening the 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?
'By username or profile URL (provide exactly one)' gives a concrete usage constraint that selects the correct input path. It does not, however, name when to prefer this over alternatives such as instagram_user_stories or instagram_hashtag_posts, so the routing guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_user_profileInstagram User ProfileARead-onlyInspect
Get an Instagram user's full profile by username or profile URL (provide exactly one). Returns biography, follower, following and media counts, category, external link, verification status and date, the country the account is based in, join date, the number of former usernames and whether Instagram labels the account AI-generated. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Instagram profile URL, e.g. https://instagram.com/natgeo (max 500 characters) | |
| username | No | Instagram username, with or without leading @ (max 100 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, open-world behavior, so the safety profile is covered. The description goes beyond them by enumerating the returned fields and disclosing the $0.006 per-request billing, which is genuinely useful cost context an agent cannot get from 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?
Front-loaded with purpose, followed by return fields and cost. The field enumeration is somewhat long but each item is informative and the sentences earn their 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 description compensates by listing return values, and annotations cover the safety profile. Input constraints and cost are present; only explicit alternative-routing is missing, leaving the definition near-complete.
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% (baseline 3), but the description adds the mutual-exclusivity constraint ('provide exactly one') that the schema does not express, since both parameters are optional with no required field. This is meaningful semantics 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?
Specific verb (Get) plus resource (an Instagram user's full profile), with the accepted input forms (username or profile URL) stated up front. It is clearly distinguishable from siblings like instagram_user_posts, instagram_user_followers, and search_instagram_users.
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 'provide exactly one' rule gives a useful input constraint, but the description never states when to choose this tool over alternatives such as search_instagram_users or instagram_user_followers. Usage is implied by the purpose rather than explicitly routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_user_storiesInstagram User StoriesARead-onlyInspect
Get an Instagram user's active stories (last 24 hours) by username or profile URL (provide exactly one). Returns each story's media URLs, post and expiry times, link stickers, mentions, tagged users, location, audio and AI detection method. Media URLs expire after about 6-24 hours. Returns an empty list when there are no active stories. Use instagram_user_highlights for saved stories. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Instagram profile URL, e.g. https://instagram.com/natgeo (max 500 characters) | |
| username | No | Instagram username, with or without leading @ (max 100 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the read-only/safe profile, and the description adds substantial context beyond them: story fields returned, media URL expiry window (6-24h), empty-list behavior when no stories are active, and per-request billing ($0.006). These are exactly the operational traits an agent cannot infer from structured 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?
Front-loaded with purpose and input rule, then the return contents, expiry caveat, empty-list behavior, alternative tool, and cost. Every sentence carries distinct, non-redundant information 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?
With no output schema, the description steps in to describe return fields and edge cases, and it covers input constraints, expiry, empty results, alternatives, and pricing. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds the mutual-exclusivity rule ('provide exactly one'), which the schema does not express since both params are optional and unconstrained. That constraint meaningfully shapes correct invocation.
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 (Get), resource (Instagram user's active stories), and scope (last 24 hours), plus the two accepted input forms. It names the sibling instagram_user_highlights for saved stories, letting an agent distinguish it without opening another 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?
Gives an explicit input selection rule ('provide exactly one' of username or URL) and routes to the correct alternative (instagram_user_highlights for saved stories). Conditions for use and for switching tools are both stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_company_detailsLinkedIn Company DetailsARead-onlyInspect
Get a LinkedIn company page by URL. Returns name, description, employee count, industry, headquarters and locations, specialities, website and similar companies. Use search_linkedin_companies to find a company by name. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | LinkedIn company page URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: per-request billing ($0.006) and the exact shape of the return (name, employees, industry, locations, similar companies), which the annotations do not provide.
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 sentences, zero filler, front-loaded with the core action and return contents, followed by the sibling routing and cost note. Every sentence 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 description compensates by listing the returned fields, and it adds cost and routing context. For a single-param read tool with full annotation coverage, nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter with 100% schema description coverage; the schema already documents 'url' as a LinkedIn company page URL. The description's 'by URL' phrase reinforces but adds no syntax, format, or constraint detail beyond the schema, 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 (Get) and resource (LinkedIn company page) plus the identifying input (URL), and enumerates the returned fields. It is clearly distinguished from search_linkedin_companies, which it names as the name-based lookup 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?
It explicitly routes the agent to search_linkedin_companies for name-based lookup, implying this tool is for when you already have a URL. It does not spell out a when-not condition beyond that, but the alternative is named with a clear selecting condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_company_postsLinkedIn Company PostsARead-onlyInspect
Get recent posts from a LinkedIn company page by URL. Returns post text, author info, images, videos and engagement metrics (likes, comments, shares, reactions). 10 posts per page. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | LinkedIn company page URL | |
| page | No | Page number, 1-50 (default: 1). 10 posts per page | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint, destructiveHint=false, openWorldHint). The description goes beyond them by disclosing return contents (post text, author, images, videos, engagement metrics), pagination granularity, and per-request pricing ($0.006) plus the sentiment surcharge — cost information an agent cannot get from structured 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?
Three tight sentences: capability first, then return payload, then pagination and cost. Every sentence 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 describes the return payload, and it covers pagination and cost. Minor gaps remain: no note on auth requirements, rate limits, or whether the URL must be a canonical full page URL, but for a simple read endpoint this is close to complete.
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 url, page, and get_sentiment in detail. The description restates '10 posts per page' and the engagement metrics but adds no syntax, format, or constraint 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 verb and resource with scope qualifier: 'Get recent posts from a LinkedIn company page by URL.' This cleanly separates it from linkedin_company_details (page metadata), linkedin_person_posts (a different author type), and linkedin_post_details (single 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?
Usage is implied by the resource description ('posts from a company page'), but there is no explicit when-to-use/when-not guidance and no routing to alternatives such as linkedin_post_details for a single post or search_linkedin_companies for finding the page URL. Adequate but leaves selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_job_detailsLinkedIn Job DetailsARead-onlyInspect
Get one LinkedIn job listing by URL or numeric job ID. Returns title, company, location, posting date, job type, experience level, workplace type, industry, salary, benefits and full description. Billed $0.002 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | LinkedIn job URL (e.g. https://linkedin.com/jobs/view/1234567890) or numeric job ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the read-only, non-destructive, open-world profile, so the safety picture is covered. The description adds genuinely new behavioral context beyond the annotations by enumerating the returned fields and disclosing the $0.002 per-request billing, which an agent cannot derive from structured 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?
Two sentences, front-loaded with the action and identifier, then the payload and cost. No filler, no repetition of the title.
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 the returned fields (title, company, location, salary, benefits, full description), and it adds cost and scope. For a single-parameter read tool with rich annotations, nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'url' parameter is fully documented in the schema, including the accepted URL format and the numeric-ID alternative. The description restates the URL-or-ID duality but adds no format or validation detail 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?
States a specific verb and resource ('Get one LinkedIn job listing') and scopes it to a single record identified by URL or numeric ID, which cleanly separates it from search_linkedin_jobs. An agent can tell immediately this is the detail-fetch counterpart to the search tool.
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 single-record phrasing implies the tool is used once a job URL or ID is already known, but it never states when to reach for this versus search_linkedin_jobs or linkedin_company_details. Usage is inferable from the name and scope rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_person_detailsLinkedIn Person ProfileARead-onlyInspect
Get a LinkedIn person's profile by profile URL, public slug or member URN. Returns name, headline, about, location, follower and connection counts, open-to-work status, and the experience, education, skills, certifications, languages, honors, publications, volunteering and projects sections. Use linkedin_person_posts for their posts. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | LinkedIn profile URL, public slug (e.g. reidhoffman), or member URN (ACoAA...) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), so the bar is lower. The description still adds real operational context: the billing rate ($0.006 per request) and a full enumeration of returned profile sections, which tells the agent what to expect without an output schema.
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 tightly packed sentences: the return contents are front-loaded, the sibling routing and pricing follow. Every clause carries information and nothing is wasted.
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?
No output schema exists, yet the description inventories the returned fields thoroughly, names the alternative for posts, and discloses per-request cost. For a single-parameter read tool, an agent has everything needed to call it and interpret the result.
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?
With one parameter and 100% schema description coverage, the schema already documents that url accepts a profile URL, public slug, or member URN. The description repeats those accepted identifier forms without adding syntax examples, validation rules, or fallback behavior, 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 (Get) and resource (a LinkedIn person's profile) and enumerates the returned sections, so the agent knows exactly what this returns versus sibling tools like linkedin_company_details or linkedin_job_details. It is clearly distinguishable from linkedin_person_posts, which it names 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?
Directs the agent to linkedin_person_posts for a person's posts, which is a useful exclusion among many LinkedIn siblings. However, it gives no guidance on when to reach for this versus search_linkedin or search_linkedin_companies, so the routing is only partially covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_person_postsLinkedIn Person PostsARead-onlyInspect
Get the recent posts a LinkedIn person authored, by profile URL or public slug. Returns post text, engagement metrics (likes, comments, shares, reactions), author info, images, videos and articles. 20 posts per page, up to about 600 posts. Use search_linkedin with author to filter a person's posts by keyword. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | LinkedIn profile URL or public slug (e.g. williamhgates) | |
| page | No | Page number, 1-30 (default: 1). 20 posts per page — up to ~600 of the person's most recent posts. | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: pagination limits (20/page, ~600 max), what data classes are returned, and billing at $0.006 per request.
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 sentences, front-loaded with what is retrieved, followed by return contents, pagination caps, alternative routing, and cost. 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 and only three parameters, the description covers everything an agent needs: input form, return payload contents, pagination ceiling, alternative tool for keyword filtering, and cost. Nothing material 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 description coverage is 100%, so the schema already documents url, page (1-30), and get_sentiment. The description restates the URL-or-slug input and page ceiling but adds no new parameter semantics and never mentions get_sentiment or the sentiment surcharge. Baseline 3 applies 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?
States a specific verb (Get), resource (recent posts a LinkedIn person authored), and an input mode (profile URL or public slug). It is clearly distinguishable from linkedin_company_posts and linkedin_post_details, since it scopes to a person's authored 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?
Explicitly routes keyword filtering to a sibling: "Use search_linkedin with author to filter a person's posts by keyword." That is strong alternative guidance, though it does not state when-not to use this tool (e.g. versus linkedin_post_details for a single post).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_post_detailsLinkedIn Post DetailsARead-onlyInspect
Get one LinkedIn post by URL. Returns full post text, author details, images, embedded links and engagement metrics with reaction breakdowns. Billed $0.002 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | LinkedIn post URL | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so safety is covered. The description adds meaningful context beyond that: it discloses the per-request cost ($0.002) and enumerates the return payload (full text, author details, images, links, engagement metrics with reaction breakdowns). It does not cover auth or rate limits, but the added cost and return detail justify a 4.
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 sentences are front-loaded: purpose, return payload, then billing. Each sentence adds distinct information and none is redundant, making it appropriately sized for the tool.
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-value explanation and does so by listing the key fields an agent will receive. It also states the cost, so an agent can call the tool knowing the price and expected output. The only omission is sentiment behavior, but that is fully specified in the input 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?
Schema description coverage is 100%, so both url and get_sentiment are fully documented in the schema. The description adds only 'by URL,' which the schema already conveys, and says nothing about get_sentiment. Baseline 3 applies 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 description names a specific verb and resource ('Get one LinkedIn post by URL') and scopes it to a single post, which differentiates it from sibling list/search tools like linkedin_person_posts and search_linkedin. It also enumerates the returned data, reinforcing what the tool is for.
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 purpose: use when you have a LinkedIn post URL and need full details. There is no explicit statement of when to choose this over search_linkedin or linkedin_person_posts, and no exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_skillsList SkillsARead-onlyInspect
List API Direct's ready-made skills: playbooks that chain the data tools, with filters such as author_title, mentions_company and AI sentiment, to reach a business outcome (lead generation, competitor and brand monitoring, recruiting, due diligence, deal sourcing, market research). Returns each skill's id, name, category, summary and inputs. Use it when a request matches one of those goals, then run the chosen skill with get_skill. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Optional: filter to a category substring, e.g. "sales", "recruiting", "investing", "crisis". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the read-only, non-destructive profile, so the bar is lower; the description still adds useful context by enumerating the returned fields and noting the tool is 'Free'. It does not mention pagination or result-size behavior, but for a simple list tool this is strong additive context with no contradiction.
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-loads the core purpose, then adds outcome categories, return fields, usage, and cost in tight succession. It is dense and slightly list-heavy but every clause carries information; 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 compensates by naming the returned fields (id, name, category, summary, inputs), and it covers purpose, selection conditions, follow-up tool, and cost. An agent has everything needed to decide and call.
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 there is a single optional parameter already fully documented, so the baseline is 3. The description's 'filters such as author_title, mentions_company and AI sentiment' refer to the skills' inputs rather than this tool's category parameter, so it adds no syntax or semantics for the parameter itself.
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 API Direct's ready-made skills: playbooks that chain the data tools') and explains what a skill is, which no sibling name conveys. It is clearly distinguishable from the many raw data tools and from get_skill, the companion that runs a chosen skill.
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?
Explicitly says when to use it ('when a request matches one of those goals') and names the next step and alternative ('then run the chosen skill with get_skill'). The routing to get_skill leaves nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_detailsGoogle Place DetailsARead-onlyInspect
Get a Google Maps place by place_id (from search_places). Returns name, address, phone, website, rating, review counts per star, opening hours, sample photos, coordinates, plus codes, menu link, owner info, and the emails, phones and social profiles found on the place's website. Billed $0.003 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | 2-letter country code (default: "us") | us |
| language | No | 2-letter language code (default: "en") | en |
| place_id | Yes | Google place_id (e.g. ChIJifIePKtZwokRVZ-UdRGkZzs) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, open-world and non-destructive behavior, so the safety profile is covered. The description adds genuinely useful context beyond them: the exact billing cost ($0.003 per request) and the breadth of returned data, though it omits any rate-limit or error/empty-result 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?
Purpose is front-loaded, followed by the return inventory and then the billing note, so nothing critical is buried. The long enumerated return list is dense but each item is relevant given there is no output 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 no output schema, the description properly carries the return-value burden by enumerating the fields returned, and it adds a cost signal. It is complete enough to call correctly, though it never states auth/API-key requirements or the shape of error responses.
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 meaning for the required parameter by disclosing its origin (from search_places). The optional country/language flags are left to the schema and get no extra explanation in the text.
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 ("Get a Google Maps place by place_id") and immediately disambiguates from its siblings place_photos, place_reviews and search_places by naming the upstream source of the id. An agent can tell exactly what this returns without opening the 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?
The parenthetical "(from search_places)" tells the agent where the required place_id must come from, effectively instructing it to search first. However, it does not explicitly say when to prefer this over place_photos or place_reviews, so a small inference gap remains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_photosGoogle Place PhotosARead-onlyInspect
Get photos and videos of a Google Maps place by place_id (from search_places). Returns standard and large URLs, coordinates and capture time; photos and videos come mixed, so filter on the type field. Up to 10 items per page. Billed $0.01 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-10 (default: 1). Each page returns up to 10 items and is billed as one request. | |
| country | No | 2-letter country code (default: "us") | us |
| language | No | 2-letter language code (default: "en") | en |
| place_id | Yes | Google place_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, openWorld, non-destructive), and the description goes further by disclosing cost ($0.01 per page), pagination limits (10 items per page), and a data-shape gotcha (photos and videos come mixed, filter on type). This is exactly the behavioral context annotations cannot 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?
A single dense sentence front-loads the action and resource, then appends only decision-relevant facts (return fields, mixed media caveat, page size, cost). 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 description carries the return-value burden and does so ('standard and large URLs, coordinates and capture time'), plus cost and pagination. An agent has everything needed to call it correctly and predict the cost.
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 place_id, pages, country, and language, including the per-page billing and item count. The description's 'up to 10 items per page' and pricing largely restate the pages schema field rather than adding new parameter semantics, 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 ('Get photos and videos of a Google Maps place') plus the keying parameter ('by place_id'), which clearly distinguishes it from siblings like place_details, place_reviews, and search_places.
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?
Explicitly tells the agent where place_id comes from ('from search_places'), establishing the prerequisite chain, and implies usage. It does not, however, state when not to use it or contrast it against place_details for a photo-adjacent need.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_reviewsGoogle Place ReviewsARead-onlyInspect
Get reviews of a Google Maps place by place_id (from search_places). Each review has rating, text, author, timestamps, photos and any owner response. language returns only reviews originally written in that language; each sort_by order surfaces a different set, so combine them for more coverage. Up to 10 reviews per page. Billed $0.01 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages, 1-10 (default: 1). Each page returns up to 10 reviews and is billed as one request. | |
| country | No | 2-letter country code (default: "us") | us |
| sort_by | No | Sort order | most_relevant |
| language | No | 2-letter language code (default: "en"). Filters reviews to those originally written in this language. | en |
| place_id | Yes | Google place_id | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. | |
| translate_reviews | No | Translate the returned reviews into the requested language |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/openWorld/non-destructive, and the description adds genuinely new behavioral facts: billing at $0.01 per page, a hard cap of 10 reviews per page, and the non-obvious behavior that each sort_by order surfaces a different set of reviews. That last point is exactly the kind of trait an agent could not infer from structured 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?
Front-loads purpose, then layers in return fields, filtering behavior, pagination, and cost with no filler. Every sentence carries actionable information for an agent deciding whether and how to call it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description enumerates the review fields returned (rating, text, author, timestamps, photos, owner response), and covers pagination, cost, filtering, and sorting. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: it explains that each sort_by order yields a different review set (schema only says 'Sort order') and clarifies the language filter behavior. The billing/pagination notes for pages also add value the schema only partially covers.
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 ('Get reviews of a Google Maps place by place_id') and distinguishes itself from siblings like place_details and place_photos by naming the exact resource returned. It also routes the agent to the source of the required id ('from search_places'), so the tool is identifiable without opening any 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?
Gives a clear entry condition (place_id comes from search_places) and practical usage tips (combine sort_by orders for more coverage, use language to restrict). It stops short of explicit when-not-to-use guidance or naming a specific alternative review tool, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_amazon_productsSearch Amazon ProductsARead-onlyInspect
Search Amazon products by keyword or ASIN across 24 marketplaces. Returns ASIN, title, price and original price, rating and ratings count, Prime status, sales volume, badges and delivery info. Filter by category, price, condition, brand, seller, Prime, deals and 4+ stars. About 16 results per page. Use amazon_product_details for one product. Billed $0.005 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1-20 (default: 1). Each page returns ~16 results. | |
| brand | No | Brand name(s), comma-separated for multiple | |
| query | Yes | Search keyword or a product ASIN (max 500 characters) | |
| country | No | Marketplace country code (default: "us"). One of: us, au, br, ca, cn, fr, de, in, it, mx, nl, sg, es, tr, ae, gb, jp, sa, pl, se, be, eg, za, ie | us |
| sort_by | No | Sort order | relevance |
| category | No | Numeric Amazon category node ID(s) from an Amazon URL's ?node= parameter, comma-separated | |
| is_prime | No | Only products with Prime-eligible offers | |
| max_price | No | Maximum price in the marketplace currency | |
| min_price | No | Minimum price in the marketplace currency | |
| seller_id | No | Only products from specific seller ID(s), comma-separated | |
| category_id | No | Category slug, e.g. electronics (see https://apidirect.io/docs/amazon-categories) | |
| four_stars_and_up | No | Only products rated 4 stars and up | |
| product_condition | No | Product condition filter | all |
| deals_and_discounts | No | Deals filter | none |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, so the safety profile is covered. The description adds genuinely useful behavioral context beyond annotations: result count per page (~16), full return field list, and a billing rate ($0.005/request). Missing pagination cap (though schema shows page max 20) and rate-limit info.
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 tight sentences, front-loaded with the core purpose, then output fields, then filters, then the routing hint and pricing. Every sentence carries information; 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 14-param search tool with no output schema but full schema coverage, the description covers purpose, filter categories, return fields, pagination size, sibling routing, and cost. An agent has everything needed to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema itself documents defaults, enums, units, and formats. The description summarizes which filters exist (category, price, condition, brand, seller, Prime, deals, 4+ stars) and reinforces the currency context ('in the marketplace currency'), adding light value over the schema. Baseline 3 is appropriate but the enumerative filter summary plus currency framing push it slightly higher.
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 (Search) and resource (Amazon products), names the input modes (keyword or ASIN), scope (24 marketplaces), and explicitly distinguishes from the sibling amazon_product_details. An agent can immediately tell this apart from amazon_best_sellers and amazon_product_details.
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?
Names the alternative for single-product lookups ('Use amazon_product_details for one product'), giving clear routing context. However, it does not position against other Amazon siblings like amazon_best_sellers or amazon_seller_products, so routing among the full Amazon family is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_blueskySearch Bluesky PostsARead-onlyInspect
Search Bluesky posts by keyword; Bluesky search syntax works in query. Returns post text, author, date, engagement metrics (likes, replies, reposts, quotes, bookmarks), media, link cards and quoted posts. Sort by newest or relevance and limit to a date range. Up to 50 posts per page. Billed $0.003 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-20 (default: 1). Each page returns up to 50 posts; you are billed per page returned. | |
| query | Yes | Search keyword (max 500 characters). Bluesky search syntax works: "exact phrase", -exclude, from:handle, lang:en, #tag | |
| sort_by | No | Sort order: "most_recent" or "relevance" | most_recent |
| end_date | No | Only posts up to this date (format: YYYY-MM-DD) | |
| start_date | No | Only posts from this date onward (format: YYYY-MM-DD) | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely useful behavior: pagination ceiling (up to 50 posts per page), explicit billing ($0.003 per page, billed per page returned), and a surcharge for sentiment analysis.
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 sentences, front-loaded with purpose then return fields then controls and cost. No filler, though the returned-field enumeration is a long list rather than prose.
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 what is returned (post text, author, date, engagement metrics, media, link cards, quoted posts), and cost/pagination behavior is stated. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents every parameter including the enum and defaults. The description restates sort options and date-range limiting but adds no syntax, bounds, or format detail beyond the schema, 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 (Search) and resource (Bluesky posts) with a keyword-based scope, and clearly separates itself from sibling search_bluesky_users. An agent can identify the target immediately.
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?
Implied usage is clear (keyword search over Bluesky posts with sort and date range), but it never states when to prefer this over alternatives like search_bluesky_users or bluesky_user_posts, nor any exclusions. Adequate but with a clear routing gap in a large sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_bluesky_usersSearch Bluesky UsersARead-onlyInspect
Search Bluesky users by keyword, matching handles, display names and bios. Returns handle, display name, DID, bio, verification status, profile picture and join date. Up to 50 users per page. Billed $0.003 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-20 (default: 1). Each page returns up to 50 users; you are billed per page returned. | |
| query | Yes | Search keyword (max 500 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely new context beyond that: the returned field set, a 50-users-per-page cap, and a $0.003-per-page billing cost, which materially affects how an agent should size a call.
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 sentences, front-loaded with the search scope and then the return shape and cost. No filler, and the billing constraint is placed where it will be read before invoking.
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 correctly carries the return-value burden by enumerating handle, display name, DID, bio, verification status, picture and join date. Combined with the page cap and pricing, an agent has everything needed to call and interpret the result.
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 both parameters (query, pages) are already documented with limits and the per-page billing note. The description repeats 'up to 50 users per page' but adds no syntax, format, or edge-case detail beyond the schema, 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 (search) and resource (Bluesky users) plus the exact match fields (handles, display names, bios), which clearly separates it from the sibling search_bluesky that covers posts. An agent can route correctly without opening the 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?
The description implies when to use it (keyword lookup of user accounts) but names no alternatives and gives no when-not-to-use guidance, e.g. versus search_bluesky or bluesky_user_profile. Usage is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_facebook_eventsSearch Facebook EventsARead-onlyInspect
Search public Facebook events by keyword. Returns event names, IDs and links. Limit to a date range or scope to a place with a location_id from search_facebook_locations. Billed $0.008 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch (1-15, default 1). Billed per page. | |
| query | Yes | Search keyword (max 500 characters) | |
| end_date | No | Filter events until this date (YYYY-MM-DD) | |
| start_date | No | Filter events from this date (YYYY-MM-DD) | |
| location_id | No | Facebook location ID (from search_facebook_locations) to scope results to a place |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, and the description adds value beyond them: the returned fields (names, IDs, links), the cost model ("Billed $0.008 per page"), and the fact that paging drives cost. It does not cover rate limits or result caps, but the billing disclosure is genuinely useful for an agent controlling call volume.
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 sentences: purpose, return shape, then refinement and cost. The primary verb is front-loaded and nothing is redundant with the title.
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 naming the returned fields, and it covers scoping, cost, and the upstream dependency for location_id. Minor gaps remain around pagination behavior and maximum result counts for a multi-page billed call.
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, but the description adds semantics the schema lacks: start_date/end_date are framed as range limits and location_id is tied to its upstream source tool. It also links the pages parameter to billing, which the schema only mentions in isolation.
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?
Specific verb+resource ("Search public Facebook events by keyword") with the scope qualifier "public" made explicit. It is clearly distinguishable from the numerous search_facebook_* siblings (posts, pages, videos, locations) without opening any 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?
Gives concrete narrowing strategies (limit by date range, scope by place) and names the upstream sibling search_facebook_locations as the source of location_id. It stops short of stating when this tool should be preferred over sibling searches like search_facebook_pages, but the context is clear enough to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_facebook_locationsSearch Facebook LocationsARead-onlyInspect
Resolve a place name (city, region or country) to Facebook location IDs. Pass a returned id as location_id to search_facebook_posts or search_facebook_events. Billed $0.004 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Place name to resolve, e.g. "London" or "Paris, France" (max 500 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, openWorld, non-destructive), so the description earns credit for adding non-obvious operational context: the $0.004 per-request billing cost and the downstream handoff of the id. It does not describe return fields or rate limits, but the cost disclosure is meaningful value beyond structured 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 short sentences, front-loaded with the core purpose, then the chaining instruction, then the cost. Every sentence earns its place with zero 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 one-parameter resolver with no output schema, the description covers purpose, downstream usage, and cost. It could be slightly more complete by sketching what the returned location object contains (name/type alongside the id), but nothing essential for correct invocation 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 description coverage is 100% for the single query parameter, so the baseline is 3. The description's phrase 'city, region or country' loosely broadens the accepted input types beyond the schema's examples, but adds no format or constraint detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (resolve) and resource (place name → Facebook location IDs), which is distinct from the sibling search_* tools that return content. An agent can tell this is a lookup/resolution step, not a content search, without opening the 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?
Explicitly tells the agent what to do with the output: pass the returned id as location_id to search_facebook_posts or search_facebook_events. That is strong chaining guidance, though it stops short of stating when not to use it (e.g. when you already have a location_id).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_facebook_pagesSearch Facebook PagesARead-onlyInspect
Search Facebook pages by keyword. Returns page name, URL, profile image and verification status. Pass a page URL to facebook_page_details for its IDs and full profile. Billed $0.008 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch (1-15, default 1). Billed per page. | |
| query | Yes | Search keyword (max 500 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/open-world safety profile, so the lower bar applies. The description adds genuinely useful behavioral context the annotations don't: the exact return fields (name, URL, profile image, verification status) and the $0.008 per-page billing 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 tight sentences, front-loaded with purpose, then return fields, then routing, then cost. Every sentence earns its place 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?
With no output schema, the description compensates by naming the returned fields, and it covers routing and pricing. Comprehensive for a two-param search tool; only minor gaps around result limits or pagination.
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 both 'query' and 'pages' with ranges and billing notes. The description's mention of keyword search and per-page billing adds marginal value but no syntax or format 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?
States a specific verb (Search) and resource (Facebook pages) with scope by keyword, which cleanly distinguishes it from the many search_facebook_* and facebook_page_* siblings. An agent knows immediately what this retrieves.
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?
Provides clear follow-up routing: pass a page URL to facebook_page_details for IDs and full profile, which signals this is the discovery step. However, it gives no explicit when-not guidance versus overlapping search tools like search_facebook_posts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_facebook_postsSearch Facebook PostsARead-onlyInspect
Search public Facebook posts by keyword. Returns post text, author details, engagement metrics and media. Limit to a date range, sort by newest or relevance, or scope to a place with a location_id from search_facebook_locations. Billed $0.008 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch (1-15, default 1). Billed per page. | |
| query | Yes | Search keyword (max 500 characters) | |
| sort_by | No | Sort order: most_recent or relevance (default: relevance) | relevance |
| end_date | No | Only posts up to this date (YYYY-MM-DD) | |
| start_date | No | Only posts from this date onward (YYYY-MM-DD) | |
| location_id | No | Facebook location ID (from search_facebook_locations) to scope results to a place | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, so the safety profile is covered. The description adds genuinely new operational context: billing at $0.008 per page, that the 'pages' parameter drives cost, and that get_sentiment carries a surcharge. It stops short of noting rate limits or result-cap 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?
Four tight sentences: purpose, return payload, filtering options, cost. The most decision-relevant facts (what it does, what comes back, what it costs) are front-loaded and every clause carries 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?
With no output schema, the description correctly compensates by naming the return fields, and all parameters are covered by the schema. For a paid, open-world search tool it is close to complete, though pagination limits and how sentiment interacts with multi-page billing are 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%, so all seven parameters are already documented with types, defaults, enums and formats. The description reinforces the location_id provenance and the per-page billing tie-in, but adds little syntax or format meaning 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 verb and resource ('Search public Facebook posts by keyword') plus scope ('public') and enumerates what is returned (post text, author details, engagement metrics, media). This distinguishes it from page/group-scoped siblings like facebook_page_posts and facebook_group_posts, which cannot search by keyword.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete narrowing strategies (date range, sort order, place scoping) and explicitly routes the agent to search_facebook_locations to obtain a location_id, which is a real dependency an agent would otherwise have to guess. It does not state when this tool is the wrong choice versus sibling searches (e.g., search_facebook_pages), so no exclusions are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_facebook_videosSearch Facebook VideosARead-onlyInspect
Search Facebook videos by keyword. Returns title, description, author, thumbnail and view metrics. Limit to a date range and sort by newest or relevance. Billed $0.008 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch (1-15, default 1). Billed per page. | |
| query | Yes | Search keyword (max 500 characters) | |
| sort_by | No | Sort order: most_recent or relevance (default: relevance) | relevance |
| end_date | No | Only videos up to this date (YYYY-MM-DD) | |
| start_date | No | Only videos from this date onward (YYYY-MM-DD) | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, openWorld, non-destructive), so the description adds real value by disclosing the billing model ($0.008 per page) and the shape of results (title, description, author, thumbnail, view metrics). It omits rate limits and pagination caps, keeping 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?
Three tight sentences with the core action front-loaded, followed by output and pricing. Every clause carries information, though the sort/date sentence partially duplicates schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully lists returned fields and covers cost, filtering, and sort. It is nearly complete for a search tool; only pagination behavior and any auth prerequisites are 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?
Schema description coverage is 100%, so all six parameters are already documented, including the enum and date formats. The description restates sort and date filtering but adds no syntax or semantic detail beyond the schema, matching the 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?
States a specific verb and resource ('Search Facebook videos by keyword') and enumerates what comes back, which cleanly separates it from sibling search tools for posts, pages, and events. It stops short of naming an explicit alternative, but the resource scope 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 description implies usage through its keyword-search framing and notes the date-range and sort options, but it never states when to prefer this over search_facebook_posts, facebook_page_videos, or search_youtube. 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.
search_forumsSearch Forum PostsARead-onlyInspect
Search forum posts across discussion boards, Q&A sites and community forums on the web. Returns title, URL, source domain and a content snippet. Filter by time period and country. 10 posts per page. Use search_reddit for Reddit. Billed $0.008 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1-10 (default: 1). 10 posts per page | |
| time | No | Time filter: "any", "hour", "day", "week", "month", or "year" | any |
| query | Yes | Search keyword (max 500 characters) | |
| country | No | 2-letter ISO country code, e.g. "us", "gb" | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/openWorldHint/non-destructive, so the safety profile is covered; the description adds real value beyond that with the return field set (title, URL, source domain, snippet), a 10-per-page pagination note, and a per-request cost of $0.008. It doesn't mention rate limits or result-quality caveats, but the billing and pagination disclosures are the kind of context annotations can't carry.
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?
Five tight sentences, zero filler, and the highest-value facts (what it searches, what it returns, the Reddit exclusion, cost) are front-loaded. Every sentence 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 description responsibly covers return shape, pagination size, and cost. It stops short of noting the 10-page cap or sentiment surcharge specifics, but for a 5-param search tool the definition is essentially complete.
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 (query, page, time, country, get_sentiment) is already documented in the schema. The description restates the time and country filters without adding syntax or format detail beyond what the schema provides, 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+resource ('Search forum posts') with a clear scope ('discussion boards, Q&A sites and community forums on the web'). It explicitly distinguishes itself from the nearest sibling by saying 'Use search_reddit for Reddit', so an agent can route without opening either 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?
Names the concrete alternative search_reddit and the condition (Reddit content) that selects it, which is genuine when-not guidance. It does not, however, position itself against other overlapping web/forum-adjacent siblings like search_web or search_news, leaving some routing ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_instagramSearch Instagram PostsARead-onlyInspect
Search Instagram posts by keyword. Returns caption, author, date, engagement metrics (likes, comments, shares, views), media URLs, hashtags, mentions and Instagram's AI label (ai_label with detection_method). Use instagram_hashtag_posts for a hashtag's feed. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-20 (default: 1) | |
| query | Yes | Search keyword (max 500 characters). Cannot start with # or @ | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description goes beyond them by disclosing the exact returned fields (engagement metrics, ai_label with detection_method) and, importantly, the billing cost of $0.006 per page — cost information an agent cannot get from 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?
Three tight sentences, front-loaded with the core purpose, then the sibling alternative, then return fields and cost. No filler or 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 carries the return-shape burden and does so by enumerating fields and the AI label. Cost is disclosed. The only remaining gap is output volume/pagination behavior across up to 20 pages, which an agent might want when estimating a query.
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 pages, query and get_sentiment are already fully documented, including query constraints (# and @ disallowed) and the sentiment surcharge. The description adds return-value detail but no additional parameter 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 ('Search Instagram posts by keyword') and explicitly distinguishes itself from the nearest sibling by naming instagram_hashtag_posts for hashtag feeds. An agent can identify the resource and its scope without opening the 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?
Provides clear routing guidance: use instagram_hashtag_posts for a hashtag's feed, implying this tool is for keyword search. It does not, however, address the nearby search_instagram_users sibling or when keyword-only search is inappropriate, so it stops short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_instagram_usersSearch Instagram UsersARead-onlyInspect
Search Instagram users by keyword. Returns username, full name, verification status, profile picture and whether Instagram labels the account AI-generated. Use instagram_user_profile for one account's full profile. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search keyword (max 500 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, open-world, and non-destructive behavior. The description adds substantial context beyond annotations by naming returned fields and the $0.006 per-request billing, though it does not disclose pagination or result limits.
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 sentences, front-loaded with purpose and followed by return fields, alternative tool routing, and cost. Every sentence carries useful information, 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?
No output schema exists, so the description compensates by listing key returned fields. It still omits pagination or result-limit behavior, which is a minor completeness gap for a search endpoint.
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 single query parameter is fully specified with a 500-character maximum. The description only restates 'by keyword,' so it adds no parameter semantics beyond the schema. Baseline 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?
States a specific verb and resource: 'Search Instagram users by keyword.' It also distinguishes the tool from instagram_user_profile, so an agent can tell this is a user-search endpoint rather than a single-profile 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?
Explicitly routes the agent: use instagram_user_profile for one account's full profile. Billing per request adds a practical usage consideration. The only minor omission is no direct comparison to search_instagram, but the user-profile routing is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_linkedinSearch LinkedIn PostsARead-onlyInspect
Search LinkedIn posts by keyword and/or filters: author (posts by a person), author_title (posts by people with a job title, e.g. Founder), author_company (posts by a company's employees), from_company (posts by a company page), mentions_company or mentions_member (posts mentioning a company or person), author_industry. Returns post text, author, date, engagement metrics, attached media and a has_content_entities flag (true when an image, article, video or job is attached). Company ids come from search_linkedin_companies. 20 posts per page. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1-25 (default: 1). 20 posts per page | |
| query | No | Search keyword (max 500 characters). Optional if you supply a filter below. | |
| author | No | Posts authored by this person — profile URL, public slug (e.g. williamhgates), or member URN. Comma-separate for multiple. | |
| sort_by | No | Sort order: "most_recent" or "relevance" | most_recent |
| posted_ago | No | Only posts from this period: "24h", "7d", or "30d" (default: all time). Works with both sort orders and every filter | |
| author_title | No | Posts by authors whose job title matches this free text (e.g. "CEO", "Founder"). Applies alongside a query. | |
| from_company | No | Posts authored by a company page. Numeric company id(s), comma-separated. | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. | |
| author_company | No | Posts by people who work at this company. Numeric LinkedIn company id (from search_linkedin_companies). | |
| author_industry | No | Posts by authors in these numeric LinkedIn industry id(s), comma-separated. Advanced; applies alongside a query. | |
| mentions_member | No | Posts that mention this person (profile URL, public slug, or member URN). | |
| mentions_company | No | Posts that mention this company. Numeric company id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds genuinely useful behavior beyond that: 20 posts per page (max 25 pages implied by schema), a $0.006 per request billing note, and the return shape including the has_content_entities flag. It stops short of describing rate limits or auth requirements.
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 core verb and scope, then a dense enumeration of filters, return fields, id source, pagination and pricing. Every clause carries information, though the single long paragraph is heavier than ideal for scanning.
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 steps in to describe return fields and the has_content_entities flag, and it covers pagination and billing. For a 12-param, all-optional tool it is largely complete, though it omits how multiple filters combine (AND semantics) and any auth/pricing caveats beyond the per-request cost.
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, but the description adds meaning by grouping and contrasting filters (author vs author_company vs from_company vs mentions_*) in a way the flat schema does not. It also clarifies intent-level distinctions (e.g. author_title is free text like 'Founder') that aid filter selection.
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 (search LinkedIn posts) and enumerates the filter dimensions with their distinct meanings, notably separating author_company (a company's employees) from from_company (a company page) so an agent can pick the right filter. It does not, however, name or differentiate itself from close siblings like linkedin_person_posts or linkedin_company_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?
Usage is implied through the filter list, and it helpfully points out that company ids come from search_linkedin_companies, which is real routing value. But there is no explicit when-to-use-this-vs-alternatives guidance, e.g. no statement on when to prefer this over linkedin_person_posts or linkedin_post_details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_linkedin_companiesSearch LinkedIn CompaniesARead-onlyInspect
Search LinkedIn companies by keyword. Returns name, subtitle (industry and location), description, follower count as text (e.g. 2M followers), logo, URL and company_id, the numeric id that search_linkedin (author_company, from_company, mentions_company) and search_linkedin_jobs (company_ids) take. 10 results per page. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1-100 (default: 1). 10 results per page. | |
| query | Yes | Search keyword (max 500 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/openWorld/destructive safety, but the description adds real non-annotation context: pagination (10 results per page), the billing rate ($0.006 per request), and the exact numeric type of company_id. It does not mention max page depth (only implied by the schema's 1-100) or failure/empty behavior, so 4.
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 core action and result list, then the cross-tool id contract, pagination and pricing. Slightly dense with an embedded parenthetical list of sibling parameter names, but every clause carries 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 two-param search with no output schema, the description is complete: it describes the return fields, the id semantics that connect it to dependent query tools, page sizing, and cost. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both query (max 500 chars) and page (1-100, default 1) are fully documented in the schema. The description only restates the 10-per-page result size and adds no parameter-specific detail beyond it — correct baseline 3.
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+resource ('Search LinkedIn companies by keyword') and fully enumerates the returned fields. It distinguishes itself from sibling linkedin_company_details by being a keyword search rather than a details lookup, and cross-references the downstream tools that consume company_id.
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?
Clearly establishes the search context and, more importantly, explains how the output feeds search_linkedin (author_company, from_company, mentions_company) and search_linkedin_jobs (company_ids) — an agent can infer this is a discovery/lookup entry point. No explicit when-not-to-use or statement that linkedin_company_details is the alternative for a single known company, so not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_linkedin_jobsSearch LinkedIn JobsARead-onlyInspect
Search LinkedIn job listings by keyword. Returns title, company and company_id, location, posting date, job type, experience level, workplace type, industry, salary and full description. Filter by recency, job type, company and location; useful as a hiring or expansion signal. 25 jobs per page. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1-40 (default: 1). 25 jobs per page | |
| query | Yes | Search keyword (max 500 characters) | |
| sort_by | No | Sort order: "most_recent" or "relevance" (default: relevance) | |
| job_type | No | Job type filter: full_time, part_time, contract, temporary, volunteer, internship, other. Comma-separated for multiple. | |
| posted_ago | No | Maximum job age: "1h", "24h", "7d", or "30d" (default: all time) | |
| company_ids | No | Filter by company — comma-separated numeric LinkedIn company id(s) (from search_linkedin_companies). | |
| location_id | No | Filter by location — a numeric LinkedIn location id (see https://apidirect.io/docs/linkedin-job-locations). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, openWorld), so the description's added value is the pagination size (25 per page) and cost ($0.006 per request), which are genuinely useful operational facts not in the structured 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?
Front-loaded with the core action and scope, then filters, then operational facts. The return-field enumeration is slightly long but justified because there is no output schema to carry it.
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 returned fields, and it adds pagination and billing details, leaving nothing an agent needs to call it correctly 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%, so the schema already documents all seven parameters including enums and formats. The description's filter summary (recency, job type, company, location) merely maps to existing params without adding syntax or constraints 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?
States a specific verb and resource ("Search LinkedIn job listings by keyword") and clearly scopes to listings rather than a single posting, distinguishing it from siblings like linkedin_job_details and search_linkedin_companies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case ("useful as a hiring or expansion signal") and enumerates the available filter dimensions, but does not name alternative tools or state when this tool should not be used over, e.g., search_linkedin or linkedin_job_details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_newsSearch News ArticlesARead-onlyInspect
Search news articles from thousands of sources worldwide. Returns title, URL, snippet, author, source and publish date. Filter by time period, source domain, country and language; up to 100 results per call. Billed $0.008 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results, 1-100 (default: 10) | |
| query | Yes | Search keyword (max 500 characters) | |
| source | No | Filter by news source domain, e.g. "bbc.com" | |
| country | No | 2-letter country code (default: "us") | us |
| language | No | 2-letter language code (default: "en") | en |
| time_published | No | Time filter: "anytime", "1h", "1d", "7d", or "1y" | anytime |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/openWorld/non-destructive, so the description's added value is the cost disclosure ('Billed $0.008 per request') and the per-call result cap ('up to 100 results'), which the agent cannot get from the schema. It does not cover error behavior or rate limits, keeping it below 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 short sentences, each carrying distinct information (scope, return fields, filters/limits, price), with the highest-value facts front-loaded. No filler or redundant restatement of the title.
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 search tool with no output schema, the description supplies the return field set (title, URL, snippet, author, source, publish date) and the billing model, which is what an agent needs to call and cost-justify it. Pagination beyond the 100-result cap and result-ordering are not addressed.
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 each parameter is already documented in the schema, including defaults and the enum for time_published. The description only restates the filter categories and the 100-result ceiling, adding no syntax or format detail beyond structured data.
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 ('Search news articles') plus the scope ('from thousands of sources worldwide'), which separates it from social-media siblings like search_twitter and search_bluesky. It never names the nearest alternative (search_web) to sharpen the distinction, so it 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 filter dimensions (time period, source domain, country, language) imply the contexts in which the tool is useful, but there is no explicit when-to-use vs. when-not guidance and no named alternative such as search_web for non-news content. Usage must be inferred from the parameter list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_placesSearch Google PlacesARead-onlyInspect
Search Google Maps places (businesses and points of interest) by free-text query. Returns place_id, name, address, phone, website, rating, review count, opening hours and coordinates. Optionally bias results around lat/lng with zoom. Up to 10 results per page. Pass a place_id to place_details, place_reviews or place_photos. Billed $0.01 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Center latitude for geographic bias (use with lng) | |
| lng | No | Center longitude for geographic bias (use with lat) | |
| zoom | No | Map zoom level 1-20 (default: 13). Smaller widens radius. | |
| pages | No | Number of pages, 1-20 (default: 1). Each page returns up to 10 results and is billed as one request. | |
| query | Yes | Search keyword, e.g. "coffee shops brooklyn" (max 500 characters) | |
| country | No | 2-letter country code (default: "us") | us |
| language | No | 2-letter language code (default: "en") | en |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=true, destructiveHint=false), but the description adds material behavior beyond them: per-page billing ('Billed $0.01 per page'), the 10-results-per-page cap, and the fact that each requested page is billed separately. It does not cover error handling, rate limits, or empty-result behavior, so it falls short of 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?
Six tight sentences, front-loaded with the core verb+resource, then returns, then optional bias, then limits, then routing, then cost. No filler, no restatement of the name, and every clause carries information an agent needs.
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 burden of describing returns and does so thoroughly (place_id, name, address, phone, website, rating, review count, opening hours, coordinates), plus pagination and billing. It omits failure modes and any note on what happens when zero places match, which is the only gap for a 7-parameter open-world search.
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 each of the 7 parameters is already documented in the schema (lat/lng pairing, zoom range, pages 1-20, query max length, country/language codes). The description reinforces the lat/lng+zoom bias concept and the per-page result cap but adds no new syntax, constraints, or defaults beyond the schema — 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 ('Search Google Maps places (businesses and points of interest) by free-text query'), immediately distinguishing it from generic web search siblings like search_web and from the detail siblings place_details/place_reviews/place_photos. An agent can tell exactly what this tool returns without opening the 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?
The description gives clear usage context — free-text query search, optional geographic bias via lat/lng with zoom — and routes follow-up work explicitly ('Pass a place_id to place_details, place_reviews or place_photos'), which is genuine workflow guidance. It stops short of explicit when-not-to-use guidance (e.g. versus search_web or search_facebook_locations), so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_redditSearch Reddit PostsARead-onlyInspect
Search Reddit posts by keyword. Returns title, URL, subreddit, author and a content snippet. Sort by newest, relevance, hot or top, and limit to a time window. 20 posts per page. Use search_reddit_comments to search comment text. Billed $0.003 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1-12 (default: 1). 20 posts per page | |
| query | Yes | Search keyword (max 500 characters) | |
| sort_by | No | Sort order: "most_recent", "relevance", "hot", or "top" | most_recent |
| posted_ago | No | Only posts from this period: "1h", "24h", "7d", "30d", or "12m" (default: all time). Works with every sort_by | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so safety is covered structurally. The description adds genuinely useful context the annotations cannot carry: the returned fields, the fixed 20-posts-per-page pagination, the billing rate ($0.003 per request), and a surcharge for sentiment analysis. It omits failure modes, rate limits, and whether page 12 is a hard ceiling on result depth.
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 tight sentences, zero filler: purpose first, then return shape, then option surface, then the sibling hand-off and cost. Every sentence carries information an agent would otherwise have to infer.
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 returned fields and adds pricing and pagination, so an agent knows what it gets and what it pays. The only real gap is get_sentiment, which modifies results and cost but is discussed only in the schema, and the description never notes search_reddit_users as a related alternative.
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 every parameter, including the enums for sort_by and posted_ago and the 1-12 page range. The description reinforces sort and time-window behavior but adds no syntax or format detail beyond the schema, and one naming drift ('newest' vs the schema's 'most_recent') risks mild confusion rather than adding clarity. 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 ('Search Reddit posts by keyword') and explicitly carves out the comment-search case by naming search_reddit_comments, which is the closest sibling. An agent can distinguish it from search_reddit_comments and search_reddit_users without opening any 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?
Gives explicit routing guidance for one alternative ('Use search_reddit_comments to search comment text') and describes the adjustable dimensions (sort order, time window). It stops short of full when/when-not coverage: nothing steers the agent away from this tool when it actually wants users, subreddits, or a non-Reddit source.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_reddit_commentsSearch Reddit CommentsARead-onlyInspect
Search Reddit comments by keyword. Returns comment text, subreddit, author, date and a link for the parent post (its Reddit thread, or the article, image or video a link post shares). Use search_reddit for posts. Billed $0.003 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-10 (default: 1) | |
| query | Yes | Search keyword (max 500 characters) | |
| sort_by | No | Sort order: "most_recent", "relevance", or "top" | most_recent |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, open-world). The description adds genuinely new context not in the structured fields: the billing rate of $0.003 per page, which matters for a paid search, and the composition of each result including the parent-post link semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler: capability and return shape first, sibling routing second, cost last. Every sentence earns its place and nothing is repeated from 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 no output schema, the description compensates by naming the returned fields, and it also surfaces the per-page cost and the alternative tool. Minor gaps remain around rate limits or pagination behavior across the 1-10 page range, but the tool is callable correctly from what is given.
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 defaults, ranges and an enum all documented inline, so the schema does the heavy lifting. The description adds no syntax or format detail beyond what the schema already provides, making the baseline 3 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 states a specific verb and resource ('Search Reddit comments by keyword') and even enumerates the returned fields. It explicitly distinguishes itself from the sibling search_reddit, so an agent can route between the two without opening either 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?
'Use search_reddit for posts' gives an explicit alternative and the condition that selects it. It stops short of covering paging or sort trade-offs, but the primary routing decision is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_reddit_usersSearch Reddit UsersARead-onlyInspect
Search Reddit users by keyword. Returns username, user ID, bio, post and comment karma, account creation date, moderator status and profile link. Billed $0.003 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search keyword (max 500 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and destructiveHint, so the safety profile is covered. The description adds genuinely new behavioral context the annotations cannot carry: per-request cost ($0.003) and the exact shape of what is returned, which lets an agent judge cost/value before invoking.
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 sentences, front-loaded with the action, then the return payload, then the cost. No filler and no repetition 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?
No output schema exists, but the description enumerates the returned fields, which compensates well. Remaining gaps are minor for a single-param search tool (no pagination, result-limit or relevance-ordering notes).
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?
With one parameter at 100% schema description coverage, the schema already documents the query and its 500-character cap. The description adds nothing beyond 'by keyword', so baseline 3 is 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?
States a specific verb (search) and resource (Reddit users) with the search dimension (keyword). It implicitly distinguishes itself from search_reddit (content) and search_reddit_comments, but never names or contrasts with those siblings 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?
There is no when-to-use guidance, no mention of when to prefer this over search_reddit or search_reddit_comments, and no stated prerequisites. The returned-field list hints at user-lookup scenarios but never states them as guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_substackSearch Substack PostsARead-onlyInspect
Search Substack posts by keyword across every publication. Returns post title, subtitle, author, publication, publication date, engagement (likes, comments, restacks), paywall status, word count, cover image and tags, plus the publications related to the query. Limit to a time window from the past day to the past year. Billed $0.003 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1-101 (default: 1). 16-20 posts per page | |
| query | Yes | Search keyword (max 500 characters) | |
| language | No | Two-letter language code, e.g. es, to rank posts in that language first | |
| posted_ago | No | Only posts from this period: "24h", "7d", "30d", or "12m" (default: all time) | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, openWorldHint, destructiveHint=false), so the bar is lower. The description adds real value beyond them: the full return payload, paywall/engagement fields, the time-window capability, and notably the billing rate ($0.003 per request), which is useful cost context an agent would otherwise lack.
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 sentences that are front-loaded with the core purpose, followed by return shape and cost. Every clause carries information (scope, fields, time limit, billing) 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?
With no output schema, the description compensates well by enumerating return fields and noting cost and time window. It omits pagination behavior (16-20 posts per page, page cap 101) which lives only in the schema, but otherwise everything needed to call the tool correctly is present.
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 schema already documents query, language, posted_ago, page, and get_sentiment. The description echoes the time window ("past day to past year") and return fields but adds no syntax or format detail beyond the schema, so it does not exceed the 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?
States a specific verb and resource ("Search Substack posts by keyword") and scopes it to "across every publication," which cleanly separates it from siblings like search_substack_notes, search_substack_publications, and search_substack_users. An agent can identify the correct tool without opening any 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?
The description implies the search context (keyword search of posts across all publications) but gives no explicit when-to-use versus when-not guidance or routing to the four sibling search_* substack tools. Usage is inferable but not stated, matching the 'implied usage' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_substack_notesSearch Substack NotesARead-onlyInspect
Search Substack Notes by keyword. Returns each note's text, author, date, engagement (likes, replies, restacks) and any quoted post or note, newest first or top first. Up to 12 notes per page. Billed $0.003 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-250 (default: 1). Each page returns up to 12 notes; you are billed per page returned. | |
| query | Yes | Search keyword (max 500 characters) | |
| sort_by | No | Sort order: "most_recent" or "top" | most_recent |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, open-world), so the bar is lower. The description still adds valuable behavior beyond them: per-page billing at $0.003, a 12-notes-per-page cap, and the returned fields including engagement and quoted posts. This is meaningful cost and shape disclosure.
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 tight sentences, front-loaded with the core action, followed by return shape, sort/page behavior, and cost. Every sentence carries distinct information 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?
With no output schema, the description compensates by enumerating returned fields, sort ordering, page size, and billing. Combined with annotations covering the safety profile and full schema coverage, an agent has everything needed to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds marginal meaning by restating the sort semantics ('newest first or top first') and the page size/billing unit ('Up to 12 notes per page'), reinforcing rather than duplicating 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 uses a specific verb ('Search') and a clearly bounded resource ('Substack Notes'), distinguishing it from siblings like search_substack (posts), search_substack_users, and substack_note_details. An agent can identify the target entity without opening the 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?
Usage is implied by 'Search Substack Notes by keyword' and the sort options, but there is no explicit when-to-use/when-not guidance and no routing to alternatives such as substack_note_details or substack_user_activity. The agent must infer the appropriate case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_substack_publicationsSearch Substack PublicationsARead-onlyInspect
Search Substack publications by name or keyword. Returns name, URL, tagline, author, subscriber badge, paid-subscriber band, prices, bestseller tier and language for each publication. 20 per page, up to 4 pages. Billed $0.003 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1-4 (default: 1). 20 publications per page | |
| query | Yes | Search keyword (max 500 characters) | |
| language | No | Two-letter language code, e.g. es, to rank publications in that language first |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, open-world behavior, so the safety profile is covered. The description adds genuinely useful non-annotation context: the exact result fields returned, the pagination cap (20 per page, up to 4 pages = 80 results), and the billing rate ($0.003 per request).
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 sentences: purpose, then return payload, then limits and cost. The field enumeration is slightly long but each sentence carries distinct information 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?
With no output schema, the description correctly compensates by enumerating the returned fields, and it also covers pagination limits and per-request cost. An agent has everything needed to call and budget the tool; only cross-tool routing guidance is 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 coverage is 100%, so all three parameters are already documented in the schema. The description's '20 per page, up to 4 pages' overlaps with the page parameter's schema description and adds nothing new about the query or language parameters. Baseline 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?
States a specific verb and resource ('Search Substack publications by name or keyword') that cleanly separates it from post/note/user search siblings by resource type. However, it never names the closest alternatives (search_substack, search_substack_users), so the differentiation requires the agent to infer it from the noun.
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, no alternatives mentioned, and no prerequisites. With ~90 sibling tools including several Substack search variants, the description leaves the agent to figure out on its own when this is the right tool over search_substack or search_substack_users.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_substack_usersSearch Substack UsersARead-onlyInspect
Search Substack authors and publication profiles by name or keyword. Returns handle, display name, bio, follower count, subscriber badge, bestseller tier and primary publication for each profile. Billed $0.003 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1-4 (default: 1). 20 profiles per page | |
| query | Yes | Search keyword (max 500 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=true, destructiveHint=false), so the description's main added value is the billing rate of $0.003 per request, which is genuinely useful operational context. It also enumerates the returned fields, compensating for the absence of an output schema. Pagination caps are left to the schema.
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 sentences, all front-loaded: purpose first, then return shape, then cost. No filler or repetition. Slightly padded by the long field enumeration, but each element carries 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 read-only two-parameter search with no output schema, the description supplies the return-field list and pricing that the structured fields cannot. The remaining gap is routing guidance against the many sibling Substack search tools, which is the one thing an agent still has to guess.
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% – both the 500-character query limit and the 1-4 page range with 20 profiles per page are documented in the schema itself. The description adds nothing about parameter syntax or format beyond what the schema provides, 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 states a specific verb ('Search') and resource ('Substack authors and publication profiles'), and names the match key (name or keyword). It enumerates the returned fields, which lets an agent distinguish it from generic search tools. However, the phrase 'publication profiles' blurs the boundary with the sibling search_substack_publications, and no sibling is explicitly excluded.
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?
No when-to-use or when-not-to-use guidance is given, and no alternative sibling (e.g. search_substack, search_substack_notes, search_substack_publications) is named. The agent must infer the appropriate context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_threadsSearch Threads PostsARead-onlyInspect
Search Threads (Meta) posts by keyword. Returns post text, author, engagement metrics (likes, replies, reposts, quotes, reshares), media, link previews and permalinks. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search keyword (max 500 characters) | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds real value beyond that: the exact result payload (post text, author, engagement metrics, media, link previews, permalinks) and a concrete billing rate of $0.006 per request. It omits auth, rate limits and pagination, keeping 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 short sentences, front-loaded with purpose, then payload, then cost. No filler or repetition. The engagement-metrics parenthetical is dense but informative, and the price note is appropriately placed last.
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 takes on the burden of describing return fields, and it does so thoroughly. For a simple two-parameter search tool with full schema coverage and safety annotations, the only meaningful gap is pagination/result-limit behavior and how it relates to the sibling thread tools.
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 the query length limit and the get_sentiment surcharge are already documented in the schema. The description body adds no parameter-level detail of its own, which matches the baseline 3 for full schema coverage.
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 Threads (Meta) posts by keyword'), clearly separating a post search from a user search such as search_threads_users. It also names the platform to disambiguate from search_twitter/search_bluesky. It stops short of explicitly routing the agent away from any sibling, so it sits at a strong 4 rather than 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?
There is no when-to-use or when-not-to-use guidance, and no alternatives are named. The agent gets no help deciding between this, search_threads_users, threads_user_posts, or the other platform search tools. Usage is only inferable from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_threads_usersSearch Threads UsersARead-onlyInspect
Search Threads (Meta) users by keyword. Returns username, display name, user ID, verification and privacy status and profile picture. Use threads_user_profile for one account's full profile. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search keyword (max 500 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, non-destructive and open-world behavior, so the bar is lower. The description adds two things annotations cannot: the returned field set (username, display name, user ID, verification/privacy status, picture) and the per-request billing cost of $0.006, which is materially useful for call budgeting.
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 sentences, front-loaded with the core action, followed by return fields and the disambiguating alternative. No filler; each sentence carries distinct 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?
With no output schema, the description compensates by enumerating the returned fields, and it adds cost and alternative-tool context. A brief note on result limits or pagination would make it fully complete, but it is sufficient to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100%, so the schema already documents the keyword and its 500-character limit. The description restates 'by keyword' without adding format or syntax guidance, 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 (Search) plus resource (Threads users) and scoping mechanism (by keyword), and explicitly contrasts with threads_user_profile for single-account lookups. An agent can distinguish it from search_threads and threads_user_profile without opening schemas.
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?
Explicitly routes single-profile lookups to threads_user_profile, which is the key alternative. It does not state exclusions relative to the other search_* siblings (e.g., search_threads for posts), but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tiktokSearch TikTok VideosARead-onlyInspect
Search TikTok videos by keyword. Returns title, URL, engagement metrics (plays, likes, comments, shares, downloads), author metadata, music and publish date. Filter by publish time and region; sort by relevance, newest or most liked. Use tiktok_video_details for one video's full details. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-10 (default: 1) | |
| query | Yes | Search keyword (max 500 characters) | |
| region | No | 2-letter region code, e.g. "us", "gb", "jp" | |
| sort_by | No | Sort order: "relevance", "most_recent", or "most_liked" | relevance |
| publish_time | No | Time filter: 0=ALL, 1=24h, 7=week, 30=month, 90=3months, 180=6months | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, open-world and non-destructive safety, so the bar is lower. The description adds real behavioral context beyond them: per-page billing ($0.006), a surcharge for get_sentiment, and the full shape of returned data. It doesn't discuss rate limits or result caps, keeping it just under 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 dense sentences with no filler: purpose and returns first, then the sibling routing, then cost. Every clause carries information an agent needs.
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 present, the description compensates by enumerating return fields (title, URL, metrics, author, music, publish date) and disclosing cost. For a 6-parameter search tool this covers everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents every parameter including enum values and defaults. The description restates the sort options and filters but adds no syntax or format detail beyond what the schema provides, 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+resource ('Search TikTok videos by keyword') and enumerates the returned fields, so the agent knows exactly what comes back. It explicitly distinguishes itself from tiktok_video_details, which is the nearest sibling.
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?
Names the alternative ('Use tiktok_video_details for one video's full details'), giving a clear routing condition for the search-vs-detail split. It stops short of stating when NOT to search (e.g., single known URL), so it is not fully exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tiktok_hashtagsSearch TikTok HashtagsARead-onlyInspect
Search TikTok hashtags by keyword. Returns each hashtag's numeric ID, name, video count, total views and cover image, 30 per page, most relevant first. Use tiktok_hashtag_videos to get a hashtag's videos. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-1000 (default: 1). Each page returns up to 30 hashtags. | |
| query | Yes | Search keyword (max 500 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, openWorld, non-destructive). The description adds genuinely useful context beyond them: the exact return fields, the 30-per-page page size, most-relevant ordering, and a per-page billing cost of $0.006. Rate/behavior details are strong; only the absence of pagination/cursor behavior 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 sentences with zero waste: purpose first, then return shape and pagination, then the alternative sibling and cost. Every sentence 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 description fully names the return fields, count, and ordering, and also discloses cost and the relevant sibling relationship. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, setting the baseline at 3. The description reinforces the page size ('30 per page') and ordering of results, but adds no format or syntax detail for 'query' 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?
States a specific verb (Search) and resource (TikTok hashtags by keyword), and explicitly distinguishes itself from the sibling tiktok_hashtag_videos. An agent can route correctly without opening any 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?
Explicitly names a related sibling and the condition that selects it ('Use tiktok_hashtag_videos to get a hashtag's videos'), which clarifies the scope boundary. It gives no when-not guidance or prerequisites for this tool itself, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tiktok_usersSearch TikTok UsersARead-onlyInspect
Search TikTok users by keyword. Returns username, nickname, bio, follower and following counts, total likes, video count and verification status. Use tiktok_user_profile for one account's full profile. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-10 (default: 1) | |
| query | Yes | Search keyword (max 500 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/openWorldHint/destructiveHint=false, so the safety profile is covered. The description adds genuinely non-structured context: the precise result fields and the per-page billing rate ($0.006), which is cost behavior an agent should know before setting pages. It does not describe rate limits or result ordering.
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 sentences: purpose and return payload first, then the sibling disambiguation, then cost. Every sentence earns its place 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?
There is no output schema, but the description compensates by enumerating the returned fields, and it discloses the cost implication of the pages parameter. Nothing an agent needs to invoke this correctly is missing for a two-parameter paginated search.
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 'query' and 'pages' are already documented with limits (max 500 chars, 1-10 pages, default 1). The description adds no syntax, format, or operator guidance beyond the schema, 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+resource ('Search TikTok users by keyword') and enumerates the exact fields returned, so the agent knows precisely what it gets without opening a schema. It also distinguishes itself from the sibling tiktok_user_profile, which is a different scope (single full 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?
Explicitly routes the agent: use this for keyword discovery and 'tiktok_user_profile for one account's full profile.' That is a clear alternative with a selection condition. It stops short of naming exclusions for the sibling search_tiktok (video search), but the usage context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_trustpilot_categoriesSearch Trustpilot CategoriesARead-onlyInspect
Search Trustpilot categories by keyword. Returns up to 6 fuzzy matches with category_id and name; it never returns zero matches, so check the names fit. Pass a category_id to trustpilot_category_companies or trustpilot_category_details. Billed $0.005 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Keyword (max 200 characters), e.g. 'bank' or 'shop' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, open-world), but the description adds behavior they cannot express: results are capped at 6 fuzzy matches, the tool never returns zero matches (a genuinely surprising quirk that changes how an agent interprets output), and each request is billed $0.005.
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 sentences, front-loaded with purpose, then result semantics, then next-step routing and cost. No filler; each sentence supplies a distinct decision-relevant fact.
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 (up to 6 matches, category_id + name fields, never empty) plus cost and the downstream routing path. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the query param already documents max length and examples, so baseline is 3. The description adds real semantic value by disclosing that the query is matched fuzzily and that the returned category_id is the handoff key for other tools, which the schema does not say.
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+resource ('Search Trustpilot categories') and immediately scopes it with 'by keyword'. It also distinguishes itself from the sibling cluster by naming search_trustpilot_companies' downstream partners (trustpilot_category_companies / trustpilot_category_details), so an agent can place it in the workflow without opening another 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?
Gives clear usage context: call it to obtain a category_id, then pass that id to the two named follow-up tools, and 'check the names fit' since matches are fuzzy. It does not state when NOT to use it (e.g. vs. search_trustpilot_companies for company lookups), so it falls short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_trustpilot_companiesSearch Trustpilot CompaniesARead-onlyInspect
Search Trustpilot companies by name or keyword. Returns business_unit_id, name, domain, website, Trustpilot URL, logo, TrustScore, stars, review count, categories and location, plus matching categories. Filter by minimum rating and review count. 10 results per page. Use trustpilot_company_reviews for a company's reviews. Billed $0.005 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1-500 (default: 1). Each page returns up to 10 results. | |
| query | Yes | Company name or keyword (max 500 characters) | |
| min_rating | No | Minimum TrustScore | |
| min_review_count | No | Minimum number of reviews |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, destructiveHint=false, openWorldHint). The description adds genuinely non-structured context: 10 results per page and a $0.005 per-request billing rate, which matters for cost-aware agent planning. It stops short of describing pagination limits or rate limiting, so 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?
Front-loaded with the core action, then filters, page size, alternative tool, and cost in a compact sequence. The enumerated return-field list is the one slightly bloated part, but it substitutes for a missing output schema and so earns its 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, the description usefully enumerates the returned fields (business_unit_id, name, domain, TrustScore, stars, review count, categories, location) and covers paging and cost. An agent has everything needed to call and interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with enum values documented for min_rating and min_review_count, so the schema carries parameter meaning. The description's 'filter by minimum rating and review count' restates that rather than adding syntax or behavioral nuance, 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 (search) and resource (Trustpilot companies) plus the query semantics ('by name or keyword'), which separates it from search_trustpilot_categories and trustpilot_category_companies. An agent can identify the tool without opening the 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?
Explicitly routes the agent to trustpilot_company_reviews when it wants a company's reviews, which is a real disambiguation. It does not, however, contrast itself with the other Trustpilot siblings (search_trustpilot_categories, trustpilot_category_companies), so it falls short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_twitterSearch Twitter PostsARead-onlyInspect
Search Twitter/X posts by keyword; X search operators work in query. Returns tweet text, author username, URL, date and engagement metrics (likes, retweets, replies, views). Filter by time window (posted_ago) or date range. Use twitter_user_tweets for one account's timeline. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-20 (default: 1) | |
| query | Yes | Search keyword (max 500 characters). Supports X search operators | |
| sort_by | No | Sort order: "most_recent" or "relevance" | most_recent |
| end_date | No | Only posts up to and including this date (YYYY-MM-DD, UTC). Not with posted_ago | |
| posted_ago | No | Only posts from this period: "1h", "24h", "7d", "30d", or "12m" (default: all time). Works with both sort orders | |
| start_date | No | Only posts from this date onward (YYYY-MM-DD, UTC). Not with posted_ago | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, so safety is covered. The description adds genuinely new behavioral context: the returned fields (text, author, URL, date, engagement metrics), the operator support, and the per-page cost of $0.006, which the agent needs for cost budgeting. Pagination limits live in the schema rather than the prose.
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?
Five tight clauses, front-loaded with purpose, then returns, then filtering, then the alternative, then price. No filler; each sentence carries distinct decision-relevant 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?
With no output schema, the description steps in to enumerate the return fields and the sentiment add-on implicitly via the schema, plus pricing. For a 7-param read-only search tool, an agent has everything needed to call it and anticipate cost.
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 every parameter is already documented with format, enums and defaults. The description reinforces the query-operator support and time-window/date filtering but adds no syntax or constraint detail beyond the schema, which is the expected 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 opens with a specific verb+resource ('Search Twitter/X posts by keyword') and immediately clarifies the query dialect ('X search operators work in query'). It explicitly names the sibling it is not (twitter_user_tweets for a single timeline), so an agent can route correctly without inspecting schemas.
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 selection rule: use this for keyword search, use twitter_user_tweets for one account's timeline. That routes the main ambiguity. It stops short of stating exclusions (e.g., that this is not for user discovery, unlike search_twitter_users), so it stays just under full marks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_twitter_usersSearch Twitter UsersARead-onlyInspect
Search Twitter/X users by keyword. Returns username, display name, bio, follower and following counts, verification status and profile image. Use twitter_user_profile when you know the username. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-20 (default: 1) | |
| query | Yes | Search keyword (max 500 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, openWorld, non-destructive), so the description's job is to add context — and it does, disclosing a per-page billing cost of $0.006, which is not inferable from any structured field. It does not discuss rate limits, result caps, or pagination behavior beyond the cost note.
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 sentences with zero filler: purpose, return payload, alternative, and cost. The core purpose is front-loaded in the first clause.
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 returned fields, and it covers the routing decision and cost model. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both 'query' and 'pages' are already documented in the schema. The description adds only indirect meaning to 'pages' via the per-page billing statement, without 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 verb and resource ('Search Twitter/X users by keyword') and enumerates the returned fields, so the agent knows exactly what it gets. It also explicitly names the sibling it is not, twitter_user_profile, making selection 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?
Gives an explicit alternative and the condition that selects it: 'Use twitter_user_profile when you know the username.' That is exactly the when-to-use-this-vs-that guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_webGoogle Web SearchARead-onlyInspect
Search the web through Google organic results. Returns title, URL, snippet, source and domain for each result. Google operators (site:, intitle:) work in query; target by country, language, city and device, filter by time, and optionally include Google's AI Overview. 10 results per page. Billed $0.004 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| time | No | Time filter: "any", "hour", "day", "week", "month", or "year" | any |
| pages | No | Number of result pages to fetch, 1-10 (default: 1). 10 results per page. | |
| query | Yes | Search keyword (max 500 characters). Supports Google advanced operators (site:, inurl:, intitle:, etc.) | |
| device | No | Device profile: "desktop" or "mobile" | desktop |
| country | No | 2-letter country code (default: "us") | us |
| language | No | 2-letter language code (default: "en") | en |
| location | No | City-level geo location (e.g. "London,England,United Kingdom") | |
| include_ai_overview | No | Include Google AI Overview when available (+$0.002 flat surcharge) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavior the annotations cannot convey: cost ($0.004 per page, +$0.002 AI Overview surcharge) and a fixed 10 results per page. It stops short of describing rate limits or result truncation 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?
Front-loaded with purpose and return shape, and the pricing sentence earns its place. The middle sentence restates parameter capabilities already in the schema, which is the only wasted space in an otherwise tight description.
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 8 parameters, no output schema, and a mutation-free read operation, the description covers the essentials: what comes back, unit of pagination, targeting dimensions, and cost. It lacks only guidance on choosing among the many sibling search_* tools, which matters given the crowded namespace.
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 all 8 parameters including enums and defaults; baseline is 3. The description reinforces operator support and page size, but adds no syntax, format, or interaction detail beyond the schema (e.g. how pages interacts with billing).
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 ('Search the web through Google organic results') and scopes it to organic web results, which separates it from sibling tools like search_news, search_forums, and google_ai_mode. It also names the returned fields, so an agent knows what it gets without an output 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?
It implies usage through capability statements (operators, geo/language/device targeting, time filter, AI Overview) but never says when to pick this over search_news, search_forums, or google_ai_mode. There are no exclusions or alternative-routing guidance, so selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_youtubeSearch YouTube VideosARead-onlyInspect
Search YouTube videos by keyword. Returns title, URL, channel, publish date, description, view count, length and thumbnail. Filter by upload date. Use youtube_video_details for one video's full metadata. Billed $0.005 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-20 (default: 1) | |
| query | Yes | Search keyword (max 500 characters) | |
| upload_date | No | Filter by upload date: "last_hour", "today", "this_week", "this_month", or "this_year" | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), and the description adds genuinely useful non-annotation context: billing at $0.005 per page and the fields returned. It does not discuss rate limits, pagination cost scaling (pages 1-20), or error behavior, keeping 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?
Four short sentences, front-loaded with the purpose and followed by return fields, the alternative routing, and pricing. Dense but no filler; the return-field list is the only slightly expendable part since no output schema exists and it serves completeness.
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 it discloses the per-page cost, which matters for the pages parameter. It leaves the sentiment surcharge and pagination behavior to the schema, but nothing critical to calling the tool 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 description coverage is 100%, so query, pages, upload_date and get_sentiment are already documented with enums and defaults. The description only restates the keyword and upload-date filter, adding no syntax or format detail beyond the schema, which is the expected 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?
States a specific verb (search) and resource (YouTube videos) plus the matching mechanism (by keyword), and explicitly names the sibling youtube_video_details for the single-video case. An agent can distinguish it from search_youtube_channels and youtube_video_details without opening any 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?
"Use youtube_video_details for one video's full metadata" gives an explicit alternative and the condition that selects it. It does not state when-not to search at all (e.g. broad vs. narrow queries) or mention sibling search_youtube_channels, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_youtube_channelsSearch YouTube ChannelsARead-onlyInspect
Search YouTube channels by keyword. Returns channel name, description, subscriber count and thumbnail. Use youtube_channel_details for one channel's full stats. Billed $0.005 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-20 (default: 1) | |
| query | Yes | Search keyword (max 500 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context beyond annotations by disclosing the return fields and the billing cost of $0.005 per page, which is important for call planning.
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 three tightly written sentences with no filler. It front-loads the core action, then supplies the alternative tool and pricing details efficiently.
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 two-parameter search tool with complete schema descriptions and annotations covering safety, the description is sufficiently complete. It covers purpose, sibling routing, return fields, and cost, so an agent has what it needs to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented in the schema, including the pages range and query length limit. The description mentions keyword searching but does not add syntax, format, or pagination details beyond what the schema provides, 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 states a specific verb and resource: 'Search YouTube channels by keyword,' and immediately distinguishes the tool from the single-channel sibling by naming youtube_channel_details. An agent can understand both the operation and its scope without opening the 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?
It explicitly names the alternative for a common adjacent use case: 'Use youtube_channel_details for one channel's full stats.' This gives clear routing between searching multiple channels and retrieving one channel's detailed information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
substack_category_feedSubstack Category FeedARead-onlyInspect
Get a Substack category's feed: the posts and notes Substack shows for the topic, top, newest or posts only. Each item is tagged note or post. About 11 items per page. Billed $0.003 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-250 (default: 1). Each page returns about 11 items; you are billed per page returned. | |
| sort_by | No | Sort order: "top", "most_recent" or "posts" (posts only, no notes) | top |
| category | Yes | Category ID or slug, e.g. 4 or technology. See https://apidirect.io/docs/substack-category-ids |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and destructiveHint=false, so the safety profile is covered. Beyond that, the description adds genuinely useful operational context: about 11 items per page, the $0.003 per-page billing rate, and that each item is tagged note or post. It still omits pagination limits and any auth/API-key requirements.
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 sentences, front-loaded with the core action and scope, and nothing is padding. The billing detail duplicates the pages parameter description in the schema, a minor 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?
For a read-only feed tool with no output schema and full annotation coverage, the description supplies the key extras an agent needs: item shape (tagged note or post), approximate page size, and cost. It does not describe the fields inside each item or rate-limit behavior, which keeps it short of fully complete.
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 pages, sort_by and category, making a 3 the correct baseline. The description echoes the sort modes and the per-page item count but adds no syntax or format detail beyond the schema; note the description paraphrases the enum value "most_recent" as "newest".
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 ("Get a Substack category's feed") and scopes it to the posts and notes shown for a topic, which distinguishes it from the search_* siblings and from substack_category_publications. It stops short of naming any sibling explicitly, so an agent must infer the boundary rather than being told 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 implies browsing use via the sort modes ("top, newest or posts only"), which is enough for an agent to understand the feed-browsing intent. However, it gives no when-to-use guidance relative to alternatives such as search_substack or substack_trending, and no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
substack_category_publicationsSubstack Category PublicationsARead-onlyInspect
Get a Substack category's leaderboard: the top publications ranked by Substack, each with its full details (subscriber badge, paid band, prices, author) and rank. Billed $0.003 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1), 25 publications per page. Up to 21 pages; rising 10; bestsellers and podcasts 4 | |
| tier | No | all, paid or rising (bestsellers: rising; podcasts: all or paid) | |
| category | Yes | Category ID or slug, e.g. 4 or technology (bestsellers and podcasts for the site-wide boards). See https://apidirect.io/docs/substack-category-ids |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is set. The description adds genuinely useful context beyond that: the returned fields (subscriber badge, paid band, prices, author) and the per-request billing cost of $0.003, which is not in any structured field. It omits pagination behavior, but the schema covers that.
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, tightly front-loaded with the core action and return content, followed by the cost note. No filler or redundancy, though it could be marginally tighter.
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 listing tool with full schema coverage and no output schema, the description adequately conveys what is returned, its ranking semantics, and the cost. The main residual gap is the absence of sibling routing guidance, which is a usage concern rather than a completeness one.
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 page, tier and category are already fully documented in the schema, including enums and page limits. The description adds no further parameter semantics, making the baseline 3 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?
States a specific verb (Get) and resource (a Substack category's leaderboard of top publications ranked by Substack), plus what each entry contains. It clearly conveys the function, though it never names or contrasts with the close sibling substack_category_feed, leaving the agent to infer the leaderboard-vs-feed distinction.
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 'leaderboard' framing; there is no explicit when-to-use statement and no mention of alternatives like search_substack_publications or substack_category_feed. The agent must infer that this is the ranked-listing variant rather than a search or feed tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
substack_note_detailsSubstack Note DetailsARead-onlyInspect
Get a Substack Note by URL or ID, with its replies. Returns the note text, author, date, likes, replies and restacks, any quoted post or note, and the reply thread nested to any depth (provide exactly one of url, note_id). Billed $0.003 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Note URL, e.g. https://substack.com/@hamish/note/c-355659691 (max 500 characters). Provide either url or note_id. | |
| note_id | No | Numeric note ID, with or without the c- prefix. Provide either url or note_id. | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/non-destructive/openWorld, so the safety profile is covered. The description adds meaningful non-structured context: the reply thread is nested to any depth, quoted notes/posts are included, and there is a $0.003 per-request cost — billing being valuable operational context an agent wouldn't otherwise know.
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?
A single dense paragraph that front-loads purpose, then return contents, then the calling constraint and price. Every clause carries information, though the return-value enumeration is slightly packed.
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-shape burden and does so thoroughly (note text, author, date, likes, replies, restacks, quoted post, nested reply thread). It also covers the calling constraint and billing, leaving nothing essential for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters (url, note_id, get_sentiment) are already documented in the schema. The description reinforces the url/note_id mutual exclusivity but adds no semantics beyond the schema, making the baseline 3 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?
States a specific verb (Get) and resource (a Substack Note) with clear scope, and the mention of 'replies' and 'quoted post' distinguishes it from sibling note/list tools like search_substack_notes. An agent can immediately tell this is a single-note detail endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for invocation ('provide exactly one of url, note_id'), which tells the agent how the tool must be called. It doesn't explicitly contrast with alternatives like substack_post_details or search_substack_notes, but the use case (fetch one note) is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
substack_post_commentsSubstack Post CommentsARead-onlyInspect
Get the full comment thread of a Substack post, nested. Returns every comment with text, author, date, likes, replies and restacks, replies nested under their parent to any depth, sorted by relevance, newest first or oldest first (provide url, post_id, or publication together with slug). Billed $0.003 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Post URL, e.g. https://www.lennysnewsletter.com/p/all-of-the-lenny-and-friends-summit (max 500 characters). Provide url, post_id, or publication and slug. | |
| slug | No | Post URL slug, e.g. all-of-the-lenny-and-friends-summit, used together with publication. | |
| post_id | No | Numeric post ID, as returned in post_id. Provide url, post_id, or publication and slug. | |
| sort_by | No | Sort order: "relevance" (best first), "most_recent" or "oldest" | relevance |
| publication | No | Publication subdomain, host or URL, used together with slug. | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so safety is covered. The description adds genuinely new behavioral context the annotations lack: cost ('$0.003 per request'), unbounded nesting depth, and the available sort behaviors. These are useful operational facts beyond structured 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?
Content is front-loaded with the purpose and return shape, followed by sorting, identifier guidance and cost. It is dense but every clause carries information; only minor tightening is possible. No filler or repetition.
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 returned fields (text, author, date, likes, replies, restacks) and the nesting structure. Safety and cost are covered. For a read-only retrieval tool this is close to complete, though pagination 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?
Schema description coverage is 100%, so every parameter is already documented in the schema including the identifier combinations, sort_by enum and get_sentiment. The description restates the identifier trio and sort order but adds no syntax or format detail 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?
States a specific verb and resource: 'Get the full comment thread of a Substack post, nested.' The scope is unambiguous and clearly distinct from a post-details or likes tool. However, it never explicitly names which sibling (e.g. substack_post_details, substack_post_likes) it is not, so sibling differentiation 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?
The parenthetical 'provide url, post_id, or publication together with slug' tells the agent the alternative ways to identify the target, which is a form of input guidance. But there is no guidance on when to prefer this tool over adjacent ones (e.g. post_details) and no exclusions. Usage is implied by the resource name rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
substack_post_detailsSubstack Post DetailsARead-onlyInspect
Get a Substack post by URL, ID, or publication and slug. Returns the full body as HTML and plain text (the free preview for paid posts), title, subtitle, author, publication, publication date, engagement, paywall status, word count, cover image, podcast audio and tags (provide url, post_id, or publication together with slug). Billed $0.003 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Post URL, e.g. https://www.lennysnewsletter.com/p/all-of-the-lenny-and-friends-summit (max 500 characters). Provide url, post_id, or publication and slug. | |
| slug | No | Post URL slug, e.g. all-of-the-lenny-and-friends-summit, used together with publication. | |
| post_id | No | Numeric post ID, as returned in post_id. Provide url, post_id, or publication and slug. | |
| publication | No | Publication subdomain, host or URL, used together with slug. | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so safety is covered. The description adds genuinely useful non-schema behavior: paid posts return only the free preview, the response includes paywall status, and the call is billed $0.003 per request. That pricing and paywall disclosure is real added value, though no auth or rate-limit notes.
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, front-loaded with the core action and identifier contract, followed by the return-field inventory. The second sentence is a dense list but every item is informative; slight density is the only cost.
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-value burden and does so thoroughly: body formats, metadata, engagement, paywall status, media and tags. Combined with the pricing note and identifier rules, an agent has enough to invoke it correctly, though it omits any note on error behavior for invalid identifiers.
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 each parameter is already documented in the schema, making 3 the baseline. The description restates the identifier requirement and lists what fields come back, but adds no syntax or format detail beyond the schema (e.g., no guidance on precedence between url and post_id).
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 ('Get a Substack post') plus the accepted identifier forms, and the resource scope (a single post) clearly separates it from siblings like substack_publication_posts, substack_post_comments, or search_substack. An agent can distinguish it without opening the 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?
It gives the identifier contract ('provide url, post_id, or publication together with slug'), which implies usage, but never names an alternative tool or states when-not to use it (e.g., versus search_substack or substack_publication_posts). Usage is inferable but not routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
substack_post_likesSubstack Post LikesARead-onlyInspect
Get the people who liked a Substack post. Returns up to 100 profiles with display name, user ID, profile picture, bestseller tier and primary publication, plus the post's total like count (provide url, post_id, or publication together with slug). Billed $0.003 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Post URL, e.g. https://www.lennysnewsletter.com/p/all-of-the-lenny-and-friends-summit (max 500 characters). Provide url, post_id, or publication and slug. | |
| slug | No | Post URL slug, e.g. all-of-the-lenny-and-friends-summit, used together with publication. | |
| post_id | No | Numeric post ID, as returned in post_id. Provide url, post_id, or publication and slug. | |
| publication | No | Publication subdomain, host or URL, used together with slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), and the description adds genuinely new behavior: a hard 100-profile cap, the exact fields returned, and a per-request cost of $0.003. Cost and pagination ceiling are the kind of operational detail annotations cannot express, though nothing is said about ordering, rate limits, or behavior on an invalid post reference.
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 sentences with the core action front-loaded and return contents, input requirement, and billing all earning their place. The parenthetical is dense but not redundant with anything preceding it.
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 returned profile fields and the post's total like count, plus the 100-record cap and the billing rate. It is complete enough for an agent to call the tool confidently, missing only error/failure behavior and any hint that results beyond 100 may be inaccessible.
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 and its accepted forms are already documented in the schema. The description repeats the identification rule ('url, post_id, or publication together with slug') without adding syntax, format, or precedence detail beyond it, 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 ('Get the people who liked a Substack post') and immediately enumerates the returned data, which cleanly distinguishes it from siblings like substack_post_details and substack_post_comments without opening any 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?
The parenthetical 'provide url, post_id, or publication together with slug' tells the agent exactly what inputs the tool needs and the valid combinations, which is clear invocation context. It stops short of naming when to prefer this over alternatives (e.g. substack_post_details), so no exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
substack_publication_detailsSubstack Publication DetailsARead-onlyInspect
Get a Substack publication by subdomain, custom domain, URL or ID. Returns name, tagline, logo, author, the subscriber badge and paid-subscriber band Substack displays, bestseller tier, subscription prices, podcast flag, language, launch dates and the publication's contributors (provide exactly one of publication, publication_id). Billed $0.003 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| publication | No | Publication subdomain (lenny), host (lenny.substack.com, www.lennysnewsletter.com) or any URL on it (max 500 characters). Provide either publication or publication_id. | |
| publication_id | No | Numeric publication ID, as returned in publication_id. Provide either publication or publication_id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), so the bar is lower. The description adds genuinely new behavioral context: the exact return payload fields and the per-request cost ('Billed $0.003 per request'), which the agent cannot see anywhere else.
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 verb and resource, then the return payload, then the identifier constraint and cost. It is dense but every clause carries information; the return-field list is somewhat long, though justified by the absence of an output 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 no output schema, the description must describe returns and does so thoroughly (name, tagline, pricing, contributors, etc.), plus it covers identification methods, param exclusivity, and cost. Missing only sibling routing guidance, which is a usage rather than completeness 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 the schema already documents both parameters and their accepted formats in detail. The description's 'provide exactly one of publication, publication_id' restates the mutual-exclusivity rule already present in the schema, adding no format or edge-case detail beyond it. Baseline 3 is 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?
States a specific verb and resource ('Get a Substack publication') and enumerates the accepted identifiers (subdomain, custom domain, URL, ID). This clearly separates it from sibling search tools like search_substack_publications — one fetches a known publication, the other discovers 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?
The description tells the agent how to identify the target ('provide exactly one of publication, publication_id'), which implies the usage precondition, but it never names an alternative (e.g. search_substack_publications for finding a publication) or states when not to use this tool. Usage is implied rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
substack_publication_postsSubstack Publication PostsARead-onlyInspect
Get a publication's posts, newest first, top or most discussed, or search them by keyword. Returns post title, author, publication date, engagement, paywall status, word count and tags. Billed $0.003 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default: 1). 20 posts per page | |
| query | No | Keyword to search the publication's posts for (max 500 characters) | |
| sort_by | No | Sort order: "most_recent" (newest first), "top" (all-time most popular first) or "discussions" (posts with comment activity) | most_recent |
| publication | Yes | Publication subdomain (lenny), host (lenny.substack.com, www.lennysnewsletter.com) or any URL on it (max 500 characters) | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. | |
| podcasts_only | No | Set to true to return only podcast episodes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint, openWorldHint and destructiveHint already covering the safety profile, the description adds genuinely new operational context: the $0.003 per-request billing and the result field set. It does not restate annotation content or contradict it. Rate limits and pagination depth are left to the schema, which keeps this 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?
Two sentences, zero redundancy: capability and scope first, then return payload and cost. Nothing is padded and the most decision-relevant information is front-loaded.
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 list tool with no output schema, the description supplies the return field list, the sort/search modes, and pricing — enough to call it correctly. The only minor gap is the absence of guidance on result volume or how the paid sentiment surcharge interacts with paging, though the schema's get_sentiment text partially covers the latter.
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 (page size, query limit, sort enum, publication identifier formats) is already documented in the schema. The description's mention of sort modes maps onto existing enum values and adds no syntax, defaults, or format detail beyond it. Baseline 3 applies when the schema carries the 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?
Names a specific verb+resource (get a publication's posts) and immediately bounds the variants: newest first, top, discussions, or keyword search. Also enumerates the returned fields, which lets an agent distinguish it from siblings like substack_publication_details or substack_post_details 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?
Usage is only implied through the sort/search enumeration ('top or most discussed, or search them by keyword'). There is no explicit guidance on when to choose this over search_substack, substack_user_posts, or substack_category_feed, nor any stated prerequisites. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
substack_publication_recommendationsSubstack Publication RecommendationsARead-onlyInspect
Get the publications a Substack publication recommends to its readers, and the publications that recommend it. Each entry carries the publication's name, URL, tagline, author, language, paid status and the recommender's blurb (provide exactly one of publication, publication_id). Billed $0.003 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| publication | No | Publication subdomain (lenny), host (lenny.substack.com, www.lennysnewsletter.com) or any URL on it (max 500 characters). Provide either publication or publication_id. | |
| publication_id | No | Numeric publication ID, as returned in publication_id. Provide either publication or publication_id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful context beyond that: a per-request billing cost of $0.003 and an enumeration of the returned fields including the recommender's blurb, which is not derivable from the schema.
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 sentences, front-loaded with the purpose, then return payload, then the parameter/cost constraints. No filler; the only minor cost is that the return-field list is dense.
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 lookup with full schema coverage and no output schema, the description is nearly complete: it covers what it returns, the constraint on arguments, and the cost. It lacks only guidance on result size/pagination and the distinction from the broader publication-details sibling.
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%, both parameters are fully documented in the schema, and the description only restates the mutual-exclusivity rule already present there. Baseline 3 is appropriate since 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 verb and resource ('Get the publications a Substack publication recommends') and captures the bidirectional nature of the relationship (publications it recommends / publications that recommend it). This clearly distinguishes it from siblings like substack_publication_details or search_substack_publications.
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 purpose statement, but no explicit when-to-use or when-not-to-use guidance is given, and no alternative tool is named for someone who wants a publication's own profile or posts. The 'provide exactly one of publication, publication_id' note is a parameter constraint rather than routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
substack_trendingSubstack Trending PostsARead-onlyInspect
Get the posts currently trending across all of Substack, as featured on its explore page. Returns each post's title, author, publication, publication date, engagement and paywall status. Billed $0.003 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=true, destructiveHint=false), so the bar is lower. The description adds genuinely non-structured context: the billing rate ($0.003 per request) and the exact fields returned. It stops short of pagination or result-count behavior, which would push it higher.
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 sentences, front-loaded with the core action, then return fields, then cost. No filler or repetition; every sentence carries distinct 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?
There is no output schema, but the description compensates by enumerating the returned fields (title, author, publication, date, engagement, paywall status). Cost and open-world scope are covered; only result volume/pagination is left unstated, a minor gap for a trending-list endpoint.
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 fully documents the single get_sentiment parameter and its surcharge. The description adds nothing about parameters, and per the rubric a high-coverage schema justifies the baseline 3.
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 ('Get') and resource ('posts currently trending across all of Substack'), and pins down the source ('its explore page'). This cleanly separates it from sibling feeders like substack_category_feed and substack_publication_posts, which are scoped by category/publication rather than site-wide trending.
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 (surfacing what is trending site-wide), but gives no explicit when-to-use or when-not guidance and never names an alternative tool. An agent must infer that for per-category trends it should reach for substack_category_feed instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
substack_user_activitySubstack User ActivityARead-onlyInspect
Get an author's public activity feed: their Notes and the posts they publish or restack, newest first, or only their notes, posts, replies, restacks or likes. Each item is tagged note, post or comment and says what the author did with it. Notes carry text, engagement and any quoted post or note (provide exactly one of username, user_id, url). Billed $0.003 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Profile URL, e.g. https://substack.com/@lenny (max 500 characters). Provide one of username, user_id or url. | |
| type | No | Only this kind of activity: "note", "post", "reply", "restack" or "like" | |
| pages | No | Number of pages to fetch, 1-250 (default: 1). Each page returns 12 items; you are billed per page returned. | |
| user_id | No | Numeric Substack user ID, as returned in user_id. Provide one of username, user_id or url. | |
| username | No | Substack handle, e.g. lenny, with or without a leading @ (max 100 characters). Provide one of username, user_id or url. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and openWorld, so the bar is lower. The description adds meaningful context beyond them: per-page billing ($0.003), page size (12 items), newest-first ordering, and the return shape (items tagged note/post/comment, Notes carrying text, engagement, and quoted content). It stops short of auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded and the following sentences each carry information (scope, return tagging, identifiers, billing). It is dense and slightly run-on but has no truly wasted sentence.
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 must carry the return-value burden, and it does: item tagging, note contents, and the one-of identifier rule. Pagination and billing are covered, leaving only minor gaps like ordering/pagination limits detail.
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 all five parameters thoroughly. The description only restates the one-of username/user_id/url constraint and the type values, adding little beyond the schema, 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?
The description opens with a specific verb+resource ('Get an author's public activity feed') and enumerates the activity types covered, which differentiates it from narrower siblings like substack_user_posts. It does not explicitly name a sibling to distinguish against, but the stated scope 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?
It implies usage through the type filter ('only their notes, posts, replies, restacks or likes') and the one-of identifier requirement, but never states when to prefer this over substack_user_posts or substack_note_details. No explicit when/when-not guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
substack_user_postsSubstack User PostsARead-onlyInspect
Get an author's posts across all their publications, newest first. Returns post title, publication, publication date, engagement, paywall status, word count and tags. Up to 50 posts per page (provide exactly one of username, user_id, url). Billed $0.003 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Profile URL, e.g. https://substack.com/@lenny (max 500 characters). Provide one of username, user_id or url. | |
| pages | No | Number of pages to fetch, 1-60 (default: 1). Each page returns up to 50 posts; you are billed per page returned. | |
| user_id | No | Numeric Substack user ID, as returned in user_id. Provide one of username, user_id or url. | |
| username | No | Substack handle, e.g. lenny, with or without a leading @ (max 100 characters). Provide one of username, user_id or url. | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, so safety is covered. The description adds genuinely useful context beyond them: newest-first ordering, the 50-posts-per-page cap, and per-page billing ($0.003), which matters for cost-aware callers. It stops short of describing failure modes or edge cases.
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 sentences, front-loaded with the resource and scope, then return fields, then pagination/identity constraint and cost. No filler; every clause carries 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?
No output schema exists, and the description compensates by enumerating the returned fields (title, publication, date, engagement, paywall status, word count, tags). Combined with annotations covering the safety profile and the schema covering inputs, an agent has enough to invoke correctly; only error/empty-result 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?
Schema description coverage is 100%, so the baseline is 3. The description's parameter content ('provide exactly one of username, user_id, url' and the page cap/billing) largely repeats what the schema already states for each field, adding only slight emphasis on the mutual-exclusivity requirement.
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 ('Get an author's posts across all their publications, newest first'), which precisely distinguishes it from the sibling substack_publication_posts (posts within one publication) and substack_user_activity. An agent can select it without opening the 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?
The description gives a clear input constraint ('provide exactly one of username, user_id, url') and the scope (across all publications), so usage is implied. However, it never states when to prefer this over substack_publication_posts, substack_user_activity, or search_substack, leaving the sibling choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
substack_user_profileSubstack User ProfileARead-onlyInspect
Get a Substack author's full profile by handle, user ID or profile URL. Returns display name, bio, follower count, subscriber badge, bestseller tier, the publications they write for, profile links, X handle and leaderboard placement and the publications they subscribe to (provide exactly one of username, user_id, url). Billed $0.003 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Profile URL, e.g. https://substack.com/@lenny (max 500 characters). Provide one of username, user_id or url. | |
| user_id | No | Numeric Substack user ID, as returned in user_id. Provide one of username, user_id or url. | |
| username | No | Substack handle, e.g. lenny, with or without a leading @ (max 100 characters). Provide one of username, user_id or url. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context by disclosing the per-request billing cost ($0.003), which the annotations do not. It stops short of auth, rate-limit or pagination behavior, but with annotations present this is useful added value.
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-loads the verb and resource in the first clause, then folds the return-field list and the input constraint into a compact parenthetical. Every clause carries information; there is no filler despite the length.
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 in play, the description carries the return-value burden and does so thoroughly, listing the fields an agent will receive. Combined with the input-selection constraint and the billing note, nothing material is missing for a read-only profile lookup.
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 each parameter's format (URL shape, numeric ID, handle with optional leading @, length limits) is already fully documented. The description only restates the three identifiers and the 'exactly one' rule, adding marginal precision over the schema's 'Provide one of' wording. Baseline 3 applies 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?
States a specific verb ('Get') and resource ('a Substack author's full profile') and explicitly distinguishes the three accepted identifier forms. It enumerates the returned fields (bio, follower count, bestseller tier, publications written for, leaderboard placement), so an agent can tell it apart from siblings like substack_user_posts or search_substack_users without opening either 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?
Usage is implied by the profile-lookup framing and the parenthetical 'provide exactly one of username, user_id, url', which gives input-selection guidance. However, it never states when to choose this tool over adjacent siblings such as substack_user_activity or search_substack_users, and gives no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
threads_user_postsThreads User PostsARead-onlyInspect
Get a Threads (Meta) user's recent posts by username. Returns post text, engagement metrics, media, link previews, timestamps, permalinks and whether each post is pinned. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Threads username, with or without leading @ (max 100 characters) | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds real value beyond that by disclosing the return contents (text, engagement metrics, media, link previews, timestamps, permalinks, pinned status) and the billing rate of $0.006 per request, which an agent needs for cost-aware selection.
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, zero padding, with the core purpose front-loaded and the return/billing details trailing. Every clause 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 description usefully enumerates the returned fields and discloses per-request cost. It is complete enough to call correctly, though it omits pagination behavior and any hint about how many posts constitute 'recent'.
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, get_sentiment) are fully documented in the schema itself. The description only restates 'by username' and adds no format or semantic detail beyond it, 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 gives a specific verb and resource ('Get a Threads (Meta) user's recent posts by username'), which clearly separates it from profile-oriented siblings like threads_user_profile. It does not explicitly name alternatives, but the resource scope is unambiguous enough for an agent to select it over search_threads or threads_user_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?
There is no explicit when-to-use guidance and no mention of alternatives. The scoping phrase 'recent posts by username' implies the use case, but nothing tells the agent when to prefer threads_user_profile or search_threads instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
threads_user_profileThreads User ProfileARead-onlyInspect
Get a Threads (Meta) user's profile by username. Returns biography, bio links, follower count, verification status, profile picture and topic tags. Use threads_user_posts for their posts. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Threads username, with or without leading @ (max 100 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful context beyond the annotations: it enumerates the returned fields (biography, bio links, followers, verification, picture, topic tags) and discloses a per-request billing cost of $0.006, which an agent cannot infer from structured 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?
Three short sentences, each earning its place: the action, the return payload, the alternative tool, and the cost. The core purpose is front-loaded 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 description compensates well by listing the returned fields, and it covers cost and the sibling alternative. It does not address auth requirements or error cases (e.g. nonexistent username), which are minor gaps for a simple 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 description coverage is 100%, and the schema already documents the single username parameter including the optional '@' prefix and the 100-character limit. The description adds no syntax or format detail beyond the schema, so the baseline 3 is 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?
States a specific verb and resource ('Get a Threads (Meta) user's profile by username') and differentiates itself from the sibling threads_user_posts by naming it directly. An agent can select this over search_threads_users or twitter_user_profile without opening any 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?
Explicitly routes the agent to threads_user_posts 'for their posts', giving a clear when-to-use-this-vs-that signal. It stops short of mentioning search_threads_users as the way to find a username in the first place, so it is clear context but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_comment_repliesTikTok Comment RepliesARead-onlyInspect
Get the replies to one TikTok comment (its thread) by video URL or numeric video ID (provide exactly one) plus the comment ID from tiktok_video_comments. Returns each reply's text, author profile, like count and date, about 50 per page. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | TikTok video URL, e.g. https://www.tiktok.com/@tiktok/video/7516594811734854943 (max 500 characters). Short links are accepted. Provide exactly one of url or video_id. | |
| pages | No | Number of pages to fetch, 1-1000 (default: 1). Each page returns up to 50 replies. | |
| video_id | No | Numeric TikTok video ID: the number at the end of a video URL. Provide exactly one of url or video_id. | |
| comment_id | Yes | Numeric ID of the comment, as returned by Video Comments | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, openWorld, non-destructive), so the bar is lower. The description adds genuinely useful behavior: ~50 replies per page, $0.006 per page billing, and that get_sentiment adds a surcharge. It does not mention auth requirements or error behavior, but the cost/pagination disclosure is real added value.
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 dense sentences that are front-loaded with the purpose and end with the return contents and cost; every clause carries information (input constraint, source of comment_id, per-page size, billed rate). Slightly packed but 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 description carries the burden of describing returns and does so (reply text, author profile, like count, date), plus pagination and pricing. It omits any mention of the get_sentiment parameter's effect on output, which is a minor gap for a 5-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 the schema already documents url, video_id, pages, comment_id, and get_sentiment in detail. The description only restates the url/video_id exclusivity and the ~50-per-page size, adding little beyond the structured fields.
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 ('Get the replies to one TikTok comment (its thread)') and scopes it to a single comment thread, which cleanly distinguishes it from the sibling tiktok_video_comments that produces the comment_id.
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 establishes the workflow context by requiring the comment ID 'from tiktok_video_comments' and states the exactly-one-of url/video_id constraint, so the agent knows the prerequisite and the input contract. It stops short of naming explicit when-not-to-use conditions or other alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_hashtag_detailsTikTok Hashtag DetailsARead-onlyInspect
Get one TikTok hashtag's details by name, numeric hashtag ID or hashtag URL (provide exactly one). Returns its ID, video count, total views, description and cover image. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | TikTok hashtag URL, e.g. https://www.tiktok.com/tag/cooking (max 500 characters). Provide exactly one of name, hashtag_id, or url. | |
| name | No | Hashtag name, with or without leading # (max 100 characters). Provide exactly one of name, hashtag_id, or url. | |
| hashtag_id | No | Numeric hashtag ID, as returned by Search Hashtags. Provide exactly one of name, hashtag_id, or url. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds the non-obvious billing detail ($0.006 per request), which the agent cannot learn from structured fields and which matters for invocation decisions.
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, zero filler: the lookup keys and exclusivity rule come first, the return shape and price follow. Every clause 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 description compensates by listing the returned fields (ID, video count, total views, description, cover image), and it discloses cost. The only mild gap is that it does not hint at rate limits or what happens when the hashtag is not found, but for a single-resource read tool this is largely complete.
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 documents its format, example and the exactly-one constraint, so the schema carries the load. The description restates the three input modes and the exclusivity rule but adds no new syntax or format detail beyond that. 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 ('Get one TikTok hashtag's details') and enumerates the three accepted identifier forms, then names the exact returned fields. This is enough to separate it from tiktok_hashtag_videos (which lists videos) and search_tiktok_hashtags (which finds hashtags) without opening any 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?
The description imposes the 'provide exactly one' selection rule, which is genuine usage guidance for picking among the three parameters. However, it never states when to call this tool versus siblings like search_tiktok_hashtags or tiktok_hashtag_videos, so alternative selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_hashtag_videosTikTok Hashtag VideosARead-onlyInspect
Get the videos under a TikTok hashtag by name, numeric hashtag ID or hashtag URL (provide exactly one). Returns the same video fields as tiktok_user_videos, about 20 per page. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | TikTok hashtag URL, e.g. https://www.tiktok.com/tag/cooking (max 500 characters). Provide exactly one of name, hashtag_id, or url. | |
| name | No | Hashtag name, with or without leading # (max 100 characters). Provide exactly one of name, hashtag_id, or url. | |
| pages | No | Number of pages to fetch, 1-1000 (default: 1). Each page returns up to 20 videos. | |
| hashtag_id | No | Numeric hashtag ID, as returned by Search Hashtags. Provide exactly one of name, hashtag_id, or url. | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safe-read profile (readOnlyHint, destructiveHint=false, openWorldHint). The description adds genuinely new behavioral facts: ~20 videos per page, per-page billing at $0.006, and parity of returned fields with tiktok_user_videos. It stops short of describing pagination limits beyond the pages parameter or any rate limiting.
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 sentences: identifier forms first, then yield/field parity, then cost. No filler, and the most decision-relevant facts are front-loaded.
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 list endpoint with no output schema, the description supplies the return shape by reference to tiktok_user_videos, the per-page yield, and the cost model. The main omission is that 'same fields as tiktok_user_videos' forces a cross-tool lookup for an agent that has not read that definition.
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 five parameters are already documented in detail, including the exactly-one rule and the sentiment surcharge. The description adds the 'about 20 per page' yield for the pages parameter and page-based pricing, but otherwise restates what the schema supplies. 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 ('Get the videos under a TikTok hashtag') and enumerates the three accepted input forms. It is distinguishable from siblings like tiktok_hashtag_details (hashtag metadata) and search_tiktok_hashtags (hashtag discovery) without opening any 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?
The description explains the mutually-exclusive input rule ('provide exactly one') and points to tiktok_user_videos for field parity, which implies the data shape. However, it never says when to prefer this tool over tiktok_hashtag_details or search_tiktok_hashtags, so routing guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_music_detailsTikTok Music DetailsARead-onlyInspect
Get one TikTok sound's details by music URL or numeric music ID (provide exactly one). Returns its title, artist, album, duration, playback URL, cover image and the number of videos using it. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | TikTok music URL, e.g. https://www.tiktok.com/music/Face-Off-7016547803243022337 (max 500 characters). Provide exactly one of url or music_id. | |
| music_id | No | Numeric music ID: the number at the end of a music URL, also returned as music_id on every video. Provide exactly one of url or music_id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely new behavioral context beyond annotations: a per-request billing cost ($0.006) and the exact returned fields (title, artist, album, duration, playback URL, cover image, video count).
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 tight sentences with the resource and identifier rule front-loaded and pricing in a trailing clause. No filler; every clause carries 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?
With no output schema, the description compensates by enumerating the returned fields, and it also discloses the per-request cost and the mutual-exclusion rule for parameters. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already fully documented in the schema, including the examples and the exactly-one constraint. The description only restates that constraint and adds no format or syntax detail beyond the structured fields, 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 ("Get one TikTok sound's details") and names the two accepted identifiers, clearly separating it from siblings like search_tiktok or tiktok_music_videos. An agent can identify the tool without opening the 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?
The description constrains input ("provide exactly one" of url or music_id) but gives no guidance on when to choose this tool over the sibling tiktok_music_videos or other TikTok detail tools. Usage is only implied by the singular-resource framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_music_videosTikTok Music VideosARead-onlyInspect
Get the videos using a TikTok sound by music URL or numeric music ID (provide exactly one). Returns the same video fields as tiktok_user_videos, about 12 per page. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | TikTok music URL, e.g. https://www.tiktok.com/music/Face-Off-7016547803243022337 (max 500 characters). Provide exactly one of url or music_id. | |
| pages | No | Number of pages to fetch, 1-1000 (default: 1). Each page returns up to 12 videos. | |
| music_id | No | Numeric music ID: the number at the end of a music URL, also returned as music_id on every video. Provide exactly one of url or music_id. | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations by disclosing billing ($0.006 per page), page size (~12 videos), and the sentiment surcharge — cost and volume context an agent cannot get from readOnlyHint/openWorldHint. It stops short of rate limits, auth requirements, or failure 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?
Three tight sentences: what it does and the identifier constraint first, then return-shape, then pagination/cost. No filler, no repetition of annotation-covered traits.
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 pointing to a sibling tool for the return field set and by covering pagination and cost. It's near-complete for a read endpoint, though an agent must look up tiktok_user_videos to know the actual fields.
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 all four parameters, and the description largely restates them (exactly-one rule, page size) plus one useful hint that music_id also appears on every video. That is a marginal add over structured data, 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 verb and resource ('Get the videos using a TikTok sound') plus the two accepted identifier forms, which cleanly separates it from siblings like tiktok_music_details (music metadata) and tiktok_hashtag_videos / tiktok_playlist_videos (other video sources). The explicit 'Returns the same video fields as tiktok_user_videos' cross-reference further disambiguates scope.
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 'provide exactly one' rule for url vs music_id is stated, which is genuine usage guidance, but no alternatives are named or excluded (e.g., when to prefer tiktok_music_details over this, or this over search_tiktok). Usage is implied by the resource rather than explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_playlist_detailsTikTok Playlist DetailsARead-onlyInspect
Get one TikTok playlist's details by playlist URL or numeric playlist ID (provide exactly one). Returns its name, creator and video count. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | TikTok playlist URL, e.g. https://www.tiktok.com/@natgeo/playlist/Cinematic-7509464647364283178 (max 500 characters). Provide exactly one of url or playlist_id. | |
| playlist_id | No | Numeric playlist ID: the number at the end of a playlist URL. Provide exactly one of url or playlist_id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and non-destructive behavior. The description adds useful context beyond annotations by naming returned fields and disclosing per-request billing. It does not cover error handling or rate-limit behavior, but the annotation baseline is already strong.
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 are front-loaded and waste-free: identification method first, return fields second, billing last. Every sentence adds information relevant to invocation or cost awareness.
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 lookup with no output schema, the description provides the identifying inputs, the exactly-one constraint, the returned fields, and billing. Together with annotations, it gives enough context to call the tool correctly without requiring further specification.
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 are already fully documented in the schema, including the exactly-one constraint and examples. The description repeats the exactly-one requirement without adding new syntax or selection detail, fitting the baseline 3 for high schema coverage.
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 and resource: 'Get one TikTok playlist's details'. It also states the identifying inputs and core return fields. It does not explicitly distinguish itself from the sibling tiktok_playlist_videos, but the 'details' framing makes the scope reasonably clear.
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 and the 'by playlist URL or numeric playlist ID' invocation path. However, there is no explicit guidance on when to choose this tool over alternatives such as tiktok_playlist_videos or search_tiktok, and no exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_playlist_videosTikTok Playlist VideosARead-onlyInspect
Get a TikTok playlist's videos in playlist order by playlist URL or numeric playlist ID (provide exactly one). Returns the same video fields as tiktok_user_videos, 30 per page. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | TikTok playlist URL, e.g. https://www.tiktok.com/@natgeo/playlist/Cinematic-7509464647364283178 (max 500 characters). Provide exactly one of url or playlist_id. | |
| pages | No | Number of pages to fetch, 1-1000 (default: 1). Each page returns up to 30 videos. | |
| playlist_id | No | Numeric playlist ID: the number at the end of a playlist URL. Provide exactly one of url or playlist_id. | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so safety is covered. The description adds genuinely useful non-annotation context: results are in playlist order, 30 videos per page, and billing is $0.006 per page. It does not mention rate limits or error/auth behavior, but the cost and ordering disclosures are strong value-adds.
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 sentences with zero filler; the core action, the input constraint, and the cost/pagination facts are front-loaded. Every sentence carries distinct 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?
With no output schema, the description compensates by tying returned fields to tiktok_user_videos and stating the page size, and it discloses pricing. Relying on a sibling for the exact field list is a reasonable pointer, though a tool with no output schema could specify a bit more about the return shape.
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 all four parameters including the exactly-one url/playlist_id constraint. The description largely restates that constraint and adds only the implicit page size (30 per page) context, so it does not meaningfully exceed 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?
States a specific verb and resource ('Get a TikTok playlist's videos in playlist order') and scopes it to the playlist entity, which cleanly separates it from tiktok_playlist_details (playlist metadata) and tiktok_user_videos (a user's videos). The reference to tiktok_user_videos for field parity further disambiguates the output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete input rule ('provide exactly one' of url or playlist_id) that tells the agent how to invoke it. It implies use-cases clearly but does not explicitly say when to prefer tiktok_playlist_details or another sibling over this tool, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_user_followersTikTok User FollowersARead-onlyInspect
Get a TikTok user's followers, newest first, by username, numeric user ID or profile URL (provide exactly one). Returns username, display name, user ID, bio, follower and following counts, total likes, video count, verification status, region, join date and linked Instagram, X and YouTube accounts for each follower, 100 per page. A private account returns a 403 limited_account error. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | TikTok profile URL, e.g. https://www.tiktok.com/@tiktok (max 500 characters). Provide exactly one of username, user_id, or url. | |
| pages | No | Number of pages to fetch, 1-1000 (default: 1). Each page returns up to 100 followers. | |
| user_id | No | Numeric TikTok user ID, as returned by Search Users or User Profile. Provide exactly one of username, user_id, or url. | |
| username | No | TikTok username, with or without leading @ (max 100 characters). Provide exactly one of username, user_id, or url. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover read-only/open-world/non-destructive safety, and the description goes well beyond them: it discloses pagination granularity (100 per page), a concrete error path (403 limited_account for private accounts) and per-page billing ($0.006). These are exactly the operational facts an agent needs before paying for 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?
Front-loads purpose and identifiers, then packs return fields, pagination, error behavior and pricing into tight clauses with no filler. Every sentence contributes something an agent cannot get 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 carries the return-value burden and does so by enumerating the per-follower fields (username, counts, verification, region, join date, linked accounts). Error handling, pagination and cost are all covered, so an agent can call and interpret results without further information.
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 documents each parameter including the 'provide exactly one' rule and the 100-per-page behavior, so the description largely restates it. It adds the 'newest first' ordering, but that is output/behavioral rather than parameter meaning, leaving the baseline of 3 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?
States a specific verb and resource ('Get a TikTok user's followers') plus a scope/ordering qualifier ('newest first'), which cleanly separates it from the sibling tiktok_user_following. The identifier options are named up front so the agent knows exactly what resource is being retrieved.
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 'provide exactly one' constraint gives clear invocation context, and the identifier list clarifies accepted inputs. However, it never names an alternative tool or states when-not to use it (e.g. vs tiktok_user_following), so the routing guidance relies on the tool name rather than explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_user_followingTikTok User FollowingARead-onlyInspect
Get the accounts a TikTok user follows, by username, numeric user ID or profile URL (provide exactly one). Returns the same profile fields as tiktok_user_followers for each account, 50 per page. An account that hides its following list returns a 403 limited_account error. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | TikTok profile URL, e.g. https://www.tiktok.com/@tiktok (max 500 characters). Provide exactly one of username, user_id, or url. | |
| pages | No | Number of pages to fetch, 1-1000 (default: 1). Each page returns up to 50 accounts. | |
| user_id | No | Numeric TikTok user ID, as returned by Search Users or User Profile. Provide exactly one of username, user_id, or url. | |
| username | No | TikTok username, with or without leading @ (max 100 characters). Provide exactly one of username, user_id, or url. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnly, openWorld, non-destructive). The description goes well beyond them: 50 accounts per page, page-based fetching, a specific 403 limited_account error for accounts that hide their following list, and per-page billing at $0.006. This is exactly the operational context an agent needs.
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 sentences, each carrying distinct information: identity of the resource, return shape and page size, then error and cost. No filler and the purpose leads.
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?
No output schema exists, and the description compensates by naming the return shape (same profile fields as tiktok_user_followers) and pagination. Error behavior and pricing close the remaining gaps, so nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (url, pages, user_id, username) are already documented with their formats and the exactly-one constraint. The description restates the identifier options and page size but adds no syntax or format detail beyond the schema, 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?
Specific verb + resource ('Get the accounts a TikTok user follows') with the accepted identifier forms spelled out. It explicitly contrasts itself with the sibling tiktok_user_followers, so an agent can pick between the two without opening either 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?
States the identifier constraint ('provide exactly one' of username, user ID, or profile URL) and the failure condition for private accounts. It implies the followers/following distinction via the sibling reference but never says in so many words when to prefer this tool over tiktok_user_profile or the followers variant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_user_likesTikTok User LikesARead-onlyInspect
Get the videos a TikTok user has liked, by username, numeric user ID or profile URL (provide exactly one). Returns the same video fields as tiktok_user_videos, about 30 per page. Accounts that hide their liked videos return an empty list. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | TikTok profile URL, e.g. https://www.tiktok.com/@tiktok (max 500 characters). Provide exactly one of username, user_id, or url. | |
| pages | No | Number of pages to fetch, 1-1000 (default: 1). Each page returns up to 30 videos. | |
| user_id | No | Numeric TikTok user ID, as returned by Search Users or User Profile. Provide exactly one of username, user_id, or url. | |
| username | No | TikTok username, with or without leading @ (max 100 characters). Provide exactly one of username, user_id, or url. | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds genuinely useful behavior beyond that: ~30 videos per page, empty list for accounts hiding likes, and a $0.006 per page billing rate — cost and edge-case behavior an agent would otherwise not know.
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 sentences: identical verb/resource scoping first, then identity constraint, then pagination, edge case, and cost. No sentence is redundant and the key constraint is front-loaded.
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, no-output-schema endpoint, the description covers pagination yield, billing, an important empty-result edge case, and points to a sibling for the return shape. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented, including the exactly-one constraint and page sizing. The description adds only the 'about 30 per page' yield figure, 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 ('Get the videos a TikTok user has liked') and enumerates the three accepted identifiers. It also explicitly distinguishes itself from tiktok_user_videos by noting it returns the same video fields, so an agent can tell the two apart without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the concrete invocation constraint 'provide exactly one' of username/user_id/url, which is essential guidance. It lacks explicit when-not guidance (e.g., when to prefer tiktok_user_videos or how this differs for analytics use), but the operating context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_user_profileTikTok User ProfileARead-onlyInspect
Get a TikTok user's profile by username, numeric user ID or profile URL (provide exactly one). Returns bio, bio link, follower and following counts, total likes, video count, verification status, join date and linked Instagram, X and YouTube accounts. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | TikTok profile URL, e.g. https://www.tiktok.com/@tiktok (max 500 characters) | |
| user_id | No | Numeric TikTok user ID, as returned by search_tiktok_users | |
| username | No | TikTok username, with or without leading @ (max 100 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered; the description adds genuinely new behavioral context by disclosing the billing rate ($0.006 per request) and the shape of the returned payload. It does not mention rate limits, caching, or behavior when a profile is private/deleted.
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, zero filler: the first covers input modes and the exclusivity rule, the second covers return contents and cost. Everything is front-loaded with no repetition of the name or title.
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 returned fields (bio, bio link, follower/following counts, likes, video count, verification, join date, linked socials), and it also discloses cost and input constraints. An agent has everything needed to call and interpret this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema documents each of the three lookup keys with formats and length caps, so the baseline is 3. The description earns an extra point by stating the mutual-exclusivity rule ("provide exactly one"), a constraint the schema cannot express given required=0.
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 (get a TikTok user's profile) and enumerates the three lookup keys, so an agent immediately knows this is a direct identity lookup rather than a discovery call. It does not, however, explicitly differentiate itself from the sibling search_tiktok_users (that link only appears in the schema for user_id).
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 exactly one" is a concrete usage constraint that tells the agent how to call the tool, and the schema's user_id description ties it to search_tiktok_users as the upstream step. There is no explicit when-not-to-use guidance or statement of which sibling to prefer when the agent only has a display name or partial query.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_user_storiesTikTok User StoriesARead-onlyInspect
Get a TikTok user's currently live stories (24-hour posts) by username, numeric user ID or profile URL (provide exactly one). Returns the same video fields as tiktok_user_videos. A user with no live stories returns an empty list. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | TikTok profile URL, e.g. https://www.tiktok.com/@tiktok (max 500 characters). Provide exactly one of username, user_id, or url. | |
| pages | No | Number of pages to fetch, 1-1000 (default: 1). Each page returns up to 30 stories. | |
| user_id | No | Numeric TikTok user ID, as returned by Search Users or User Profile. Provide exactly one of username, user_id, or url. | |
| username | No | TikTok username, with or without leading @ (max 100 characters). Provide exactly one of username, user_id, or url. | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable context: billing at $0.006 per page, empty-list behavior for users with no live stories, and return shape by referencing tiktok_user_videos. It does not cover auth or rate limits, but the added cost and return details exceed the annotation 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?
Three sentences, front-loaded with the core action. It efficiently includes return shape, empty-result behavior, and billing cost without redundancy. Every sentence 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?
Covers purpose, cost, empty-result behavior, and return shape via reference to tiktok_user_videos. With annotations covering safety and a 100% schema, the description is nearly complete. Missing details like auth requirements or rate limits are minor for a read-only endpoint.
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 all five parameters are fully documented in the schema. The description only repeats the 'provide exactly one of username, user_id, or url' constraint already present in the schema. Baseline 3 applies 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?
States a specific verb and resource: 'Get a TikTok user's currently live stories (24-hour posts)'. It distinguishes itself from tiktok_user_videos by specifying stories, and from generic video tools by the 24-hour scope. An agent can identify the resource without opening the 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?
Provides clear context that this is for 24-hour stories, but does not explicitly name when to use it instead of alternatives like tiktok_user_videos or search_tiktok. The 'provide exactly one' instruction is usage guidance but not alternative routing. Usage is implied 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_user_videosTikTok User VideosARead-onlyInspect
Get a TikTok user's videos, newest first, by username, numeric user ID or profile URL (provide exactly one). Returns caption, link, publish date, play, like, comment, share, download and save counts, watermark-free playback URLs, cover images, the sound used and author details for each video, about 30 per page. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | TikTok profile URL, e.g. https://www.tiktok.com/@tiktok (max 500 characters). Provide exactly one of username, user_id, or url. | |
| pages | No | Number of pages to fetch, 1-1000 (default: 1). Each page returns up to 30 videos. | |
| user_id | No | Numeric TikTok user ID, as returned by Search Users or User Profile. Provide exactly one of username, user_id, or url. | |
| username | No | TikTok username, with or without leading @ (max 100 characters). Provide exactly one of username, user_id, or url. | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: newest-first ordering, ~30 videos per page, and a concrete billing rate of $0.006 per page, which is not derivable from any structured field.
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 identity inputs, then return fields, then pagination and cost. The middle run-on enumerating every returned metric is dense but each element is informative, so it earns its place with only slight redundancy against 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 no output schema, the description correctly compensates by enumerating return fields (counts, watermark-free URLs, cover images, sound, author). Combined with pagination size and billing disclosure, an agent has nearly everything needed. Minor gaps: no mention of error behavior when the identifier doesn't resolve, and no rate-limit context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds marginal value by mapping pages to output volume ('about 30 per page'), clarifying the practical meaning of the pages parameter beyond the schema's 'up to 30 videos' note, though it adds nothing for get_sentiment beyond what the schema 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?
States a specific verb and resource (get a TikTok user's videos) with a scoping qualifier (newest first, by username/user_id/url) that clearly separates it from siblings like tiktok_user_likes, tiktok_user_stories, and tiktok_video_details. An agent can identify this tool without opening the 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?
The description constrains invocation by requiring exactly one identifier, which is useful. However, it names no alternatives and gives no when-to-use or when-not-to-use guidance relative to adjacent tools such as tiktok_video_details or tiktok_hashtag_videos. Usage is implied 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_video_commentsTikTok Video CommentsARead-onlyInspect
Get the top-level comments on a TikTok video, in TikTok's default order, by video URL or numeric video ID (provide exactly one). Returns each comment's text, author profile, like and reply counts and date, 50 per page. Use tiktok_comment_replies for a comment's thread. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | TikTok video URL, e.g. https://www.tiktok.com/@tiktok/video/7516594811734854943 (max 500 characters). Short links are accepted. Provide exactly one of url or video_id. | |
| pages | No | Number of pages to fetch, 1-1000 (default: 1). Each page returns up to 50 comments. | |
| video_id | No | Numeric TikTok video ID: the number at the end of a video URL. Provide exactly one of url or video_id. | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, but the description adds substantive context beyond them: default TikTok ordering, the returned fields (text, author profile, like/reply counts, date), page size of 50, and per-page billing cost. It does not cover auth needs or rate limits, so it stops 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?
Three tight sentences, front-loaded with the verb and scope, then usage routing, then output/pagination/billing. Every sentence carries information an agent needs; nothing is 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?
With no output schema, the description compensates by listing the returned fields, page size, and ordering. It covers input selection, output shape, sibling routing, and cost — complete for a paginated 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%, so url, video_id, pages, and get_sentiment are already fully documented in the schema. The description reinforces the mutual-exclusion rule ('provide exactly one') and page size, but adds little syntax or format detail beyond the schema; baseline 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?
States a specific verb and resource ('Get the top-level comments on a TikTok video') and pins down the scope as top-level only. It explicitly contrasts with the sibling tiktok_comment_replies, so an agent can distinguish the two without opening either 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?
Names the alternative tool (tiktok_comment_replies) and the condition that selects it ('for a comment's thread'). Combined with the 'top-level comments' scoping, the agent knows exactly when to use this versus the sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_video_detailsTikTok Video DetailsARead-onlyInspect
Get one TikTok video by URL or numeric video ID (provide exactly one). Returns caption, play, like, comment, share and save counts, watermark-free playback and download URLs, cover images, music track and author details. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | TikTok video URL, e.g. https://www.tiktok.com/@tiktok/video/7516594811734854943 (max 500 characters) | |
| video_id | No | Numeric TikTok video ID: the number at the end of a video URL, e.g. 7516594811734854943 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered; the description earns credit for disclosing the $0.006-per-request billing cost, which is not in any structured field. It stops short of rate limits or auth requirements.
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 sentences, front-loaded with the identification method, then return contents, then cost. No filler or repetition of the title.
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?
No output schema exists, so enumerating the returned fields (counts, watermark-free playback/download URLs, cover images, music, author) is necessary and present; the billing note rounds out what an agent needs for cost-aware selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds the mutual-exclusion rule ('provide exactly one') that the schema itself cannot express since both properties are optional. That is real semantic value beyond the field descriptions.
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+resource ('Get one TikTok video') and the two accepted identifiers, which cleanly separates it from tiktok_user_profile (users) and search_tiktok (discovery). The description also previews the returned payload, so an agent knows exactly what it gets before opening anything else.
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 'provide exactly one' clause is an actionable input constraint, but there is no explicit when-to-use/when-not guidance and no sibling is named as an alternative (e.g., search_tiktok to find a URL first) the way the calibration HIGH example does.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trustpilot_category_companiesTrustpilot Category CompaniesARead-onlyInspect
List the companies in a Trustpilot category by category slug or URL. Returns name, domain, TrustScore, review count, categories and location, plus the category's size and subcategories. Filter by country, minimum rating and claimed status; sort by recommended or recently reviewed. 20 per page. Find slugs with search_trustpilot_categories or at https://apidirect.io/docs/trustpilot-category-ids. Billed $0.005 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1-500 (default: 1). Each page returns up to 20 companies. | |
| claimed | No | Only companies that have claimed their Trustpilot profile | |
| country | No | 2-letter ISO 3166-1 country code (default: all countries) | |
| sort_by | No | Sort order | recommended |
| min_rating | No | Minimum TrustScore | |
| category_id | Yes | Trustpilot category slug (e.g. electronics_technology, bank) or a trustpilot.com/categories/... URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely new operational context: 20 results per page and a $0.005 per-request billing cost, which matters for an agent deciding whether to page through 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?
The description is dense and front-loaded: what it returns, then filters/sort, then pagination, then how to find slugs, then cost. Every sentence carries information, though the mid-sentence filter list is slightly cluttered.
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 returned fields (name, domain, TrustScore, review count, categories, location, category size and subcategories) and supplies pagination limits, slug-discovery guidance and billing cost. An agent has everything needed to call and interpret it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including defaults, enum values and the ISO country code format is already documented. The description restates the filter and sort options without adding syntax or semantics 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 gives a specific verb and resource ('List the companies in a Trustpilot category by category slug or URL'), which is immediately distinguishable from search_trustpilot_companies or trustpilot_category_details. It does not, however, explicitly differentiate itself from the close sibling trustpilot_category_newest or clarify how it relates to trustpilot_category_details.
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 states the filtering and sorting conditions (country, minimum rating, claimed status; recommended or recently reviewed) and routes the agent to search_trustpilot_categories plus an external doc URL for obtaining the required category_id. It stops short of saying when to prefer this over trustpilot_category_newest or the category search siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trustpilot_category_detailsTrustpilot Category DetailsARead-onlyInspect
Get a Trustpilot category by slug or URL. Returns display name, business count, parent category, and subcategories with their ids and business counts. Works at all three category levels. Billed $0.005 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| category_id | Yes | Trustpilot category slug (e.g. electronics_technology) or a trustpilot.com/categories/... URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, and openWorldHint, so the safety profile is covered. The description adds genuinely new behavioral context not present in structured fields: the per-request billing cost ($0.005) and the fact that it works at all three category levels. It stops short of describing error behavior for invalid slugs or pagination-like concerns.
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 sentences, front-loaded with the core action and followed by return contents, scope, and cost. Every sentence carries information; there is no filler or 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 takes on the burden of describing return values (display name, business count, parent, subcategories with ids and counts) and notes level coverage and pricing. This is close to complete for a one-parameter read tool, though it omits what happens on an invalid slug.
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 parameter is fully documented in the schema, including an example slug and URL form. The description's 'by slug or URL' only echoes that, so the baseline 3 applies with no meaningful added semantics.
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 ('Get a Trustpilot category by slug or URL') and enumerates the returned fields, so the agent knows exactly what the tool produces. It does not, however, name or distinguish itself from siblings like search_trustpilot_categories or trustpilot_category_companies, which is the only thing keeping it from 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 description offers no when-to-use guidance, no prerequisites, and no comparison against alternatives such as search_trustpilot_categories (for finding a category) or trustpilot_category_companies (for companies within one). The 'by slug or URL' phrasing implies you need an identifier in hand, but that inference is thin.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trustpilot_category_newestTrustpilot Category NewestARead-onlyInspect
Get the companies most recently added to a Trustpilot category, by slug or URL: a short unpaginated list (often 0-10) with name, domain, TrustScore, review count and location, plus the category's size and subcategories. Billed $0.005 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| category_id | Yes | Trustpilot category slug (e.g. bank) or a trustpilot.com/categories/... URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (read-only, open-world, non-destructive), and the description adds genuinely new behavioral context: the result is unpaginated, typically 0-10 entries, says what fields come back, and discloses the $0.005 per-request billing cost. No contradictions. It's only short of details like failure modes or empty-category 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?
The purpose and return shape are front-loaded in a single dense sentence, with the billing note appended last. Every clause carries information, though the sentence is long enough that it reads as packed rather than crisp.
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 (name, domain, TrustScore, review count, location) plus category size and subcategories, and it flags the cost and unpaginated nature. An agent has everything needed to call and interpret 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 description coverage is 100% and the single parameter is fully documented there (slug or full URL with an example). The description restates 'by slug or URL' but adds no syntax or format detail beyond the schema, 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 precise verb+resource+scope: 'companies most recently added to a Trustpilot category'. The recency qualifier distinguishes it from trustpilot_category_companies (the full listing) without naming it explicitly, and an agent can tell what it fetches from the name alone.
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 'short unpaginated list (often 0-10)' framing implies this is a quick-look tool rather than a bulk listing, which hints at when to prefer it. However, it never explicitly names alternatives like trustpilot_category_companies or trustpilot_category_details, nor states when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trustpilot_company_reviewsTrustpilot Company ReviewsARead-onlyInspect
Get a company's Trustpilot reviews and profile by domain or Trustpilot URL. The profile has TrustScore, stars, review counts and per-star breakdown, categories, claimed and verification status, reply behaviour and contact details. Each review has rating, title, text, dates, verification level, likes, author id, name and country, and the company's reply. Filter by stars, recency, language, verified, replied or keyword. 20 reviews per page. Billed $0.005 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Pages to fetch, 1-10 (default: 1). Each page returns up to 20 reviews and is billed as one request. | |
| query | No | Only reviews matching this keyword | |
| domain | Yes | Company website domain (e.g. gossby.com) or its Trustpilot review-page URL | |
| rating | No | Only these star ratings, comma-separated 1-5 (e.g. '1,2') | |
| sort_by | No | Sort order | most_relevant |
| language | No | 2-letter ISO 639-1 language code (default: all languages) | |
| verified | No | Only verified reviews | |
| posted_ago | No | Only reviews from this period | |
| with_replies | No | Only reviews the company replied to | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true and destructiveHint=false, so safety is covered. The description adds genuinely useful behavior beyond that: page size (20 reviews per page) and the cost model (billed $0.005 per page), which directly affects how an agent should budget 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?
Three dense sentences, front-loaded with the core action and inputs, then return fields, then filtering/pagination/billing. No filler, and the cost-critical fact is included rather than buried.
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 10 parameters and no output schema, the description compensates by describing both the profile fields and the per-review fields, plus page size and billing. That is enough for an agent to call and interpret results correctly without 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?
Schema description coverage is 100%, so every parameter is already documented in the schema, including enums for sort_by and posted_ago. The description's filter list ('stars, recency, language, verified, replied or keyword') largely restates schema fields without adding syntax or format detail. 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 ('Get a company's Trustpilot reviews and profile') and pins down the input mode ('by domain or Trustpilot URL'), which separates it from the search-style siblings like search_trustpilot_companies. It also enumerates the profile payload (TrustScore, stars, breakdown, claimed/verification status), so an agent knows exactly what class of data it gets.
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: needing a specific company's reviews/profile by domain or URL selects this tool over the search endpoints. There is no explicit when-to-use/when-not clause and no named alternative for discovering a company you don't yet have a domain for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trustpilot_user_profileTrustpilot User ProfileARead-onlyInspect
Get a Trustpilot reviewer's public profile by user ID (a review's author_id) or URL: name, country, review count, verified status, likes and reads, plus the reviews they wrote across all companies, each with company name and domain, rating, title, text, dates and the company's reply. 20 reviews per page. Billed $0.005 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, 1-500 (default: 1). Each page returns up to 20 reviews. | |
| user_id | Yes | Reviewer ID (24 hex characters, a review's author_id) or a trustpilot.com/users/... URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful non-schema behavior: pagination granularity (20 reviews per page) and the per-request billing cost ($0.005), which an agent needs to decide whether to page further.
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 core purpose and return payload, then the operational facts (pagination, price) in short trailing sentences. It is fairly dense but every clause carries information; 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?
There is no output schema, so the description usefully enumerates the returned fields (name, country, review count, verified status, likes/reads, and nested review details with company reply). Combined with the annotation safety profile and pagination/billing notes, an agent has enough to call it correctly; only error/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?
Schema description coverage is 100%, so the baseline is 3, and the description adds provenance the schema lacks: that user_id comes from a review's author_id or a profile URL. It reinforces the 20-reviews-per-page relationship between 'page' and volume returned, though it adds no page-range or format details beyond 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?
States a specific verb and resource ('Get a Trustpilot reviewer's public profile') and explicitly scopes the identifier source (a review's author_id or URL). An agent can immediately tell this apart from trustpilot_company_reviews or search_trustpilot_companies, which operate on companies rather than individual reviewers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for invoking it: supply a user_id that is either a 24-hex reviewer ID from a review's author_id or a trustpilot.com/users/... URL. It stops short of naming alternatives or stating when-not to use it (e.g., vs. a search tool), so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
truthsocial_user_postsTruth Social User PostsARead-onlyInspect
Get a Truth Social user's recent posts (their feed) by username. Returns post text, engagement metrics (replies, reposts, likes), media, hashtags, reply status and permalinks. Up to 20 posts per page. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-20 (default: 1). Each page returns up to 20 posts | |
| username | Yes | Truth Social username, with or without leading @ (max 100 characters) | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and destructiveHint=false. The description adds useful behavioral context beyond annotations: the 20-posts-per-page limit, per-page billing, and the fields returned. It stops short of covering auth, rate limits, or error behavior, but it is strong for a read-only social feed tool.
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 sentences, front-loaded with purpose, then return payload, then pagination and billing. Every sentence adds value with no redundancy or 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 read-only paginated fetch with no output schema, the description supplies the missing return-value summary and important cost/pagination details. Annotations cover the safety profile and the input schema covers parameters, so the definition is complete enough to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so username, pages, and get_sentiment are already well documented. The description adds billing per page and repeats the page size, but it does not add syntax or meaning for the parameters beyond what the schema provides. Baseline 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?
States a specific verb and resource ('Get a Truth Social user's recent posts (their feed) by username') and names the platform explicitly. It clearly distinguishes this from generic search tools or user-post tools for other social networks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for use: when you have a Truth Social username and need that user's recent feed. It does not explicitly name when-not-to-use cases or alternatives, but the platform-specific scope and lack of sibling Truth Social tools make the intended use unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitter_trendsTwitter Trending TopicsARead-onlyInspect
Get the current Twitter/X trending topics for a location by WOEID (1 = worldwide). Returns trend names, search queries and tweet volumes where available. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| woeid | Yes | Where On Earth ID for the location. Use 1 for Worldwide. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, openWorld, and destructive=false. The description adds genuinely useful context beyond the schema: the billing cost ($0.006 per request) and the shape of returned values (trend names, search queries, tweet volumes). This cost and return info is not derivable from structured 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?
Three sentences, front-loaded with the core action, then return fields, then the billing note. Every sentence earns its place with no 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?
For a single-parameter tool with no output schema, the description covers purpose, return fields, and cost. Given the annotations carry the safety profile, nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already documents woeid including '1 for Worldwide'. The description repeats the WOEID convention but adds no syntax or format 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?
States a specific verb (Get) and resource (current Twitter/X trending topics) scoped by location via WOEID. This is clearly distinguishable from siblings like search_twitter or twitter_tweet_details, which fetch posts/tweets rather than trend 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 description implies the tool is for retrieving trending topics for a location, but offers no explicit when-to-use/when-not guidance or named alternatives. There is no direct sibling for trends, so implied usage is adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitter_tweet_commentsTwitter Tweet CommentsARead-onlyInspect
Get the replies (comments) on a tweet, by numeric tweet ID. Returns each reply's text and engagement metrics. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-20 (default: 1) | |
| tweet_id | Yes | Numeric tweet ID | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context beyond annotations: it discloses billing ($0.006 per page) and summarizes the return content (each reply's text and engagement metrics).
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 three short, front-loaded sentences with no wasted text. It states the purpose first, then the return content, then billing, which is an efficient structure for an agent scanning options.
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, fully schema-documented tool with no output schema, the description covers the essentials: what it returns and that it is billed per page. It does not explain pagination behavior or reply ordering, which are minor gaps given the existing schema and annotations.
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 all three parameters are already documented in the schema with descriptions and defaults. The description reinforces that tweet_id is numeric but adds no additional format, pagination behavior, or sentiment-analysis detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: get replies/comments on a tweet, scoped by numeric tweet ID. It clearly separates this from sibling tools like twitter_tweet_details, twitter_tweet_quotes, and twitter_tweet_retweets by naming the exact resource and required identifier.
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 purpose: use this when you need replies on a specific tweet. However, there is no explicit when-to-use guidance, no mention of alternatives for getting tweet comments, and no exclusions or prerequisites such as whether the tweet must be public.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitter_tweet_detailsTwitter Tweet DetailsARead-onlyInspect
Get one tweet by its numeric ID. Returns full text, engagement metrics, author info and metadata. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| tweet_id | Yes | Numeric tweet ID | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering safety. The description adds the billing cost ($0.006 per request), which is useful behavioral context. However, it doesn't disclose other traits like rate limits or pagination (though single-request). With annotations covering safety, a 3 is appropriate.
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 three short sentences, front-loading the core action and then listing returns and cost. Every sentence adds value with no waste.
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?
Given there's no output schema, the description partially fulfills the need by listing return fields (full text, engagement metrics, author info, metadata). However, for a data-fetching tool, it could be more complete by mentioning response format, error cases, or rate limits. Annotations and full schema coverage reduce the burden, but the description leaves some gaps.
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 both parameters (tweet_id and get_sentiment). The description doesn't add any parameter details beyond the schema, so baseline 3 is 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 clearly states it retrieves a single tweet by numeric ID and lists the return contents (full text, engagement metrics, author info, metadata). It doesn't explicitly distinguish itself from sibling tools like twitter_tweet_comments or twitter_tweet_quotes, but the focus on a single tweet's details is clear from the name and description.
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 usage (get one tweet by ID) but provides no explicit guidance on when to use this versus alternatives such as search_twitter or other tweet-related endpoints. It hints at precision (numeric ID) but lacks conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitter_tweet_quotesTwitter Quote TweetsARead-onlyInspect
Get the quote tweets of a tweet, by numeric tweet ID. Returns each quote's text and engagement metrics. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-20 (default: 1) | |
| tweet_id | Yes | Numeric tweet ID | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: the return payload contents (quote text and engagement metrics) and the billing rate ($0.006 per page), which is a real cost consideration for a paid, paginated read.
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 sentences, front-loaded with the action and resource, followed by return contents and cost. Every sentence carries distinct information with no 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 paginated read tool with no output schema, the description covers purpose, returned fields, and cost per page. It stops short of stating page size or result ordering, which would matter for a paginated endpoint, but the essential calling information is present.
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 all three parameters (tweet_id, pages, get_sentiment) are already documented in the schema. The description only restates the tweet_id format and adds no syntax or semantics beyond what the schema provides, 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 ('Get the quote tweets of a tweet'), plus the required identifier format ('by numeric tweet ID'). This cleanly distinguishes it from siblings like twitter_tweet_comments, twitter_tweet_retweets, and twitter_tweet_details, which cover different sub-resources of the same tweet.
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 usage (fetch quote tweets for a given tweet) but never states when to choose this over twitter_tweet_details, twitter_tweet_comments, or search_twitter. No exclusions or alternative routing are given, so the agent must infer from the resource name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitter_tweet_retweetsTwitter Tweet RetweetsARead-onlyInspect
Get the users who retweeted a tweet, by numeric tweet ID. Returns profile details for each user. Use twitter_tweet_quotes for retweets that added a comment. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-20 (default: 1) | |
| tweet_id | Yes | Numeric tweet ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, openWorld, so the safety profile is covered. The description adds genuinely useful context beyond them: pagination-based billing ('$0.006 per page') and the shape of the return ('profile details for each user'). It does not describe pagination limits or rate-limit behavior, keeping 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 short sentences with zero waste, front-loading the core purpose before the alternative and the cost note. Every sentence carries distinct 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?
With no output schema, the description helpfully signals the return content ('profile details for each user') and the cost model. It leaves minor gaps on pagination ceilings and return ordering, but is adequate for a straightforward read tool whose annotations cover safety.
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 are already documented in structured form; baseline 3 applies. The description reinforces that tweet_id is numeric but adds no syntax or default detail for 'pages' beyond what the schema 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?
States a specific verb and resource ('Get the users who retweeted a tweet') plus the keying method ('by numeric tweet ID'). It explicitly names the sibling it is not (twitter_tweet_quotes) and the distinguishing condition, so an agent can separate it from adjacent tools without opening schemas.
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?
Explicitly routes the ambiguous case to twitter_tweet_quotes ('retweets that added a comment'), which is the main source of confusion for this tool family. It stops short of covering broader when-to-use context or other alternatives like twitter_tweet_details, so it is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitter_user_followersTwitter User FollowersARead-onlyInspect
Get the followers of a Twitter/X user by username. Returns each follower's username, bio, follower counts and verification status. Use twitter_verified_followers for verified followers only. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-20 (default: 1) | |
| username | Yes | Twitter username (without @, max 50 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), and the description adds value beyond them by disclosing the returned fields (username, bio, follower counts, verification status) and the cost model ($0.006 per page). It stops short of describing pagination behavior or rate limits, so it is strong but not exhaustive.
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 sentences, each carrying distinct information: purpose, return payload, alternative routing, and pricing. Nothing is repeated from the title and the core action is front-loaded.
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 returned fields, and it adds cost and routing context for a two-parameter read tool. Only pagination/truncation behavior across the 20-page ceiling is left 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%, so both parameters are fully documented in the schema including the 1-20 page range. The description only implies 'by username' and 'per page', adding no format or constraint detail beyond what the schema already states; 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 ('Get the followers of a Twitter/X user by username') and explicitly names the sibling it is not (twitter_verified_followers). An agent can distinguish it from twitter_user_following and twitter_verified_followers without opening any 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?
Gives an explicit routing rule: use twitter_verified_followers when only verified followers are wanted, implying this tool is for the full follower set. That is a clear when/when-not pair anchored to a named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitter_user_followingTwitter User FollowingARead-onlyInspect
Get the accounts a Twitter/X user follows, by username. Returns profile details for each account, about 50 per page. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-175 (default: 1). Each page returns ~50 accounts. | |
| username | Yes | Twitter username (without @, max 50 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so safety is covered. The description adds genuinely useful behavior beyond that: the per-account return shape ('profile details'), the pagination rate (~50 per page), and the cost model ($0.006 per page), which matters for a paginated paid call.
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 sentences, zero filler, with the core purpose front-loaded and the cost/pagination facts appended in the order an agent needs them.
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 stating what each returned item contains and how many per page, plus the billing model. It stops short of noting rate limits, auth requirements, or truncation behavior for very large following lists, but it is sufficient to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (username, pages with 1-175 range) are already documented in the schema. The description's '~50 per page' restates the schema's page-size note rather than adding new semantics, 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 ('Get the accounts a Twitter/X user follows, by username'), which is unambiguous and clearly distinct from a search tool. It does not, however, name the closely related siblings (twitter_user_followers, twitter_verified_followers) to rule out confusion in the 'following vs followers' pair.
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 explicit guidance on when to use this versus twitter_user_followers, twitter_verified_followers, or twitter_user_profile, all of which sit adjacent in the tool list. Usage is only implied by the tool's name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitter_user_profileTwitter User ProfileARead-onlyInspect
Get a Twitter/X user's profile by username. Returns display name, bio, follower and following counts, verification status and account metadata. Use search_twitter_users to find an account by keyword. Billed $0.006 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Twitter username (without @, max 50 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful non-schema context: the $0.006 per-request billing and the shape of the returned profile data. It does not mention rate limits or error behavior for missing accounts, so it falls 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?
Three tight sentences, each earning its place: purpose, return payload, alternative tool, and price. Front-loaded with the core action, no filler or restatement of the title.
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 the returned fields, and annotations cover the safety profile. Cost disclosure plus sibling routing make this complete enough for an agent to select and call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter with 100% schema description coverage ('Twitter username (without @, max 50 characters)'), so the schema already carries the syntax constraints. The description only restates 'by username' and adds no format or edge-case detail beyond the schema — the baseline 3 for full coverage.
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 ('Get a Twitter/X user's profile by username') and enumerates what comes back (display name, bio, follower/following counts, verification, metadata). It is readily distinguishable from search_twitter_users, which it names 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?
Gives the exact lookup key (username) and routes the other case to the correct sibling: 'Use search_twitter_users to find an account by keyword.' The when-to-use/when-to-use-something-else pairing is explicit rather than implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitter_user_repliesTwitter User RepliesARead-onlyInspect
Get the replies a Twitter/X user posted, by username. Returns each reply's text and engagement metrics. Use twitter_user_tweets for their tweets. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-20 (default: 1) | |
| username | Yes | Twitter username (without @, max 50 characters) | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely non-structured context: what is returned (reply text plus engagement metrics) and the billing model ($0.006 per page), though it does not discuss pagination limits or rate limiting.
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 sentences, each carrying distinct information: what it returns, the sibling to use instead, and the cost. Front-loaded with the core action and zero 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 description usefully names the return payload (text and engagement metrics), and it covers the alternative tool and cost. Minor gaps remain around result volume/pagination behavior, but nothing essential for correct invocation 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 description coverage is 100%, so pages, username and get_sentiment are all documented structurally; the baseline is 3. The description only restates the username key and adds no syntax, format or default behavior 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?
States a specific verb and resource (get replies posted by a user) plus the retrieval key (username), and explicitly separates itself from twitter_user_tweets. An agent can distinguish it from twitter_tweet_comments and twitter_user_tweets without opening any 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?
Names an explicit alternative ('Use twitter_user_tweets for their tweets'), which resolves the most likely confusion. It does not state exclusions or conditions relative to other siblings (e.g. search_twitter, twitter_tweet_comments), so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitter_user_tweetsTwitter User TweetsARead-onlyInspect
Get the tweets a Twitter/X user posted, by username. Returns tweet text, engagement metrics and metadata. Use twitter_user_replies for their replies. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-20 (default: 1) | |
| username | Yes | Twitter username (without @, max 50 characters) | |
| get_sentiment | No | Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds value beyond that by describing the return payload (tweet text, engagement metrics, metadata) and disclosing the $0.006 per-page billing, which is real operational context an agent cannot get from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core action, followed by return contents, sibling routing and cost. Every sentence carries distinct information 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?
With no output schema, the description compensates by naming the returned fields, and it discloses pricing and the reply-tool alternative. It leaves pagination/rate behavior to the schema, so it is complete enough without being exhaustive.
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 all three parameters (username, pages, get_sentiment) are already fully documented in the schema, including the surcharge note on get_sentiment. The description confirms username-based lookup but adds no syntax or format detail beyond the schema, 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 ('Get the tweets a Twitter/X user posted, by username') and immediately names the sibling it is not (twitter_user_replies), so an agent can disambiguate from the replies tool without opening either 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?
Explicitly routes the agent to twitter_user_replies when replies are wanted, which is clear context for the main sibling. It does not address when to prefer this over search_twitter or twitter_tweet_details, so it stops short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitter_verified_followersTwitter Verified FollowersARead-onlyInspect
Get only the verified (blue checkmark) followers of a Twitter/X user, by username. Returns profile details for each. Use twitter_user_followers for all followers. Billed $0.006 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| pages | No | Number of pages to fetch, 1-20 (default: 1) | |
| username | Yes | Twitter username (without @, max 50 characters) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, establishing the safety profile. Description adds billing cost ($0.006 per page) and return content ('profile details for each'), but does not cover rate limits or authentication needs.
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 sentences: purpose, return, alternative, billing. Every sentence earns its place and no information is buried.
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?
Simple read tool with annotations and full schema coverage; description covers purpose, alternative, return type, and billing. With no output schema, 'profile details' is minimal but adequate for an agent to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so username and pages are fully documented in the schema. Description adds 'by username' but no additional syntax or semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Explicit verb 'Get' with resource 'verified followers' of a Twitter/X user and scope 'only verified', plus input method 'by username'. Names sibling twitter_user_followers as the alternative for all followers, distinguishing it from alternatives clearly.
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?
States when to use this tool (verified-only followers) and explicitly directs to twitter_user_followers for all followers. Also notes billing cost, giving cost context for usage decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_channel_detailsYouTube Channel DetailsARead-onlyInspect
Get a YouTube channel by channel ID, URL or name/@handle (provide exactly one). Returns name, description, subscriber, video and total view counts, country, creation date, verification status, external links, profile picture and banner. Billed $0.005 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | YouTube channel ID (24 characters, starts with UC) | |
| url | No | Channel URL: youtube.com/channel/..., youtube.com/@handle, /c/ or /user/ forms | |
| name | No | Channel name or @handle (e.g. @mkbhd or Linus Tech Tips) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds genuinely new behavioral context: the per-request billing cost ($0.005) and the exact payload the caller receives, which is real value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the lookup method, then returns, then cost. No filler and nothing repeated from the title or 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 no output schema, the description compensates by listing the returned fields, and it covers identification and cost. What it omits is failure behavior (what happens with an invalid or nonexistent ID) and any truncation of the result set, which is a minor gap for a single-entity lookup.
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 adds the mutual-exclusivity constraint ('provide exactly one'), which the schema does not encode (required is empty), and this is exactly the kind of semantic the schema omits.
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 ('Get a YouTube channel') and enumerates the three accepted identifier forms plus the exact fields returned. The lookup-by-identifier framing implicitly separates it from the search_youtube_channels sibling, so an agent can pick it without opening the 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?
'provide exactly one' gives clear guidance on how to call it, and the identifier forms imply the context (you already know the channel). However, it never states when to prefer this over search_youtube_channels or search_youtube, so the alternative-selection guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_video_detailsYouTube Video DetailsARead-onlyInspect
Get one YouTube video by URL or 11-character video ID. Returns title, full description, channel name and ID, publish date, duration in seconds, view count, category, keywords and thumbnail. Works for regular videos, Shorts and live streams. Use get_youtube_comments for its comments. Billed $0.005 per request.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | YouTube video URL (watch?v=, youtu.be/, /shorts/, /embed/ or /live/ forms) or 11-character video ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: billing cost per request, support for regular videos, Shorts, and live streams, and the exact return payload.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, starting with the core operation and then adding return fields, supported types, a sibling alternative, and billing. Every sentence adds a distinct piece of useful 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 one-parameter read-only tool with no output schema, the description fully compensates by listing the returned fields, supported video types, input forms, related-tool routing, and billing. Nothing needed to invoke it correctly appears 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?
The single url parameter has 100% schema description coverage, and the description restates the same accepted URL forms and ID format. It does not add syntax or format details beyond what the schema already provides, 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 states a specific verb and resource: get one YouTube video by URL or 11-character ID. It also lists the returned fields and supported video types, making it clearly distinguishable from sibling tools like get_youtube_comments.
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 explicitly routes comment retrieval to get_youtube_comments and specifies accepted input forms. It does not explicitly compare against other video-related siblings such as youtube_channel_details or search_youtube, but the use context is clear.
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.
14 tool updates
- Added
search_tiktok_hashtags - Added
tiktok_comment_replies - Added
tiktok_hashtag_details - Added
tiktok_hashtag_videos - Added
tiktok_music_details - Added
tiktok_music_videos - Added
tiktok_playlist_details - Added
tiktok_playlist_videos - Added
tiktok_user_followers - Added
tiktok_user_following - Added
tiktok_user_likes - Added
tiktok_user_stories - Added
tiktok_user_videos - Added
tiktok_video_comments
17 tool updates
- Added
search_substack - Added
search_substack_notes - Added
search_substack_publications - Added
search_substack_users - Added
substack_category_feed - Added
substack_category_publications - Added
substack_note_details - Added
substack_post_comments - Added
substack_post_details - Added
substack_post_likes - Added
substack_publication_details - Added
substack_publication_posts - Added
substack_publication_recommendations - Added
substack_trending - Added
substack_user_activity - Added
substack_user_posts - Added
substack_user_profile
8 tool updates
- Changed
amazon_best_sellers1 field changed- changed
Input schema / properties / category / descriptionPrevious value: -"Category slug, e.g. electronics or software (see /docs/amazon-categories)"New value: +"Category slug, e.g. electronics or software (see https://apidirect.io/docs/amazon-categories)"
- Changed
facebook_page_posts2 fields changed- changed
Input schema / properties / end_date / descriptionPrevious value: -"Filter posts until this date"New value: +"Only posts up to this date (YYYY-MM-DD)" - changed
Input schema / properties / start_date / descriptionPrevious value: -"Filter posts from this date"New value: +"Only posts from this date onward (YYYY-MM-DD)"
- Changed
search_amazon_products1 field changed- changed
Input schema / properties / category_id / descriptionPrevious value: -"Category slug, e.g. electronics (see /docs/amazon-categories)"New value: +"Category slug, e.g. electronics (see https://apidirect.io/docs/amazon-categories)"
- Changed
search_facebook_posts2 fields changed- changed
Input schema / properties / end_date / descriptionPrevious value: -"Filter posts until this date"New value: +"Only posts up to this date (YYYY-MM-DD)" - changed
Input schema / properties / start_date / descriptionPrevious value: -"Filter posts from this date"New value: +"Only posts from this date onward (YYYY-MM-DD)"
- Changed
search_facebook_videos2 fields changed- changed
Input schema / properties / end_date / descriptionPrevious value: -"Filter videos until this date"New value: +"Only videos up to this date (YYYY-MM-DD)" - changed
Input schema / properties / start_date / descriptionPrevious value: -"Filter videos from this date"New value: +"Only videos from this date onward (YYYY-MM-DD)"
- Changed
search_instagram1 field changed- changed
Input schema / properties / query / descriptionPrevious value: -"Search keyword (max 500 characters)"New value: +"Search keyword (max 500 characters). Cannot start with # or @"
- Changed
search_linkedin_jobs1 field changed- changed
Input schema / properties / location_id / descriptionPrevious value: -"Filter by location — a numeric LinkedIn location id (see the Job Location IDs doc)."New value: +"Filter by location — a numeric LinkedIn location id (see https://apidirect.io/docs/linkedin-job-locations)."
- Changed
tiktok_video_details1 field changed- changed
Input schema / properties / video_id / descriptionPrevious value: -"Numeric TikTok video ID, as returned by search_tiktok"New value: +"Numeric TikTok video ID: the number at the end of a video URL, e.g. 7516594811734854943"
1 tool update
- Added
linkedin_person_details
3 tool updates
- Changed
search_linkedin1 field changed- added
Input schema / properties / posted_agoAdded value: +{ + "description": "Only posts from this period: \"24h\", \"7d\", or \"30d\" (default: all time). Works with both sort orders and every filter", + "enum": [ + "24h", + "7d", + "30d" + ], + "type": "string" +}
- Changed
search_reddit1 field changed- added
Input schema / properties / posted_agoAdded value: +{ + "description": "Only posts from this period: \"1h\", \"24h\", \"7d\", \"30d\", or \"12m\" (default: all time). Works with every sort_by", + "enum": [ + "1h", + "24h", + "7d", + "30d", + "12m" + ], + "type": "string" +}
- Changed
search_twitter4 fields changed- added
Input schema / properties / end_dateAdded value: +{ + "description": "Only posts up to and including this date (YYYY-MM-DD, UTC). Not with posted_ago", + "type": "string" +} - added
Input schema / properties / posted_agoAdded value: +{ + "description": "Only posts from this period: \"1h\", \"24h\", \"7d\", \"30d\", or \"12m\" (default: all time). Works with both sort orders", + "enum": [ + "1h", + "24h", + "7d", + "30d", + "12m" + ], + "type": "string" +} - changed
Input schema / properties / query / descriptionPrevious value: -"Search keyword (max 500 characters)"New value: +"Search keyword (max 500 characters). Supports X search operators" - added
Input schema / properties / start_dateAdded value: +{ + "description": "Only posts from this date onward (YYYY-MM-DD, UTC). Not with posted_ago", + "type": "string" +}
10 tool updates
- Changed
bluesky_post_comments2 fields changed- changed
Input schema / properties / post_id / descriptionPrevious value: -"The post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters). Provide either url or post_id."New value: +"The post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters)." - changed
Input schema / properties / url / descriptionPrevious value: -"Bluesky post URL, e.g. https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l (max 500 characters). Provide either url or post_id."New value: +"Bluesky post URL, e.g. https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l (max 500 characters)."
- Changed
bluesky_post_details2 fields changed- changed
Input schema / properties / post_id / descriptionPrevious value: -"The post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters). Provide either url or post_id."New value: +"The post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters)." - changed
Input schema / properties / url / descriptionPrevious value: -"Bluesky post URL, e.g. https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l (max 500 characters). Provide either url or post_id."New value: +"Bluesky post URL, e.g. https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l (max 500 characters)."
- Changed
bluesky_post_likes2 fields changed- changed
Input schema / properties / post_id / descriptionPrevious value: -"The post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters). Provide either url or post_id."New value: +"The post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters)." - changed
Input schema / properties / url / descriptionPrevious value: -"Bluesky post URL, e.g. https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l (max 500 characters). Provide either url or post_id."New value: +"Bluesky post URL, e.g. https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l (max 500 characters)."
- Changed
bluesky_post_quotes2 fields changed- changed
Input schema / properties / post_id / descriptionPrevious value: -"The post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters). Provide either url or post_id."New value: +"The post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters)." - changed
Input schema / properties / url / descriptionPrevious value: -"Bluesky post URL, e.g. https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l (max 500 characters). Provide either url or post_id."New value: +"Bluesky post URL, e.g. https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l (max 500 characters)."
- Changed
bluesky_post_reposts2 fields changed- changed
Input schema / properties / post_id / descriptionPrevious value: -"The post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters). Provide either url or post_id."New value: +"The post's AT URI as returned in post_id, e.g. at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l (max 200 characters)." - changed
Input schema / properties / url / descriptionPrevious value: -"Bluesky post URL, e.g. https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l (max 500 characters). Provide either url or post_id."New value: +"Bluesky post URL, e.g. https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l (max 500 characters)."
- Changed
bluesky_user_followers2 fields changed- changed
Input schema / properties / url / descriptionPrevious value: -"Bluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters). Provide either username or url."New value: +"Bluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters)." - changed
Input schema / properties / username / descriptionPrevious value: -"Bluesky handle, e.g. bsky.app, with or without leading @, or the account's DID (max 100 characters). Provide either username or url."New value: +"Bluesky handle, e.g. bsky.app, with or without leading @, or the account's DID (max 100 characters)."
- Changed
bluesky_user_following2 fields changed- changed
Input schema / properties / url / descriptionPrevious value: -"Bluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters). Provide either username or url."New value: +"Bluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters)." - changed
Input schema / properties / username / descriptionPrevious value: -"Bluesky handle, e.g. bsky.app, with or without leading @, or the account's DID (max 100 characters). Provide either username or url."New value: +"Bluesky handle, e.g. bsky.app, with or without leading @, or the account's DID (max 100 characters)."
- Changed
bluesky_user_likes2 fields changed- changed
Input schema / properties / url / descriptionPrevious value: -"Bluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters). Provide either username or url."New value: +"Bluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters)." - changed
Input schema / properties / username / descriptionPrevious value: -"Bluesky handle, e.g. bsky.app, with or without leading @, or the account's DID (max 100 characters). Provide either username or url."New value: +"Bluesky handle, e.g. bsky.app, with or without leading @, or the account's DID (max 100 characters)."
- Changed
bluesky_user_posts2 fields changed- changed
Input schema / properties / url / descriptionPrevious value: -"Bluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters). Provide either username or url."New value: +"Bluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters)." - changed
Input schema / properties / username / descriptionPrevious value: -"Bluesky handle, e.g. bsky.app, with or without leading @, or the account's DID (max 100 characters). Provide either username or url."New value: +"Bluesky handle, e.g. bsky.app, with or without leading @, or the account's DID (max 100 characters)."
- Changed
bluesky_user_profile2 fields changed- changed
Input schema / properties / url / descriptionPrevious value: -"Bluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters). Provide either username or url."New value: +"Bluesky profile URL, e.g. https://bsky.app/profile/bsky.app (max 500 characters)." - changed
Input schema / properties / username / descriptionPrevious value: -"Bluesky handle, e.g. bsky.app, with or without leading @, or the account's DID (max 100 characters). Provide either username or url."New value: +"Bluesky handle, e.g. bsky.app, with or without leading @, or the account's DID (max 100 characters)."
47 tool updates
- Changed
amazon_seller_reviews1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Added
bluesky_post_comments - Added
bluesky_post_details - Added
bluesky_post_likes - Added
bluesky_post_quotes - Added
bluesky_post_reposts - Added
bluesky_user_followers - Added
bluesky_user_following - Added
bluesky_user_likes - Added
bluesky_user_posts - Added
bluesky_user_profile - Changed
facebook_group_posts1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
facebook_page_posts1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
facebook_page_reels1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
facebook_page_reviews1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
facebook_page_videos1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
facebook_post_comments1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
instagram_comment_replies1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
instagram_hashtag_posts1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
instagram_post_comments1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
instagram_post_details1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
instagram_user_posts1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
linkedin_company_posts1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
linkedin_person_posts1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
linkedin_post_details1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
place_reviews1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Added
search_bluesky - Added
search_bluesky_users - Changed
search_facebook_posts1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
search_facebook_videos1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
search_forums1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
search_instagram1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
search_linkedin1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
search_reddit1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
search_reddit_comments1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
search_threads1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
search_tiktok1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
search_twitter1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
search_youtube1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
threads_user_posts1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
trustpilot_company_reviews1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
truthsocial_user_posts1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
twitter_tweet_comments1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
twitter_tweet_details1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
twitter_tweet_quotes1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
twitter_user_replies1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
- Changed
twitter_user_tweets1 field changed- changed
Input schema / properties / get_sentiment / descriptionPrevious value: -"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small per-page surcharge."New value: +"Add AI sentiment analysis (Plutchik emotions, dominant_emotion, intensity, and positive/negative/neutral polarity) to each result. Adds a small surcharge per page, or per request on single-request endpoints."
1 tool update
- Changed
instagram_user_followers1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch, 1-40 (default: 1). Each page returns up to 50 followers"New value: +"Number of pages to fetch, 1-40 (default: 1). Each page returns up to 50 followers; verified accounts return the first page only"
7 tool updates
- Added
search_trustpilot_categories - Added
search_trustpilot_companies - Added
trustpilot_category_companies - Added
trustpilot_category_details - Added
trustpilot_category_newest - Added
trustpilot_company_reviews - Added
trustpilot_user_profile
37 tool updates
- Changed
amazon_seller_products1 field changed- changed
Input schema / properties / page / descriptionPrevious value: -"Page number, 1-20 (default: 1). Each page returns ~16 results."New value: +"Page number, 1-50 (default: 1). Each page returns ~16 results."
- Changed
amazon_seller_reviews1 field changed- changed
Input schema / properties / page / descriptionPrevious value: -"Page number, 1-20 (default: 1)"New value: +"Page number, 1-50 (default: 1)"
- Changed
facebook_group_posts1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch (1-10, default 1). Billed per page."New value: +"Number of pages to fetch (1-15, default 1). Billed per page."
- Changed
facebook_page_photos1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch (1-10, default 1). Billed per page."New value: +"Number of pages to fetch (1-15, default 1). Billed per page."
- Changed
facebook_page_posts1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch (1-10, default 1). Billed per page."New value: +"Number of pages to fetch (1-15, default 1). Billed per page."
- Changed
facebook_page_reviews1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch (1-10, default 1). Billed per page."New value: +"Number of pages to fetch (1-15, default 1). Billed per page."
- Changed
facebook_page_videos1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch (1-10, default 1). Billed per page."New value: +"Number of pages to fetch (1-15, default 1). Billed per page."
- Changed
facebook_post_comments1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch (1-10, default 1). Billed per page."New value: +"Number of pages to fetch (1-20, default 1). Billed per page."
- Changed
get_youtube_comments1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch, 1-10 (default: 1). Each page returns up to ~100 comments."New value: +"Number of pages to fetch, 1-20 (default: 1). Each page returns up to ~100 comments."
- Changed
instagram_post_comments1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch, 1-10 (default: 1). Each page returns up to 15 comments"New value: +"Number of pages to fetch, 1-20 (default: 1). Each page returns up to 15 comments"
- Changed
instagram_user_followers1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch, 1-20 (default: 1). Each page returns up to 50 followers"New value: +"Number of pages to fetch, 1-40 (default: 1). Each page returns up to 50 followers"
- Changed
instagram_user_following1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch, 1-20 (default: 1). Each page returns up to 50 accounts"New value: +"Number of pages to fetch, 1-40 (default: 1). Each page returns up to 50 accounts"
- Changed
instagram_user_posts1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch, 1-10 (default: 1). Each page returns up to 12 posts"New value: +"Number of pages to fetch, 1-20 (default: 1). Each page returns up to 12 posts"
- Changed
linkedin_company_posts1 field changed- changed
Input schema / properties / page / descriptionPrevious value: -"Page number for pagination (default: 1)"New value: +"Page number, 1-50 (default: 1). 10 posts per page"
- Changed
linkedin_person_posts1 field changed- changed
Input schema / properties / page / descriptionPrevious value: -"Page number, 1-5 (default: 1). 20 posts per page — up to ~100 of the person's most recent posts."New value: +"Page number, 1-30 (default: 1). 20 posts per page — up to ~600 of the person's most recent posts."
- Changed
search_facebook_events1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch (1-10, default 1). Billed per page."New value: +"Number of pages to fetch (1-15, default 1). Billed per page."
- Changed
search_facebook_pages1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch (1-10, default 1). Billed per page."New value: +"Number of pages to fetch (1-15, default 1). Billed per page."
- Changed
search_facebook_posts1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch (1-10, default 1). Billed per page."New value: +"Number of pages to fetch (1-15, default 1). Billed per page."
- Changed
search_facebook_videos1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch (1-10, default 1). Billed per page."New value: +"Number of pages to fetch (1-15, default 1). Billed per page."
- Changed
search_forums1 field changed- changed
Input schema / properties / page / descriptionPrevious value: -"Page number for pagination (default: 1)"New value: +"Page number, 1-10 (default: 1). 10 posts per page"
- Changed
search_instagram1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch, 1-10 (default: 1)"New value: +"Number of pages to fetch, 1-20 (default: 1)"
- Changed
search_linkedin1 field changed- changed
Input schema / properties / page / descriptionPrevious value: -"Page number for pagination (default: 1)"New value: +"Page number, 1-25 (default: 1). 20 posts per page"
- Changed
search_linkedin_jobs1 field changed- changed
Input schema / properties / page / descriptionPrevious value: -"Page number for pagination (default: 1)"New value: +"Page number, 1-40 (default: 1). 25 jobs per page"
- Changed
search_reddit1 field changed- changed
Input schema / properties / page / descriptionPrevious value: -"Page number, 1-5 (default: 1)"New value: +"Page number, 1-12 (default: 1). 20 posts per page"
- Changed
search_reddit_comments1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch, 1-5 (default: 1)"New value: +"Number of pages to fetch, 1-10 (default: 1)"
- Changed
search_twitter1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch, 1-10 (default: 1)"New value: +"Number of pages to fetch, 1-20 (default: 1)"
- Changed
search_twitter_users1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch, 1-10 (default: 1)"New value: +"Number of pages to fetch, 1-20 (default: 1)"
- Changed
search_youtube1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch, 1-10 (default: 1)"New value: +"Number of pages to fetch, 1-20 (default: 1)"
- Changed
search_youtube_channels1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch, 1-10 (default: 1)"New value: +"Number of pages to fetch, 1-20 (default: 1)"
- Changed
truthsocial_user_posts1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch, 1-10 (default: 1). Each page returns up to 20 posts"New value: +"Number of pages to fetch, 1-20 (default: 1). Each page returns up to 20 posts"
- Changed
twitter_tweet_comments1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch, 1-10 (default: 1)"New value: +"Number of pages to fetch, 1-20 (default: 1)"
- Changed
twitter_tweet_quotes1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch, 1-10 (default: 1)"New value: +"Number of pages to fetch, 1-20 (default: 1)"
- Changed
twitter_tweet_retweets1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch, 1-10 (default: 1)"New value: +"Number of pages to fetch, 1-20 (default: 1)"
- Changed
twitter_user_followers1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch, 1-10 (default: 1)"New value: +"Number of pages to fetch, 1-20 (default: 1)"
- Changed
twitter_user_replies1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch, 1-10 (default: 1)"New value: +"Number of pages to fetch, 1-20 (default: 1)"
- Changed
twitter_user_tweets1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch, 1-10 (default: 1)"New value: +"Number of pages to fetch, 1-20 (default: 1)"
- Changed
twitter_verified_followers1 field changed- changed
Input schema / properties / pages / descriptionPrevious value: -"Number of pages to fetch, 1-10 (default: 1)"New value: +"Number of pages to fetch, 1-20 (default: 1)"
9 tool updates
- Added
instagram_comment_replies - Added
instagram_hashtag_posts - Added
instagram_highlight_stories - Added
instagram_post_comments - Added
instagram_post_likes - Added
instagram_user_followers - Added
instagram_user_following - Added
instagram_user_highlights - Added
instagram_user_stories
6 tool updates
- Added
amazon_best_sellers - Added
amazon_product_details - Added
amazon_seller_products - Added
amazon_seller_profile - Added
amazon_seller_reviews - Added
search_amazon_products
68 tool updates
- First observed
batch_requests - First observed
facebook_group_details - First observed
facebook_group_posts - First observed
facebook_page_details - First observed
facebook_page_photos - First observed
facebook_page_posts - First observed
facebook_page_reels - First observed
facebook_page_reviews - First observed
facebook_page_videos - First observed
facebook_post_comments - First observed
get_skill - First observed
get_youtube_comments - First observed
google_ai_mode - First observed
instagram_post_details - First observed
instagram_user_posts - First observed
instagram_user_profile - First observed
linkedin_company_details - First observed
linkedin_company_posts - First observed
linkedin_job_details - First observed
linkedin_person_posts - First observed
linkedin_post_details - First observed
list_skills - First observed
place_details - First observed
place_photos - First observed
place_reviews - First observed
search_facebook_events - First observed
search_facebook_locations - First observed
search_facebook_pages - First observed
search_facebook_posts - First observed
search_facebook_videos - First observed
search_forums - First observed
search_instagram - First observed
search_instagram_users - First observed
search_linkedin - First observed
search_linkedin_companies - First observed
search_linkedin_jobs - First observed
search_news - First observed
search_places - First observed
search_reddit - First observed
search_reddit_comments - First observed
search_reddit_users - First observed
search_threads - First observed
search_threads_users - First observed
search_tiktok - First observed
search_tiktok_users - First observed
search_twitter - First observed
search_twitter_users - First observed
search_web - First observed
search_youtube - First observed
search_youtube_channels - First observed
threads_user_posts - First observed
threads_user_profile - First observed
tiktok_user_profile - First observed
tiktok_video_details - First observed
truthsocial_user_posts - First observed
twitter_trends - First observed
twitter_tweet_comments - First observed
twitter_tweet_details - First observed
twitter_tweet_quotes - First observed
twitter_tweet_retweets - First observed
twitter_user_followers - First observed
twitter_user_following - First observed
twitter_user_profile - First observed
twitter_user_replies - First observed
twitter_user_tweets - First observed
twitter_verified_followers - First observed
youtube_channel_details - First observed
youtube_video_details
Publisher details
- Operator
- API Direct · Publisher source
- Operator website
- https://apidirect.io
- Vendor relationship
- First-party
- Documentation
- https://github.com/apidirect/mcp-server
- Trust center
- Not available
- Restrictions
- Requires an API Direct API key (free account). 50 free requests per endpoint each month, then pay per request. · Publisher source
Related MCP Connectors
Live public data from Instagram, TikTok, LinkedIn, YouTube, X and 20 more networks, via one key.
Read-only public X (Twitter) data: profiles, tweets, threads, followers, search. Pay per result.
Search, extract, crawl, map, research, scrape 16 platforms, browser automation, proxy — one API key.
YouTube, TikTok, Instagram, X, Reddit, LinkedIn and Threads: public data in one schema.
Related MCP Servers
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.377 npmMIT
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.11 npm7MIT
@xcrap/mcpofficial
AlicenseAqualityCmaintenanceProvides read-only access to X (Twitter) data — posts, threads, profiles, timelines, followers, media, and trends — through twelve tools, with no login or API key required.41210 npmMIT- AlicenseAqualityAmaintenanceReal-time X (Twitter) data platform with 2 MCP tools covering 120+ REST API endpoints. Search tweets, look up users, get timelines, extract followers/likes/retweets in bulk, monitor accounts, run giveaway draws, and perform write actions (tweet, like, retweet, follow, DM). OAuth 2.1 authentication with PKCE.2382 npm213MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.