TrueScrape
Server Details
Public social media data: Instagram, TikTok, YouTube, X, Reddit, LinkedIn and 30+ more platforms.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- TrueScrape/truescrape
- GitHub Stars
- 0
TDQS
Scored across 254 tools
Tools are namespaced by platform and then by resource+action, so amazon_product vs amazon_offers vs amazon_search are easily told apart, and near-duplicates (tiktok_trending vs tiktok_popularVideos, instagram_profile vs instagram_userEmbed) are explicitly contrasted in their descriptions. The residual ambiguity is mostly structural noise from the size of the set: seven near-identical link-in-bio tools (linktree_page, komi_page, linkme_page, pillar_page, solo_page, taplink_page, milkshake_page) differ only by platform, and a few same-prefix pairs like reddit_postComments vs reddit_commentReplies require reading the description.
Most names are prefix_snake_case (amazon_offers, reddit_subredditDetails), but the prefix itself is inconsistent (appleMusic_album is camelCase while every other prefix is lowercase) and many names mix snake_case prefixes with camelCase tails (bitchute_channelVideos, deezer_artistTopTracks, facebook_adLibraryAdvertisers, youtube_trendingShorts). A handful of tools carry no platform prefix at all and use a different verb-first pattern (create_watch, cancel_watch, list_watches, identity_findSocialProfiles, inference_ageGender). Readable in practice, but not one predictable convention.
254 tools is far past what an agent can hold in context or reliably select from, and the same handful of shapes (get profile, get post list, get comments, get transcript) is repeated across ~30 platforms. The breadth is defensible for a multi-source scraping platform, but as a tool set it is well into the 'too many' band, and the two watch-management tools and the lone inference_ageGender feel bolted on.
Coverage is deep for the platforms it supports: profile/video/search/comments/transcripts exist for the major sources, and pagination, cursor and raw-field caveats are documented throughout, so there are few dead ends. Gaps remain at the tail — Kick exposes only kick_clip (no channel, video or search), Rumble has channelVideos without a channel profile, and there is no Twitch search or VOD-details tool — but agents can usually route around these.
Available Tools
254 toolsamazon_offersamazon: All seller offers for a productARead-onlyInspect
All seller offers for a product. Every offer on an Amazon listing (price, seller, condition, Prime eligibility and shipping), alongside the product itself. Costs 3 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| tld | No | Marketplace TLD, default "com". One of: com, co.uk, ca, de, es, fr, ie, it, co.jp, co.za, in, cn, com.sg, com.mx, ae, com.br, nl, com.au, com.tr, sa, se, pl | |
| asin | Yes | Amazon ASIN, e.g. "B08N5WRWNW" | |
| condition | No | Filter offers to one condition. | |
| country_code | No | Best-effort locale hint (ISO 3166-1 alpha-2). | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/openWorld, so the description's real contribution is the credit cost ('Costs 3 credits') and the disclosure of what the payload contains, which helps an agent decide whether to spend. It stops short of noting rate limits, caching behavior (relevant given the cache_max_age param), or result 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 short sentences with the core scope front-loaded. The second sentence slightly restates the first ('All seller offers for a product' / 'Every offer on an Amazon listing') rather than adding new information, costing a little density but nothing harmful.
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 discloses the credit cost — the two things an agent most needs. Missing only practical invocation details such as pagination or how many offers typically come back.
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 80%, so parameters like asin, tld and the condition enum are already documented in the schema. The description adds only that condition is a dimension of each offer, not how the condition parameter filters results — 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?
The description names the resource and its scope explicitly: 'All seller offers for a product' with the returned fields enumerated (price, seller, condition, Prime eligibility, shipping). This separates it from amazon_product (product details) at a conceptual level, though it never names that sibling to make the split airtight.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the phrase 'all seller offers for a product' hints you use it when you need competing seller pricing rather than catalog data. There is no explicit 'use this instead of amazon_product when...' statement, and the credit cost is stated without guidance on when that trade-off is worth it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
amazon_productamazon: Product detailsARead-onlyInspect
Product details. Public details for one Amazon listing: title, brand, price, availability, rating, specifications and an inline review sample. Costs 3 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| tld | No | Marketplace TLD, default "com". One of: com, co.uk, ca, de, es, fr, ie, it, co.jp, co.za, in, cn, com.sg, com.mx, ae, com.br, nl, com.au, com.tr, sa, se, pl | |
| asin | Yes | Amazon ASIN, e.g. "B08N5WRWNW" | |
| country_code | No | Best-effort locale hint (ISO 3166-1 alpha-2). | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint) and open-world scope, so the bar is lower. The description still adds real value beyond them by disclosing the 3-credit cost and clarifying that the data is public and includes an inline review sample. It omits caching semantics, which matters given the cache_max_age parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the resource and return fields, with the cost appended as a discrete operational note. Nothing is redundant with 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?
For a read-only lookup with no output schema, listing the returned fields is genuinely useful and covers the main information need. The gap is the undescribed cache_max_age parameter and the absence of any note on failure modes for invalid ASINs or unavailable marketplaces.
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 75%, with asin and tld well documented in the schema, so the baseline is 3. The description adds no parameter-level meaning at all — nothing about how the marketplace TLD interacts with country_code, and nothing at all about cache_max_age, which the schema leaves undescribed.
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 (retrieves) and resource (one Amazon listing) and enumerates exactly what is returned: title, brand, price, availability, rating, specifications, review sample. The phrase 'one Amazon listing' implicitly separates it from search-style siblings, but it never names amazon_search or amazon_offers to make the distinction explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the required ASIN signals this is a lookup-by-identifier tool rather than a discovery tool, and the credit cost gives a rough sense of expense. There is no explicit when-to-use guidance and no statement of when to prefer amazon_offers or amazon_search instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
amazon_searchamazon: Search resultsARead-onlyInspect
Search results. Public Amazon search results for a query: position, price, rating and badges per item. Costs 3 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| tld | No | Marketplace TLD, default "com". One of: com, co.uk, ca, de, es, fr, ie, it, co.jp, co.za, in, cn, com.sg, com.mx, ae, com.br, nl, com.au, com.tr, sa, se, pl | |
| page | No | ||
| query | Yes | Search terms, e.g. "wireless mouse" | |
| country_code | No | Best-effort locale hint (ISO 3166-1 alpha-2). | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, openWorldHint), but the description adds a genuinely non-obvious operational fact: each call costs 3 credits. It does not disclose result counts, rate limits, or whether results are scraped/cached at call time, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the substantive content front-loaded; the credit cost is surfaced immediately. The leading fragment 'Search results.' largely restates the title and is the only wasted text.
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 does a reasonable job listing returned fields, and the credit cost is disclosed. But it omits pagination behavior despite a 'page' param, does not say how many results per page come back, and gives no guidance on tld versus country_code — gaps an agent would hit on the first 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 60%, with tld, query, and country_code documented in-schema while page and cache_max_age are bare. The description adds no parameter meaning beyond restating that a query drives the search, so the baseline 3 for partial coverage 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+resource ('Public Amazon search results for a query') and enumerates the per-item fields returned (position, price, rating, badges), which implicitly separates it from amazon_product/amazon_offers. It does not explicitly name or contrast with those siblings, 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?
There is no explicit when-to-use statement or named alternative, so the agent must infer from the return fields that this is the discovery/listing tool and that amazon_product or amazon_offers handle detail lookups. 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.
amazon_shopamazon: Amazon Shop pageARead-onlyInspect
Amazon Shop page. A creator's public Amazon storefront: their name, the product links the page exposes, and the storefront feed of idea lists (with Amazon's own item count), shoppable videos (id, title, thumbnail and attached ASINs) and shoppable photos. The first request needs no pageToken and already returns the videos embedded on the page. Pass pagination.cursor back as pageToken, unchanged, with the same shop URL for the next page; a page can carry lists, videos, photos or any mix. A continuation page carries the feed ONLY. Amazon serves it as a fragment with no profile markup, so every identity field (display name, bio, avatar) is null on page two onwards. ASINs are the products the storefront shows attached to an item, which for a long idea list is the first screenful rather than the whole list; itemCount is the true total. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Storefront URL (https://www.amazon.com/shop/<handle>) or just the handle | |
| pageToken | No | Opaque page token returned by a previous response for the same shop URL. Pass it back unchanged and do not infer the response type from its value. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnly and openWorld; the description adds substantive behavior the agent could not otherwise know: continuation pages return feed only, all identity fields are null from page two onward, ASINs are limited to the first screenful while itemCount is the true total, and each call costs 1 credit. These are exactly the non-obvious traits that would otherwise cause misinterpretation of 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?
Front-loaded with the purpose in one sentence, then pagination, then the continuation-page caveat and credit cost — every sentence carries distinct information. Slightly dense run-on phrasing in the parenthetical field listing costs it the top mark, but 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 does the heavy lifting of describing the return shape (lists, videos, photos, ASINs vs itemCount) and pagination semantics. The only real gap is the undefined `cache_max_age` parameter and the absence of any error/failure behavior.
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 67%, and the description adds the response-side field name (`pagination.cursor`) plus the constraint that the same shop URL must accompany the token — information that is not inferable without an output schema. It does not explain `cache_max_age` at all, leaving one of three parameters undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (a creator's public Amazon storefront) and enumerates exactly what it returns: profile name, exposed product links, idea lists with itemCount, shoppable videos and photos. This clearly separates it from siblings like amazon_product, amazon_search and amazon_offers, which return catalog objects rather than a storefront feed.
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 first request needs no pageToken" and "Pass `pagination.cursor` back as `pageToken`, unchanged, with the same shop URL" give explicit operational guidance for the paginated flow. It never names a sibling alternative or a when-not-to-use case (e.g. versus amazon_product for a single ASIN), 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.
appleMusic_albumapple-music: Album detailsBRead-onlyInspect
Album details. Public Apple Music album: artist, release date, genre, artwork and total runtime. The track listing and copyright line are in raw, behind include_raw=true. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Apple Music album id (1708308989) or a music.apple.com album URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds real value beyond that: a cost signal ('Costs 1 credit') and the fact that track listing and copyright are nested in `raw`. It stops short of describing pagination, error behavior, or failure modes for invalid ids.
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, front-loaded with the resource and its fields, then the raw-data caveat, then the cost. 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?
With no output schema, the description correctly carries the burden of describing return shape, listing top-level fields and explaining what lives in `raw`. The phantom `include_raw` parameter is the only inconsistency that leaves an agent uncertain about how to obtain the track listing.
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 description references `include_raw=true`, but no such parameter exists in the input schema — a mismatch that could send an agent looking for a nonexistent argument. Meanwhile `cache_max_age` (the other 50% of schema coverage) is undocumented in both schema and description, so the description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and enumerates the returned fields (artist, release date, genre, artwork, runtime), which is far more than a restatement of the title. It does not explicitly distinguish itself from close siblings like appleMusic_track or appleMusic_artist, though 'Album' is a reasonably distinct 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?
Usage is implied rather than stated — an agent infers you call this when you have an album id or URL. The one genuine usage hint is the conditional 'behind include_raw=true' for track listings, but there is no explicit when-not or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
appleMusic_artistapple-music: Artist detailsARead-onlyInspect
Artist details. Public Apple Music artist page: editorial bio, artist image, banner and genre. Apple publishes no follower or play counts, so those fields are null rather than guessed. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Apple Music artist id (159260351) or a music.apple.com artist URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the readOnlyHint/openWorldHint annotations: it discloses that follower and play counts are null rather than guessed, and that each call costs 1 credit. This tells the agent what data is unavailable and the cost, which the annotations do not cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences: purpose first, then contents, then caveats. Each carries information; no filler. Slightly compressed purpose but efficient overall.
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 appropriately describes return contents (bio, image, banner, genre) and the null-field behavior, which is enough to set expectations. The only gap is the undocumented cache_max_age parameter.
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 50%; the required 'id' parameter is already well-documented in the schema (id or URL form). The other parameter, cache_max_age, is undocumented in both schema and description, so the description fails to close the remaining gap.
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 clear resource ('Public Apple Music artist page') and enumerates the content returned: editorial bio, artist image, banner, and genre. The resource distinction from album/track siblings is implicit in the content list, though it doesn't name an alternative tool 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?
No explicit when-to-use or when-not-to-use guidance, and no reference to a sibling such as appleMusic_search for resolving an id. The only usage-adjacent note is 'Costs 1 credit,' which flags cost but not selection context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
appleMusic_searchapple-music: SearchARead-onlyInspect
Search. Search the Apple Music catalogue for tracks, albums or artists. Tracks and albums come back as posts; artists come back as creators. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | `song` is the same as `track` | track |
| limit | No | ||
| query | Yes | Search terms | |
| country | No | Two-letter storefront, e.g. us, gb, de | us |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, but the description adds useful behavioral context: tracks and albums are returned as posts, artists as creators, and each call costs 1 credit. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with purpose and return-shape information. The opening "Search." is redundant with the title, but the remaining sentences are efficient.
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 search tool with no output schema, the description adequately covers purpose, return shape, and cost. It leaves some schema-level details like limit and caching to the input schema, which is reasonable given annotation coverage.
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 60%, so some parameter meaning is already documented. The description mentions track/album/artist categories matching the type enum, but adds no detail on query, limit, country, or cache_max_age beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: "Search the Apple Music catalogue for tracks, albums or artists." It is clear what the tool does, though it does not explicitly differentiate itself from sibling tools like appleMusic_track or appleMusic_artist.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by saying it searches the catalogue for tracks, albums, or artists, but it gives no explicit when-to-use guidance or alternatives. It does not mention when to use appleMusic_album, appleMusic_artist, or appleMusic_track instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
appleMusic_trackapple-music: Track detailsARead-onlyInspect
Track details. Public Apple Music track: artist, album, duration, genre, release date and the 30-second preview URL. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Apple Music track id (1833328840), a /song/ URL, or an album URL with ?i=<track id> | |
| cache_max_age | No |
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, and the description still adds two things they do not: that only public track data is returned and that each call costs 1 credit. It also discloses the response 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?
Two short sentences, purpose front-loaded and the field list plus the credit cost appended. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations covering return shape, the field enumeration and credit cost make the tool callable without opening anything else. The only real hole is the unexplained cache_max_age parameter, which is minor for a read-only 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?
The description says nothing about parameters; the 'id' formats (numeric id, /song/ URL, album URL with ?i=) are documented only in the schema. With just 50% schema coverage, the second parameter (cache_max_age) is undocumented in both places, so the description does not compensate for the gap.
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 ('Track details') and enumerates the concrete fields returned (artist, album, duration, genre, release date, preview URL), which unambiguously separates it from appleMusic_album, appleMusic_artist and appleMusic_search. It stops short of naming a sibling, so it is clear but not maximally differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the detail lookup once a track id is known, but the description never says when to prefer it over appleMusic_search or how to obtain the id first. 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.
bitchute_channelbitchute: Channel profileBRead-onlyInspect
Channel profile. A public BitChute channel: name, description, subscriber count, video count, total views and creation date. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes | Channel id (EhBWKghMUros), the channel name from its URL (nextnewsnetwork), or a bitchute.com/channel/... URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful context: the data is from a 'public' channel, the cost is 1 credit, and it lists which fields come back. It does not mention any failure mode for unknown/private channels or what happens on cache hits, leaving behavioral coverage partial.
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 purpose, then the returned fields, then the cost. Every sentence carries information an agent can use, with no filler. Slightly telegraphic, and the field enumeration could be compressed, but it is efficient.
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's list of returned fields is genuinely valuable and largely fills the return-value gap. However, the undocumented cache_max_age parameter and the total absence of usage/alternative guidance leave the definition only adequate for a read-only profile tool with many sibling channel 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 only 50%: the 'channel' parameter is well documented in the schema (id, name, or URL), but cache_max_age is undocumented in both schema and description. The description says nothing about any parameter, so it fails to compensate for the coverage gap at this complexity level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource combination: fetching a public BitChute channel profile. It enumerates the returned fields (name, description, subscribers, video count, views, creation date), which sharpens the purpose beyond the title 'bitchute: Channel profile'. It does not explicitly contrast with the sibling bitchute_channelVideos, but the field list makes the profile-vs-videos distinction clear enough.
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 or when-not-to-use guidance, and no sibling alternative is named. An agent must infer from the tool name that this is for metadata rather than a channel's video listings, which bitchute_channelVideos covers. The 'Costs 1 credit' line is a cost note, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bitchute_channelVideosbitchute: Channel videosARead-onlyInspect
Channel videos. A BitChute channel's public videos, newest first, 50 per page, with view counts. Likes and comment counts are not in the list; bitchute.video has likes. Pass the cursor from the previous response to page. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | `pagination.cursor` from the previous response | |
| channel | Yes | Channel id (EhBWKghMUros), the channel name from its URL (nextnewsnetwork), or a bitchute.com/channel/... URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnly/openWorld annotations already covering the safety profile, the description adds real operational context: page size (50), ordering (newest first), cursor-based pagination, explicit absence of likes/comments, and a 1-credit cost. That cost and pagination detail is exactly the kind of thing annotations cannot express.
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, zero filler, with the core scope front-loaded and secondary facts (pagination, cost, missing fields) following in descending importance.
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 characterizes the return set (public videos, newest first, 50/page, view counts, no likes or comments) so an agent knows what it gets. The one gap is `cache_max_age`, which is unexplained anywhere and could matter for repeated calls.
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 67% and the schema already documents both `channel` (with id/name/URL forms) and `cursor` in detail. The description's 'Pass the cursor from the previous response to page' restates the schema rather than extending it, and `cache_max_age` is left undocumented in both places.
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 ('A BitChute channel's public videos') plus concrete scope details: newest first, 50 per page, with view counts. It partially distinguishes itself from the sibling bitchute_video by noting likes are absent, though it never contrasts with bitchute_channel or bitchute_search.
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 does route the agent elsewhere for engagement data ('Likes and comment counts are not in the list; bitchute.video has likes'), which is a genuine alternative pointer. However, there is no guidance on when to use this versus bitchute_channel (channel metadata) or bitchute_search, and no exclusions or prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bitchute_searchbitchute: Search videosARead-onlyInspect
Search videos. Public BitChute video search, 50 per page, with view counts and the uploading channel. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | new | |
| query | Yes | Search terms, at least two characters | |
| cursor | No | `pagination.cursor` from the previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantive context beyond the annotations: page size (50 per page), fields returned (view counts, uploading channel), and cost (1 credit). That cost and result-shape info is genuinely useful and cannot be inferred from readOnlyHint/openWorldHint. It doesn't cover rate limits or error 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 purpose then scope then result shape and cost. No filler or repetition; 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?
Covers what an agent needs to interpret results (page size, view counts, channel) without an output schema, which is helpful. However, for a 4-param tool with half the parameters undescribed, the definition leaves real gaps around sorting behavior and caching.
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 only 50% schema coverage, the description should compensate but adds no parameter info at all. 'sort' (enum new/old/views) and 'cache_max_age' are undocumented in both schema and description, leaving two of four parameters without any semantic 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 ('Search videos') and pins the platform ('Public BitChute video search'), distinguishing it from siblings like bitchute_video and bitchute_channelVideos. Slightly redundant between 'Search videos' and 'video search', but the scope is 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?
No explicit when-to-use or when-not guidance, and no reference to alternatives such as bitchute_channelVideos when browsing a known channel, or bitchute_video when fetching a known video. Usage is only implied by the word 'search' and 'Public'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bitchute_videobitchute: Video detailsARead-onlyInspect
Video details. A public BitChute video: title, description, hashtags, duration, publish date, channel, views and likes. Dislikes are in raw. commentCount is always null. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | BitChute video URL (bitchute.com/video/uIh_YOS_Lm4/) or a bare video id | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and open-world, and the description adds genuinely non-obvious behavior: dislikes are only available in `raw`, `commentCount` is always null, and the call costs 1 credit. The cost and null-field disclosures are exactly the kind of context an agent cannot get from the schema, though the privacy/'public only' failure mode is left 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?
Three short sentences, front-loaded with the identity of the resource, then field list, then quirks and cost. Every clause carries a distinct fact (raw dislikes, null commentCount, credit cost) 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 enumerates the returned fields and flags the two anomalies an agent would otherwise misread. Remaining gap is minor: nothing about error/not-found behavior or what `raw` contains structurally.
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 only 50%: `url` is documented in the schema (URL or bare video id) but `cache_max_age` is undocumented in both schema and description. The description adds no parameter-level meaning at all, so it does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (a single public BitChute video) and enumerates the returned fields, so an agent knows this is the single-video lookup rather than a search or channel listing. It never names the sibling it contrasts with (bitchute_search, bitchute_channelVideos), so differentiation is inferred from the field list rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'A public BitChute video' plus a required url/id parameter signals 'call this when you already have a video reference.' There is no explicit when-to-use, no exclusion of search/channel tools, and no note about behavior when the video is private or removed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bluesky_postbluesky: PostBRead-onlyInspect
Post. A single public Bluesky post with like, reply, repost and quote counts, plus any attached images or video. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Post URL (https://bsky.app/profile/<handle>/post/<id>) or an at:// URI | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuinely useful context — the resource is public (no auth implied) and 'Costs 1 credit' discloses a metering constraint — but it does not describe caching behavior, error cases, or pagination.
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 that front-load purpose and follow with payload and cost. The bare 'Post.' opener is slightly redundant with the title but the remaining text 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?
For a simple 2-param read tool this covers purpose, returned content, and cost. With no output schema, the return description is helpful, but the undocumented cache_max_age parameter leaves a gap an agent would need 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 coverage is only 50%: 'url' is documented in the schema but 'cache_max_age' is undocumented in both schema and description. The description adds no parameter meaning, so it fails to compensate for the uncovered optional 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 resource and payload: 'A single public Bluesky post with like, reply, repost and quote counts, plus any attached images or video.' The word 'single' distinguishes it in scope from list-oriented siblings like bluesky_userPosts, but no sibling is named 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/when-not guidance and no named alternative. The 'single post' phrasing implies this is for one post rather than a feed, but the agent must infer that bluesky_userPosts or bluesky_profile are the alternatives for listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bluesky_profilebluesky: ProfileARead-onlyInspect
Profile. Public profile for a Bluesky account: followers, following, post count, bio, avatar, banner, and verification status. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Handle (alice.bsky.social), a did:plc:… identifier, or a bsky.app profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered; the description adds a genuinely useful operational fact not present in structured data — the 1-credit cost. It omits what happens on an invalid/suspended handle and does not explain that results may be cached.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the returned-data inventory front-loaded and the cost appended. The only waste is the redundant 'Profile.' opener.
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 listing the returned fields; cost is disclosed and the identifier formats come from the schema. The remaining gap is caching/staleness behavior tied to cache_max_age, which an agent would want before spending a credit.
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 handle formats are documented entirely in the schema, so the description contributes nothing there. More importantly, cache_max_age has no schema description and the description never mentions caching at all, leaving a parameter completely unexplained across both sources.
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 second sentence names the resource (public profile for a Bluesky account) and enumerates the returned fields, which clearly separates it from bluesky_post and bluesky_userPosts. The leading word 'Profile.' merely restates the title and adds nothing, but the substance is specific and accurate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the field list signals 'use this when you need follower counts, bio, avatar, verification', which implicitly routes away from the post-oriented siblings. There is no explicit when-to-use, when-not-to-use, or named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bluesky_userPostsbluesky: User postsARead-onlyInspect
User posts. Recent public posts from a Bluesky account, newest first. Reposts are excluded by default so the feed reflects what the account actually wrote. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| cursor | No | `pagination.cursor` from a previous response | |
| handle | Yes | Handle, did, or bsky.app profile URL | |
| cache_max_age | No | ||
| include_reposts | No | Include reposts of other accounts. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds real behavioral context beyond that: newest-first ordering, the default exclusion of reposts with a rationale, and a stated cost of 1 credit. It stops short of describing result shape or pagination 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 short sentences, front-loaded with the core purpose and no filler. The opening 'User posts.' duplicates the title and could be dropped, but the remaining content is dense and 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 of describing what comes back, and it does not — no indication of post fields, media handling, or how pagination terminates. Annotations and the schema cover safety and half the parameters, so this is adequate but with a clear gap for a listing 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 60% — handle, cursor and include_reposts are documented in the schema. The description usefully explains the *why* behind include_reposts defaulting to false, but says nothing about count, cache_max_age, or the format of the cursor value, leaving part of the coverage gap unfilled.
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: 'Recent public posts from a Bluesky account, newest first.' An agent can distinguish this listing tool from the single-post sibling bluesky_post, though no sibling is named explicitly. The leading fragment 'User posts.' merely restates the title and adds nothing.
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 — fetch a feed of an account's own writing. There is no explicit when-to-use versus bluesky_post, bluesky_profile, or other userPosts siblings, and no stated preconditions (e.g., private/suspended accounts).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_watchCancel a watchBDestructiveIdempotentInspect
Delete a watch. Free.
| Name | Required | Description | Default |
|---|---|---|---|
| subscription_id | Yes | subscriptionId from create_watch or list_watches. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds one piece of non-schema information — 'Free' (presumably no credit cost) — but never says the deletion is permanent or whether existing delivered items are retained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no waste. However, 'Free.' is an unqualified fragment — it does not say free of what (credits, quota) — so brevity comes at some cost to clarity.
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 destructive tool the structured fields carry most of the burden: annotations flag destructiveness, the schema explains the ID source. Still, an agent about to perform an irreversible cancellation would benefit from knowing it is permanent and what 'Free' refers to.
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 documented as 'subscriptionId from create_watch or list_watches,' which is more useful than anything in the description. The description contributes nothing about the parameter, 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 ('Delete a watch'), which is unambiguous against the sibling create_watch and list_watches. It does not explicitly name those siblings, so it falls 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?
No indication of when to cancel versus leave a watch in place, no prerequisites, and no reference to create_watch/list_watches as the source of the identifier or as the re-creation path. The agent must infer the workflow entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_watchWatch an endpoint for changesAInspect
Check an endpoint on a schedule and POST to webhook_url when its data changes. Each check is charged the endpoint's own credit cost, and refunded if it fails or comes back empty; creating a watch costs nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes | The arguments that endpoint's own tool takes. | |
| endpoint | Yes | Endpoint to watch. Search, trending and popular endpoints are not watchable: they change on every request. | |
| webhook_url | Yes | URL that receives a POST on each change. | |
| interval_seconds | No | Seconds between checks, at most 604800. At least 3600 for every endpoint. Omit it to use the endpoint's suggested interval: hourly for prices and live data, every 6 hours for posts and comments, daily for profiles and ads, weekly for music, link-in-bio pages and transcripts. Each check is charged, so a slower interval costs less. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond annotations: per-check billing at the endpoint's own credit cost, refunds on failure or empty result, and that creating a watch is free. Annotations (readOnlyHint=false, destructiveHint=false, openWorld=false→openWorld=true) cover safety but not the cost/refund model, which is the key operational trait here.
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 waste, with the core action and the cost implication front-loaded. 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?
For a 4-param scheduled-watch tool with no output schema, the description plus rich schema give an agent everything needed to invoke it, and the cost model fills a real gap. Minor omission of what the webhook POST payload looks like could matter but is secondary.
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 deletion-sensitive details (endpoint restrictions, interval bounds and defaulting behavior) are already documented in the schema, so the description only needs to point at webhook_url delivery which it does. 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 chain (check on a schedule, POST to webhook_url when data changes) against a specific resource (endpoint), so it is instantly distinguishable from companion tools like list_watches and cancel_watch and from direct endpoint calls.
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 (polls on a schedule, notifies via webhook) but offers no explicit when-to-use vs. a direct one-off endpoint call, nor any exclusion of the non-watchable search/trending endpoints at the description level (that constraint lives in the endpoint schema).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dailymotion_channeldailymotion: Channel profileARead-onlyInspect
Channel profile. Public profile of a Dailymotion channel: followers, following, video count, lifetime views, verification badge, country and creation date. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Channel username (wired), user id (x1audmk) or a dailymotion.com/<username> URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover read-only/open-world, but the description adds genuinely non-structured context: the data is public (no auth implied) and the call costs 1 credit, which matters for budget-aware agents. It also discloses what the payload contains, useful since no output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences: what it is, what you get, what it costs. Front-loaded with the identity 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 field enumeration carries the return-value burden well, and credit cost is disclosed. Missing only edge-case behavior (invalid handle, not-found response) for full completeness on a single-object 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?
The description says nothing about the handle or cache_max_age parameters, but the schema fully documents the required handle with three accepted formats. At 50% schema coverage the optional cache_max_age is undocumented everywhere, which is the main residual gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource precisely (a Dailymotion channel's public profile) and enumerates the returned fields, which cleanly separates it from dailymotion_channelVideos or dailymotion_video. It never names those siblings explicitly, so differentiation is inferred from the field list rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the resource: fetch a channel's profile when you need channel-level stats. There is no explicit when-to-use, when-not, or pointer to the sibling tools for videos or search, which an agent in this 200-tool catalog would benefit from.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dailymotion_channelVideosdailymotion: Channel videosARead-onlyInspect
Channel videos. A Dailymotion channel's public uploads, newest first, 50 per page, all the way back to the first upload. Pass the cursor from the previous response to page. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | `pagination.cursor` from the previous response | |
| handle | Yes | Channel username (wired), user id (x1audmk) or a dailymotion.com/<username> URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/open-world profile, yet the description adds real behavioral detail: newest-first ordering, 50 per page, pagination back to the first upload, and a 1-credit cost. This is meaningful context beyond the annotations, though it says nothing about truncation or error 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 short sentences, each carrying distinct information — scope, ordering, page size, pagination instruction, and cost — with no filler and the key scope statement 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 supplies the return-shape essentials (list of uploads, ordering, page size, cursor to continue) and the credit cost. The only gap is the undocumented cache_max_age parameter, which is minor for a listing 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 67%; the cursor explanation in the description largely restates the schema's own cursor description, and handle is only explained in the schema. The undocumented cache_max_age parameter gets no help from the description. 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?
The description states a specific verb and resource — a Dailymotion channel's public uploads — which is clearly distinct from dailymotion_video or dailymotion_search. It doesn't explicitly name sibling tools, but the scope ('channel's uploads') 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?
It tells the agent how to page ('pass the cursor from the previous response'), which implies usage for exhaustive listing, but it never says when to pick this over dailymotion_channel or dailymotion_search, nor any prerequisites about the handle.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dailymotion_searchdailymotion: Search videosARead-onlyInspect
Search videos. Public Dailymotion video search, 50 per page. Dailymotion returns at most the first 1,000 results for any query, so paging stops there. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | `visited` is most viewed | relevance |
| query | Yes | Search terms | |
| cursor | No | `pagination.cursor` from the previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely non-derivable behavior: 50 results per page, a hard 1,000-result ceiling that terminates paging, and a 1-credit cost. The credit cost and hard cap are exactly the kind of operational facts 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?
Four short sentences, each carrying distinct information: what it does, page size, the hard result ceiling, and cost. The action is front-loaded and there is no filler or restatement of the name.
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 covers the pagination lifecycle (page size, termination point) and the credit cost, which is what an agent needs to plan iteration. It does not hint at the shape of returned records at all, but for a search tool with a fully enumerated query param, that is a minor omission.
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 75%, near the threshold where the schema does the heavy lifting, and 'cursor' is already explained as 'pagination.cursor from the previous response'. The description never clarifies how the stated 50-per-page interacts with cursor paging, and 'cache_max_age' has no description anywhere, so the description does not compensate for the gap. Baseline 3 fits.
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 videos') and scopes it to 'Public Dailymotion video search', which separates it from the many other *_search siblings in the toolset. It stops short of naming the within-platform alternatives (dailymotion_channel, dailymotion_video), but the platform+action pairing 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?
Usage is only implied: an agent infers you call this to find Dailymotion videos by keyword. There is no explicit when-to-use/when-not, and no guidance on when to pick this over dailymotion_channelVideos or a different platform's search. The pagination ceiling is informative but is not selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dailymotion_transcriptdailymotion: Video transcriptARead-onlyInspect
Video transcript. A Dailymotion video's captions as one text block plus timed cues. Returns the requested language when the video has it, otherwise the first track. Most are generated automatically by Dailymotion. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Video id (x9529ik) or a dailymotion.com/video/… or dai.ly/… URL | |
| language | No | Language code, e.g. "en" | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and open-world safety, and the description adds real behavior on top: language fallback when the requested track is absent, the fact that most tracks are auto-generated, and a 1-credit cost. It does not say what happens when a video has no captions at all, which is the notable remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with what is returned, then fallback semantics, then provenance and cost. The opening 'Video transcript.' fragment is mildly redundant with the second sentence, but nothing else 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 usefully characterizes the return value (text block plus timed cues), the language resolution rule, and the credit cost. The only material omission is the undocumented cache_max_age parameter and the no-captions-available case.
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 67%, so the baseline is 3. The description does add genuine meaning for the language parameter by explaining the fallback to the first track, but cache_max_age is undocumented in both schema and description and goes unaddressed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource (a Dailymotion video's captions) and states the return shape (one text block plus timed cues), which is more than the title restated. It distinguishes itself implicitly from dailymotion_video by focusing on captions, though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied ('video transcript' for a Dailymotion URL) and the credit cost gives a helpful signal about when it is worth calling, but there is no explicit statement of when to use this over dailymotion_video or dailymotion_search, and no exclusion or prerequisite conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dailymotion_videodailymotion: Video detailsARead-onlyInspect
Video details. Public metadata for a Dailymotion video: views, likes, duration, tags, upload date and channel. Dailymotion has no public comments, so commentCount is null. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Video id (x9529ik) or a dailymotion.com/video/… or dai.ly/… URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, but the description adds non-obvious value: no public comments so commentCount is null, and a 1-credit cost. That's real behavior an agent couldn't derive from annotations. Return fields aren't covered, but with an undocumented openWorld read that gap is modest.
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, field list second, then the two caveats (null comments, credit cost). No filler, and the most surprising fact (null commentCount) is called out.
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 return fields and explains why commentCount is null, plus the cost. The only meaningful gap is the unaddressed cache_max_age parameter, which leaves one behavior unexplained.
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 50%: `url` is well documented with accepted id and URL formats, but `cache_max_age` is undocumented in both schema and description, and the description adds nothing about it. Baseline 3 is appropriate given the schema already carries the strong url 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?
The description names a specific verb (fetch details) and resource (a Dailymotion video) and enumerates the fields returned, so it clearly differs from dailymotion_transcript and dailymotion_channel. However, it doesn't explicitly contrast with siblings like dailymotion_search, which also surfaces video 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?
Usage is implied (look up one video's metadata by id/URL), but there's no explicit statement of when to choose this over dailymotion_search or dailymotion_transcript, nor any exclusions or prerequisites. The reader must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deezer_albumdeezer: Album detailsARead-onlyInspect
Album details. A Deezer album: title, artist, label, UPC, release date, fans (likeCount) and its tracks. Pass cursor to page the tracks of a long album. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Numeric Deezer album id | |
| cursor | No | `pagination.cursor` from the previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered; the description adds meaningful context beyond that: the returned field set, that tracks come back with the album, paging behavior, and a 1-credit cost. The cost note and pagination hint are genuinely additive.
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 purpose and return fields, followed by pagination and cost. No filler; each 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 does the work of listing returned fields and discloses paging and cost, which is enough to call it correctly. The only gap is the unexplained cache_max_age parameter, a minor omission for a 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 covers id and cursor (67%), and the description reinforces cursor's role ('page the tracks') but adds little syntax beyond the schema's own 'pagination.cursor from previous response'. cache_max_age is undocumented in both schema and description, so 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 the resource (a Deezer album) and enumerates the concrete fields returned (title, artist, label, UPC, release date, fans, tracks), which lets an agent distinguish it from deezer_artist, deezer_track, or deezer_search. It doesn't explicitly name a sibling to differ from, so not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage guidance is 'Pass `cursor` to page the tracks of a long album,' which implies repeated calls for large albums. There is no statement of when to prefer this over deezer_artistAlbums or deezer_search, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deezer_artistdeezer: Artist profileBRead-onlyInspect
Artist profile. A Deezer artist: name, fans, album count, picture and link. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Numeric Deezer artist id | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real value beyond the annotations by disclosing a cost of 1 credit and by enumerating the returned fields, which matters since there is no output schema. It doesn't cover failure modes (invalid id, rate limits), but for a read-only open-world profile lookup it is well above baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the resource identity front-loaded and zero filler. The field enumeration and cost note both earn their place; only the fragment style slightly reduces readability.
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?
Annotations cover the read-only/open-world safety profile, and the field list substitutes partly for the missing output schema. However, the undocumented cache_max_age parameter and the absence of any guidance on sourcing the required id leave a noticeable 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?
At 50% schema coverage, the description must compensate for undocumented parameters, and it does not. There is no mention of the required 'id' format or of the 'cache_max_age' parameter, which is entirely undocumented in both the schema and the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (Deezer artist profile) and enumerates the fields returned (name, fans, album count, picture, link), which distinguishes it from deezer_artistAlbums and deezer_artistTopTracks that cover adjacent data. It doesn't explicitly name those siblings, but the field list makes the boundary inferable.
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 guidance on when to use this versus the other deezer_* sibling tools (artistAlbums, artistTopTracks, search), and no mention of how to obtain the required id. Usage is only implied by the tool name and field list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deezer_artistAlbumsdeezer: Artist albumsBRead-onlyInspect
Artist albums. An artist's albums, singles and EPs on Deezer. likeCount is the release's fans. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Numeric Deezer artist id | |
| limit | No | ||
| cursor | No | `pagination.cursor` from the previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=true). The description adds two genuinely useful facts beyond them: `likeCount` is the release's fan count and the call costs 1 credit. It does not explain pagination behavior despite a cursor param, so it earns partial credit only.
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 with minimal waste and the core purpose up first. Slightly terse in that `likeCount` is the only return field called out, but 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?
For a read-only list tool with no output schema, the definition covers purpose, one return field, and cost, but omits pagination semantics and the meaning of `limit`/`cache_max_age`. It is adequate but not complete for a 4-param paged 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 coverage is 50%: `id` and `cursor` are documented in the schema, but `limit` (default 25) and `cache_max_age` are described nowhere. The description adds no parameter meaning to compensate for the gap, leaving two params opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource: an artist's albums, singles and EPs on Deezer, tied to a Deezer artist id. It is clearly distinct from deezer_artist (artist info) and deezer_artistTopTracks (top tracks) by naming the collection it returns, though it never explicitly says 'list all releases for an artist' or names those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use statement and no alternatives are named. The scope detail ('albums, singles and EPs') implies coverage, but an agent gets no guidance on choosing this vs deezer_artist, deezer_artistTopTracks, or deezer_album.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deezer_artistTopTracksdeezer: Artist top tracksBRead-onlyInspect
Artist top tracks. An artist's most popular tracks on Deezer, most popular first. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Numeric Deezer artist id | |
| limit | No | ||
| cursor | No | `pagination.cursor` from the previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a read-only, open-world lookup, so the bar is lower. The description usefully adds result ordering ('most popular first') and a credit cost/rate-limit style signal, but says nothing about pagination behavior even though a cursor parameter exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with purpose, followed by ordering semantics and cost. Every sentence carries information an agent cannot get from the structured fields alone.
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 no output schema, the description covers purpose, ordering, and cost but omits pagination and limit semantics on a 4-parameter tool with half of the parameters undocumented. It is adequate to start calling the tool, but not sufficient to invoke it correctly with limit/cursor on repeat calls.
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 only 50% schema description coverage, the description must compensate for the gap. It adds nothing about id format beyond the schema, nothing about what limit bounds/means (default 25, max?), nothing about cursor semantics, and nothing about cache_max_age — all left entirely to 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+resource ('Artist top tracks') and clarifies it means an artist's most popular tracks on Deezer, so an agent can tell it apart from deezer_artist or deezer_artistAlbums. It stops short of explicitly naming those siblings or stating what it excludes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the resource name: call it when you need an artist's ranked popular tracks and you already have an artist id. The 'Costs 1 credit' note gives cost context, but there is no explicit when-to-use/when-not guidance or mention of alternatives like deezer_track or deezer_search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deezer_chartsdeezer: ChartsBRead-onlyInspect
Charts. Deezer's global top tracks, albums, artists, playlists or podcasts. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | tracks | |
| limit | No | ||
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety/scope profile is covered. The description usefully adds the credit cost, which is not in the schema or annotations, but says nothing about result freshness, pagination, or how cache_max_age affects 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 short sentences, front-loaded with the resource and followed by the credit cost. The leading 'Charts.' echoes the title and could be dropped, but the rest is efficient 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 and three undocumented parameters, the description should do more, particularly for cache_max_age and for what a chart entry contains (rank, position, streaming data?). It is adequate to identify the tool but leaves gaps an agent needs when constructing a 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 0%, so the description must carry parameter meaning, and it does not: it repeats the enum values for 'type' (which the enum already conveys) and says nothing about 'limit' or the opaque 'cache_max_age' string parameter. An agent has no way to know what cache_max_age accepts or how limit interacts with charts.
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 the resource (Deezer charts) and enumerates the entity kinds covered (tracks, albums, artists, playlists, podcasts), which is a concrete verb+resource statement. It does not explicitly distinguish itself from siblings like deezer_search or deezer_artistTopTracks, so the agent must infer that this returns global charts rather than per-artist or keyword-based results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the word 'global top' charts, but there is no explicit when-to-use guidance and no mention of when to prefer deezer_search or deezer_artistTopTracks instead. The 'Costs 1 credit' note gives a cost signal but is not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deezer_playlistdeezer: Playlist contentsARead-onlyInspect
Playlist contents. A public Deezer playlist: title, owner, description, cover, track count, fans and its tracks. Pass cursor to page the tracks of a long playlist. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Numeric Deezer playlist id | |
| cursor | No | `pagination.cursor` from the previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds two genuinely useful behavioral facts not in structured data: only public playlists are readable, and each call 'Costs 1 credit' (a rate/cost constraint). It does not mention pagination termination or what a truncated track list looks like, so it adds value but not rich context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the resource and the returned fields, with the paging hint and cost note trailing. The opening fragment 'Playlist contents.' duplicates the title slightly, but 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 fills that gap by enumerating the returned fields, and it explains pagination via `cursor`. What remains thin is routing guidance versus sibling playlist tools and any mention of `cache_max_age`, but for a one-required-param read tool it 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 coverage is 67%; `id` and `cursor` are documented in the schema and the description reinforces cursor usage by tying it to paging long track lists. The third parameter, `cache_max_age`, is undocumented in both the schema and the description, which is a small but real gap. Baseline 3 fits given the schema does most of 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?
The description states a concrete resource and enumerates exactly what is returned (title, owner, description, cover, track count, fans, tracks), so an agent knows this is a playlist-detail fetch rather than a search. It stops short of naming how it differs from sibling deezer_userPlaylists or deezer_search, which is the only thing separating 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 only usage signal is 'Pass `cursor` to page the tracks of a long playlist,' which is a pagination hint rather than a when-to-use rule. Nothing tells the agent when to choose this over deezer_userPlaylists (listing a user's playlists) or deezer_search (finding a playlist by name), so selection must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deezer_podcastdeezer: Podcast detailsBRead-onlyInspect
Podcast details. A Deezer podcast: title, description, artwork and fans. Deezer publishes no episode count, so postCount is null. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Numeric Deezer podcast id | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and open-world behavior, but the description adds real context beyond them: the credit cost per call, and the fact that postCount is always null because Deezer exposes no episode count — a concrete trap an agent would otherwise misread as missing data. It does not cover error cases (invalid id, out-of-credits) or auth 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 sentences with the payload summary front-loaded and the null caveat plus cost at the end. Sentence one duplicates the title, which is minor waste, but nothing else 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 field enumeration plus the postCount explanation carries the return-shape burden adequately, and the credit cost is stated. What remains thin is the missing link to deezer_podcastEpisodes and any explanation of cache_max_age, which leaves real gaps for a two-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 coverage is only 50%: `id` is documented in the schema as a numeric Deezer podcast id, but `cache_max_age` has no description anywhere. The description mentions no parameters at all, so it does nothing to compensate for the undocumented cache control.
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?
"Podcast details" names the resource and adds the concrete payload fields (title, description, artwork, fans), so an agent knows what it gets back. It never distinguishes itself from the adjacent deezer_podcastEpisodes or spotify_podcast, so the sibling boundary 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?
There is no statement of when to use this versus deezer_podcastEpisodes (episode listing) or deezer_search (discovery), and no guidance on where a valid podcast id comes from. 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.
deezer_podcastEpisodesdeezer: Podcast episodesBRead-onlyInspect
Podcast episodes. A Deezer podcast's episodes, newest first. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Numeric Deezer podcast id | |
| limit | No | ||
| cursor | No | `pagination.cursor` from the previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only and open-world behavior, while the description adds two meaningful traits beyond them: episodes are returned newest first and the call costs 1 credit. It still omits pagination behavior beyond the cursor field and does not describe rate or limit characteristics.
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 resource and ordering. The opening 'Podcast episodes' slightly duplicates the title, but the description is otherwise tight and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list endpoint, the description gives the core context: which podcast, ordering, and credit cost. However, with no output schema and missing documentation for limit and cache_max_age, an agent lacks enough detail about page size and caching behavior.
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 description adds almost no parameter meaning beyond what is already in the schema: the required id is described there as a numeric Deezer podcast id, and cursor is schema-documented. The limit and cache_max_age parameters remain unexplained in both schema and description, and the description does not compensate for the 50% coverage gap.
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 the specific resource ('A Deezer podcast's episodes') and result ordering ('newest first'), so an agent can tell this lists episodes for a given podcast id. It does not explicitly differentiate from the nearby deezer_podcast metadata tool, which keeps it below 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 says what the tool returns but gives no guidance on when to use it instead of alternatives such as deezer_podcast or deezer_search. 'Costs 1 credit' is useful context, but it is not routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deezer_searchdeezer: SearchBRead-onlyInspect
Search. Search Deezer's catalogue for tracks, albums, artists, playlists or podcasts. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | track | |
| limit | No | ||
| query | Yes | Search terms | |
| cursor | No | `pagination.cursor` from the previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds one genuinely non-structured fact — each call costs 1 credit — which is valuable for a metered agent. It stops there: no mention of pagination (despite a cursor param) or result ordering, so coverage is partial rather than rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences that front-load the action and add the credit cost. The only waste is the bare leading 'Search.' which merely restates the title before the substantive 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 and only 40% parameter coverage, the description needs to carry more: pagination via cursor, semantics of limit, what cache_max_age controls, and defaults are all left unexplained. For a 5-parameter search tool this leaves an agent guessing on how to page and how many results it will get.
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 only 40%, so the description should compensate, but it doesn't. It restates the entity types already captured by the enum and says nothing about 'limit' (result count, max?), 'cache_max_age', or the default type=track behavior, leaving over half the parameters undocumented.
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 Deezer's catalogue, with the five entity types it can return. It is distinguishable from Deezer's by-ID siblings (deezer_track, deezer_album) as the lookup entry point, but it never differentiates itself from other music search tools such as spotify_search or appleMusic_search beyond the platform named in the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the search-then-detail workflow by naming the entity types, and the credit cost hints at a metered operation. But it never states when to use this versus deezer_album/deezer_artist (i.e. search first, then fetch details by ID), nor any exclusions or ranking behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deezer_trackdeezer: Track detailsARead-onlyInspect
Track details. A Deezer track: title, artist, album artwork, duration, release date, ISRC and tempo. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Numeric Deezer track id | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuinely non-structured information: the operation 'Costs 1 credit', which matters for an agent deciding whether to spend a call. It does not explain the caching behavior behind cache_max_age.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose first, returned fields second, cost last. No filler; every clause carries information an agent can use.
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 read tool with no output schema, listing the returned fields is a useful substitute for a response spec. The gap is the undocumented cache_max_age parameter, whose effect on behavior and cost is left entirely unexplained.
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 only 50%: 'id' is documented as a numeric Deezer track id, but 'cache_max_age' has no schema description and the description says nothing about it either. The description adds no parameter meaning beyond what the schema already carries.
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 (track details) and enumerates exactly what a Deezer track record contains (title, artist, artwork, duration, release date, ISRC, tempo). It is clearly a single-object lookup, distinct from deezer_search or deezer_artistTopTracks, though it never names 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?
Usage is implied: it takes a numeric id, so an agent infers this is the fetch-by-id step after a deezer_search. However, there is no explicit 'use this when...' or 'do not use for...' statement, and no mention of where to obtain the required id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deezer_userPlaylistsdeezer: User playlistsBRead-onlyInspect
User playlists. A Deezer user's public playlists. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Numeric Deezer user id | |
| limit | No | ||
| cursor | No | `pagination.cursor` from the previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description usefully adds that only public playlists are returned and that the call costs 1 credit, but it does not describe pagination behavior or return shape.
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 very short and front-loads the resource scope. The first sentence, 'User playlists', largely restates the tool name/title, so it is concise but not maximally efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list endpoint, the description identifies what is fetched and notes the credit cost and public-only scope. However, with no output schema and incomplete parameter coverage, it omits useful context about pagination and the undocumented limit/cache_max_age parameters.
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 only 50%: id and cursor are documented in the schema, while limit and cache_max_age are not. The description does not compensate by explaining any parameter, only implying that id identifies the Deezer user.
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 the specific resource and scope: a Deezer user's public playlists. It is clear enough to distinguish from retrieving a single playlist, but it does not explicitly name a sibling or use a verb like 'list' to make the action fully explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as deezer_playlist or deezer_search. The context is implied only by 'A Deezer user's public playlists'; 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.
ebay_productebay: eBay listing detailsARead-onlyInspect
eBay listing details. Public details for an eBay listing: title, price, condition, seller and an inline sample of reviews. Costs 1 credit. Pass either product_id or url.
| Name | Required | Description | Default |
|---|---|---|---|
| tld | No | eBay marketplace, default com. One of: com, co.uk, com.au, de, ca, fr, it, es, at, ch, com.sg, com.my, ph, ie, pl, nl | |
| url | No | eBay listing URL, e.g. https://www.ebay.com/itm/166619046796 | |
| product_id | No | Numeric eBay item id, e.g. 166619046796 | |
| country_code | No | ||
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered; the description's real contribution is the cost disclosure ('Costs 1 credit') and the note that reviews are only an 'inline sample'. It says nothing about failure modes for invalid IDs, marketplace/redirect behavior, or latency/rate limits, which would matter for a credit-metered 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 what the tool returns, then cost, then input rule. 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 does the right thing by listing returned fields and flagging that reviews are partial. But for a 5-parameter, credit-costing tool it leaves the identifier-selection fallback, the three secondary parameters, and error behavior undocumented.
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 60%. The description's 'either product_id or url' is genuine added value because the schema marks neither as required and never states the alternatives are interchangeable. However, tld, country_code and cache_max_age receive no mention anywhere in the description, leaving a real gap.
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 ('Public details for an eBay listing') and enumerates the payload (title, price, condition, seller, sample reviews), so an agent knows exactly what it retrieves. It does not name ebay_search or explain why a single-listing lookup differs from a search result, 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?
'Pass either `product_id` or `url`' gives the minimum routing rule for inputs, which is more than nothing. But there is no guidance on when to use this instead of ebay_search, no preconditions, and no statement about what happens when neither identifier is supplied (schema marks zero required params).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ebay_searchebay: Search eBay listingsBRead-onlyInspect
Search eBay listings. Public eBay search results for a query, with eBay's own filters and sort orders. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| tld | No | eBay marketplace, default com. One of: com, co.uk, com.au, de, ca, fr, it, es, at, ch, com.sg, com.my, ph, ie, pl, nl | |
| page | No | ||
| query | Yes | Search terms, e.g. "iphone 13" | |
| sort_by | No | ||
| condition | No | Comma list: new, used, open_box, refurbished, for_parts, not_working | |
| seller_id | No | ||
| show_only | No | Comma list: returns_accepted, authorized_seller, completed_items, sold_items, sale_items, listed_as_lots, search_in_description, benefits_charity, authenticity_guarantee | |
| country_code | No | ||
| buying_format | No | Comma list: buy_it_now, auction, accepts_offers | |
| cache_max_age | No | ||
| items_per_page | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuinely useful non-schema context by disclosing the cost ('Costs 1 credit'), but says nothing about pagination limits, result caps, or rate limiting 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 no wasted words. The cost disclosure 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 11 parameters, no output schema, and under half of the schema documented, the description should explain what the result set looks like and how the undocumented parameters behave. Neither 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 only 45% across 11 parameters, and several key params (page, seller_id, country_code, cache_max_age, items_per_page) have no description anywhere. The description only generically alludes to 'filters and sort orders' and does not compensate for the documentation gap.
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 eBay listings) and narrows scope to public search results using eBay's own filters and sort orders. It does not explicitly distinguish itself from the sibling ebay_product tool, but the intent 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?
Usage is implied by the name and the phrase 'for a query', but there is no statement of when to prefer this over ebay_product or any other marketplace search, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_adfacebook: Ad detailsARead-onlyInspect
Ad details. One ad from the Meta Ad Library by its archive id. Meta does not expose the archive as an addressable node for every ad; pass page_id as well and we find it by scanning that advertiser's archive instead. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Ad archive id, or an Ad Library URL containing `?id=` | |
| country | No | Reached country used by the fallback scan | US |
| page_id | No | The advertiser's page id. Enables the archive-scan fallback. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint/openWorldHint, it discloses the non-obvious fallback resolution path, the country dependency of that scan, and the 1-credit cost — real behavioral context. It stops short of saying what happens when neither lookup succeeds (empty result vs. error).
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, none wasted: identity, the fallback rule, then cost. The most decision-relevant constraint (archive id may not be directly addressable) is front-loaded after the purpose.
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 carries return-value burden, and 'Ad details' gives little sense of the payload shape. Otherwise it covers the identifier semantics, the fallback, and cost adequately for a 4-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 75%, so baseline is 3; the description adds genuine meaning for page_id by explaining it enables the archive-scan fallback rather than just being 'the advertiser's page id'. country and cache_max_age are left entirely to the schema, and the URL form of id is only 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 ('Ad details') plus scope ('one ad from the Meta Ad Library by its archive id'), which cleanly distinguishes it from the plural facebook_adLibrarySearch and facebook_pageAds siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the key conditional: when Meta has no addressable archive node, pass page_id to trigger an archive scan. It gives clear context for the fallback and the cost, though it never states when to prefer a sibling search tool or when the call will fail outright.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_adLibraryAdvertisersfacebook: Find advertisers running adsARead-onlyInspect
Find advertisers running ads. Distinct advertisers whose ads match a search term, with the page_id needed by /v1/facebook/ad-library/page-ads. Derived from the ads an Ad Library search returns, ranked by how many of them each advertiser ran. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Ads sampled, 1-100. More ads means more advertisers. | |
| query | Yes | Advertiser name or a term from their ad copy | |
| status | No | active | |
| country | No | US | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, openWorldHint), and the description adds real context beyond them: the 1-credit cost, that results are derived from an underlying ad search rather than a native advertiser index, and that ranking is by number of ads run. It does not disclose caching behavior despite exposing cache_max_age, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose first, then result shape and the downstream page_id, then derivation/ranking, then cost. Every sentence adds a distinct fact 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 search tool, the description supplies purpose, output shape, the key field an agent needs elsewhere, ranking semantics, and cost — the practical gaps left are minor enum defaults the schema already encodes.
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 only 40%, so the description must carry weight; it clarifies that the query matches both advertiser names and ad copy and that the sample size drives advertiser breadth, but status, country, and cache_max_age get no explanation anywhere. Partial compensation 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 and resource ('Find advertisers running ads') and immediately qualifies the output as 'distinct advertisers whose ads match a search term' ranked by ad volume. This is clearly distinguishable from siblings like facebook_adLibrarySearch (returns ads) and facebook_pageAds (takes a page_id), which the description explicitly links 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?
Usage is implied strongly: use this when you need advertisers matching a term, and it names the downstream consumer (/v1/facebook/ad-library/page-ads) that needs the returned page_id, which routes the agent correctly. It stops short of explicitly saying when to prefer facebook_adLibrarySearch instead, so no full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_adLibrarySearchfacebook: Search the Meta Ad LibraryARead-onlyInspect
Search the Meta Ad Library. Facebook, Instagram, Messenger and Threads ads matching a search term, from Meta's Ad Library, in the Library's own order. Spend and impression ranges are filled for political and issue ads only where the deployment reads the Graph Ad Library API; pagination.hasMore says when more results exist. Costs 2 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Ads per page, 1-100. Default 25. | |
| query | Yes | Search term, matched against ad text and advertiser name | |
| cursor | No | `pagination.cursor` from a previous response | |
| status | No | Delivery status at the time of the query. | active |
| ad_type | No | `political` unlocks Meta's spend, impression and demographic fields. | all |
| country | No | ISO-3166 country code(s) the ad reached, comma-separated. Meta requires at least one. | US |
| end_date | No | Latest delivery date, YYYY-MM-DD | |
| language | No | Comma-separated BCP-47 codes, e.g. "en,es" | |
| platform | No | Comma-separated: facebook, instagram, messenger, audience_network, threads, whatsapp, oculus | |
| media_type | No | ||
| start_date | No | Earliest delivery date, YYYY-MM-DD | |
| search_type | No | `exact_phrase` matches the words in order | unordered |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, yet the description adds real value: 2-credit cost, results returned in the Library's own ordering rather than relevance, and the caveat that spend/impression ranges only populate for political/issue ads under certain deployment configurations. That deployment caveat is a genuinely non-obvious behavioral 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?
Three compact sentences, front-loaded with the capability before the caveats. No padding, though the 'where the deployment reads the Graph Ad Library API' clause is dense and slows 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?
For a 13-parameter search tool with no output schema, the description covers result ordering, the hasMore/cursor pagination contract, field-availability gaps, and cost — everything an agent needs before invoking. Remaining parameter details are adequately handled by the 85% schema coverage.
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 85%, so the schema documents nearly every parameter with enums and defaults. The description's only parameter-adjacent content (political ads unlocking spend data) restates the ad_type schema text, and no light is shed on the undocumented cache_max_age.
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 the Meta Ad Library') and enumerates the surfaces covered (Facebook, Instagram, Messenger, Threads ads). It does not explicitly differentiate from near siblings like facebook_ad, facebook_adLibraryAdvertisers, or facebook_pageAds, 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?
No guidance on when to pick this over facebook_adLibraryAdvertisers, facebook_pageAds, or tiktok_adLibrarySearch — the agent must infer from names alone. The only operational note is the credit cost, which addresses economics rather than tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_adTranscriptfacebook: Ad video transcriptARead-onlyInspect
Ad video transcript. Retrieves a transcript for a single Facebook Ad Library video ad by ID or URL, read from the caption track Facebook publishes for the ad's video (source: "captions"). Transcription of ad videos without captions is coming soon; until then those answer not_configured (501) and are not charged. Credits are only deducted when a transcript is actually returned. Costs 1 credit. Pass exactly one of id or url.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Ad archive id, or an Ad Library URL containing `?id=` | |
| url | No | An Ad Library URL containing `?id=` | |
| language | No | Preferred caption locale | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld annotations by disclosing the data source (`source: "captions"`), the exact failure mode and status code for uncaptioned videos, and the billing rule (1 credit, only charged when a transcript is actually returned). Missing only details like whether cached results still cost a credit or how long transcripts can be.
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 scope and ID/URL constraint are front-loaded and no sentence is filler; the credit rule and the 501 caveat each earn their place. The opening fragment 'Ad video transcript.' duplicates the title and the ID/URL exclusivity is stated once at the end rather than with the other parameter details, but overall it is tight.
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 4-parameter tool with no output schema, the description covers the selection constraint, cost and failure path, which is the important part. But with `cache_max_age` undocumented anywhere and no hint about the shape of a returned transcript (plain text vs. timestamped segments), an agent still has to guess at both caching behavior and what it will receive.
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 75%, so the baseline is a 3, and the description does add one genuinely new constraint not expressible in the schema: 'Pass exactly one of `id` or `url`' (mutual exclusivity). However, it adds nothing about `language` or the entirely undocumented `cache_max_age` parameter, so the coverage gap is only partly compensated.
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: 'Retrieves a transcript for a single Facebook Ad Library video ad by ID or URL', and narrows the mechanism to Facebook's published caption track. This clearly separates it from facebook_ad (ad metadata) and from post/reel transcript siblings on other platforms, though it never names those alternatives 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 a concrete when-not condition: ad videos without captions return `not_configured` (501) and are not charged, so the agent knows this tool silently fails for that class of input. It does not route the agent to any sibling (e.g. facebook_ad to first confirm the ad is a video) or state prerequisites, so it stops short of full when/when-not/alternatives coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_cityEventsfacebook: Get the events of a cityARead-onlyInspect
Get the events of a city. Public events Facebook is suggesting for a city, from its Events Explore feed (e.g. https://www.facebook.com/events/explore/saint-petersburg-florida/111326725552547). time narrows the window to today, this week, or next week; without it Facebook returns whatever it has queued as upcoming, in whatever order it ranks them. Only the first, server-rendered page: host and description are not exposed on this listing (only on /v1/facebook/event). pagination.hasMore says whether Facebook has more; this endpoint returns no cursor to fetch them. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Explore URL ("facebook.com/events/explore/<city-slug>/<id>") or a bare "<city-slug>/<id>" pair | |
| time | No | Narrow to Facebook's own window. Defaults to all upcoming. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond readOnlyHint/openWorldHint: discloses that only the first server-rendered page is returned, that pagination.hasMore can be true with no cursor available to fetch more, that listing entries lack host and description, that ordering is Facebook's own ranking, and that each call costs 1 credit. These are exactly the operational constraints an agent needs 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?
Five tight sentences, front-loaded with what the tool returns, followed by filter semantics, page limits, and 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?
For a read-only, no-output-schema listing endpoint, the description covers the meaningful unknowns: what the feed is, what fields are absent, pagination limits, ordering nondeterminism, and cost. An agent could invoke it correctly without further exploration.
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 67%, and the description adds real meaning for `time` beyond the schema's 'Defaults to all upcoming' by explaining the resulting ordering and scope. It also restates the accepted `url` forms (Explore URL or bare slug/id pair). `cache_max_age` remains undocumented in both schema and description, keeping it below a 5.
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: 'Public events Facebook is suggesting for a city, from its Events Explore feed,' backed by a concrete example URL. The agent can tell this apart from facebook_event (detail view) because the description explicitly says host/description only exist on /v1/facebook/event.
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 when to use the `time` filter versus omitting it ('without it Facebook returns whatever it has queued as upcoming, in whatever order it ranks them') and routes the agent to the event-detail endpoint for host/description. It does not mention facebook_eventsSearch or facebook_profileEvents as alternatives for keyword or per-profile event lookups, so the sibling routing is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_commentRepliesfacebook: Replies to a commentARead-onlyInspect
Replies to a comment. Replies under one comment on a public Facebook post, ten per page. Pass the post URL and the comment id (the id of any item from /v1/facebook/post-comments), then pagination.cursor for the next page. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Full post URL the comment sits on | |
| cursor | No | `pagination.cursor` from a previous response | |
| comment_id | Yes | Numeric comment id | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely non-structured context: results are ten per page, pagination is cursor-based, the post must be public, and the call costs 1 credit. The opening 'Replies to a comment' is momentarily ambiguous (posting vs. retrieving) but is resolved by the per-page detail.
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 action, followed by prerequisites, pagination, and cost. Minor redundancy in restating cursor as pagination.cursor, but nothing wasteful.
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 return-shape burden and does so adequately by stating page size and cursor reuse. The only gap is cache_max_age, which is unexplained in both schema and description, and no explicit statement of what a reply record contains.
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 75%, so most parameters are already documented. The description adds provenance for comment_id (any `id` from /v1/facebook/post-comments) which is real value beyond 'Numeric comment id', but it says nothing about cache_max_age, the one parameter undocumented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Replies to a comment ... under one comment on a public Facebook post'), which is enough for an agent to identify the operation. It implicitly separates itself from facebook_postComments by pointing at that endpoint as the id source, though it never names the sibling outright.
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 concrete prerequisite workflow: obtain the comment id from /v1/facebook/post-comments, then call this tool, then follow pagination.cursor. It does not explicitly state exclusions (e.g., private posts) beyond 'public Facebook post', but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_eventfacebook: Event detailsARead-onlyInspect
Event details. Full details for one public Facebook event: description, start and end time, venue with coordinates, host and ticket price range. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Event URL or numeric event id | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and openWorld; the description adds meaningful context beyond them: 'public' events only and an explicit '1 credit' cost, plus the breadth of returned data. It omits error behavior and the cache_max_age effect.
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 field enumeration, and trailing cost note — no wasted text. Efficient and easy to parse.
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, states the credit cost, and notes public-only scope. It leaves the cache_max_age behavior unexplained but is otherwise adequate 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?
With only 50% schema coverage, the description should compensate but adds no meaning for url or cache_max_age. It only says the resource is a 'public Facebook event'; cache_max_age is undocumented in both schema and description.
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 returns full details for a single public Facebook event and enumerates the returned fields (description, times, venue, host, ticket price). However, it never names the sibling distinction from facebook_eventsSearch or facebook_cityEvents, which an agent must infer.
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?
'Full details for one public Facebook event' implies retrieval-by-identifier usage after discovery, but there is no explicit when-to-use vs. search/cityEvents guidance and no exclusions. The agent must infer the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_eventsSearchfacebook: Search public eventsBRead-onlyInspect
Search public events. Public Facebook events matching a search term. Results are ranked and biased toward where Facebook places the request, so the same query can return a different set on another call. Treat this as discovery, not as an enumerable list. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | What to search for, e.g. "jazz festival" | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a safe read-only, open-world operation. The description adds meaningful behavioral context beyond annotations: results are ranked and location-biased, the same query may return different sets across calls, and each call costs 1 credit. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, leading with the core action and following with important behavioral caveats. There is minor redundancy between 'Search public events' and 'Public Facebook events matching a search term,' but no major 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?
For a discovery search tool with no output schema, the description explains non-determinism and credit cost, which are important. However, it does not describe the result shape, pagination behavior, or what fields an agent should expect from returned events.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents the required query parameter with an example, but cache_max_age is undocumented, leaving schema coverage at 50%. The description adds no parameter guidance at all, so it does not compensate for the undocumented cache_max_age 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: search public Facebook events matching a search term. It is clear what the tool does, but it does not explicitly distinguish itself from related siblings such as facebook_event, facebook_cityEvents, or facebook_profileEvents.
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 useful usage context by saying results are discovery-oriented rather than an enumerable list, implying it should not be used for exhaustive retrieval. However, it does not explicitly say when to use this tool versus related event tools or what alternatives exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_groupfacebook: Public group infoARead-onlyInspect
Public group info. Name, member count, privacy setting and description for a public Facebook group. Member count lands in followerCount (a group's equivalent of an audience size) and the privacy setting in category. Facebook rounds that count on large groups ("12K members"); raw.memberCountIsApproximate says whether the number you got was rounded. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Group URL, group id, or group slug | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint; the description adds valuable context: credit cost, field mappings into followerCount/category, and the fact that member counts may be rounded with raw.memberCountIsApproximate. It stops short of failure/privacy behavior and cache 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?
It is front-loaded with 'Public group info' and then spends its sentences on useful output mappings and cost, not filler. It is appropriately sized for a no-output-schema 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?
For a simple read-only lookup with annotations and an input schema, the description covers the key returned fields, the rounding quirk, and cost. It is only incomplete on cache behavior and non-public/error cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents url but not cache_max_age, and the description contains no input-parameter guidance at all. With 50% schema coverage, the opaque cache_max_age parameter is not compensated for by the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and enumerates the fields returned (name, member count, privacy setting, description) and restricts it to public Facebook groups. That is enough to distinguish it from facebook_groupPosts and other Facebook profile/page 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?
It establishes the scope (public groups) but gives no explicit when-to-use guidance, prerequisites, or named alternatives such as facebook_groupPosts for posts. Usage is only implied by the purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_groupPostsfacebook: Public group postsARead-onlyInspect
Public group posts. Recent posts from a public Facebook group, with reaction, comment and share counts where Facebook renders them. Only the newest few stories render to a logged-out visitor, the same limit /v1/facebook/page-posts has. Private groups return an empty result; their posts are not public and we do not log in. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Group URL, group id, or group slug | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld annotations: discloses data richness (reaction/comment/share counts, conditionally rendered), a rendering cap on logged-out visitors, empty results for private groups, the no-login policy, and the 1-credit cost. This is exactly the behavioral 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?
Front-loads the resource definition, then layers in limits and cost. Four sentences with little waste, though the page-posts comparison is slightly tangential.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, it adequately describes returned data, rendering limits, failure modes (private groups), and cost. The only missing piece is meaning for the undocumented cache_max_age parameter.
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 url parameter already has a schema description ('Group URL, group id, or group slug'), and the prose adds nothing more. The cache_max_age parameter has no schema description and is not explained in the description, so at 50% coverage this leaves a real gap unaddressed.
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: recent posts from a public Facebook group. It distinguishes scope (public only) and references the analogous /v1/facebook/page-posts limit. It doesn't explicitly contrast with facebook_group or other siblings, but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It conveys key constraints (public only, private groups return empty) that effectively say when this will or won't work. However, it doesn't name alternatives such as facebook_group for group details or what to do for private content, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_marketplaceItemfacebook: Marketplace listing detailsARead-onlyInspect
Marketplace listing details. One public Facebook Marketplace listing: title, full description, price, location, delivery options and every photo. Facebook does not render the seller to a logged-out visitor, so seller identity is not returned. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Marketplace item URL or numeric listing id | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safe-read and open-world profile, but the description adds genuinely useful context the agent could not get from them: seller identity is never returned because Facebook hides it from logged-out visitors, only public listings are accessible, and each call costs 1 credit. That is real disclosure beyond structured data, though scope/rate behavior is otherwise unspecified.
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 identity of the tool and followed immediately by the returned fields, then the seller caveat and cost. No filler and 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?
There is no output schema, so enumerating the returned fields is necessary and done well, and the seller-identity exclusion plus credit cost round out the picture. The one hole is 'cache_max_age', undocumented anywhere, which leaves an agent guessing about a supported parameter.
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 only 50%: the 'url' parameter is documented in the schema, while 'cache_max_age' is undocumented in both schema and description. The description adds no parameter-level detail (accepted ID formats, cache semantics) to compensate for that gap, so it sits at 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 names a specific resource (a single public Facebook Marketplace listing) and enumerates exactly what is returned: title, description, price, location, delivery options, photos. It is distinguishable from facebook_marketplaceSearch by the singular 'one listing' framing, though it never names the sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrasing 'One public Facebook Marketplace listing' implies this is a single-item detail lookup versus a search call, but there is no explicit statement of when to use this instead of facebook_marketplaceSearch or what input forms are acceptable beyond the schema. Usage is inferable, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_marketplaceLocationsfacebook: Find a Marketplace locationARead-onlyInspect
Find a Marketplace location. Resolve a place name to the Marketplace location ids /v1/facebook/marketplace/search accepts, plus the neighbouring locations Facebook offers around it. Marketplace is city-scoped, so this is how you search a city you are not sitting in. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Place name, e.g. "London" or "San Francisco" | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and open-world, so the description earns credit for adding the 1-credit cost and for disclosing that results include neighbouring locations, not just the queried city. No mention of failure behavior when a place name is ambiguous or unmatched.
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 action, then the endpoint contract, then the rationale, then 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 usefully characterizes the return: location ids plus neighbouring locations. Cost is disclosed. The only real hole is the undocumented cache_max_age parameter, which leaves an agent guessing about a secondary option.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents 'query' with an example, but 'cache_max_age' is undocumented in both schema and description at only 50% coverage. The description adds no parameter meaning beyond restating 'resolve a place name', so it does not compensate for the gap.
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 ('Find a Marketplace location') and goes further by naming exactly what the call produces ('Marketplace location ids /v1/facebook/marketplace/search accepts'). This makes it unmistakable versus facebook_marketplaceSearch, which consumes those ids rather than producing 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?
'Marketplace is city-scoped, so this is how you search a city you are not sitting in' gives a clear situational trigger and points at the consuming sibling. It stops short of an explicit sequencing instruction ('call this first, then pass ids to marketplaceSearch') and lists no exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_marketplaceSearchfacebook: Search Marketplace listingsARead-onlyInspect
Search Marketplace listings. Public Facebook Marketplace listings matching a search term, with price, condition flags, location and photos. location takes a city slug or a location id from /v1/facebook/marketplace/locations; without one, Facebook picks the city it places the request in, which you do not control. Pass location for results you can repeat. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | What to search for, e.g. "mountain bike" | |
| sort_by | No | Facebook's own sort keys | |
| location | No | City slug ("nyc", "london") or a location id from /v1/facebook/marketplace/locations | |
| max_price | No | Highest price, in the location's currency | |
| min_price | No | Lowest price, in the location's currency | |
| radius_km | No | Search radius around the location, in kilometres | |
| cache_max_age | No | ||
| delivery_method | No | Restrict to collection-only or shipped listings | |
| days_since_listed | No | Only listings posted in the last N days |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only claim readOnly and openWorld; the description adds the non-obvious behavioral facts: results are non-deterministic absent `location`, the `location` value can come from a sibling endpoint, and each call costs 1 credit. Cost and determinism are exactly the traits structured fields don't carry, so this materially raises the bar.
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, then the caveat and cost. Nothing is repeated from the schema verbatim and no sentence is 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 9 params and no output schema, the description compensates by describing the result shape and the location/determinism interaction. It stops short of covering `cache_max_age` or the sort/price-filter interplay, so it is strong but not fully closed.
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 89%, so baseline is 3; the description earns one more by explaining the consequence of omitting `location` and by pointing to /v1/facebook/marketplace/locations as the id source. It leaves `cache_max_age` (the one undocumented param) unexplained and doesn't clarify currency resolution for min/max price beyond the schema's "location's currency".
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 Marketplace listings") and immediately enumerates what comes back: price, condition flags, location, photos. That return-field list distinguishes it from facebook_marketplaceItem (single listing) and facebook_marketplaceLocations (id lookup) without needing to name 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?
Gives a concrete conditional rule: without `location`, Facebook picks the city itself and "you do not control" it, so pass `location` for repeatable results. That is real guidance for a common failure mode, though it does not say when to prefer this over facebook_marketplaceItem for a known listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_pageAdsfacebook: All ads for one advertiserARead-onlyInspect
All ads for one advertiser. Ads a specific Facebook page is running or has run, from Meta's Ad Library. This is the competitor-monitoring endpoint. pagination.cursor is filled only where the deployment reads the Graph Ad Library API; otherwise pagination.hasMore says whether more exist. Costs 2 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Ads per page, 1-100. Default 25. | |
| cursor | No | `pagination.cursor` from a previous response | |
| status | No | Delivery status at the time of the query. | active |
| ad_type | No | `political` unlocks Meta's spend, impression and demographic fields. | all |
| country | No | ISO-3166 country code(s) the ad reached, comma-separated. Meta requires at least one. | US |
| page_id | Yes | Numeric page id, or an Ad Library URL containing `view_all_page_id` | |
| end_date | No | Latest delivery date, YYYY-MM-DD | |
| language | No | Comma-separated BCP-47 codes, e.g. "en,es" | |
| platform | No | Comma-separated: facebook, instagram, messenger, audience_network, threads, whatsapp, oculus | |
| media_type | No | ||
| start_date | No | Earliest delivery date, YYYY-MM-DD | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the description isn't carrying the safety burden, but it does add genuine operational context: the pagination caveat that cursor is only populated in Graph-API deployments while hasMore is the fallback signal, and an explicit 'Costs 2 credits.' Those are non-obvious behaviors an agent would otherwise discover only by trial.
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, purpose front-loaded, then data source, then the sibling-positioning cue, then the two operational caveats (pagination and credit cost). Nothing is redundant and nothing 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?
For a 12-parameter read-only tool with no output schema, the description covers the two things the schema cannot: how pagination behaves across deployments and the credit cost. It does not flag that most filters are optional beyond page_id, but the required field is declared in the schema, so this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so the schema already documents nearly every parameter (country requirement, political ad_type unlocking spend/impression fields, page_id accepting an Ad Library URL). The description adds only indirect cursor semantics tied to pagination and does not elaborate on limit, status, or date filters, so baseline 3 is right.
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: 'All ads for one advertiser' / 'Ads a specific Facebook page is running or has run, from Meta's Ad Library,' and tags itself as the competitor-monitoring endpoint, which separates it from the keyword-oriented siblings like facebook_adLibrarySearch. It never names the nearest siblings (facebook_ad, facebook_adLibraryAdvertisers) explicitly, so differentiation is inferable rather than spelled out.
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 phrase 'This is the competitor-monitoring endpoint' implies a use case (watching a competitor's creative), but there is no explicit when-to-use/when-not or named alternative such as searching by keyword instead of by page. Guidance is implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_pagePostsfacebook: Public Page postsARead-onlyInspect
Public Page posts. Recent public posts from a Facebook Page, newest first, three per page, with text, reaction, comment and share counts, and the publish timestamp. Pass pagination.cursor back for the next three. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL, @handle, slug, or numeric page id | |
| cursor | No | `pagination.cursor` from a previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description doesn't need to repeat safety. It adds valuable behavioral context: newest-first ordering, three posts per page, the specific fields returned (text, reaction/comment/share counts, timestamp), cursor-based pagination, and a credit cost. The only minor gap is lack of auth or error-behavior 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?
The description is four short sentences, front-loaded with the core purpose, then the return details, pagination hint, and cost. Every sentence earns its place 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, open-world tool with no output schema, the description covers the essential return data, pagination, and cost. It doesn't explain cache_max_age or mention rate limiting beyond cost, but those are minor omissions given the overall clarity and the annotations already covering 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 coverage is 67% (2 of 3 parameters described). The description reinforces the cursor semantics ('Pass pagination.cursor back for the next three') and ties it to the page size, but it adds no extra meaning for the url parameter beyond its schema description and completely omits cache_max_age. This is adequate but leaves gaps.
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 (retrieves) and resource (public posts from a Facebook Page), and lists the returned fields. It implicitly distinguishes Page posts from group or profile posts via 'from a Facebook Page', but it never names a sibling tool as an alternative, so it falls 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 description implies when to use the tool ('Recent public posts from a Facebook Page'), but it gives no explicit when-not conditions or alternatives—such as directing group posts to facebook_groupPosts. The pagination instruction ('Pass pagination.cursor back') is usage guidance for repeat calls, not for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_pageReelsfacebook: Public Page videos and reelsARead-onlyInspect
Public Page videos and reels. Public videos and reels from a Facebook Page. Reads the Page's reels tab first, ten per page with pagination.cursor for the next ten, and falls back to its video grid, which renders around twenty entries with titles, view counts and durations and has no cursor, so a Page with no reels returns its videos rather than an error. Items are keyed by video id and can be passed straight to /v1/facebook/post or /v1/facebook/post-transcript. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL, @handle, slug, or numeric page id | |
| cursor | No | `pagination.cursor` from a previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial traits beyond readOnlyHint/openWorldHint: reads the reels tab first, paginates ten at a time via pagination.cursor, falls back to the video grid (~20 entries with titles, views, durations) with no cursor, returns videos instead of erroring, and costs 1 credit. This is exactly the operational context annotations cannot 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?
Front-loaded with the core purpose, then pagination/fallback behavior, then item-keying and cost. Dense but every sentence carries information; the fallback sentence is long but 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 sketches the return shape (video-id-keyed items, titles, view counts, durations, pagination.cursor) and the fallback path. Only cache_max_age semantics are left unexplained, a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%; url and cursor are already documented in the schema, and the description only restates cursor behavior. cache_max_age has no description in either place, so no compensation for the gap. 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: public videos and reels from a Facebook Page. This is clearly distinguishable from siblings like facebook_pagePosts or facebook_pageAds 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 context for when this applies (fetching a Page's reels/videos) and even pipeline guidance — items can be passed to /v1/facebook/post or /v1/facebook/post-transcript. It does not explicitly name when to prefer a sibling instead (e.g., pagePosts for text posts), which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_postfacebook: Single post, video, or reelARead-onlyInspect
Single post, video, or reel. One public Facebook post, video or reel by URL, with its text and engagement counts. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Full post, video, or reel URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the readOnly/openWorld annotations: the target must be a public post, the response carries text and engagement counts, and each call costs 1 credit. It does not explain caching behavior or what happens for private/deleted URLs.
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 what the tool returns, then the cost. No filler and nothing to trim.
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 annotations covering the safety profile and no output schema, the description supplies the essential shape of the result (text plus engagement counts) and the credit cost. The only meaningful gap is the undocumented cache_max_age parameter and its effect on freshness or pricing.
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 50%: url is documented, cache_max_age is not. The description reinforces that url is a full post/video/reel URL but adds nothing about cache_max_age, leaving half the parameters explained only by a bare schema entry. Baseline 3 given the partial 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 resource (one public Facebook post, video, or reel) fetched by URL and returned with text and engagement counts. It is distinguishable from facebook_pagePosts (lists) and facebook_postComments (replies), though it never names those siblings to sharpen 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 phrase 'One public Facebook post... by URL' implies when it applies (single-item lookup by URL, public content only), but there is no explicit routing guidance such as using facebook_postTranscript for transcript or facebook_postComments for replies, and no stated exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_postCommentsfacebook: Comments on a postARead-onlyInspect
Comments on a post. Top-level comments on a public Facebook post, with author, reaction count and reply count, in Facebook's "Most relevant" order. The first page is the head of the thread Facebook renders into the post, usually two comments; pass pagination.cursor back for the next ten. The post's full comment total is on /v1/facebook/post. Use /v1/facebook/comment-replies for the replies under one comment. likeCount is only as precise as Facebook publishes it: comment reactions ship in abbreviated form ("2.4K") with no exact figure anywhere in the payload, so counts above about a thousand are rounded at source. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Full post, video, or reel URL | |
| cursor | No | `pagination.cursor` from a previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnly/openWorld, but the description adds non-obvious behavior: non-chronological 'Most relevant' ordering, a truncated first page versus 10-comment subsequent pages, and a data-integrity caveat that likeCount is rounded in abbreviated form ('2.4K') at source. It also discloses the 1-credit cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then pagination, then counters, then caveats — no filler sentences. It is dense and longer than typical, but nearly every clause contributes 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?
No output schema, so the description carries the return contract and does so adequately (author, reaction count, reply count, ordering, rounding caveat). Only the cache_max_age parameter and exact response envelope remain undocumented.
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 67% schema coverage, the description usefully explains that cursor comes from a previous response's pagination.cursor and that the url must be a post/video/reel. The cache_max_age parameter is left unexplained in both schema and description, a minor gap.
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 (comments on a post) with scope qualifiers: top-level only, public posts, default 'Most relevant' ordering. It also names the sibling tools it is not (facebook_post for the total, facebook_commentReplies for replies), so an agent can discriminate 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?
Explicit routing: use /v1/facebook/comment-replies for replies under a comment, and /v1/facebook/post for the full comment total. It also states the concrete pagination procedure (pass pagination.cursor back for the next ten after the ~2-comment first page).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_postTranscriptfacebook: Video transcriptARead-onlyInspect
Video transcript. Transcript for a public Facebook video or reel, as one text block plus timed cues. Reads the caption track Facebook publishes for the video, auto-generated when the uploader added none (source: "captions"). Transcription of videos without captions is coming soon; until then such a video answers not_configured (501) and is not charged. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Full video or reel URL | |
| language | No | Preferred caption locale, e.g. "en" or "en_US" | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, it discloses important behavior: the source is Facebook's caption track, auto-generated captions may be used, uncaptioned videos return `not_configured` (501), that case is not charged, and successful calls cost 1 credit. This is unusually rich context for invocation and failure handling.
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 return type and then adds operational details. The opening 'Video transcript. Transcript for...' is slightly redundant, but overall it is compact and every other sentence provides 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 transcript-fetching tool without an output schema, the description explains the return format, caption source, failure behavior, and billing. It is nearly complete, with the main remaining gap being semantics for the `language` and `cache_max_age` parameters.
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 67%, and the schema already documents `url` and `language`. The description reinforces that the URL must be a public Facebook video/reel URL, but it adds nothing about `language` or `cache_max_age`, so it does only partial work beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource and return shape: a transcript for a public Facebook video or reel, as one text block plus timed cues. It is more specific than the title alone, but it does not explicitly differentiate itself from sibling transcript tools such as facebook_adTranscript or reddit_postTranscript.
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 usage context: works for public Facebook videos/reels that have a Facebook caption track, including auto-generated captions. It also states the key exclusion that videos without captions are not yet supported, though it does not name alternative transcript tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_profilefacebook: Public Page profileARead-onlyInspect
Public Page profile. Name, category, follower and like counts, description, banner and outbound links for a public Facebook Page. followerCount is as precise as Facebook renders it: exact on a small Page ("498 followers"), rounded on a large one ("28M followers", so ±500,000). raw.followerCountIsApproximate says which you got, and raw.likeCount carries the exact like figure Facebook always prints. Pass extra_fetch=true to also fill createdAt, the date the Page was created, which lives only on the Page transparency tab: it costs 1 extra credit and one large additional fetch, refunded if that fetch cannot be read. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL, @handle, slug, or numeric page id | |
| extra_fetch | No | When true, fetches each item's own page to fill fields the list page leaves null. Costs 1 extra credit per page fetched, up to the page size. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly and openWorld; the description goes well beyond them by disclosing credit pricing, the extra-credit cost of extra_fetch with a refund clause on unreadable fetches, and the data-quality caveat that followerCount may be rounded to ±500,000 with raw.followerCountIsApproximate as the discriminator. That is exactly the kind of behavioral context 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?
Front-loaded with what the tool returns, then the caveats and cost model; sentences carry information rather than filler. It is dense and slightly long, but nearly every clause (rounding, refund, credit cost) 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 does the work of naming returned fields (including the raw.* sub-fields) and the cost/refund behavior, which is enough for an agent to call it correctly. The only real gap is cache_max_age, undocumented anywhere, which slightly weakens completeness for a 3-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?
extra_fetch is explained in depth, including its cost model (1 extra credit per page, large additional fetch) and its effect on createdAt, adding real meaning beyond the schema's generic wording. url is only implied from 'Page URL, @handle, slug, or numeric page id', and cache_max_age is completely unaddressed in both schema and description, keeping this below 5 despite 67% 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 resource – a public Facebook Page profile – and enumerates the fields returned (name, category, follower/like counts, description, banner, outbound links), so the agent knows exactly what it gets. It doesn't explicitly contrast with siblings like facebook_pagePosts or facebook_profilePhotos, leaving that distinction to name inference.
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 statement of when to use this tool versus the many sibling facebook_* tools (pagePosts, pageAds, profileEvents). The only conditional guidance is parameter-level ('Pass extra_fetch=true to also fill createdAt'), which is invocation guidance rather than tool-selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_profileEventsfacebook: Events on a PageARead-onlyInspect
Events on a Page. Events hosted by a public Facebook Page, upcoming ones first, with past events where Facebook still lists them, eight per page; pass pagination.cursor back for the next eight. Each carries start time, place, host and the cover photo. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL, @handle, slug, or numeric page id | |
| cursor | No | `pagination.cursor` from a previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, openWorldHint), and the description adds real behavioral context: result ordering (upcoming first, past included where listed), fixed page size of eight, cursor-based continuation, and a stated cost of 1 credit. Rate limits or failure modes for private/removed pages are not mentioned, 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 short sentences, all load-bearing: what it returns, how it orders and paginates, and what it costs. The key scoping and ordering facts are front-loaded 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 the returned fields (start time, place, host, cover photo) and the pagination model, which is what an agent needs. The only gap is the undocumented cache_max_age parameter and no hint about empty results for pages without events.
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 description reinforces cursor semantics ('pass pagination.cursor back for the next eight'), tying it to the page size rather than merely restating the schema. Url forms and cursor were already covered by the schema (67% coverage), but cache_max_age remains undocumented in both places, so it is not fully compensated.
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 and narrows scope: events hosted by a public Facebook Page, ordered upcoming-first. That distinguishes it in practice from facebook_event (a single event), facebook_eventsSearch (search) and facebook_cityEvents (city-based), though no sibling is named explicitly, 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?
Usage is implied by the 'public Facebook Page' scoping and the pagination instruction, but there is no explicit when-to-use / when-not guidance, e.g. no note that event *search* belongs to facebook_eventsSearch or that cities belong to facebook_cityEvents. The agent has to derive the routing itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_profilePhotosfacebook: Photos on a PageARead-onlyInspect
Photos on a Page. Photos from a public Facebook Page's photo grid, eight per page, newest first; pass pagination.cursor back for the next eight. Facebook exposes each photo's accessibility caption rather than the text of the post it came from, so that is what lands in title. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL, @handle, slug, or numeric page id | |
| cursor | No | `pagination.cursor` from a previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover read-only/open-world safety, so the description carries the rest and does so well: page size (eight), ordering (newest first), the cursor round-trip, the caveat that `title` holds the accessibility caption rather than post text, and the 1-credit cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences: what it returns, how pagination works, then the title-semantics caveat and cost. No filler and the most surprising detail (caption-as-title) is called out explicitly.
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 still tells the agent the shape of results (8 per page, newest first, cursor), the notable field quirk, and the cost — everything needed to call and page through 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 67%, and `url`/`cursor` are already documented in the schema. The description confirms the cursor flow and re-emphasizes public pages, but `cache_max_age` remains undocumented in both places, so it doesn't fully compensate.
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: photos from a public Facebook Page's photo grid. The scope (public pages only, photo grid) makes it clearly distinct from siblings like facebook_pagePosts, facebook_pageReels, or facebook_profileEvents.
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 'public Page' constraint and pagination flow imply when this is appropriate, but no sibling is named and no when-not guidance is given (e.g., posts vs reels vs photos). Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_activitygithub: Public activityARead-onlyInspect
Public activity. Public events for a user: pushes, pull requests, issues, stars, forks and releases. GitHub caps this feed at 300 events / 90 days regardless of paging. Costs 1 credit. Pass either handle or url.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Profile URL, e.g. https://github.com/torvalds | |
| cursor | No | Page number from the previous response | |
| handle | No | Username, e.g. "torvalds" | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuinely non-obvious context the annotations cannot: the 300-event / 90-day hard cap regardless of paging, and the 1-credit cost. It stops short of explaining cursor persistence or cache_max_age 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 short sentences, no filler, with the core purpose front-loaded before the event list, the cap, the cost, and the parameter rule. 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?
For a 4-parameter, no-output-schema read tool, the description covers purpose, limits, cost, and the handle/url choice. The remaining gap is cache_max_age, undocumented in both schema and description, and the absence of sibling routing guidance.
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 75%, so the schema documents url, cursor, and handle reasonably. The description adds real meaning by stating 'Pass either handle or url' — an exclusivity rule the schema does not express, since both are optional with zero required parameters. It says nothing about cache_max_age, the one undocumented field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (public activity feed for a user) and enumerates the event types returned (pushes, pull requests, issues, stars, forks, releases), which is concrete. It does not, however, distinguish itself from close siblings such as github_contributions, github_pullRequests, or github_userRepositories, leaving an agent to 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?
Usage is implied by 'Public events for a user' and the handle/url selector, so the agent can infer the context. But there is no explicit guidance on when to reach for this instead of github_contributions or github_pullRequests, and no note on what happens if both handle and url are omitted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_contributionsgithub: Contributions calendarARead-onlyInspect
Contributions calendar. The contribution graph for one calendar year: a per-day count plus GitHub's 0–4 intensity level, and the annual total. Costs 1 credit. Pass either handle or url.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Profile URL, e.g. https://github.com/torvalds | |
| year | No | Calendar year, e.g. "2025". Defaults to the current year. | |
| handle | No | Username, e.g. "torvalds" | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, openWorldHint), so the bar is lower, and the description still adds real context: a per-call cost of 1 credit, the exact shape of the returned data (per-day count, 0–4 intensity, annual total), and the either/or input constraint. It does not discuss pagination (presumably none, since one year), errors, or behavior when neither identifier is supplied.
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: resource first, return shape second, cost and input rule last. Nothing is repeated from the title 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 carries the return-value burden and does so adequately by describing the calendar data and annual total. Combined with annotations covering safety and the schema covering most parameters, an agent has nearly everything needed; only cache_max_age and failure behavior 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 75%, so the schema documents url, year (with default), and handle. The description adds the otherwise-implicit exclusivity rule that either handle or url must be passed, which is genuine semantic value beyond the schema. cache_max_age remains undocumented in both places, which keeps it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (contribution calendar for one calendar year) and specifies exactly what it returns: per-day count, GitHub's 0–4 intensity level, and the annual total. This is meaningfully more precise than the title alone. It stops short of naming a sibling such as github_activity or github_user to draw the boundary, so differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Pass either `handle` or `url`" gives a usable input-selection rule, but there is no explicit when-to-use versus github_activity or github_userRepositories, and no when-not guidance. Usage is implied by the resource description rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_followersgithub: FollowersARead-onlyInspect
Followers. Accounts following this user, 30 per page. GitHub serves a reduced user payload here, so per-account counts are null. Costs 1 credit. Pass either handle or url.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Profile URL, e.g. https://github.com/torvalds | |
| cursor | No | Page number from the previous response | |
| handle | No | Username, e.g. "torvalds" | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and open-world, but the description adds genuinely non-obvious traits: fixed page size of 30, a cost of 1 credit, and the warning that GitHub returns a reduced payload so per-account counts come back null. That last point prevents an agent from misreading empty fields as a failure.
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, each carrying distinct information (identity, pagination, payload quirk, cost, input rule). The identifying clause comes first 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?
Given no output schema, the definition of the return population, page size, and null-count caveat is enough to call and interpret results. Only the neither-identifier case and `cache_max_age` are left uncovered.
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 75%, so the baseline is 3, and the description earns a bump by stating the either/or relationship between `handle` and `url` — something the schema cannot express with both being individually optional. `cache_max_age` remains undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource and the direction explicitly: 'Accounts following this user' — which separates it from the sibling github_following. The leading 'Followers' fragment is immediately disambiguated by the next clause.
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?
'Pass either `handle` or `url`' gives a usable calling constraint, and the 30-per-page note implies pagination. But it never says when to use this over github_user or github_following, nor what happens if neither identifier is supplied (0 required params).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_followinggithub: FollowingARead-onlyInspect
Following. Accounts this user follows, 30 per page. GitHub serves a reduced user payload here, so per-account counts are null. Costs 1 credit. Pass either handle or url.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Profile URL, e.g. https://github.com/torvalds | |
| cursor | No | Page number from the previous response | |
| handle | No | Username, e.g. "torvalds" | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the readOnly/openWorld annotations: page size (30), a data-quality caveat (reduced user payload so per-account counts are null), and a credit cost. This tells the agent how much data to expect and what it costs. Return shape and pagination mechanics beyond page size are not elaborated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource, followed by page size, data caveat, cost, and invocation hint in two tight sentences. 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 listing tool with no output schema, the description covers pagination size, cost, and the null-counts caveat, which is what an agent needs to set expectations. Ideally it would name the followers sibling to prevent confusion, but it is otherwise sufficient.
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 75%, but the description adds meaning the schema lacks: handle and url are mutually exclusive alternatives, which the schema does not state. The undocumented cache_max_age is not addressed. Credit for clarifying the either/or choice.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource ('Accounts this user follows') with implicit listing verb, and 'Following' vs the sibling 'github_followers' is distinguishable by name. It doesn't explicitly call out the followers sibling as the alternative, keeping it at 4.
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?
'Pass either handle or url' clarifies how to invoke, but no guidance on when to choose this over github_followers or github_user, and no prerequisites stated. 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.
github_pullRequestsgithub: Pull requests by a userARead-onlyInspect
Pull requests by a user. Pull requests authored by a user across all public repositories, newest first. since / until filter on creation date. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | Only PRs created on or after this date (YYYY-MM-DD) | |
| until | No | Only PRs created on or before this date (YYYY-MM-DD) | |
| cursor | No | Page number from the previous response | |
| handle | Yes | Username, e.g. "gaearon" | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, yet the description adds real value beyond them: coverage limited to public repositories, newest-first ordering, and a cost of 1 credit. It does not describe pagination limits or page-size behavior, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core purpose, followed by scope/ordering and then the filtering and cost notes. 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 is sufficient for an agent to call the tool correctly: it establishes the author-based scope, date filters, ordering, and cost. Pagination semantics (cursor as page number) and cache_max_age are left entirely to the 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 coverage is 80%, so the baseline is 3. The description reinforces that since/until filter on creation date (already in the schema) and clarifies that 'handle' is the author whose PRs are returned, but it says nothing about cursor or the undocumented cache_max_age 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+resource ('Pull requests by a user') and adds scope ('authored by a user across all public repositories, newest first'), which clearly separates it from repo-centric siblings like github_repository or github_userRepositories. It does not explicitly name a sibling alternative, 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?
Usage is implied by the scope sentence — an agent can infer this is for enumerating a user's PRs — but there is no explicit when-to-use/when-not guidance or pointer to alternatives such as github_activity or github_contributions that might also surface PR data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_repositorygithub: Repository detailsBRead-onlyInspect
Repository details. Public details for a repository: stars, forks, open issues, topics, language and licence. Stars map to likeCount, forks to shareCount; open issues and pull requests are openIssuesCount. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | "owner/repo" or a github.com repository URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnly/openWorld; the description adds genuinely new context: that only public data is returned, that the call costs 1 credit, and how GitHub's raw fields surface (stars→likeCount, forks→shareCount, issues/PRs→openIssuesCount). The field mapping is especially valuable 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 front-loaded sentences with no filler; purpose first, then returned fields, then cost. The field-mapping sentence is dense but earns its place given 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?
For a simple read tool the description covers what data comes back and the credit cost, which compensates for the missing output schema. But it leaves the second parameter (`cache_max_age`) unexplained and gives no hint about response shape or error behavior for invalid repo 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 coverage is only 50%. `url` is documented in the schema but the description adds nothing about accepted formats, and `cache_max_age` is completely undocumented in both schema and description. With low coverage the description should compensate, and it does not.
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 ('Repository details') and enumerates exactly which fields are returned (stars, forks, open issues, topics, language, licence), which distinguishes it from github_trendingRepositories and github_userRepositories by scope. It stops short of explicitly naming those siblings, so a 4 rather than 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?
Usage is only implied: given a repo URL/owner-slug, fetch its details. There is no statement of when to prefer this over github_userRepositories or github_trendingRepositories, nor any exclusions or prerequisites beyond 'public'. 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.
github_trendingDevelopersgithub: Trending developersBRead-onlyInspect
Trending developers. The public github.com/trending/developers board. Counts are null: the board renders names and popular repositories, not follower numbers. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | daily | |
| language | No | Language slug, e.g. "rust" | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, and the description adds meaningful behavior: it is the public github.com board, counts will be null because the board shows names and popular repositories rather than follower numbers, and it costs 1 credit. It does not cover pagination or rate limits, but it adds useful caveats beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose and followed by source, null-count caveat, and credit cost. Every sentence adds useful information with no repetition or wasted text.
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 scraper with no output schema and low schema coverage, the description covers the source, null counts, and cost. However, it omits how since, language, and cache_max_age affect results, leaving important invocation details incomplete.
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 description never mentions the since, language, or cache_max_age parameters. Schema description coverage is only 33%, and the description does not compensate for the undocumented parameters, even though the since enum values are largely self-explanatory.
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 that it returns trending developers from the public github.com/trending/developers board, a specific resource and source. The name/title and 'developers' distinguish it from github_trendingRepositories, but it does not explicitly name or contrast sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use, when-not-to-use, or alternative guidance, such as when to choose github_user or github_trendingRepositories instead. It only notes the credit cost, leaving tool selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_trendingRepositoriesgithub: Trending repositoriesARead-onlyInspect
Trending repositories. The public github.com/trending board. likeCount is total stars, shareCount total forks and starsInPeriod the stars gained in the chosen period. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | daily | |
| language | No | Language slug, e.g. "typescript" | |
| cache_max_age | No | ||
| spoken_language_code | No | Two-letter code, e.g. "en" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/open-world, so the description earns credit for adding the credit cost ('Costs 1 credit') and for decoding the result fields (likeCount, shareCount, starsInPeriod) that the agent cannot see anywhere else. It stops short of noting caching behavior despite exposing a cache_max_age parameter.
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 resource and source, then the field decoding, then the cost. Every sentence carries information the agent cannot get from structured fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the inline field definitions are exactly the right compensation, and the credit cost is disclosed. The remaining gap is the undocumented cache_max_age parameter and no hint about result volume or caching semantics.
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?
At 50% schema coverage the baseline is 3; the phrase 'stars gained in the chosen period' usefully ties the `since` enum to the starsInPeriod field. But `cache_max_age` is left undocumented in both schema and description, and no slug/format guidance is added for `language` beyond what the schema says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (trending repositories) and names the exact upstream source (the public github.com/trending board), which is more than a restatement of the name. The distinction from the sibling github_trendingDevelopers is only implicit in the word 'repositories', not called out.
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 (browsing what's trending on GitHub) and that results are period-scoped, but it never says when to pick this over github_trendingDevelopers or github_activity, 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.
github_usergithub: User or organisation profileARead-onlyInspect
User or organisation profile. Public profile for a GitHub user or organisation: followers, public repo count, bio, location and links. Costs 1 credit. Pass either handle or url.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Profile URL, e.g. https://github.com/torvalds | |
| handle | No | Username, e.g. "torvalds" | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, openWorldHint), and the description adds genuinely new context: results are limited to the *public* profile and each call costs 1 credit. It does not mention rate limits or failure behavior for nonexistent handles, so it is strong but not complete.
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 resource identity, followed by what it returns, cost, and invocation constraint. 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?
With no output schema, the description usefully enumerates the returned fields and discloses cost, so an agent knows what it gets back. The only gap is the undocumented `cache_max_age` parameter, which neither the schema nor the description explains.
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 67% and both `handle` and `url` are optional, so the description's 'pass either `handle` or `url`' resolves a real ambiguity the schema leaves open (mutual exclusivity/at-least-one). The undocumented `cache_max_age` parameter is not addressed, keeping it below a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (public GitHub user/organisation profile) and enumerates the fields returned (followers, public repo count, bio, location, links), which separates it from siblings like github_followers or github_userRepositories. It does not explicitly name those siblings, 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?
'Pass either `handle` or `url`' gives invocation guidance, and the field list implies when this tool is appropriate versus the more specific github_* siblings. However, there is no explicit when-to-use/when-not or named alternative (e.g. use github_userRepositories for repo listings), so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_userRepositoriesgithub: User repositoriesBRead-onlyInspect
User repositories. Public repositories owned by a user or organisation, 30 per page. Costs 1 credit. Pass either handle or url.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Profile URL, e.g. https://github.com/torvalds | |
| sort | No | updated | |
| type | No | owner | |
| cursor | No | Page number from the previous response | |
| handle | No | Username, e.g. "torvalds" | |
| direction | No | desc | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint and openWorldHint already declaring the safety profile, the description adds genuinely new operational context: a cost of 1 credit and a 30-item page limit, plus the constraint that only public repositories are returned. It stops short of describing rate limiting or error behavior, but the additions are substantive.
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 fragments, front-loaded with the resource identity and ending with the key input constraint. Nothing is wasted, though the telegraphic style leaves out connective meaning that would cost only a few more 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?
Pagination (30 per page) and cost are covered, which matters given there is no output schema. However, for a 7-parameter tool with 43% schema coverage, the description leaves sorting, filtering by type, and the structure of returned repository data entirely unexplained.
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 only 43%, so the description needs to carry weight. It clarifies the handle/url mutual exclusivity (a useful addition), but four parameters — sort, type, direction, and cache_max_age — are undocumented in both schema and description, and 'type' in particular is easy to misread against the phrase 'owned by'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource and its scope precisely: public repositories owned by a user or organisation, with a page size. The listing verb is only implied by '30 per page', but an agent can still distinguish this from github_repository (single repo) or github_trendingRepositories (global 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 only routing guidance is 'Pass either `handle` or `url`', which is input mechanics rather than when-to-use. It never says when to prefer this over github_repository, github_activity, or github_contributions, so an agent must infer the choice of sibling from names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_adgoogle: Ad detailsARead-onlyInspect
Ad details. One creative from the Ads Transparency Centre, with every rendering variant and the per-country dates it ran. For a text ad, headline, body and linkUrl come from its rendered preview, and linkUrl is the address the ad displays. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Creative URL, e.g. https://adstransparency.google.com/advertiser/AR.../creative/CR...?region=US | |
| region | No | Overrides the region in the URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real context beyond the readOnly/openWorld annotations: the response includes every rendering variant plus per-country run dates, and the cost is explicitly 1 credit. The explanation of where headline/body/linkUrl come from is useful provenance detail, though nothing is said about failure modes for invalid or expired creatives.
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 scope, then the result shape, 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?
With no output schema, the description does the necessary work of explaining what comes back (variants, run dates, rendered text-ad fields). Only the undocumented cache_max_age parameter and the absence of error behavior keep it from being 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 coverage is only 67%, and cache_max_age is undocumented in both schema and description. The description adds nothing about the url format or how region overrides the URL's region parameter, so it does not compensate for the coverage gap.
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: fetches a single creative from the Ads Transparency Centre, with rendering variants and per-country run dates. The 'one creative' framing distinguishes it from list-oriented siblings like google_advertiserAds and google_adLibraryAdvertisers.
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 you pass a creative URL obtained elsewhere, but never states when to use this versus google_advertiserAds or google_adLibraryAdvertisers, nor any prerequisites for obtaining the URL. Usage is inferable from the schema example but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_adLibraryAdvertisersgoogle: Find advertisers in the Ads Transparency CentreARead-onlyInspect
Find advertisers in the Ads Transparency Centre. Advertisers matching a name, with the advertiser id that /v1/google/ad-library/advertiser-ads needs, plus the verified domains Google suggests for the same term in domains. Without region every region is searched. postCount and adCountUpper are the lower and upper bounds of the ad-count range the archive publishes, counted within region when one is given. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Advertiser or brand name, e.g. "nike" | |
| region | No | Two-letter country code (US, GB, DE, IN, ...) or a Google geo criteria id. Omit to search every region. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnly/openWorld, so the description carries the real burden and adds genuinely non-obvious facts: a credit cost, that missing region means a global search (relevant to result volume and relevance), and that postCount/adCountUpper are the published range bounds counted within region. It does not cover result volume, ordering, or paging behaviour, so it is not fully transparent.
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 the output contract, then the region caveat, then cost — a sensible priority order. Sentences are dense and mostly earn their place, though the telegraphic phrasing of 'Advertisers matching a name, with the advertiser id that ... needs' is harder to parse than it needs to be.
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 supplies return shape (advertiser id, domains, ad-count bounds) and the credit cost. Combined with annotations that cover the safety profile and a mostly documented schema, an agent has enough to call it correctly; only cache_max_age and result-ordering/paging 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 67%; query and region are documented in the schema, and the description reinforces region's 'omit to search every region' behaviour. cache_max_age is undocumented in both places, leaving a gap. The remaining sentences explain return fields (domains, postCount, adCountUpper) rather than parameters, so they do not raise this dimension.
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 (find advertisers in Google's Ads Transparency Centre) and immediately clarifies the scope of the result: advertisers matching a name, plus the verified domains Google suggests. Critically it ties itself to a sibling, noting the advertiser id is what /v1/google/ad-library/advertiser-ads needs, so an agent can place it in a workflow 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 a clear downstream path: use this tool first to obtain the advertiser id, then feed it to the advertiser-ads tool. Also notes that omitting region widens the search to every region, which is a usage decision. It stops short of naming an alternative for the same task (e.g. facebook_adLibraryAdvertisers or google_advertiserAds) or stating when not to use it, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_advertiserAdsgoogle: Ads run by an advertiser or domainARead-onlyInspect
Ads run by an advertiser or domain. Creatives in the Ads Transparency Centre for one advertiser id or one verified domain, with first-shown and last-shown dates. Pass the cursor from the previous response to page. Costs 2 credits. Pass either domain or advertiser_id.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Continuation token from the previous response | |
| domain | No | Verified advertiser domain, e.g. "nike.com" | |
| region | No | Two-letter country code (US, GB, DE, IN, ...) or a Google geo criteria id | US |
| advertiser_id | No | Advertiser id from /ad-library/advertisers, e.g. "AR167..." | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as a read-only, open-world tool. The description adds useful behavioral context beyond annotations: it discloses that calls cost 2 credits, that paging uses a cursor from the previous response, and that results include first-shown and last-shown dates.
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, moving from purpose to scope, paging, cost, and required inputs. There is minor redundancy between the first two sentences, but no significant 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 available, the description does a reasonable job of explaining the return context by mentioning creatives and first/last-shown dates. It also covers pagination and cost, though it does not describe the full response shape or the `cache_max_age` parameter.
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 high, so most parameters are already documented. The description adds an important cross-parameter constraint not enforced by the schema: pass either `domain` or `advertiser_id`. It also clarifies cursor pagination, though `cache_max_age` remains undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource and scope: creatives from the Ads Transparency Centre for one advertiser id or one verified domain. It is more specific than the title alone, though it does not explicitly name sibling tools like google_ad or google_adLibraryAdvertisers to sharpen the 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?
It states that either `domain` or `advertiser_id` must be passed and explains cursor-based pagination. However, it gives no guidance on when to choose domain versus advertiser_id, nor when to use this tool instead of nearby siblings such as google_ad or google_adLibraryAdvertisers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_jobsgoogle: Google Jobs resultsARead-onlyInspect
Google Jobs results. Job postings for a query: title, company, location and the board it was syndicated from. Shares the /search anti-bot gate google.search already documents; a blocked attempt returns upstream_blocked and is not charged. Costs 5 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| gl | No | Two-letter country code Google should bias results toward. | |
| hl | No | Host language for the results page, e.g. "en", "de". Defaults to "en". | en |
| tld | No | Google marketplace TLD. One of: com, co.uk, ca, de, es, fr, it, co.jp, in, cn, com.sg, com.mx, ae, com.br, nl, com.au, com.tr, sa, se, pl. Defaults to "com". | com |
| uule | No | Encoded Google location string for precise geo-targeting. | |
| query | Yes | Search query | |
| start | No | 0-based result offset. | |
| country_code | No | Two-letter country code. Sets `gl` when `gl` is not given. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint/openWorldHint annotations by disclosing operational behavior an agent can act on: the shared `/search` anti-bot gate, the `upstream_blocked` failure mode, that blocked attempts are not billed, and the 5-credit cost. This is exactly the kind of quota/error context annotations cannot express.
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 and return shape first, then failure/billing semantics. The reference to 'the `/search` anti-bot gate `google.search` already documents' efficiently avoids restating shared behavior.
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 8-parameter read-only search with no output schema, the description covers purpose, payload contents, error mode and pricing. The only real gap is pagination/result-set size (the `start` offset is never mentioned), which matters for a list-returning 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 88%, so the schema already documents gl, hl, tld, uule, start and country_code. The description adds no parameter-level detail at all, not even clarifying the precedence of country_code vs gl or what the undocumented cache_max_age does. 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 ('Job postings for a query') and enumerates the fields returned (title, company, location, source board), which makes it clearly a job-listing search rather than a general web search. It stops short of naming the sibling it competes with (google_search, google_news), so an agent must infer the boundary from the field list 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?
Usage is only implied: query-based job search. There is no explicit 'use this instead of google_search when...' or when-not guidance, and nothing about whether it covers aggregator boards vs. direct employer listings, so the agent has to infer selection from the returned-field list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_mapsSearchgoogle: Google Maps place searchARead-onlyInspect
Google Maps place search. Business listings near a coordinate: name, address, phone, rating and hours. Google Maps requires JavaScript to render its result list; an unrendered response returns upstream_blocked and is not charged, rather than a silent empty success. Costs 5 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| gl | No | Two-letter country code Google should bias results toward. | |
| hl | No | Host language for the results page, e.g. "en", "de". Defaults to "en". | en |
| tld | No | Google marketplace TLD. One of: com, co.uk, ca, de, es, fr, it, co.jp, in, cn, com.sg, com.mx, ae, com.br, nl, com.au, com.tr, sa, se, pl. Defaults to "com". | com |
| uule | No | Encoded Google location string for precise geo-targeting. | |
| query | Yes | Search query | |
| start | No | 0-based result offset. | |
| latitude | Yes | Latitude of the search centre | |
| longitude | Yes | Longitude of the search centre | |
| country_code | No | Two-letter country code. Sets `gl` when `gl` is not given. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld annotations: it discloses that Google Maps needs JavaScript, that an unrendered response returns `upstream_blocked` rather than a silent empty success, that such calls are not charged, and the 5-credit cost. These are exactly the operational traits an agent needs before invoking a metered network 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?
Four tight sentences with the purpose, return fields, and the critical failure-mode caveat front-loaded. The opening clause slightly restates the title, but 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?
No output schema exists, and the description compensates by naming the returned fields (name, address, phone, rating, hours) plus the failure mode and cost. Pagination behavior via the `start` offset is unaddressed, which is the main remaining gap for a 10-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 coverage is 90%, so the schema already documents gl, hl, tld, uule, start, and the coordinate params; the description only reinforces that lat/long is the search centre. It adds no meaning for the geo-targeting or pagination parameters, 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 ("Google Maps place search") and scopes it to "business listings near a coordinate", which implicitly separates it from the textual google_search sibling. It does not name google_search or google_shopping explicitly, so the differentiation is inferable rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "near a coordinate" plus the required lat/long signals when this is appropriate (local business discovery), and the cost/blocking note helps the agent decide. But there is no explicit when-not guidance or named alternative for non-local lookups, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_newsgoogle: Google News resultsARead-onlyInspect
Google News results. News articles for a query: title, source, and published time. Shares the /search anti-bot gate google.search already documents; a blocked attempt returns upstream_blocked and is not charged. Costs 5 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| gl | No | Two-letter country code Google should bias results toward. | |
| hl | No | Host language for the results page, e.g. "en", "de". Defaults to "en". | en |
| tbs | No | Time filter: hour/day/week/month/year, as Google's own `qdr` code. | |
| tld | No | Google marketplace TLD. One of: com, co.uk, ca, de, es, fr, it, co.jp, in, cn, com.sg, com.mx, ae, com.br, nl, com.au, com.tr, sa, se, pl. Defaults to "com". | com |
| uule | No | Encoded Google location string for precise geo-targeting. | |
| query | Yes | Search query | |
| start | No | 0-based result offset. | |
| country_code | No | Two-letter country code. Sets `gl` when `gl` is not given. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only and open-world annotations, the description adds meaningful behavioral context: it shares the anti-bot gate with google.search, returns upstream_blocked when blocked, does not charge for blocked attempts, and costs 5 credits. It could still say more about pagination or caching, but the disclosure is substantially helpful.
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 short, front-loaded, and efficient: it states the result type first, then output fields, then anti-bot/error behavior, and finally cost. Every sentence adds relevant information without 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?
For a 9-parameter search tool with no output schema, the description supplies the result fields, charging behavior, and key failure mode, while the schema covers most parameter semantics. The main gap is that it does not explain the undocumented cache_max_age parameter or offer usage routing against similar search 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 coverage is high at 89%, so the schema already documents nearly all parameters, including the time filter, locale, country, TLD, and pagination offset. The description adds no parameter-specific meaning beyond the required query, 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 resource and result type: Google News articles for a query, including title, source, and published time. It is clearly a news-vertical search rather than a generic web search, but it does not explicitly differentiate itself from sibling tools such as google_search.
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 tool versus alternatives like google_search, nor any when-not-to-use conditions. The phrase 'News articles for a query' only weakly implies usage, leaving routing decisions to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_searchgoogle: Web search resultsBRead-onlyInspect
Web search results. Organic Google results for a query. Google blocks automated queries harder than any other source here, so this endpoint fails more often than the rest; a blocked attempt returns upstream_blocked and is not charged. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 1-based page number | |
| query | Yes | ||
| region | No | Two-letter country code (US, GB, DE, IN, ...) or a Google geo criteria id | US |
| date_posted | No | ||
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnly and openWorld, so the description adds real value: Google blocks automation aggressively, this endpoint fails more often than others, a blocked call returns `upstream_blocked`, and that call is not charged. Cost (1 credit) is also disclosed. It stops short of describing result shape or pagination behavior, but the failure and billing semantics are the highest-value additions here.
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 the tool returns before the operational caveat. The opening "Web search results" slightly duplicates the title, but every remaining 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 and 5 parameters at 40% coverage, the description should cover return shape and parameter meaning, and it does neither. It is complete on the operational risks (blocking, error code, billing), which is the harder part, but leaves an agent guessing about results and inputs.
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 only 40%, and three parameters (page, date_posted, cache_max_age) have no description at all. The description says nothing about query syntax, region codes, date_posted values, or what cache_max_age controls, so it fails to compensate for the coverage gap.
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?
"Web search results. Organic Google results for a query." gives a clear verb+resource and the word "organic" signals general web results rather than a vertical like news or shopping. It does not explicitly name google_news or google_shopping as alternatives, so the sibling differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the general-purpose search endpoint, but the description never says when to prefer it over google_news, google_shopping, or google_mapsSearch, nor any exclusions. The only guidance is the failure warning, which is behavioral rather than selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_shoppinggoogle: Google Shopping resultsARead-onlyInspect
Google Shopping results. Shopping tiles for a query: title, price, currency and merchant. Shares the /search anti-bot gate google.search already documents; a blocked attempt returns upstream_blocked and is not charged. Costs 5 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| gl | No | Two-letter country code Google should bias results toward. | |
| hl | No | Host language for the results page, e.g. "en", "de". Defaults to "en". | en |
| tbs | No | Time filter: hour/day/week/month/year, as Google's own `qdr` code. | |
| tld | No | Google marketplace TLD. One of: com, co.uk, ca, de, es, fr, it, co.jp, in, cn, com.sg, com.mx, ae, com.br, nl, com.au, com.tr, sa, se, pl. Defaults to "com". | com |
| uule | No | Encoded Google location string for precise geo-targeting. | |
| query | Yes | Search query | |
| start | No | 0-based result offset. | |
| country_code | No | Two-letter country code. Sets `gl` when `gl` is not given. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint/openWorldHint already covering the safety profile, the description adds genuinely non-obvious behavior: it shares the /search anti-bot gate, a blocked attempt returns `upstream_blocked` and is not charged, and each call costs 5 credits. That billing and failure-mode disclosure is exactly what annotations cannot express. It doesn't cover pagination behavior for `start`, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with what the tool returns before the operational caveats. Minor waste: 'Google Shopping results.' and 'Shopping tiles for a query' say nearly the same thing, and 'google.search already documents' forces a cross-tool lookup.
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 naming the returned tile fields is the right compensation, and cost plus the `upstream_blocked` failure mode round out what an agent needs before calling. For a read-only search tool with 89% schema coverage, 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 89%, so the schema already documents gl, hl, tbs, tld, uule, query and start — baseline 3 applies. The description adds no parameter-level detail beyond naming the output fields, and the one undocumented parameter (`cache_max_age`, no schema description) is left entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource (Google Shopping results for a query) and enumerates the returned fields — title, price, currency, merchant — which lets an agent distinguish it from web-search siblings like google_search or google_news. It stops short of explicitly naming the alternative, so it is clear but not sibling-differentiated at the level 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?
There is no when-to-use guidance at all: nothing tells the agent to pick this over google_search, amazon_search, ebay_search, or walmart_search for a product query, nor whether it is for price comparison versus product detail. The only conditional content is about failure handling, not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identity_findSocialProfilesidentity: Find a creator's other social profilesARead-onlyInspect
Find a creator's other social profiles. Starts from one public profile and reports the other accounts that profile can be shown to own: profiles it links to directly, profiles reached through a recognised link-in-bio page (Linktree, Komi, Pillar, Lnk.Bio, LinkMe), and same-handle accounts on the other supported platforms that link back to the source or share a website only the owner controls. Covers Instagram, TikTok, YouTube, X and Facebook. A same-handle account with no corroboration is reported under candidates, never as a profile: the handle matching is a fact handed over, not a claim. There is no search-engine discovery and no display-name matching; neither is evidence of ownership. Every result carries the evidence type it rests on. Each entry in failures carries the inner error’s code and message, so "we checked and found nothing" (upstream_not_found, empty_result) stays distinguishable from "we could not check" (upstream_blocked, not_configured); only the second kind sets partial. Not covered: any platform outside the five, and links a creator has not published. An X/Twitter source can only be resolved by same-handle probing, because X exposes no bio links at all to a logged-out caller. The 20-second budget stops the composite scheduling new inner fetches; it does not abort one already in flight, so a slow leg is reported as a timeout while its request finishes unread. Link-in-bio expansion is verified against fixtures only, because no channel sampled live from our network published a link-in-bio URL to expand. A partial: true answer is cached for the same seven days as a complete one, so pass cache_max_age=0 to refetch after a transient block rather than being served the gap for a week. Pricing is per source checked: the 10 credits buy the legs this call runs (the starting profile, each link-in-bio page expanded, and each same-handle probe), and a leg listed in unchecked is not charged for, so a partial answer costs ceil(10 x legs answered / legs attempted) and never more than 10. Any response with an empty profiles AND an empty candidates costs nothing at all, whatever unchecked says: an answer carrying no account has delivered nothing to charge for, and the unchecked disclosure ships free. When every leg was checked and none carries another account that free answer is an empty_result; when nothing beyond the starting profile could be checked it is an error, because "no other accounts" would then be a fact we did not establish. Costs 10 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Bare handle (@nasa). YouTube also accepts a UC… channel id. URLs are rejected. | |
| platform | Yes | Platform the handle belongs to. `x` is an alias for `twitter`. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only mark read-only and open-world, while the description adds substantial behavior: corroboration rules, candidate versus profile distinction, failure code taxonomy, partial semantics, timeout behavior, caching of partial results, and detailed credit pricing. This is rich transparency well 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?
The core purpose is front-loaded, but the definition is very long and mixes invocation guidance with internal fixture-verification caveats and an elaborate pricing formula. Much of it is relevant, yet the volume and some QA detail reduce conciseness.
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 still explains the meaningful return concepts: profiles, candidates, failures, partial, and unchecked, plus how errors distinguish not-found from blocked. Given the tool's complexity, this is complete enough for correct invocation and interpretation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents handle and platform well, but cache_max_age has no schema description. The description compensates by explaining that cache_max_age=0 refetches after a transient block despite seven-day partial caching, adding meaning for the undocumented optional 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: find a creator's other social profiles starting from one public profile, with supported platforms and evidence types. It is clear, but it does not explicitly name the platform-specific profile or link-in-bio sibling tools it differs from, 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?
It gives clear context: use when starting from a handle on one of five platforms and needing corroborated cross-platform accounts, and it states exclusions such as no search-engine discovery, no display-name matching, and no platforms outside the five. It does not name alternative sibling tools such as linktree_page or instagram_profile, so alternatives are not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inference_ageGenderinference: Estimate age and gender from an imageARead-onlyInspect
Estimate age and gender from an image. Apparent age and gender estimated from a public image URL. This is a model ESTIMATE, not measured platform data, and every response is labelled as such. Requires an inference provider to be configured on the deployment. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public image URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the readOnlyHint/openWorldHint annotations: it discloses that output is a model estimate rather than measured platform data, that every response is labelled accordingly, that a deployment-level provider dependency exists, and that each call costs 1 credit. These are exactly the operational facts 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-loads purpose, then input source, then the estimate disclaimer and cost. Every sentence carries signal, though the opening of the second sentence ("Apparent age and gender estimated from...") partially restates the first rather than extending 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?
Covers the estimation caveat, the labeling of responses, the provider prerequisite, and the credit cost — a lot for a two-parameter tool with no output schema. The only meaningful hole is the undocumented `cache_max_age` parameter and any indication of what fields the response contains besides the estimate label.
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 description makes the `url` requirement clear (public image URL) but says nothing about `cache_max_age`, which is undocumented in the schema as well. With 50% schema description coverage, the second parameter remains opaque in both places, so this lands at the baseline rather than above it.
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 ("Estimate age and gender from an image") and immediately narrows the scope to a public image URL. No sibling tool in the listed set performs inference on media, so an agent can unambiguously route here for that capability.
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 preconditions for use: the image must be at a public URL and an inference provider must be configured on the deployment. It does not name exclusions or alternatives (there are none obvious in the catalog), 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_audioReelsinstagram: Reels using a soundARead-onlyInspect
Reels using a sound. Reels built on one audio track, the "N reels using this audio" list. Takes the numeric audio id or a /reels/audio/ URL. Falls back to the public audio page, which lists its first grid of reels only once rendered, as links and cover images. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Reels per page, 1-50. Default 12. | |
| cursor | No | `pagination.cursor` from a previous response | |
| audio_id | Yes | Numeric audio id, or a /reels/audio/<id>/ URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, it discloses two behaviors the annotations cannot convey: a fallback to the public audio page that returns only the first grid of reels, as links and cover images, and a cost of 1 credit. This is meaningful context about the data and its limits; the remaining gap is that it does not say whether pagination with cursor works in that fallback mode.
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 short and front-loaded: it states the resource first, then the input format, then the fallback caveat, then cost. The opening two sentences overlap slightly ("Reels using a sound" / "Reels built on one audio track"), a minor redundancy, but 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?
For a read-only, open-world listing tool with no output schema, this is close to sufficient: identity of the resource, accepted identifier formats, degraded-response behavior, and credit cost are all covered. The remaining omissions are pagination behavior in fallback mode and a pointer to sibling Reels 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 75%, so the schema already documents count, cursor, and audio_id; the description largely repeats the audio_id format rather than extending it. The undocumented cache_max_age parameter is not addressed anywhere, and cursor/pagination behavior is left to 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 states a specific verb and resource: it lists the Reels built on a single audio track ("the 'N reels using this audio' list"). It is easy to distinguish from siblings such as instagram_reelsSearch or instagram_trendingReels based on the audio-scoped concept, but the text never names or contrasts 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?
Usage is only implied by the prerequisite "Takes the numeric audio id or a /reels/audio/ URL"; there is no explicit "use this when..." statement, no exclusions, and no pointer to a sibling for the cases this tool does not cover. The fallback sentence hints at a degraded mode but does not say when to prefer it over an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_commentRepliesinstagram: Replies under one commentARead-onlyInspect
Replies under one comment. The full reply thread under a single comment. Take comment_id from data.items[].id on /v1/instagram/post-comments; the post URL is still required because Instagram addresses replies through the media that carries them. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Post, reel or IGTV URL, or a bare shortcode | |
| count | No | Replies per page, 1-50. Default 24. | |
| cursor | No | `pagination.cursor` from a previous response | |
| comment_id | Yes | `data.items[].id` from /v1/instagram/post-comments | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds two genuinely useful facts – the 1-credit cost and the non-obvious dependency of comment_id on the parent media – but says nothing about pagination behavior beyond what the cursor param implies.
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 what the tool returns, then the mechanics. The first sentence is a near-verbatim restatement of the title, which is the only 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 does enough: it characterizes the result as a full reply thread, points at the cursor for pagination, and flags cost. A brief note on the response shape or rate/credit semantics would complete 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?
Coverage is 80%, so the baseline is 3. The comment_id sourcing text largely restates the schema's own parameter description, and cache_max_age remains undocumented in both places; the one real addition is the rationale for requiring url.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (the reply thread under one comment) with a retrieval verb implied, and the phrasing clearly delimits it as a thread under a single comment rather than a post's top-level comments. It does not explicitly name instagram_postComments as the sibling it differs from, leaving that differentiation indirect.
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 prerequisite routing: take comment_id from data.items[].id on /v1/instagram/post-comments, and explains why the post URL is still needed. It stops short of stating exclusions (e.g., use instagram_postComments for top-level comments), but the retrieval path is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_hashtagPostsinstagram: Posts under a hashtagARead-onlyInspect
Posts under a hashtag. Posts carrying a hashtag. tab=top is Instagram's ranking (one fixed page, no cursor); tab=recent is chronological and paginates. Falls back to the server-rendered tag page when the JSON surface declines, which returns the top grid only. Set extra_fetch=true to fill each post's publish date, like and comment counts and caption from its own page: 1 credit per item fetched, up to the page size. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| tab | No | Instagram's ranking, or chronological | top |
| cursor | No | `pagination.cursor` from a previous response. `recent` only | |
| hashtag | Yes | Hashtag (#nasa or nasa), or an /explore/tags/ URL | |
| extra_fetch | No | When true, fetches each item's own page to fill fields the list page leaves null. Costs 1 extra credit per page fetched, up to the page size. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, the description discloses credit cost (1 credit base, +1 per item fetched with extra_fetch, capped at page size), the fixed-page limitation of the top tab, and a fallback path to the server-rendered tag page that returns only the top grid. These are exactly the operational traits an agent cannot infer from annotations or 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?
The cost and behavioral facts are front-loaded after a short lead, and most sentences carry distinct information. The redundant second sentence ('Posts carrying a hashtag') is pure waste and could be dropped without loss.
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 explaining pagination availability, the degraded fallback result shape, and what extra_fetch enriches. The only real gap is `cache_max_age`, which is left entirely unexplained for a tool that otherwise documents cost and caching-adjacent behavior.
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 80%, and the description adds genuine meaning on top: it explains what `tab` actually selects (ranking vs chronological, with pagination implications) and what `extra_fetch` populates (publish date, like/comment counts, caption) plus its credit cost. It adds nothing for `cursor` or `cache_max_age`, with the latter undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening states a specific verb+resource (retrieving posts carrying a given hashtag) in plain terms, so an agent knows exactly what the tool returns. It does not name any sibling (e.g., instagram_search or tiktok_hashtagVideos) to delimit its scope, and the second sentence 'Posts carrying a hashtag' merely restates the first.
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 real guidance on picking between the two tabs: `tab=top` is a fixed ranked page with no cursor while `tab=recent` is chronological and paginates, which effectively tells the agent to use `recent` when it needs more than one page. However, it never says when to choose this tool over its siblings or when not to use it, so usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_highlightinstagram: Stories inside a highlightARead-onlyInspect
Stories inside a highlight. Every story in one highlight reel, oldest first, with its media URLs. Takes the id from /v1/instagram/user-highlights, a bare numeric id, or a /stories/highlights/ URL. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Highlight id ("highlight:17…" or the bare number), or a /stories/highlights/ URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly/openWorld; the description adds substantive behavior beyond them — result ordering (oldest first), payload contents (media URLs), and a cost signal ('Costs 1 credit'). It stops short of pagination/limit behavior for long-lived highlights or any auth/quota caveats.
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 a distinct fact (what it returns, id provenance, cost), with the core output description front-loaded. 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 characterizes the return (stories with media URLs, chronological) and gives id provenance and cost. Only gap is result-set size/pagination behavior for large highlights, which matters for a list-returning 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 50% and the required `id` is already well documented in the schema (highlight: prefix, bare number, or URL). The description restates the same accepted formats, adding little, and says nothing about `cache_max_age`, which is undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: 'Every story in one highlight reel, oldest first, with its media URLs.' An agent can immediately distinguish this from instagram_userHighlights (which lists highlights) 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: the `id` comes from /v1/instagram/user-highlights, establishing the required call chain before this tool. No when-not guidance or mention of alternative ways to reach story content, but the prerequisite context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_popularSearchinstagram: Top posts for a keywordARead-onlyInspect
Top posts for a keyword. Top posts for a keyword from Instagram's public Popular page for it, the page at instagram.com/popular//: reels, images and carousels together, in Instagram's order. One page; hasMore says whether Instagram holds more than it shows. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Keyword to search for | |
| cursor | No | `pagination.cursor` from a previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only assert readOnly and openWorld. The description adds real behavior beyond that: results are in Instagram's own order, only one page is returned, hasMore signals whether more exists, and each call costs 1 credit. That is meaningful 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?
Front-loaded with the core purpose and kept to two sentences. The opening phrase 'Top posts for a keyword' is immediately restated ('Top posts for a keyword from...'), a minor redundancy, but nothing else 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?
There is no output schema, so the description carries the return-shape burden and does so partly: it names content types, states ordering, and explains hasMore. It omits the return format beyond hasMore and says nothing about cache_max_age, but overall 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 coverage is 67%; query and cursor are documented in the schema, while cache_max_age is undocumented in both. The description implies cursor-based paging via 'one page' and 'hasMore' but adds no query formatting or cache semantics. Baseline 3 fits.
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 ('Top posts for a keyword') and pins it to a named surface, Instagram's Popular page at instagram.com/popular/<keyword>/. It also enumerates content types (reels, images, carousels), which distinguishes it from siblings like instagram_search and instagram_hashtagPosts.
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 'Popular page' and 'one page', but never explicitly says when to pick this over instagram_search, instagram_hashtagPosts, or instagram_reelsSearch. An agent must infer the distinction from the page URL alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_postinstagram: Post or reel detailsARead-onlyInspect
Post or reel details. One public post, reel or carousel with its caption, media URLs and engagement counts. Falls back to Instagram's public embed payload when the web client's persisted query is unavailable, so a Meta client release degrades this rather than breaking it. Play counts arrive in this same request, so there is no second fetch to skip and no play-count parameter to pass. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Post, reel or IGTV URL, or a bare shortcode | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, yet the description adds real value: it discloses that the tool falls back to the public embed payload when the web client's persisted query is unavailable, that play counts are included in the same request, and that it costs 1 credit. These are meaningful behavioral details beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose 'Post or reel details' is front-loaded, followed by return fields, then behavioral notes. Four sentences are dense but each contributes (scope, fallback behavior, play-count note, cost), 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 listing the return payload fields (caption, media URLs, engagement counts) and explaining the fallback and credit cost. The only gap is the unexplained cache_max_age parameter, which is minor for a read-only single-post 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 50%: url is documented in the schema and reinforced implicitly ('one public post, reel or carousel'), while cache_max_age is undocumented in both schema and description. The description adds marginal value (e.g., 'no play-count parameter to pass') but does not compensate for the uncovered cache_max_age 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 names a specific verb+resource ('Post or reel details') and enumerates the returned fields (caption, media URLs, engagement counts), so an agent knows exactly what it fetches. It doesn't explicitly distinguish itself from siblings like instagram_userPosts or instagram_reelsSearch, but the single-post focus is 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?
The phrase 'One public post, reel or carousel' implies it is for single-post lookups and the URL/shortcode input is implied, but there is no explicit when-to-use or when-not-to-use guidance versus sibling tools such as instagram_userPosts or instagram_profile. Usage is inferable 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_postCommentsinstagram: Comments on a post or reelARead-onlyInspect
Comments on a post or reel. Top-level comments, newest first, about fifteen per page, each with its text, author, like count and date. Follow pagination.cursor for older comments. Set include_replies=true to also return any replies Instagram shipped inline with their parent. For the full reply thread under one comment, use /v1/instagram/comment-replies. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Post, reel or IGTV URL, or a bare shortcode | |
| count | No | Comments to ask for per page, 1-50. Default 24. Instagram serves at most about fifteen. | |
| cursor | No | `pagination.cursor` from a previous response | |
| cache_max_age | No | ||
| include_replies | No | Include replies that arrived inline with their parent comment |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the description's value-add is elsewhere: it discloses per-page sizing ('about fifteen per page'), ordering, inline-reply limitation, and a credit cost. It does not mention rate limits or error behavior, but it is well beyond what annotations cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then progressively adds return shape, pagination, reply handling, cost. Slight redundancy between the 'about fifteen per page' claim and the count parameter description, but no wasted 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?
No output schema exists, so the description usefully lists returned fields (text, author, like count, date) and the pagination cursor. A mutation profile isn't needed for a read-only tool; only cache_max_age and error/empty-result behavior 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?
With 80% schema coverage the schema carries most of the load, but the description adds real meaning: replies are only those Instagram shipped inline with their parent, and older pages require cursor following. The 'about fifteen' note clarifies the practical ceiling on count. cache_max_age is left unexplained in both places, a minor gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific resource (comments on an Instagram post or reel) and adds scope details: top-level only, newest first. It also names the sibling route for full reply threads, so an agent can separate this from instagram_commentReplies 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 says when to use the alternative: 'For the full reply thread under one comment, use /v1/instagram/comment-replies.' It also tells the agent to follow pagination.cursor for older comments and when to set include_replies, leaving little inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_profileinstagram: Profile detailsARead-onlyInspect
Profile details. Public profile for an Instagram account: followers, following, post count, bio, links and business category. Private accounts return their public shell with isPrivate: true rather than an error. That is a real answer. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Handle (@nike), or a full instagram.com profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavioral context beyond the annotations: private accounts return a public shell with `isPrivate: true` instead of erroring, so the agent knows not to retry or treat it as failure, and the 1-credit cost is disclosed upfront. No rate-limit or latency behavior is described, 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 then the private-account caveat and cost. The opening 'Profile details.' largely restates the title and is the only wasted line.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by listing the returned fields and describing the private-account edge case, which is the highest-risk ambiguity for this tool. The only material gap is guidance on the cache parameter.
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 description says nothing about parameters; the required `handle` is fully documented in the schema (username or full URL) but the second parameter, `cache_max_age`, is undocumented in both schema and description, leaving cache/TTL behavior entirely opaque at 50% 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?
Names a specific resource (an Instagram account's public profile) and enumerates the returned fields: followers, following, post count, bio, links, business category. That is far more informative than the title, though it never explicitly distinguishes itself from close siblings like instagram_profilePostCount or instagram_profileSearch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied — 'Public profile for an Instagram account' tells the agent what it fetches, but there is no statement of when to prefer this over instagram_profileSearch, instagram_userEmbed, or instagram_profilePostCount, and no prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_profilePostCountinstagram: Post count for a profileARead-onlyInspect
Post count for a profile. The total post count on a public Instagram profile, exact wherever Instagram publishes the exact figure. Call this when a fuller profile is not needed. source names which of the two dialects Instagram ships a count in carried it (edge_owner_to_timeline_media.count or media_count). Instagram does not expose this metadata for every profile: when neither is present, postCount is null and the request is not charged. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Handle (@nike), or a full instagram.com profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the readOnly/openWorld annotations: the null-return case when metadata is absent, that such requests are not charged, the 1-credit cost, and the two source dialects carrying the count. These are exactly the behavioral details an agent needs before spending credits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose and usage guidance, then adds cost and failure-mode details. The parenthetical dialect names (edge_owner_to_timeline_media.count / media_count) are somewhat technical clutter but do explain the `source` field, which has no output schema to document 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 helpfully explains the null case, the credit cost, and what `source` conveys. The main omission is any guidance on cache_max_age, leaving an agent unsure how to use that second parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents 'handle' (accepts @handle or full URL) but leaves 'cache_max_age' unexplained at 50% coverage, and the description adds nothing about it. Baseline 3 is appropriate since half the parameters are covered by schema and the description does not compensate for the gap.
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 ('post count for a profile') and immediately scopes it against the fuller-profile sibling by saying 'Call this when a fuller profile is not needed.' An agent can distinguish it from instagram_profile 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?
Gives an explicit selection condition ('when a fuller profile is not needed'), implying instagram_profile is the alternative for richer data. It stops short of naming that sibling directly or stating when this tool is the wrong choice, keeping it just below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_profileSearchinstagram: Search accountsARead-onlyInspect
Search accounts. Accounts matching a query, as unified Creators. The follower counts on a search result are Instagram's own summary and are thinner than /v1/instagram/profile. Fetch that for one account you care about. One page only; this surface has no cursor. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Handle or name to search for | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations, it discloses two operationally important traits: results are single-page with no cursor, and each call costs 1 credit. It also warns that follower counts are a thinner summary than the full profile. No auth or rate-limit detail, but the added context is meaningful.
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, followed by the useful caveats. Each sentence carries information, though the fragment 'Accounts matching a query, as unified Creators' reads awkwardly.
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 should carry return-value burden; it only hints that results contain thin follower counts and are paginated to one page. It does not say the result is a list of accounts or what fields each carries, leaving the response shape underspecified.
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 50%: 'query' is documented in the schema, but 'cache_max_age' is undocumented in both schema and description, and the description never mentions caching behavior. The description's 'Accounts matching a query' adds no syntax or format detail beyond the schema, so the coverage gap is not compensated.
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 accounts') and adds that results are returned as 'unified Creators', which tells the agent the shape of the result. It does not distinguish this from the sibling instagram_search, so an agent cannot tell which of the two search surfaces to pick from the text 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?
Explicitly routes the agent to instagram_profile ('Fetch that for one account you care about') when detailed follower counts are needed, and states the one-page/no-cursor limitation. Missing is any guidance on when to prefer instagram_search vs this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_reelsSearchinstagram: Search reels by keywordARead-onlyInspect
Search reels by keyword. Reels matching a keyword, from Instagram's own keyword search rather than its hashtag index. The two return genuinely different sets, so this never quietly substitutes one for the other. Results are whatever Instagram ranked for the query at that moment. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Keyword to search for | |
| cursor | No | `pagination.cursor` from a previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds non-obvious behavior: results are a live ranked snapshot at query time (volatility), no silent substitution of hashtag results, and a cost of 1 credit. These are genuine beyond-schema disclosures; only the absence of pagination 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?
The core purpose is front-loaded in the first sentence and each subsequent sentence carries distinct information (index distinction, volatility, cost). Slightly wordy in the 'genuinely different sets' sentence but nothing 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?
No output schema exists, so the description should ideally convey the shape of results and pagination. It covers ranking volatility and that cursor exists, but never explains what a result contains or how to paginate via cursor, and cache_max_age is unexplained. Adequate but with visible gaps for a 3-param 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 67%: query and cursor are documented in the schema, cache_max_age is not. The description adds no parameter-level detail beyond what the schema provides, so with partial coverage 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?
States a specific verb+resource ('Search reels by keyword') and distinguishes itself from the hashtag index path. However, it doesn't name sibling tools like instagram_search or instagram_trendingReels, so an agent must infer the boundary against those. Clear purpose but incomplete sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies when to use it via 'Instagram's own keyword search rather than its hashtag index' and 'never quietly substitutes one for the other', giving a real semantic boundary. But it never explicitly says when to pick this over instagram_search, instagram_popularSearch, or instagram_trendingReels. Usage is inferable, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_searchinstagram: Search accounts, hashtags and placesARead-onlyInspect
Search accounts, hashtags and places. Instagram's blended search, the one behind the search box. Returns three buckets: users as unified Creators, plus hashtags and places, which have no unified equivalent and keep Instagram's own shape. One page only; this surface has no cursor. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Restrict to one kind of result | all |
| query | Yes | What to search for | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint/openWorldHint annotations: it discloses the three-bucket result shape, that `users` is normalized to unified Creators while `hashtags`/`places` keep Instagram's native shape, that there is exactly one page with no cursor, and that a call costs 1 credit. Those are exactly the operational facts an agent needs 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?
Four short sentences, front-loaded with the purpose, then results shape, then pagination limit, then cost. Every sentence carries information, though the backticked field names make it slightly denser than necessary for a three-parameter 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 does the right job of describing the return buckets and their normalization. The no-cursor/one-page limit and credit cost are covered; only `cache_max_age` is left unexplained, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, so the enum on `type` and the `query` description already do much of the work. The description adds interpretive value by explaining the shape of each bucket, but never ties the `type` filter to those buckets, and `cache_max_age` is undocumented in both schema and description.
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 accounts, hashtags and places") and frames it as Instagram's blended search box, which implicitly separates it from single-surface siblings like instagram_profileSearch or instagram_hashtagPosts. It never names those alternatives, so the differentiation is left partly to inference.
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 blended-search framing and the note that results come back in three buckets, but there is no explicit statement of when to use this versus the narrower sibling search tools (profile search, hashtag posts, reels search). 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.
instagram_transcriptinstagram: Reel or video transcriptARead-onlyInspect
Reel or video transcript. The caption track Instagram published for a reel or video, as one text block plus timed cues. We return Instagram's own track and never transcribe the audio ourselves, so a transcript here is always what the platform said rather than what a model guessed. Read this before relying on it: checked against 12 real reel payloads, none carried a caption track in any form: no inline transcript, and DASH manifests with video and audio tracks only. On current evidence Instagram publishes none, so this returns empty_result (free, never charged) rather than a transcript. It is shipped as experimental so the shape is stable if that changes. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Reel, post or IGTV URL, or a bare shortcode | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, openWorldHint) only tell the agent this is a safe open read; the description adds substantial behavioral context beyond that: it returns the platform's track rather than modeling audio, returns empty_result (free, never charged) on no data, is shipped as experimental with a stable shape, and costs 1 credit. This is exactly the kind of disclosure annotations cannot 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?
Front-loads the key warning and every sentence contributes (cost, empty behavior, experimental status). It is slightly verbose in the model-vs-platform framing, but 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?
No output schema exists, yet the description explains the return shape (one text block plus timed cues), the empty case, and the credit cost. For a read-only tool with no output schema, nothing an agent needs 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?
At 50% schema coverage, url is documented in the schema ('Reel, post or IGTV URL, or a bare shortcode') but cache_max_age is undocumented in both schema and description. The description adds no parameter-level syntax or format meaning, so it neither compensates for the gap nor degrades below 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+resource (caption track published by Instagram for a reel/video) and clearly demarcates it from model-based transcription ('never transcribe the audio ourselves'). An agent knows exactly what this returns and that it is Instagram-specific, distinguishing it from the many *_transcript siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Read this before relying on it' passage is unusually strong when-to-use guidance: it warns that 12 real payloads carried no caption track, so the tool returns empty_result. It stops short of naming an alternative transcript tool to use instead, but the practical usage context is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_trendingReelsinstagram: Reels trending on ExploreARead-onlyInspect
Reels trending on Explore. Reels off Instagram's public Explore grid. Worth knowing what this is and is not: Explore is region-shaped, so what comes back depends on where the request exits, and it is Instagram's editorial surface rather than a global chart. There is no public trending feed on Instagram; this is the closest one that exists. Set extra_fetch=true to fill each reel's publish date, caption and duration from its own page: 1 credit per item fetched, up to the page size. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Reels per page, 1-50. Default 24. | |
| cursor | No | `pagination.cursor` from a previous response | |
| extra_fetch | No | When true, fetches each item's own page to fill fields the list page leaves null. Costs 1 extra credit per page fetched, up to the page size. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, openWorldHint), so the description focuses on what they cannot convey: results are region-dependent based on request origin, it is editorial rather than a true chart, and extra_fetch costs 1 credit per item up to page size with a 1-credit base cost. That cost and geography disclosure is genuinely useful behavior not derivable 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 the core statement, followed by interpretation caveats and then the cost-bearing parameter. Slightly wordy framing ('Worth knowing what this is and is not') but every sentence carries substantive 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 listing tool with no output schema, the description supplies the crucial interpretive context (region-shaped results, editorial provenance, credit cost) an agent needs to set expectations. It does not describe the response shape or pagination mechanics, but the cursor parameter covers paging.
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 75%, so count/cursor/extra_fetch are already documented. The description still adds value by restating the credit cost model for extra_fetch and listing exactly which fields it fills (publish date, caption, duration), which the schema only summarizes as 'fields the list page leaves null'. cache_max_age remains undocumented in both places.
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: reels trending on Instagram's public Explore grid. The caveat that this is Instagram's editorial Explore surface rather than a global chart meaningfully distinguishes it from a generic trending tool, though it never names siblings like instagram_reelsSearch or instagram_userReels.
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 (discover trending reels) but there is no explicit 'use this instead of X when Y' guidance. The note that no public trending feed exists hints at why one would pick this tool, but alternatives such as instagram_reelsSearch are not addressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_userEmbedinstagram: Profile via the public embed cardARead-onlyInspect
Profile via the public embed card. A profile read off Instagram's public embed card, with the embed HTML in raw.html for anyone who wants to render it. Instagram publishes embeds so third parties can display them, which makes this the profile path it has the least reason to gate. The same reasoning puts the post embed on /v1/instagram/post's fallback. It carries fewer fields than /v1/instagram/profile; reach for it when that one is blocked, or when you want the markup. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Handle (@nike), or a full instagram.com profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations give readOnlyHint and openWorldHint, and the description adds genuine beyond-schema context: fewer fields than the full profile, the raw.html payload, the gating rationale, and the credit cost. It stops short of detailing rate limits or the exact field set, 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?
The purpose is front-loaded, but the tangent about Instagram's gating rationale and the sibling post embed on /v1/instagram/post is discursive and doesn't help the agent invoke the tool. Tighter phrasing would earn more.
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 describes the return (fields plus raw.html markup), the cost, and when to use it. The only notable gap is the undocumented cache_max_age parameter.
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 only 50%: handle is documented in the schema but cache_max_age has no description anywhere. The description adds no parameter-level detail to compensate, so the cache_max_age gap is unaddressed.
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 and resource: reads an Instagram profile via the public embed card and returns the embed HTML in raw.html. It clearly distinguishes itself from instagram_profile by noting it carries fewer fields and produces markup.
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?
Explicit when-to-use: reach for it when instagram_profile is blocked, or when you want the rendered markup. It also states the 1-credit cost, giving the agent a decision basis.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_userHighlightsinstagram: Story highlight coversARead-onlyInspect
Story highlight covers. The highlight reels pinned to a profile: title, cover, and how many stories each holds. Pass an id from here to /v1/instagram/highlight for the stories inside one. Highlights are the only Instagram stories that stay public indefinitely: live stories expire in 24 hours and are not served logged-out. Costs 1 credit. Pass either handle or user_id.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | No | Handle (@nike), or a full instagram.com profile URL. Optional if `user_id` is given. | |
| user_id | No | Numeric user id. Skips a lookup. Take it from `data.items[].authorId`. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered; the description adds cost information (1 credit), a data-availability trait (live stories expire in 24h and are not served logged-out), and where the id comes from. That is real behavioral context beyond the annotations, though it does not cover pagination or error/auth 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 short sentences, front-loaded with the resource, then the return shape, then the follow-up route, then the cost and input constraints. No filler and nothing repeated from structured fields 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?
There is no output schema, and the description compensates by stating what the response contains (title, cover, story count) and how to chain into instagram_highlight. The only incompleteness is the silent cache_max_age parameter and no mention of result limits or caching behavior.
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 67%; handle and user_id are already well documented in the schema, and the description's main addition is the either/or constraint (which is not stated in the schema where both are optional). The third parameter, cache_max_age, is undocumented in both the schema and the description, leaving a gap.
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 the specific resource (story highlight covers pinned to a profile) and enumerates the returned fields: title, cover, and story count. It also implicitly distinguishes itself from instagram_highlight, which returns the stories inside a single highlight, so an agent can separate 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?
Gives clear positive routing ('pass an id from here to /v1/instagram/highlight for the stories inside one') and the input constraint ('pass either handle or user_id'). It also explains why one would want highlights at all (they stay public indefinitely). It lacks an explicit when-not-to-use statement, e.g. versus instagram_profile or instagram_userReels.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_userPostsinstagram: Posts and reels from a profileARead-onlyInspect
Posts and reels from a profile. A profile grid, newest first, twelve posts per page, each with its caption, type and owner. Follow pagination.cursor for older posts. On the first page, reels also carry like, comment and play counts; other posts, and every post on later pages, have them null, because the grid does not carry them. No page carries a publish date. Fetch /v1/instagram/post for a specific post to get its counts and date, or set extra_fetch=true to fill each post's publish date, like and comment counts and caption from its own page in one call: 1 credit per item fetched, up to the page size. authorHandle is read per post: a collab or tagged post appears in a profile grid owned by the OTHER account, and this reports the real owner rather than the handle you asked for. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Posts per page, 1-12. Default 12. | |
| cursor | No | `pagination.cursor` from a previous response | |
| handle | Yes | Handle (@nike), or a full instagram.com profile URL | |
| extra_fetch | No | When true, fetches each item's own page to fill fields the list page leaves null. Costs 1 extra credit per page fetched, up to the page size. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description richly discloses behavior beyond the readOnlyHint and openWorldHint annotations: pagination via pagination.cursor, null counts on later pages, absence of publish date, the cost of extra_fetch (1 credit per item), and the per-post authorHandle behavior for collab/tagged posts. It also notes the tool costs 1 credit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and scope, and every sentence adds useful detail about return values, pagination, limitations, and costs. It is somewhat dense and could be structured with bullet points for readability, but it avoids 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 no output schema, the description fully explains what is returned (caption, type, owner), what is missing (publish date, counts on later pages), how to get missing data (extra_fetch or /v1/instagram/post), and the credit 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 80%, so the schema already documents most parameters including extra_fetch's credit cost and cursor usage. The description largely repeats these points and adds no new meaning for count or cache_max_age, though it does explain the pagination flow and extra_fetch outcome slightly beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: 'Posts and reels from a profile', and details the return shape ('profile grid, newest first, twelve posts per page, each with its caption, type and owner'). It distinguishes itself from instagram_userReels by including both posts and reels, and routes single-post needs to /v1/instagram/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?
It gives clear context for using extra_fetch or the /v1/instagram/post endpoint when counts or dates are needed, and implicitly defines its role as the profile grid source. However, it does not explicitly compare to sibling tools like instagram_userReels or instagram_userTaggedPosts 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.
instagram_userReelsinstagram: Reels from a profileARead-onlyInspect
Reels from a profile. A profile's reels, newest first, twelve per page, each with like, comment and play counts. Follow pagination.cursor for older reels. The first page also carries captions; later pages do not, so text is null there, and a collab reel owned by another account has authorHandle null. No page carries a publish date; fetch /v1/instagram/post for one reel's date, or set extra_fetch=true to fill each reel's publish date, caption and duration from its own page in one call: 1 credit per item fetched, up to the page size. If the reels tab is unavailable, the first page falls back to the clips in the profile grid, with captions but no counts and no cursor. An account with no public reels is an empty result, and is not charged. raw.source says which path answered. Costs 1 credit. Pass either handle or user_id.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Reels per page, 1-12. Default 12. | |
| cursor | No | `pagination.cursor` from a previous response | |
| handle | No | Handle (@nike), or a full instagram.com profile URL. Optional if `user_id` is given. | |
| user_id | No | Numeric user id. Skips a lookup. Take it from `data.items[].authorId`. | |
| extra_fetch | No | When true, fetches each item's own page to fill fields the list page leaves null. Costs 1 extra credit per page fetched, up to the page size. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint, and the description adds substantial behavior beyond that: page size and ordering, captions only on page one, null authorHandle on collab reels, absent publish dates, the extra_fetch credit cost (1 credit per item, capped at page size), the grid fallback when the reels tab is unavailable, and that empty results aren't charged. raw.source is disclosed as the discriminator of which path answered.
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 pagination before edge cases; each sentence carries distinct information (ordering, pagination, null fields, extra_fetch, fallback, pricing). Slightly dense and runs long, but there is little 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?
No output schema exists, yet the description explains return shape (counts per reel, null text on later pages, null authorHandle for collabs, no publish date, raw.source), the fallback path, and cost model. An agent has enough to call it correctly 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 coverage is high (83%), so baseline is 3, but the description adds real meaning: handle/user_id are alternatives ('Pass either'), cursor drives pagination, and extra_fetch carries a per-item credit cost with a page-size cap. cache_max_age remains undocumented in both, a minor gap.
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 ('Reels from a profile'), and immediately scopes it ('a profile's reels, newest first, twelve per page, each with like, comment and play counts'), which distinguishes it from siblings like instagram_reelsSearch, instagram_trendingReels and instagram_userPosts 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 usage context: pass either handle or user_id, follow pagination.cursor for older reels, and set extra_fetch=true when publish dates are needed. It stops short of naming which sibling to use instead for hashtag/audio/trending reels, so exclusions are only implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_userTaggedPostsinstagram: Posts a profile is tagged inARead-onlyInspect
Posts a profile is tagged in. Public posts by other accounts that tagged this user (the "Tagged" tab). Note this is other people's content: authorHandle is the poster, not the tagged account. Users can hide the tab, which returns empty_result. Costs 1 credit. Pass either handle or user_id.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Posts per page, 1-50. Default 12. | |
| cursor | No | `pagination.cursor` from a previous response | |
| handle | No | Handle (@nike), or a full instagram.com profile URL. Optional if `user_id` is given. | |
| user_id | No | Numeric user id. Skips a lookup. Take it from `data.items[].authorId`. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, it discloses that the call costs 1 credit, that a hidden tab returns empty_result, and importantly that authorHandle refers to the poster, not the tagged account. This is meaningful behavioral context, though it doesn't cover 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?
The description is three tight sentences with the core purpose front-loaded, followed by the authorHandle caveat and the hidden-tab behavior. 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, paginated list endpoint with no output schema, the description covers purpose, cost, edge-case behavior, and identifier options. A note on return shape or pagination expectations would make it fully complete, but it is strong for the complexity level.
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 80%, so handle, user_id, count, and cursor are already well-documented. The description reinforces the handle/user_id choice but adds no syntax or format details 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?
The description states a specific verb and resource: retrieves public posts by other accounts that tagged a given profile, explicitly identifying the 'Tagged' tab. This clearly distinguishes it from siblings like instagram_userPosts or instagram_userReels.
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 clarifies that users can hide the tab (returning empty_result) and that the caller should pass either handle or user_id. It doesn't explicitly name an alternative tool or exclusion, but the 'Tagged' tab framing gives clear context for when to use it vs a standard user posts endpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kick_clipkick: ClipBRead-onlyInspect
Clip. A public Kick clip: title, creator, channel, duration, view count, and media URL. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Clip URL (https://kick.com/<channel>/clips/clip_XXXX or https://kick.com/<channel>?clip=clip_XXXX) or a clip id | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds two useful facts beyond that: the clip is public and the call costs 1 credit. It says nothing about failure behavior for private/deleted clips or the cache_max_age effect on freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the resource and then the payload. The leading 'Clip.' fragment merely restates the title and is the only wasted token in an otherwise tight definition.
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, listing the returned fields is genuinely valuable and largely fills that gap. However, the undocumented cache_max_age parameter and the absence of any when-to-use framing leave the definition short of complete for a two-parameter fetch tool in a crowded platform-sibling set.
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 description mentions no parameters at all. The url parameter is well documented in the schema including accepted formats, but cache_max_age has no description anywhere (50% coverage), and the description does not compensate by explaining what that cache window controls.
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 resource (a public Kick clip) and enumerates what the record contains (title, creator, channel, duration, view count, media URL), so an agent knows this is a single-clip lookup. It never contrasts with the obvious sibling twitch_clip or the various *_search tools, so platform routing is left to 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?
There is no statement of when to use this versus twitch_clip or a platform search tool, and no prerequisites or exclusions. The only decision-relevant hint is the cost line, which tells the agent to weigh a credit against the call but not when the call is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
komi_pagekomi: Komi pageBRead-onlyInspect
Komi page. Public Komi page as a creator profile: display name, bio, avatar, and every outbound link in order. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL (https://komi.io/<username>) or just the username | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description is not carrying the safety burden. What it does add is genuinely non-structured information: a cost of 1 credit and the exact shape of the returned profile (display name, bio, avatar, all outbound links in order), which matters since there is no output schema. It still omits failure behavior, e.g. what happens with a private/missing page or when credits run out.
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 no filler, and the substantive content (what the page returns) is front-loaded ahead of the credit note. The opening 'Komi page.' is a wasted clause that duplicates the title and could be dropped.
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, no-output-schema fetch, the description covers the return contents and cost well and the annotations cover the read-only nature. The gaps are the undocumented cache_max_age parameter and any statement about error or credit-exhaustion outcomes.
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 only 50%, so the description needs to compensate and does not. It says nothing about either parameter: the url format is already documented in the schema, and cache_max_age is completely undocumented in both places, leaving its unit, format, and default unknown.
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 second sentence is specific: it names the resource (a public Komi creator profile) and enumerates the payload (display name, bio, avatar, outbound links in order). The leading 'Komi page.' merely restates the tool name and title, and it never distinguishes this from the many sibling link-in-bio tools (linktree_page, linkbio_page, taplink_page, solo_page, pillar_page, linkme_page, milkshake_page).
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: the schema's url example (https://komi.io/<username>) makes the trigger obvious, but the description gives no explicit 'use this when...' rule and names no alternative. An agent must infer from the platform name that this is the right sibling among the seven link-in-bio tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kwai_postkwai: PostBRead-onlyInspect
Post. A single public Kwai video with its view, like, comment and forward counts. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Post URL (https://www.kwai.com/@<handle>/video/<photo_id> or /photo/<photo_id>) | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful behavior: the 1-credit cost and the fact that only public videos are supported. It omits what happens for private/deleted posts or rate limits, so it adds value but is not rich.
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 with no wasted clauses, though the opening 'Post.' merely repeats the tool name and could be dropped or merged into the following 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 does the right thing by naming the returned metrics. For a simple read-only single-item fetch, the only real gap is the undocumented cache_max_age parameter and edge-case behavior for inaccessible posts.
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 only 50%: the url parameter is documented in the schema, but cache_max_age is undocumented in both schema and description. The description gives no syntax or format hints beyond what the schema already provides, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource ('A single public Kwai video') and enumerates what it returns (view, like, comment, forward counts), which distinguishes it from kwai_profile and kwai_userPosts. The leading 'Post.' is redundant with the title, but the rest is 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?
It implies usage via 'single public' (suggesting private videos are out of scope) but never names an alternative sibling or states when to prefer it over kwai_userPosts or kwai_profile. The credit cost is mentioned, but no when-to-use or when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kwai_profilekwai: ProfileBRead-onlyInspect
Profile. Public Kwai profile: follower and following counts, public video count, likes received, bio, avatar, and creator category. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Handle (@carlinhos) or a kwai.com profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds meaningful context beyond that: the credit cost ('Costs 1 credit') and a concrete inventory of returned fields, which is valuable given 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?
Two efficient sentences with the resource stated first and field details following; the redundant 'Profile.' opener is minor waste but the rest 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?
Without an output schema, listing returned fields is a strong completeness win, and the credit cost is disclosed. However, the undocumented cache_max_age parameter and absence of any handle-format or usage context leave gaps for a tool with two parameters.
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 only 50% — 'cache_max_age' is undocumented in both schema and description — and the description says nothing about the parameters at all. With a coverage gap, the description needed to compensate for the undocumented parameter but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (public Kwai profile) and enumerates exactly the fields returned (followers, following, video count, likes, bio, avatar, category). This distinguishes it clearly from siblings like kwai_post or kwai_userPosts, though the leading lone word 'Profile' is redundant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus kwai_userPosts, kwai_post, or profile-style siblings on other platforms, nor any prerequisites or exclusions. The agent must infer usage from the field list alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kwai_userPostskwai: User postsARead-onlyInspect
User posts. Public videos from a Kwai profile, newest first after any pinned ones, with view, like, comment and forward counts. Pass pagination.cursor back as cursor for the next page. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | `pagination.cursor` from a previous response | |
| handle | Yes | Handle (@carlinhos) or a kwai.com profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and open-world. The description adds useful behavior beyond that: ordering (pinned first, then newest), included counts, cursor-based pagination, and a 1-credit cost, though it does not cover caching or rate 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?
The description is short and front-loaded with the useful details. The opening 'User posts.' largely repeats the tool name and title, so not every sentence adds new information, but overall it is efficient.
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 no output schema, the description covers the core behavior, ordering, pagination, and cost. The main omissions are the cache_max_age parameter and any mention of authentication or rate constraints.
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 67%. The description explains cursor usage, but the schema already states the same cursor semantics. The handle format is covered by the schema, while cache_max_age remains undocumented in both schema and description.
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 specifies the resource and scope: public videos from a Kwai profile, ordered newest first after pinned items. It does not explicitly distinguish itself from nearby siblings like kwai_post or kwai_profile, but the full sentence gives an agent enough to understand the 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 description implies the tool is for listing a profile's public videos and gives pagination and cost info, but it never states when to use this versus kwai_post or kwai_profile. There are no exclusions or alternatives named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkbio_pagelinkbio: Lnk.Bio pageARead-onlyInspect
Lnk.Bio page. Public Lnk.Bio page as a creator profile: display name, bio, avatar, and every outbound link in order. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL (https://lnk.bio/<username>) or just the username | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely new behavioral context: the page must be public and each call 'Costs 1 credit', which materially affects invocation decisions. It stops short of covering failure modes for private/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 compact sentences with the payoff (what you get back) front-loaded alongside the credit cost. The leading 'Lnk.Bio page.' fragment is mildly redundant with the title but does not waste much 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 carries the burden of describing the return value and does so explicitly (display name, bio, avatar, ordered links), plus cost and the public-only constraint. For a 2-parameter read tool this is sufficient 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?
The url parameter is well documented in the schema (full URL or username), but the description adds nothing about input format. cache_max_age is undocumented in both schema and description, so half the parameters remain opaque; the description does not compensate for that 50% coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource (a public Lnk.Bio creator page) and enumerates the returned content: display name, bio, avatar, and ordered outbound links. It is clear what the tool fetches, but it never distinguishes itself from the many sibling link-in-bio retrievers (linktree_page, linkme_page, komi_page, taplink_page, solo_page, pillar_page).
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 pick this over linktree_page or the other link-in-bio siblings, and no prerequisites or exclusions are stated. The only implicit cue is 'Public Lnk.Bio page', leaving routing entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_adlinkedin: Ad detailsARead-onlyInspect
Ad details. One ad from LinkedIn's public Ad Library: creative, copy, advertiser, and the paying entity. Ads covered by EU disclosure rules also carry run dates, target countries and impression bands; ads outside those rules do not, and those fields come back null rather than guessed. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Ad Library URL (linkedin.com/ad-library/detail/...) or the numeric ad id | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the readOnly/openWorld annotations by explaining the EU-disclosure coverage rule and that non-covered fields return null rather than being inferred — valuable, non-obvious data-quality context. It also discloses the 1-credit cost, which annotations do not carry. Missing: any note on caching behavior 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 purpose and followed by the coverage caveat and cost. The opening 'Ad details.' largely restates the title, but it costs almost nothing and the rest is dense and waste-free.
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 two params, the description covers the important unknowns: what fields come back, when they will be null, and the credit cost. The main omission is routing guidance against linkedin_adsSearch.
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 50% — the url parameter is documented in the schema while cache_max_age is undocumented in both places. The description adds nothing about either parameter (no URL format hint, no cache semantics), so it neither compensates for the gap nor improves on what the schema already says.
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: 'One ad from LinkedIn's public Ad Library' with the fields returned (creative, copy, advertiser, paying entity). The word 'One' implicitly contrasts with the linkedin_adsSearch sibling, but the sibling is never named, so differentiation depends on inference.
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-ad framing implies this is a detail lookup rather than a discovery call, but the description never says when to use it versus linkedin_adsSearch, or that you need an ad URL/id from a prior search. Usage is implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_adsSearchlinkedin: Search adsARead-onlyInspect
Search ads. Search LinkedIn's public Ad Library by advertiser or keyword. Pass company (a company page slug or numeric id) to list one advertiser's ads, keyword to search copy, or both. Returns the first page LinkedIn server-renders, about 25 ads; the total number of matches is in raw.totalMatches. Costs 1 credit. Pass company, keyword, or both. The Ad Library will not return an unfiltered archive.
| Name | Required | Description | Default |
|---|---|---|---|
| company | No | Company page slug ("microsoft") or numeric company id ("1035") | |
| keyword | No | Words to match in the ad copy | |
| end_date | No | Latest run date, YYYY-MM-DD | |
| countries | No | Comma-separated ISO-3166 country codes the ad reached, e.g. "US,GB" | |
| start_date | No | Earliest run date, YYYY-MM-DD | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations already covering readOnly/openWorld safety, the description adds real operational context: results are limited to the first server-rendered page (~25 ads), total matches live in `raw.totalMatches`, a filter is mandatory, and each call costs 1 credit. Cost and pagination limits are exactly the traits an agent needs 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?
Front-loaded with purpose and scope, then cost and return-shape notes; every sentence carries information. The 'Pass `company`, `keyword`, or both' instruction appears twice, a minor redundancy that keeps it from a 5.
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 describing the return shape (~25 ads, total in `raw.totalMatches`). For a 6-parameter search tool the date/country filters are left unexplained in prose, but the essential call-correctly 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 coverage is 83%, so the schema already documents most parameters. The description clarifies that `company` accepts a page slug or numeric id and that `keyword` matches ad copy, but leaves `start_date`, `end_date`, `countries`, and `cache_max_age` entirely to the schema, adding only marginal meaning beyond it.
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 (LinkedIn's public Ad Library) plus its two filtering axes, advertiser and keyword. An agent can immediately distinguish it from the sibling single-ad tool linkedin_ad and from other networks' ad-library searches.
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 usage constraint: 'Pass `company`, `keyword`, or both. The Ad Library will not return an unfiltered archive,' which tells the agent not to call it with no filters. It does not explicitly name a sibling alternative (e.g., linkedin_ad for a single known ad), 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.
linkedin_companylinkedin: Company pageBRead-onlyInspect
Company page. A LinkedIn company page: description, industry, follower count, headquarters, size, type, founding year, specialties, employee count and logo. Also works for school and showcase pages. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Company URL (linkedin.com/company/...) or the company slug | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds meaningful behavioral context beyond annotations: it discloses that calls cost 1 credit, lists the returned fields, and notes applicability to school and showcase pages. It does not discuss caching despite the cache_max_age parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight sentences with return fields front-loaded and cost appended. The initial fragment 'Company page.' is slightly redundant with the title but does not waste much 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?
Because there is no output schema, the description appropriately lists the data fields returned, and it covers credit cost and page-type scope. However, it leaves the cache_max_age parameter unexplained and gives no routing guidance among the many LinkedIn sibling tools, so a few gaps remain for an agent to resolve.
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 only 50%: url is documented in the schema, but cache_max_age has no description in either the schema or the tool description. The description adds no parameter-level meaning (e.g., accepted URL forms or what cache_max_age controls), so it does not compensate for the coverage gap.
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 this retrieves a LinkedIn company page and enumerates the fields returned (description, industry, followers, etc.). It also notes it works for school and showcase pages, which helps distinguish it from linkedin_profile, but it does not explicitly contrast with nearby siblings like linkedin_companyPosts or linkedin_searchPosts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the resource name and the scope note about school/showcase pages, but there is no explicit when-to-use guidance or named alternative for company posts, people profiles, or post search. An agent must infer from sibling names that this is the right tool for page metadata.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_companyPostslinkedin: Company postsARead-onlyInspect
Company posts. Recent posts from a company page, with reaction and comment counts. Read from the company page itself: LinkedIn's dedicated /posts/ tab is behind the sign-in wall, but the same updates render on the public page. That caps the result at roughly the last ten posts. There is no logged-out pagination, so hasMore is always false. Posts by members that the company features carry that member as the author. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Company URL (linkedin.com/company/...) or the company slug | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only and open-world profile, yet the description adds real operational context: the data is scraped from the public page rather than the gated /posts/ tab, the result set is capped near ten items, `hasMore` is always false, featured member posts attribute the member as author, and each call costs 1 credit. That is unusually rich disclosure for a tool whose annotations are minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, followed by source constraints, the result cap, the hasMore caveat, author attribution, and cost — every sentence carries a distinct, actionable fact 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 does the work of explaining what comes back (posts with reaction and comment counts, author attribution, hasMore flag) and what it costs. The only meaningful gap is the silent `cache_max_age` parameter, which an agent must guess at.
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 only 50%: `url` is documented in the schema, but `cache_max_age` is undocumented in both places, and the description never addresses it. The description reinforces that the URL points at a company page, but it does not compensate for the undocumented caching parameter, leaving half the input surface unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete verb and resource: 'Recent posts from a company page, with reaction and comment counts.' That is enough to separate it from linkedin_post (single post) and linkedin_company (page metadata). It never explicitly names those siblings, so the differentiation is inferable rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied by the scope notes ('caps the result at roughly the last ten posts', 'no logged-out pagination'), which tell an agent when this tool is a dead end for deep history. However, there is no explicit routing to alternatives such as linkedin_searchPosts or linkedin_post, and no stated prerequisites for the URL.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_postlinkedin: Post detailsBRead-onlyInspect
Post details. One LinkedIn post: full text, media, author, publication time, reactions and comment count. Top-level comments LinkedIn publishes on the page ride along in raw.comments. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Post URL (linkedin.com/posts/... or /feed/update/urn:li:activity:...) or the numeric id | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint and openWorldHint already declared, the description adds useful behavioral context: it lists returned content, notes that top-level comments appear in `raw.comments`, and states the cost of 1 credit. It does not cover cache behavior or rate limits, but the extra return-shape and cost details are substantive 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?
The description is front-loaded with the purpose, then efficiently lists return fields, special comment behavior, and cost. Every sentence adds information without 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?
For a simple read-only retrieval tool, the description covers the returned payload and notes where comments appear. However, it leaves the `cache_max_age` parameter unexplained and does not route the agent away from related LinkedIn transcript or search 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 only 50%, and the description does not explain the `url` format or the optional `cache_max_age` parameter. Since one of the two parameters is undocumented in both schema and description, the description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as a single LinkedIn post and enumerates the returned fields: full text, media, author, publication time, reactions, and comment count. It distinguishes this from broad post-list siblings by specifying 'One LinkedIn post,' though it does not explicitly contrast with linkedin_postTranscript or linkedin_searchPosts.
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 does not state when to use this tool versus alternatives such as linkedin_postTranscript or linkedin_searchPosts. It provides only an implied use case: retrieving details for one post, without exclusions or sibling routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_postTranscriptlinkedin: Post transcriptARead-onlyInspect
Post transcript. Captions for a LinkedIn video post, as one text block plus timed cues, read from the caption track LinkedIn publishes with the video, its automatic captions included. A post without video, or a video without a caption track, returns an empty result, which is never charged. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Post URL, a urn:li:activity / ugcPost / share urn, or the numeric activity id | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, openWorldHint), and the description adds genuinely new behavioral context: the source is the caption track LinkedIn itself publishes, automatic captions are included, and empty results are not billed. Billing/cost-per-call is the standout detail an agent could not 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, front-loaded with the purpose then the data source then the edge case and cost. The opening 'Post transcript.' is largely a restatement of the title, but the remainder 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 only two parameters and no output schema, the description carries the right load: it explains the return shape, the empty-result case, and the cost. The one gap is cache_max_age, which is unexplained in both schema and description.
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 only 50%: the url parameter is well documented in the schema (post URL, urn:li:activity / ugcPost / share urn, or numeric activity id) but cache_max_age has no description anywhere. The description adds nothing about accepted identifiers or cache behavior, leaving a third of the inputs undocumented.
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 (retrieve captions) and a precise resource (the caption track of a LinkedIn video post), then defines the output shape as 'one text block plus timed cues'. That framing lets an agent distinguish it from linkedin_post, which returns post metadata/content rather than captions.
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 negative conditions — no video, or a video without a caption track, yields an empty result — plus the cost signal (1 credit, not charged on empty). It never names a sibling alternative such as linkedin_post for non-video posts or linkedin_searchPosts to find posts, so routing is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_profilelinkedin: Person's profileBRead-onlyInspect
Person's profile. A LinkedIn member's public profile: name, headline, location, follower count, avatar, current employers and education. LinkedIn masks parts of a logged-out profile with asterisks; masked values are dropped rather than returned as ****. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Profile URL (linkedin.com/in/...) or the profile slug | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety (readOnlyHint, openWorldHint), and the description adds real behavioral detail beyond them: masked fields are dropped rather than returned as asterisks, and each call costs 1 credit. These are exactly the non-obvious traits an agent needs before invoking. The only gap is caching behavior, which is left implicit even though a cache_max_age parameter exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the key constraint (masking) and cost up front, and no filler. The lead sentence 'Person's profile.' is redundant with the title but wastes only a few 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?
With no output schema, listing the returned fields and the masking rule is the right compensation, and the cost disclosure is valuable for a metered API. The remaining hole is cache_max_age, which neither schema nor description explains.
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?
At 50% schema coverage the description should compensate for undocumented parameters, but it says nothing about inputs. The url parameter is documented in the schema, yet cache_max_age is described nowhere and its semantics (staleness window, format) remain unknown to the agent.
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 combination (fetch a LinkedIn member's public profile) and enumerates the returned fields (name, headline, location, followers, avatar, employers, education). However, the opening sentence 'Person's profile' merely restates the title, and nothing distinguishes it from siblings like linkedin_company or linkedin_searchPosts.
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 tool is named. The phrase 'logged-out profile' hints that no authentication is involved, but the agent must infer that; there is no routing instruction toward linkedin_company or linkedin_searchPosts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_searchPostslinkedin: Search postsARead-onlyInspect
Search posts. Keyword search over LinkedIn posts. LinkedIn gates content search behind sign-in for every logged-out caller (/search/results/content/ redirects to /uas/login regardless of origin IP), and we do not scrape authenticated sessions, so this endpoint reports the gate rather than pretending to be broken. It is shipped so callers get one clear, unbilled answer instead of a 404 on a documented route. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search terms | |
| cursor | No | `pagination.cursor` from a previous response | |
| date_posted | No | Restrict to recent posts | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true and openWorldHint=true already present, the description adds substantial behavioral context: the sign-in gate, the no-authenticated-session policy, and the choice to report the gate instead of a 404. It also mentions cost, though 'unbilled answer' and 'Costs 1 credit' sit in slight tension.
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 key constraint is front-loaded in the second sentence, and the rationale is compact enough for a tool with an unusual failure mode. Some phrasing, especially the unbilled/cost wording, could be 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 tool with no output schema and partial parameter documentation, the description covers the critical behavior: it will not return real posts and instead reports the gate. It could be more complete by clarifying whether any search results are ever possible or exactly what the gate response looks like.
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 75%, with query, cursor, and date_posted documented and cache_max_age undocumented. The description does not add any parameter-level meaning, so it neither compensates for the gap nor detracts from the mostly self-documenting 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 names a specific verb and resource (keyword search over LinkedIn posts) and explicitly states the unusual realization: the endpoint reports LinkedIn's sign-in gate rather than returning posts. This distinguishes it from sibling tools like linkedin_post and linkedin_companyPosts, though it does not explicitly compare itself to 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?
It explains the operational context (LinkedIn gates content search, no authenticated scraping) and why the tool exists, but gives no explicit when-to-use guidance against alternatives or a clear recommendation to avoid calling it. The intended 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.
linkme_pagelinkme: LinkMe pageARead-onlyInspect
LinkMe page. Public LinkMe page as a creator profile: display name, bio, avatar, and every outbound link in order. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL (https://link.me/<username>) or just the username | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint and openWorldHint already declared, the description adds genuine context beyond annotations: it discloses the exact payload (profile fields plus ordered outbound links) and, importantly, the cost ('Costs 1 credit'), which is the kind of rate-limit/cost signal agents need. It stops short of covering caching behavior 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?
Two tight sentences with the payload description front-loaded and the credit cost clearly flagged. The opening fragment 'LinkMe page.' duplicates the title and is slightly wasteful, but overall the text is efficient.
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 carries the burden of explaining return values, and it does so concretely. Cost is disclosed. The only material gap is the undocumented cache_max_age parameter, which is minor for a read-only fetch.
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 only 50%: 'url' is documented in the schema with a format example, but 'cache_max_age' is undocumented everywhere. The description contributes nothing about either parameter, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource (a public LinkMe creator profile) and enumerates its contents: display name, bio, avatar, and outbound links in order. That is far more than a restatement of the name. It does not, however, distinguish this from near-identical siblings such as linktree_page or linkbio_page, so it falls 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?
Usage is implied rather than stated: an agent can infer this fetches a link.me profile, and the schema's URL example reinforces that. But there is no explicit when-to-use, no exclusion, and no pointer to linktree_page/linkbio_page for other providers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linktree_pagelinktree: Linktree pageARead-onlyInspect
Linktree page. Public Linktree page as a creator profile: display name, bio, avatar, and every outbound link in order. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL (https://linktr.ee/<username>) or just the username | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly and openWorld, and the description adds genuinely new context: the page is public data, the returned shape is a creator profile, and the call costs 1 credit. It does not disclose failure behavior for invalid/nonexistent usernames or how the cache interacts with freshness, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the return contents, and the credit cost is stated plainly. The opening 'Linktree page.' merely restates the tool title and earns little, but nothing else 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 carries the return-value burden and does so precisely by listing the profile fields and link ordering. For a two-parameter read-only lookup, the only real gap is the undocumented cache parameter, which is minor.
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 only 50%: url is well documented in the schema, but cache_max_age has no description anywhere. The description never mentions either parameter, so it does not compensate for the undocumented caching parameter or clarify its units and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource and enumerates exactly what is returned: display name, bio, avatar, and every outbound link in order. The platform name (Linktree) distinguishes it from platform-specific siblings like linkbio_page, linkme_page, and taplink_page, but the description never explicitly says how it differs from those link-in-bio 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?
Usage is only implied: the agent infers it should call this when it has a Linktree URL or username and wants the profile plus links. There is no explicit when-to-use, no when-not-to-use, and no routing to the many sibling link-in-bio tools, so an agent facing an ambiguous URL must guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_watchesList watchesBRead-onlyInspect
This team's watches, including paused ones. Free.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and openWorldHint=false, so safety is covered. The description earns credit for two genuine additions: results are team-scoped and paused watches are included (so a caller shouldn't treat the list as 'active only'), plus the 'Free' note about cost. It stops short of describing the returned fields or 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?
A three-fragment, 8-word description with no filler, and the scope/inclusion facts are front-loaded. It is slightly telegraphic — 'Free' and 'This team's' both require context the agent must supply — which keeps it off a 5.
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 parameters, no output schema, and annotations covering the safety profile, the burden is modest, but the description still leaves the agent guessing what a watch record contains and whether results are paginated. For a tool used to enumerate state before calling cancel_watch, that shape information would be valuable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; no parameter information is needed or missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource and scope precisely: watches belonging to 'this team', explicitly including paused ones. The listing action is carried by the name rather than the description text, and it never mentions the create_watch/cancel_watch siblings, so differentiation is left to inference.
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 reference to the obvious alternatives (create_watch, cancel_watch), which an agent managing watch subscriptions would need to choose between. The single word 'Free' hints that calling it costs no credits, but that is an indirect utility signal rather than guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mastodon_postmastodon: PostBRead-onlyInspect
Post. A single public Mastodon post with its favourite, reply and boost counts and attached media. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Post URL on the server that hosts it, e.g. https://mastodon.social/@Gargron/117498495330835648 | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and openWorldHint annotations, the description discloses that the post is public, that the response includes engagement counts and media, and that the call costs 1 credit. It does not cover error behavior or rate limits, but it adds meaningful behavioral context for a read-only retrieval 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?
The description is short and front-loads the key facts about what a post contains and the credit cost. The opening 'Post.' largely restates the tool name and title, so it is not perfectly economical.
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 retrieval tool with read-only/open-world annotations, the description covers purpose, public visibility, returned fields, and cost. The main gap is the undocumented cache_max_age parameter and lack of return-format detail, though no output schema exists.
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 description mentions neither the required url parameter nor cache_max_age. The schema documents url with an example, but cache_max_age has no schema description, so the description fails to compensate for the 50% schema description 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 clearly identifies the resource as a single public Mastodon post and lists the data it includes: favourite, reply and boost counts plus attached media. It stops short of explicitly distinguishing this from siblings such as mastodon_postReplies or mastodon_userPosts, which keeps 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 gives no guidance on when to use this tool versus alternatives like mastodon_userPosts, mastodon_postReplies, or mastodon_profile. It also provides no exclusions or prerequisites beyond the implicit need for a post URL.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mastodon_postRepliesmastodon: Post repliesARead-onlyInspect
Post replies. Public replies to a Mastodon post, in thread order, from every server the hosting server knows of. Servers return at most about 60 replies to a signed-out reader. Replies from accounts that opted out of search engine indexing are left out. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Post URL on the server that hosts it, e.g. https://mastodon.social/@Gargron/117498495330835648 | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behavioral traits beyond annotations: a cap of ~60 replies for signed-out readers, omission of replies from accounts that opted out of indexing, cross-server aggregation, and a cost of 1 credit. These are valuable operational 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?
The description is front-loaded with the core purpose and then adds relevant constraints efficiently. Every sentence contributes useful information, though the opening 'Post replies' is slightly 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?
Given the annotations and lack of an output schema, the description covers the main behavioral aspects (limits, exclusions, cost) but leaves cache_max_age unexplained and does not describe the response format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 50% description coverage (url is described, cache_max_age is not), and the description adds no meaning to either parameter. It does not compensate for the undocumented cache_max_age.
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 it retrieves public replies to a Mastodon post, in thread order, from every server the hosting server knows of. This is a clear verb+resource, though it does not explicitly differentiate from siblings like mastodon_post or mastodon_userPosts.
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 guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. The description only implies usage by stating what it returns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mastodon_profilemastodon: ProfileARead-onlyInspect
Profile. A public Mastodon account, read from its own server: follower, following and post counts, bio, avatar, header image and profile links. Accounts that opted out of search engine indexing are refused, free. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Handle with its server (Gargron@mastodon.social or @Gargron@mastodon.social) or a profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and open-world. The description adds genuinely non-obvious behavior: accounts that opted out of search indexing are refused, the data is read from the account's own server, and the call costs 1 credit. That is real context beyond the 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, front-loaded with what is returned and followed by constraints. The standalone 'Profile.' opener is dead weight but the remainder 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?
No output schema exists, and the description compensates by listing the returned fields, plus refusal and cost behavior. Only the undocumented cache_max_age parameter is left unexplained.
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 50%: handle is well documented in the schema, but cache_max_age has no description anywhere. The description makes no attempt to explain caching semantics or acceptable values, so it fails to compensate for the gap.
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 the resource (a public Mastodon account) and enumerates exactly what is retrieved: follower/following/post counts, bio, avatar, header, profile links. Distinguishes itself from mastodon_post and mastodon_userPosts through that field list, though the leading fragment 'Profile.' adds nothing.
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 ('a public Mastodon account, read from its own server') gives an agent enough to infer this is the identity/lookup tool versus the post-oriented siblings, but there is no explicit when-to-use or when-not guidance and no sibling is named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mastodon_userPostsmastodon: User postsARead-onlyInspect
User posts. An account's public posts, newest first, with favourite, reply and boost counts. Boosts of other people's posts are left out. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| cursor | No | `pagination.cursor` from a previous response | |
| handle | Yes | Handle with its server (Gargron@mastodon.social or @Gargron@mastodon.social) or a profile URL | |
| cache_max_age | No | ||
| exclude_replies | No | Leave out replies to other posts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the bar is lower; the description still adds real behavioral context: ordering (newest first), returned fields (favourite/reply/boost counts), a content exclusion (boosts), and a cost signal ('Costs 1 credit'). It does not mention caching behavior despite a cache_max_age parameter.
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 resource, then return contents, then exclusion, then cost. 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?
For a simple read tool with annotations covering safety and no output schema, the description adequately covers return contents, ordering, exclusions and cost. The remaining gap is parameter-level guidance (notably count, cache_max_age, and the odd string type of exclude_replies).
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 only 60%: count and cache_max_age have no descriptions, and the description says nothing about count, cursor, cache_max_age or the string-typed exclude_replies. For a 5-parameter tool with partial schema documentation, the description should compensate but adds no parameter meaning at all.
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 ('An account's public posts, newest first') and scopes it further by naming the fields returned and excluding boosts of other people's posts. That scope implicitly separates it from mastodon_post (single post), mastodon_postReplies and mastodon_profile, though no sibling is named 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?
The description implies when to use it (to read an account's timeline) and gives one exclusion (boosts are omitted), but offers no explicit when-to-use/when-not guidance or pointers to alternatives such as mastodon_profile or mastodon_postReplies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
milkshake_pagemilkshake: Milkshake pageBRead-onlyInspect
Milkshake page. Public Milkshake page as a creator profile: display name, bio, avatar, and every outbound link in order. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL (https://msha.ke/<username>) or just the username | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and open-world access, and the description adds two things they do not: the exact content returned (profile fields plus every outbound link, in order) and that each call costs 1 credit. It stops short of disclosing error behavior for private/deleted pages or what the cache_max_age window controls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler; the returned-content list is the useful payload and comes early. The leading 'Milkshake page.' sentence is pure repetition of the title and could be dropped.
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 does the right thing by enumerating returned fields, which is the biggest gap it could have filled. However, it leaves the cache_max_age parameter undefined and says nothing about failure modes, so an agent calling with a bare username or an unusual cache value has no guidance.
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 only 50%: url is documented in the schema with a concrete format example, but cache_max_age has no description anywhere. The description adds no parameter information at all — it never mentions the accepted URL/username forms or what cache_max_age does, so it fails to compensate for the coverage gap.
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 second sentence is specific: it returns a public creator profile with display name, bio, avatar, and ordered outbound links, which is exactly what an agent needs to know. The opening 'Milkshake page' merely restates the name, and nothing distinguishes it from the many sibling link-in-bio tools (linktree_page, linkbio_page, solo_page, taplink_page, etc.) beyond the brand.
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: fetch a public msha.ke page. There is no statement of when to prefer this over linktree_page/linkme_page/komi_page for the same kind of data, and no note on what happens for private or nonexistent pages. The credit-cost note gives a hint of cost-awareness but is not usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mixcloud_followersmixcloud: User followersARead-onlyInspect
User followers. A user's followers, most recent first: username, display name and avatar. Counts are not part of this list; fetch a profile for them. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | `pagination.cursor` from the previous response | |
| handle | Yes | Mixcloud username (spartacus), or a mixcloud.com profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint and openWorldHint already present, the description adds meaningful behavior: ordering is most recent first, returned fields include username, display name and avatar, counts are deliberately excluded, and the call costs 1 credit. It does not describe pagination behavior despite having a cursor parameter.
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: it states the resource first, then ordering and returned fields, then the counts exclusion and cost. Every sentence carries 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 list tool with no output schema, the description supplies the important return-value context: fields and ordering. It also explains the absence of counts and points to the profile tool. The main gap is that it does not explain pagination or the limit parameter.
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 only 50%, and the description does not explain the limit, cursor, or cache_max_age parameters. It adds ordering context but leaves the pagination and cache controls entirely to the schema, which documents only handle and cursor.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource: a user's followers, returned most recent first. It also distinguishes the result from profile counts by saying counts are not included and must be fetched from a profile. It lacks an explicit verb like 'list', but the meaning 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 gives a clear usage boundary: use this for the follower list, and fetch a profile for counts. The sibling mixcloud_following is not named, but the followers/following distinction is self-evident from the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mixcloud_followingmixcloud: Accounts a user followsBRead-onlyInspect
Accounts a user follows. Accounts a user follows, most recent first: username, display name and avatar. Counts are not part of this list; fetch a profile for them. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | `pagination.cursor` from the previous response | |
| handle | Yes | Mixcloud username (spartacus), or a mixcloud.com profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, and the description adds real context beyond them: ordering, the exact fields returned, the deliberate exclusion of counts, and the 1-credit cost. Pagination and rate/limit behavior remain undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening repeats the title verbatim before restating the same idea with added detail ('Accounts a user follows, most recent first'), which is wasted front-load. The remaining sentences (counts exclusion, credit cost) 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 usefully enumerates the returned fields and the credit cost. However, for a 4-parameter paginated list tool it omits how limit/cursor interact and what cache_max_age does, leaving an agent unable to page or tune results confidently.
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 50%: cursor and handle are documented in the schema, but limit (default 20) and cache_max_age have no description anywhere, and the description says nothing about any parameter. It fails to compensate for the uncovered half of 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+resource: lists the accounts a given user follows, plus ordering (most recent first) and returned fields. It never names the adjacent sibling mixcloud_followers, so an agent must infer that the reverse relationship is a different 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?
Provides one useful routing rule — counts aren't in this list, fetch a profile for them — which points at mixcloud_profile. There is no guidance on when to use this versus mixcloud_followers, and no stated prerequisites for the handle.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mixcloud_profilemixcloud: ProfileBRead-onlyInspect
Profile. Public Mixcloud profile: followers, following, upload count, bio, avatar, cover image and location. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Mixcloud username (spartacus), or a mixcloud.com profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds useful context by stating the tool returns public profile data and costs 1 credit, but it does not explain error behavior, authentication needs, or rate 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?
The description is short and the returned-field list is front-loaded. The opening 'Profile.' sentence is redundant with the title, but otherwise there is little 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, enumerating the profile fields is helpful for understanding return values. However, the description leaves cache_max_age unexplained and offers no operational details beyond the credit 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 50%: the handle parameter is documented in the schema, but cache_max_age is undocumented. The description does not compensate by explaining either parameter, so it adds no meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific resource and enumerates the profile fields returned, making it clear this fetches a Mixcloud profile rather than follower/following lists. The standalone 'Profile.' sentence is tautological, and there is no explicit verb such as 'get' or '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?
It implies this is for retrieving a public profile, but gives no explicit when-to-use guidance, no exclusion conditions, and does not mention alternatives such as mixcloud_followers or mixcloud_userUploads.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mixcloud_searchmixcloud: SearchBRead-onlyInspect
Search. Search Mixcloud uploads, users or tags. Results are ranked by Mixcloud and can change between calls. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | `cloudcast` for uploads, `user` for accounts, `tag` for tags | cloudcast |
| limit | No | ||
| query | Yes | Search text | |
| cursor | No | `pagination.cursor` from the previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover read-only and open-world behavior. Beyond that, the description discloses two things the schema cannot: results are ranked by Mixcloud and can change between calls (non-determinism), and each call costs 1 credit (cost profile). This is exactly the extra context that matters for a metered search.
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 with no padding; the cost and volatility notes are front-loaded and easy to scan. The only waste is the redundant one-word 'Search.' opener.
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 5-parameter search with no output schema, the description omits result shape hints, pagination flow via cursor, and what limit and cache_max_age control. It is adequate to call the tool, but not complete for an agent that must manage pagination and caching.
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 60%, with type and query documented, and the description echoes the three resource kinds but adds no mapping beyond the enum values. Two parameters, limit and cache_max_age, get no explanation in the schema or the description, so the coverage gap is not compensated.
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 second sentence names the resource set precisely: search Mixcloud uploads, users, or tags. This distinguishes it from single-type siblings such as mixcloud_tag, mixcloud_upload, and mixcloud_userUploads. The leading standalone 'Search.' adds nothing, which keeps it out of the 5 tier.
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 never says when to use this tool vs. alternatives. It gives no guidance on choosing mixcloud_search over mixcloud_tag or mixcloud_userUploads for a specific lookup. The choice is left entirely to inference from the type parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mixcloud_tagmixcloud: Popular uploads for a tagBRead-onlyInspect
Popular uploads for a tag. A tag's popular uploads as Mixcloud ranks them, with plays, favourites, reposts and comments. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | Tag slug (house, deep-house), or a mixcloud.com/genres/ URL | |
| limit | No | ||
| cursor | No | `pagination.cursor` from the previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly and openWorld, so the description's added value is the returned fields (plays, favourites, reposts, comments) and the explicit 'Costs 1 credit' cost disclosure, which is genuinely useful context beyond structured fields. It stops short of mentioning pagination behavior or result limits, 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?
Two tight sentences with the resource front-loaded and no filler. The opening phrase slightly echoes the title, but subsequent sentences each add information (ranking source, return fields, 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?
For a read-only, no-output-schema tool, the description adequately conveys what comes back and the cost, but omits how limit/cache_max_age behave and offers no sibling differentiation. Adequate but with clear gaps around the undocumented parameters.
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 50%: tag and cursor are documented in the schema, but limit and cache_max_age are undocumented in both schema and description. The description adds no parameter-level meaning, so baseline 3 is appropriate given the partial 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 ('popular uploads for a tag') and clarifies the ranking basis (Mixcloud's own ordering). It doesn't explicitly distinguish itself from siblings like mixcloud_search, but the tag-centric scope is clear enough to select it over generic search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus mixcloud_search or mixcloud_userUploads. The cost note ('Costs 1 credit') is a budgeting hint but not usage direction, 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.
mixcloud_uploadmixcloud: Upload detailsARead-onlyInspect
Upload details. One Mixcloud upload: plays, favourites, reposts, comments, duration, tags and description. The tracklist, when the uploader published one, is in raw.sections. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The upload slug: the last part of its URL, e.g. "cinematic-soundscapes" | |
| handle | Yes | Mixcloud username (spartacus), or a mixcloud.com profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered; the description adds genuinely non-structured context: the cost ('Costs 1 credit') and the location of the tracklist inside `raw.sections`, which tells the agent where to look in the response. It does not cover auth requirements or whether missing/private uploads error versus return empty, 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, front-loaded with the identity of the tool and then the payload contents. Every sentence carries information (fields, tracklist location, credit cost) with no filler, though the leading fragment 'Upload details.' is a weak opener that mostly restates 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?
There is no output schema, so enumerating returned fields and naming the tracklist path in `raw.sections` is exactly the right compensation. The remaining gap is cache_max_age, which is unexplained in both schema and description, plus no note on error behavior for nonexistent or private uploads.
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 67%: slug and handle are documented in the schema with examples, but cache_max_age has no description anywhere. The description adds nothing about parameter meaning, format, or acceptable values. With the schema doing most of the work, 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 clear resource and scope: 'One Mixcloud upload' with an enumerated field set (plays, favourites, reposts, comments, duration, tags, description). That implicitly distinguishes it from list-shaped siblings such as mixcloud_userUploads and mixcloud_search, though it never names them. The verb is only implied by the noun phrase 'Upload details', which is slightly weaker than an explicit 'Get'.
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?
'One Mixcloud upload' implies the single-item retrieval case, and the pointer to mixcloud_uploadComments-adjacent data is implied by mentioning comments as a returned field. But there is no explicit when-to-use, no statement of when to prefer mixcloud_userUploads or mixcloud_search instead, and no prerequisites noted beyond the required handle/slug in the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mixcloud_uploadCommentsmixcloud: Upload commentsBRead-onlyInspect
Upload comments. Public comments on a Mixcloud upload. Pass the cursor from the previous response to page. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The upload slug: the last part of its URL, e.g. "cinematic-soundscapes" | |
| limit | No | ||
| cursor | No | `pagination.cursor` from the previous response | |
| handle | Yes | Mixcloud username (spartacus), or a mixcloud.com profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful non-schema context — a cost of 1 credit and the cursor-based paging pattern — but the ambiguous 'Upload comments' phrasing works against the readOnly annotation and no return shape is described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no padding, and the paging/cost facts are front-loaded. However, the opening 'Upload comments.' duplicates the title and adds no information while introducing ambiguity, so not 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 carries more burden: it does cover paging and credit cost, which are the key operational facts. It still leaves the response contents (comment fields, pagination object shape) and the meaning of `limit` and `cache_max_age` 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 60%: slug and cursor are documented in-schema, limit and cache_max_age are not. The description reinforces the cursor parameter's usage ('from the previous response') in a way the schema text alone doesn't spell out, though it says nothing about `limit` or `cache_max_age`, leaving two parameters unexplained in both places.
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 second sentence ('Public comments on a Mixcloud upload') does identify the resource, but the leading 'Upload comments' restates the name/title and reads ambiguously as a write action rather than a read of comments. No sibling is named or differentiated (e.g. mixcloud_upload, mixcloud_userUploads), so the agent must infer that this lists comments attached to a single upload.
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 comparison against the many sibling mixcloud_* tools. The only procedural hint is 'Pass the `cursor` from the previous response to page', which addresses iteration but not tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mixcloud_userUploadsmixcloud: User uploadsARead-onlyInspect
User uploads. A user's public uploads, newest first, with plays, favourites, reposts and comments. Pass the cursor from the previous response to page. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | `pagination.cursor` from the previous response | |
| handle | Yes | Mixcloud username (spartacus), or a mixcloud.com profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint/openWorldHint in annotations, the description adds genuinely useful traits: newest-first ordering, the set of engagement fields returned, cursor-based paging, and a 1-credit cost. It doesn't cover rate limits or the cache_max_age behavior, but it's well above 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 short sentences, front-loaded with what the tool returns before the paging mechanic and cost. The opening 'User uploads.' is slightly redundant with the following sentence but costs almost nothing.
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, so mentioning returned fields is important and done. Pagination and credit cost are covered; the only gaps are cache_max_age semantics and any limit ceiling, which are minor for a read-only listing 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?
At 50% schema coverage, the description usefully reinforces cursor paging and implies the handle identifies the user. It says nothing about limit (beyond paging) or cache_max_age, so the two undocumented parameters remain unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: a user's public uploads, newest first, including plays/favourites/reposts/comments. It doesn't explicitly distinguish itself from close siblings like mixcloud_upload (single item) or mixcloud_profile, so it falls short of 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?
Gives clear pagination guidance ('Pass the cursor from the previous response to page'), which is real usage instruction. But it never says when to choose this tool over mixcloud_upload, mixcloud_profile, or mixcloud_search, so the when/when-not guidance is only partial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
odysee_channelodysee: ChannelBRead-onlyInspect
Channel. Public metadata for an Odysee channel: title, description, avatar, banner, subscriber count, number of videos, website and creation date. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Channel name (@veritasium), name with claim suffix (@veritasium:f), or an odysee.com or lbry:// channel URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds a genuinely non-annotated behavior: "Costs 1 credit," which matters for call budgeting. It stops short of describing what happens for a nonexistent/renamed handle or how the undocumented cache works.
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, no padding, with the substantive payload list and cost both stated up front. The only waste is the leading one-word "Channel." fragment, which duplicates the title and delays the useful 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?
Because there is no output schema, the enumerated field list does real work in telling the agent what comes back, and the credit cost is useful. But cache_max_age is left entirely unexplained and the failure mode for an invalid handle is unstated, which leaves a read-only agent with gaps it cannot resolve from structured data.
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 required handle is fully documented in the schema, including accepted formats (@name, @name:f claim suffix, odysee.com/lbry:// URLs), so the critical input is covered. However, cache_max_age has no description anywhere, and the description does nothing to compensate for that 50% coverage gap.
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?
"Public metadata for an Odysee channel" plus an explicit field list (title, description, avatar, subscriber count, video count, website, creation date) makes the resource and payload unambiguous. The bare opener "Channel." repeats the title and the verb (fetch/retrieve) is only implied. It also never distinguishes itself from the adjacent odysee_channelVideos, which an agent could easily confuse for channel info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no named alternative. An agent must infer that this is for channel-level metadata while odysee_channelVideos is for the video listing, and that odysee_search is for discovery by keyword — none of that routing is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
odysee_channelVideosodysee: Channel videosARead-onlyInspect
Channel videos. An Odysee channel's videos, newest first, 50 per page, with view and like counts. Pass the cursor from the previous response to page. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | `pagination.cursor` from the previous response | |
| handle | Yes | Channel name (@veritasium), name with claim suffix (@veritasium:f), or an odysee.com or lbry:// channel URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description is not carrying the safety burden. It still adds meaningful behavior: ordering (newest first), page size (50), returned fields (view and like counts), cursor-based pagination, and a credit cost. Missing only edge details such as error or empty-channel 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 short sentences, each carrying distinct information: purpose, return shape/order/page size, pagination, and cost. The most important operational facts are front-loaded 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 only 67% parameter coverage, the description does well: it discloses ordering, page size, returned metrics, pagination, and cost. The remaining gap is the unexplained `cache_max_age` parameter and no note on failure modes, but the core 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 coverage is 67%, with clear schema descriptions for `cursor` and `handle`. The description reinforces cursor usage but adds nothing about handle formats beyond the schema, and says nothing about `cache_max_age`, the one undocumented parameter. Baseline 3 fits given the partial schema support.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and scope: an Odysee channel's videos, newest first. It is clearly distinct from odysee_video (single video) and odysee_channel (channel profile), though it never explicitly names those alternatives. The leading 'Channel videos' restates the title, but the following sentence does the real work.
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 the pagination flow ('Pass the `cursor` from the previous response to page'), which is real usage guidance. However, it gives no guidance on when to choose this over odysee_search or odysee_video, and no when-not conditions. Usage is implied rather than explicitly framed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
odysee_commentsodysee: Video commentsARead-onlyInspect
Video comments. Top-level comments on an Odysee video, 50 per page, with like and reply counts. Pass the cursor from the previous response to page. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Odysee video URL (odysee.com/@channel:x/video-name:y), lbry:// URL, or 40-character claim id | |
| cursor | No | `pagination.cursor` from the previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the read-only/open-world safety profile, and the description adds real context beyond them: page size of 50, presence of like and reply counts, top-level-only scope, cursor-based paging, and a 1-credit cost. That is a meaningful, non-redundant behavioral 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 short sentences with the core scope front-loaded and no filler. Slight compression opportunity since cursor paging is restated from the schema, but nothing is wasteful.
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 (top-level comments with like and reply counts, 50 per page). The main gap is where replies to comments can be fetched, which 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 coverage is 67% and the schema already documents url formats and the cursor source. The description reinforces cursor paging, which is helpful, but adds nothing about url or the undocumented cache_max_age parameter, so it does not compensate for the coverage gap.
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 ('video comments' on an Odysee video) and narrows scope to top-level comments. It is distinguishable from odysee_video and odysee_search, though it never names a sibling to sharpen the contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent infers it should call this when it needs comments on a specific video. There is no explicit 'use this instead of X' guidance, and with ~150 sibling tools including peertube_comments, youtube_videoComments, and rumble_comments, a routing sentence would have been valuable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
odysee_searchodysee: Search videosARead-onlyInspect
Search videos. Odysee videos matching a keyword, in Odysee search order, 20 per page, with view and like counts. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Keywords to search for | |
| cursor | No | `pagination.cursor` from the previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and open-world status, yet the description still adds useful operational context: fixed page size of 20, Odysee's own relevance ordering, the fields returned (view and like counts), and a per-call cost of 1 credit. It doesn't explain pagination termination or rate limiting beyond cost, 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 short sentences, front-loaded with the action and enriched with concrete details (20 per page, credit cost). The opening 'Search videos.' is mildly redundant with the sentence that follows it, a small inefficiency in an otherwise tight definition.
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 does a good job telling the agent what comes back (view/like counts), how results are ordered, page size, and cost. The only real gap is the undocumented cache_max_age parameter, which an agent may not know how to set 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 67%: query and cursor are documented in the schema, while cache_max_age has no description anywhere. The description does not compensate for that gap or add detail about how the cursor pairs with the 20-per-page behavior. Baseline 3 is appropriate given the schema does most of 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?
The description names a specific verb and resource ('Search videos') plus the platform ('Odysee videos') and characterizes the result set (view and like counts). It differentiates itself from odysee_channelVideos by emphasizing keyword matching, though it never explicitly names that sibling as the channel-scoped 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?
There is no explicit when-to-use statement and no named alternative among the many sibling search tools (youtube_search, rumble_search, peertube_search) or Odysee-specific tools like odysee_channelVideos. The intent to use this for keyword discovery is only implied by the phrase 'matching a keyword'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
odysee_videoodysee: Video detailsARead-onlyInspect
Video details. Public metadata for an Odysee video: title, description, duration, tags, release date, channel, and view, like and comment counts. Dislikes are in raw.dislikeCount. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Odysee video URL (odysee.com/@channel:x/video-name:y), lbry:// URL, or 40-character claim id | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, the description discloses that the data is public (no auth implied), that the call costs 1 credit, and flags the non-obvious location of dislike counts in `raw.dislikeCount`. It does not cover failure behavior for invalid URLs or unknown claim ids, which keeps 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 tight sentences: purpose first, return fields second, the raw.dislikeCount quirk and credit cost last. No filler and nothing 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?
With no output schema, the description carries the return-value burden and does so by enumerating the fields an agent will get back, plus cost. The remaining gap is the undocumented `cache_max_age` control, which an agent cannot reason about from either structured field or prose.
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 description says nothing about either parameter. The `url` parameter is well documented in the schema, but `cache_max_age` has no description in the schema or in the description text, leaving half the parameter surface undocumented and requiring the description to compensate — which it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource ('an Odysee video') and enumerates exactly what metadata is returned (title, description, duration, tags, release date, channel, counts), which separates it from odysee_channel, odysee_channelVideos, odysee_comments and odysee_search. It stops short of explicitly contrasting with those siblings, but the single-video lookup 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?
Usage is only implied: an agent can infer this is the tool for fetching one video's metadata, but there is no explicit statement of when to use it versus odysee_search (to find a video) or odysee_channelVideos (to list a channel's uploads). No prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
peertube_channelpeertube: Channel profileBRead-onlyInspect
Channel profile. Public profile of a PeerTube channel, read from the instance that hosts it: followers, following, video count, avatar, banner and creation date. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Channel as name@instance (blender_channel@video.blender.org) or a channel URL on its instance | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds two genuinely non-structured facts — that data comes from the hosting instance specifically (federation behavior) and that the call costs 1 credit — but says nothing about not-found/error handling, caching (relevant given the cache_max_age param), or latency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences: identification, payload/manifest, cost. Front-loaded with the tool's identity and free of filler. The field list is dense but earns its place by substituting for an absent 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, listing the returned fields is a real contribution. However, the undocumented second parameter and the absence of any failure-mode or caching note leave gaps for a tool that is open-world and depends on a third-party instance's availability.
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 only 50%: 'handle' is well documented in the schema, but cache_max_age has no description anywhere and the description does not mention it or explain its semantics. The description also adds no meaning to 'handle' (e.g. whether a bare name without instance works) beyond what the schema already says.
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 (reads) and resource (a PeerTube channel's public profile) and enumerates the fields returned (followers, following, video count, avatar, banner, creation date), so an agent immediately knows this is metadata, not content. It is distinguishable from peertube_channelVideos by implication, but the description never explicitly names that 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?
Usage is only implied: it's plainly the tool for channel metadata, and 'read from the instance that hosts it' hints at federation scope, but there is no statement of when to prefer it over peertube_channelVideos, peertube_search or peertube_video, 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.
peertube_channelVideospeertube: Channel videosARead-onlyInspect
Channel videos. A PeerTube channel's public videos, newest first, 50 per page. Tags are not included in list items; peertube.video returns them. Pass the cursor from the previous response to page. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | `pagination.cursor` from the previous response | |
| handle | Yes | Channel as name@instance (blender_channel@video.blender.org) or a channel URL on its instance | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds genuinely useful behavior beyond that: newest-first ordering, a fixed 50-per-page size, exclusion of tags from list items, and a stated cost of 1 credit.
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 resource and scope, each carrying distinct information (ordering, page size, tag caveat, paging, cost) with no 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 supplies the return-shape essentials an agent needs: ordering, page size, 50-item batching, cursor-based paging, and absent tags. Only the `cache_max_age` parameter remains unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents `cursor` and `handle` (67% coverage), and the description reinforces the cursor usage, so it adds only marginal value there. `cache_max_age` is undocumented in both schema and description, leaving a real gap.
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 ('a PeerTube channel's public videos') plus ordering and page size, and names peertube.video as the place to get tags, which separates it from the sibling video tool. It doesn't explicitly contrast with peertube_channel or peertube_search, but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells the agent to pass the `cursor` from the previous response to page, and redirects tag retrieval to `peertube.video`. That's clear contextual guidance, though there is no explicit 'when not to use this' for channel-level metadata or search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
peertube_commentRepliespeertube: Comment repliesARead-onlyInspect
Comment replies. Every reply under one top-level comment on a PeerTube video, nested replies included, each with parentId naming the comment it answers. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Video URL (https://video.blender.org/w/9UhsEGd8vM4PTtg6bphpEM) or <video id>@<instance> | |
| commentId | Yes | `id` of a top-level comment from `peertube.comments` | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations, the description discloses the return shape (every reply, nested included, each carrying parentId for threading) and the cost (1 credit). It stops short of covering pagination, ordering, or limits on deep threads.
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 resource and followed by scope and cost. No filler or restatement of the tool name.
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 characterizes the payload (threaded replies with parentId) and the credit cost for a 3-parameter read tool. The only gap is the undescribed cache_max_age parameter, which neither schema nor description explains.
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 sits at 67%, with url and commentId well documented in the schema itself. The description adds the meaningful constraint that commentId must be a top-level comment, but it says nothing about cache_max_age, the one undocumented 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 concrete resource and scope: all replies beneath a single top-level comment on a PeerTube video, explicitly including nested replies. That said, it never names the sibling it differs from (peertube_comments), leaving the contrast implied by the 'one top-level comment' framing rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implicit: 'under one top-level comment' hints that a comment id from peertube_comments must be obtained first, and the commentId schema text reinforces that chain. There is no explicit when-to-use/when-not statement and no named alternative for fetching whole videos' comment threads.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
peertube_commentspeertube: Video commentsARead-onlyInspect
Video comments. Top-level comments on a PeerTube video, newest first, 100 per page, including those posted from other fediverse servers. replyCount gives each thread's replies; peertube.commentReplies returns them. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Video URL (https://video.blender.org/w/9UhsEGd8vM4PTtg6bphpEM) or <video id>@<instance> | |
| cursor | No | `pagination.cursor` from the previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover read-only and open-world, and the description adds genuinely new behavior: newest-first ordering, 100 per page, inclusion of comments federated from other servers, the `replyCount` field, and a 1-credit cost. That is meaningful cost/ordering/pagination context beyond annotations. It stops short of describing cursor exhaustion 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?
Four short sentences, front-loaded with what the tool returns, then scope, ordering, the sibling pointer, 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?
With no output schema, the description usefully names `replyCount` and explains pagination granularity, which is enough for an agent to call and interpret results. The undocumented `cache_max_age` parameter is the one 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 coverage is 67% and the schema already documents `url` (with format examples) and `cursor`. The description adds no parameter-level detail and leaves `cache_max_age` undocumented in both places, so it neither compensates for the gap nor adds value here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource ('Top-level comments on a PeerTube video') and scopes it precisely against the sibling by saying replies live in peertube.commentReplies. An agent can distinguish this from peertube_commentReplies and peertube_video 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 to `peertube.commentReplies` for thread replies, which is the main selection ambiguity for a comments tool. It gives clear context (top-level only, newest first) but doesn't state prerequisites or when to prefer peertube_video instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
peertube_searchpeertube: Search videosARead-onlyInspect
Search videos. Search public videos across PeerTube instances through Sepia Search, the PeerTube project's index, 50 per page. Covers the instances Sepia indexes, not every server. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search terms | |
| cursor | No | `pagination.cursor` from the previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only and open-world, so the bar is lower; the description adds real value by disclosing the Sepia-based index, the 50-per-page page size, the incomplete instance coverage, and the 1-credit cost. It stops short of describing result shape or pagination mechanics beyond page size.
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 purpose front-loaded and the cost/coverage caveats following. Minor redundancy between 'Search videos.' and the next sentence naming the same action again.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries more burden for return values; it gives page size and coverage limits but not what a result entry contains or how cursor termination works. Cost and index scope round it out, but a searcher-agent still lacks return-shape guidance.
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 67%, so the schema documents query and cursor well. The description adds the page-size context relevant to cursor paging, but says nothing about cache_max_age, which is undocumented in the schema as well — a gap left unfilled.
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 videos) plus the precise scope: public videos across PeerTube instances via Sepia Search. That scope cleanly separates it from siblings like peertube_video, peertube_channel, or youtube_search without needing their 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?
Usage is implied by 'Search videos' and the coverage caveat tells the agent the result set may be incomplete, which is useful. However, it never names an alternative or states when to pick this over a direct peertube_video lookup or another platform's search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
peertube_transcriptpeertube: Video transcriptARead-onlyInspect
Video transcript. A PeerTube video's captions as one text block plus timed cues. Returns the requested language when the video has it, otherwise the first track. isAutoGenerated says whether the instance transcribed it automatically. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Video URL (https://video.blender.org/w/9UhsEGd8vM4PTtg6bphpEM) or <video id>@<instance> | |
| language | No | Language code, e.g. "en" | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations, the description discloses meaningful behavior: the language fallback rule ('returns the requested language when the video has it, otherwise the first track'), the presence of an isAutoGenerated flag, and a per-call credit cost. That is real operational context an agent could not infer 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?
Four short sentences, with the return shape and fallback rule front-loaded and the cost note last. The leading 'Video transcript.' restates the title and could be dropped, but the rest is dense 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, and the description compensates by describing what comes back (one text block plus timed cues, an isAutoGenerated flag). Combined with the fallback rule and cost, an agent has enough to call it correctly; only the undocumented cache_max_age param is left uncovered.
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 67%, so the schema documents url and language reasonably well. The description adds one genuinely useful semantic about `language` (silent fallback to the first available track), but `cache_max_age` has no description anywhere and the language fallback is stated as runtime behavior rather than as a parameter contract.
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 clear verb and resource ('A PeerTube video's captions as one text block plus timed cues') and identifies the platform, which separates it from the many other *_transcript siblings. It does not explicitly name a sibling alternative, but the platform prefix plus the concrete output shape makes the target 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?
Usage is only implied: it says the tool returns captions for a video, so an agent can infer it should be called when a transcript is wanted. There is no explicit 'use this when X, use peertube_video when Y' guidance and no stated prerequisite about the video having caption tracks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
peertube_videopeertube: Video detailsBRead-onlyInspect
Video details. Public metadata for a PeerTube video: views, likes, comment count, duration, tags, publish date and channel. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Video URL (https://video.blender.org/w/9UhsEGd8vM4PTtg6bphpEM) or <video id>@<instance> | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and network scope are covered. The description adds useful context beyond them: that only public metadata is returned (no auth-gated data) and that each call costs 1 credit, which lets an agent budget calls. It says nothing about caching behavior or failure modes for bad URLs.
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, purpose front-loaded, field list and cost in sequence. No filler and nothing repeated from structured fields 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?
No output schema exists, but the description compensates by enumerating the returned fields, so an agent knows what to expect. The remaining gaps are the undocumented cache_max_age parameter and the absence of any error behavior for malformed URLs or missing videos.
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 only 50% schema coverage, the description needs to compensate for undocumented parameters but adds nothing. The required url is fully documented in the schema with two accepted formats, but cache_max_age has no description in either place, leaving an agent guessing at its format and effect.
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 ('Video details ... public metadata for a PeerTube video') and enumerates the returned fields (views, likes, comments, duration, tags, publish date, channel). This distinguishes it implicitly from peertube_search, peertube_channel and peertube_comments, though no sibling is named 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 statement of when to use this tool versus peertube_search or peertube_transcript, and no prerequisites or exclusions. The only conditional information is the credit cost, which is billing, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pillar_pagepillar: Pillar pageBRead-onlyInspect
Pillar page. Public Pillar page as a creator profile: display name, bio, avatar, and every outbound link in order. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL (https://pillar.io/<username>) or just the username | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds value beyond that by disclosing the cost ('Costs 1 credit') and specifying exactly what the returned profile contains, including that links are returned in order. It does not mention rate limits or failure behavior for private/nonexistent pages, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the payload description, then cost. The opening fragment 'Pillar page.' is pure redundancy with the title, but the rest is efficient.
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 and does so. But it leaves one of two parameters (cache_max_age) unexplained and says nothing about behavior for invalid or private pages, leaving a moderate gap for a public-web fetch 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 only 50%: the url parameter is well described in the schema itself, but cache_max_age is undocumented in both schema and description. The description says nothing about parameters at all, so it fails to compensate for the coverage gap on cache_max_age.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource and enumerates what the page yields (display name, bio, avatar, ordered outbound links), which is far more specific than the tautological title 'Pillar page'. However, it offers no differentiation from the many near-identical link-in-bio siblings in the toolset (linktree_page, linkbio_page, taplink_page, linkme_page, komi_page), so an agent cannot tell from the text why it should pick this one.
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 statement of when to use this tool, when not to, or which sibling to use instead. Given seven or more structurally identical page-scraping tools, the absence of routing guidance is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinterest_boardpinterest: Board and its pinsARead-onlyInspect
Board and its pins. Board metadata plus a page of its pins. Pass the cursor from the previous response to page through the board. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Board URL, e.g. https://www.pinterest.com/pinterest/spice-up-your-dinner-plans/ | |
| cursor | No | Bookmark from the previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly and openWorld, so the description's job is to add beyond that — it does so with the credit cost and the cursor-chaining behavior, which the agent cannot infer from structured fields. It stops short of saying what happens on an invalid or private board URL.
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 resource and return payload. The opening 'Board and its pins.' largely restates the title, a small redundancy, but nothing else 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 does the necessary work of describing the return shape ('board metadata plus a page of its pins'). What's missing is minor for a read-only retrieval tool: the undocumented cache_max_age parameter and edge-case behavior.
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 67%: url has an example and cursor is labeled 'Bookmark from the previous response'. The description reinforces the cursor's purpose (paging through the board) but adds nothing for cache_max_age, which is undocumented in both places.
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-object scope: board metadata plus a page of that board's pins. That cleanly distinguishes it from pinterest_pin (single pin) and pinterest_search, though it never names 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?
The pagination instruction ('Pass the cursor from the previous response') implies the when-and-how of repeated calls, but there is no explicit guidance on when to choose this over pinterest_userBoards or pinterest_search, and no stated failure conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinterest_pinpinterest: Pin detailsARead-onlyInspect
Pin details. Public details for a pin: title, description, reactions, comments, shares and full-resolution media. The destination link and save count are in raw. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Pin URL, e.g. https://www.pinterest.com/pin/1130122100248990600/ | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and open-world behavior, and the description adds genuinely new context: the operation costs 1 credit, only public pin data is returned, and two specific values (destination link, save count) live under `raw` rather than at top level. That last point is real return-shape guidance absent 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?
Three short sentences, front-loaded with the resource and its payload, then the `raw` caveat, then cost. Nothing is redundant 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 carries the return-value burden and does so by listing the fields plus the `raw` container, and it discloses the credit cost. The one real gap is `cache_max_age`, which is left entirely unexplained for a simple two-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 only 50%. The `url` parameter is well documented in the schema with a concrete example, but `cache_max_age` is undocumented in both schema and description, and the description adds no parameter-level meaning at all — it never mentions either input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource ('Pin details') and enumerates exactly what is returned: title, description, reactions, comments, shares, and full-resolution media. That is enough to separate it from pinterest_search and pinterest_board by resource, though it never names 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?
Usage is only implied: you supply a pin URL and get that pin's details. There is no statement of when to prefer this over pinterest_search (to find a pin) or pinterest_board (for board contents), and no preconditions or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinterest_searchpinterest: Search pinsARead-onlyInspect
Search pins. Public Pinterest search results for a query, as unified posts. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search terms, e.g. "minimalist kitchen" | |
| cursor | No | Bookmark from the previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds two genuinely useful facts not in the annotations: results are public-only, and the call "Costs 1 credit." It does not say how results are paged or bounded in count, leaving the cursor flow implicit.
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 scope, then cost. Nothing is redundant and no sentence could be removed without losing 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 search tool with annotations and a documented required parameter, the description supplies the essentials: what it searches, that results are public, the output framing ("unified posts"), and the credit cost. The only real gap is pagination expectation, which the cursor parameter partly implies.
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 67%, with query and cursor well documented in the schema itself. The description adds no parameter meaning beyond the schema — notably cache_max_age is undocumented in both places — so it does not compensate for the remaining gap; 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 pins") and narrows scope to "Public Pinterest search results for a query," which separates it from the sibling lookup tools pinterest_pin, pinterest_board and pinterest_userBoards. It stops short of naming those siblings explicitly, so the agent must infer the boundary from the word "search".
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 pins ... for a query" — the agent can infer it is the entry point when it has keywords rather than a known pin or board ID. There is no explicit when-to-use/when-not guidance, no mention of when to prefer pinterest_pin for a known ID, and no prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinterest_userBoardspinterest: Boards owned by a userARead-onlyInspect
Boards owned by a user. Public boards on a profile, most recently pinned-to first, with pin and follower counts. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Bookmark from the previous response | |
| handle | Yes | Username, e.g. "pinterest" | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds valuable context beyond annotations: public-only visibility, ordering by most recently pinned-to, pin/follower counts, and a credit cost. It does not contradict any annotation.
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 resource and then useful behavioral details. Every sentence earns its place, including the ordering, counts, and credit 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?
For a simple read-only list tool with annotations and no output schema, the description covers visibility, ordering, returned counts, and cost. Pagination is left to the cursor schema, and cache_max_age is undocumented, leaving minor 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 coverage is 67%; handle and cursor are documented in the schema, but cache_max_age has no description. The description adds no parameter-level meaning 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 clearly identifies the resource and scope: public boards owned by a user/profile. It adds useful specifics like ordering and included counts. However, it does not explicitly differentiate this from sibling tools such as pinterest_board or pinterest_search, leaving the agent to infer the 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?
The phrase 'Public boards on a profile' implies the usage context, but there is no explicit guidance on when to use this tool versus pinterest_board, pinterest_pin, or pinterest_search. No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reddit_commentRepliesreddit: Comment repliesARead-onlyInspect
Comment replies. The reply thread under a single comment: the continuation behind Reddit's "load more comments". Takes a comment permalink, or "postId:commentId". Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Comment permalink (.../comments/{post}/{slug}/{comment}/) or "postId:commentId" | |
| sort | No | confidence | |
| depth | No | Reply levels below the comment, 1-10. Default 6. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, openWorldHint), so the bar is lower; the description still adds the non-obvious billing trait 'Costs 1 credit', which appears nowhere in the structured fields. It stops short of disclosing cost interaction with depth or any pagination/truncation behavior on long threads.
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 what the tool returns before the input format and the cost. No filler and 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?
For a read-only, single-resource fetch with safety annotations in place, the description covers the essential identity, the input alternative form, and the credit cost. It leaves the response shape (flat list vs nested replies, effect of depth) unstated, which matters slightly more here since no output schema exists.
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 50%: url and depth are documented in the schema, and the description merely repeats the url input format rather than adding new meaning. Neither sort (six enum values) nor cache_max_age is explained in the description, and cache_max_age has no description anywhere, so the description does not compensate for the coverage gap.
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 resource ('the reply thread under a single comment') and frames it concretely as the continuation behind Reddit's 'load more comments', which is more precise than a restatement of the title. It implicitly separates itself from reddit_postComments by scoping to replies under one comment, but never names that sibling, so the differentiation is left to inference.
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 establishes the scenario ('load more comments') and required input shape, which implies when to reach for it. However, it gives no explicit when-not guidance and does not route the agent away from reddit_postComments when the target is a post-level thread rather than a single comment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reddit_postreddit: Post detailsARead-onlyInspect
Post details. One Reddit post with its score, comment count, body text and media. Use reddit.postComments for the comment tree. They are separate endpoints, so a post with no comments is still a paid, cached result rather than an empty one. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Post URL (reddit.com/r/.../comments/...) or a post id | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context the annotations cannot carry: the 1-credit cost, that results are cached, and the non-obvious billing behavior that a post with zero comments is still a paid result rather than an empty response. That last point is exactly the kind of hidden behavioral trait this dimension rewards.
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 payload, then the sibling redirect, then the billing caveat — each sentence carries distinct information. The opening 'Post details.' largely restates the title, a minor redundancy in an otherwise tight four-sentence block.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description supplies the return shape (score, comment count, body, media), and with only readOnlyHint/openWorldHint annotations it supplies cost, caching, and the empty-result caveat. Nothing an agent needs to call this correctly or budget for it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: `url` is documented (URL or post id) but `cache_max_age` has no description anywhere, and the description does not explain what it controls or its accepted format. For a 2-param tool the description neither compensates for the gap nor adds meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource ('One Reddit post') plus the exact payload an agent gets back — score, comment count, body text and media — which immediately differentiates it from reddit_postComments and reddit_postTranscript in the sibling 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?
Explicitly routes comment retrieval to `reddit.postComments`, which is the most likely wrong turn for this verb. It gives no guidance versus other neighbors (reddit_search, reddit_userPosts, reddit_subreddit), so the routing 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.
reddit_postCommentsreddit: Post commentsARead-onlyInspect
Post comments. A post's comment tree, flattened into reading order with parentId preserved so callers can rebuild it. Returns the comments Reddit shows on the post's first page, with raw.totalComments giving the post's full count and pagination.hasMore true when more exist; pagination.cursor is null. Reddit collapses deep threads behind continuation stubs; fetch those with reddit.commentReplies. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Post URL (reddit.com/r/.../comments/...) or a post id | |
| sort | No | Reddit's comment sorts. "confidence" is the site default ("Best"). | confidence |
| depth | No | Reply levels to walk, 1-10. Default 4. | |
| limit | No | Top-level comments to request, 1-500. Default 100. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly/openWorld; the description adds real behavioral substance: flattened-but-parentId-linked ordering, first-page-only scope, `raw.totalComments` as the full count, `pagination.hasMore` semantics, an explicit note that `pagination.cursor` is null, and a 1-credit cost. That is exactly the kind of information 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, zero filler, with the core behavior front-loaded and the routing/cost details trailing. Every clause (ordering, parentId, first-page scope, cursor null, credit cost) carries information the 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?
No output schema exists, and the description fully covers the return contract (comment tree shape, parent linking, total count field, pagination flags) plus the partial-retrieval caveat and its remedy. Nothing an agent needs to call or interpret results 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 80%: `url`, `sort`, `depth`, and `limit` are documented inline, so the baseline is 3. The description adds no meaning about `depth` or `limit` beyond the schema, and `cache_max_age` is undocumented in both places, so there's no compensation to justify 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+resource ('Post comments. A post's comment tree, flattened into reading order') and immediately distinguishes the shape of the result with `parentId` preserved. It also names the sibling (reddit_commentReplies) that handles the case this tool does not, so an agent can disambiguate 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 deep-thread continuation stubs to `reddit.commentReplies`, which is a concrete when-to-use-something-else rule. It doesn't mention prerequisites (e.g., that a post URL/id is needed vs. reddit_post for post metadata), but the context is clear enough to act on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reddit_postTranscriptreddit: Video transcriptARead-onlyInspect
Video transcript. Transcript for a Reddit-hosted video, from a direct v.redd.it URL, a post URL, or a post id. Reddit auto-captions much of its hosted video and publishes the result as a WebVTT file beside the video; this returns it as one text block plus timed cues, with the raw WebVTT in raw.rawVtt. English is the only caption language observed. Videos with no caption file return an empty result and are not charged. A caption track Reddit advertises only in segmented form, named by the playlist with no flat .vtt beside the video, is reported as upstream_schema_drift today and is likewise never charged. Covers Reddit-hosted video only. A post linking to YouTube or another site has no Reddit caption file and returns an empty result. A post URL or id is resolved to its video first, so a v.redd.it URL is one request quicker. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Post URL (reddit.com/r/.../comments/...), a post id, or a v.redd.it URL | |
| language | No | Preferred caption language. Reddit has only been observed publishing "en". | en |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnly/openWorld; the description adds the important operational traits: billing (1 credit, and no charge for empty or upstream_schema_drift results), the failure modes (no caption file, segmented-only caption track), the observed limitation (English captions only), and the request-count difference between URL forms. That is substantial value beyond the 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 the outcome (transcript, rawVtt field, then scope limits, then cost). The sentences are dense but each carries distinct information — scope, edge case, cost. It runs long for a 3-parameter tool, though nothing is clearly 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?
Given no output schema, the description compensates by describing the return shape ('one text block plus timed cues, with the raw WebVTT in raw.rawVtt') and the empty-result case. Combined with per-input documentation and cost, an agent has everything needed to call and interpret this 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 67% and the description's url-form enumeration and 'English is the only caption language observed' line largely mirror what the schema already says. cache_max_age is undocumented in both places, and the description never addresses it. 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 ('returns the caption file for a Reddit-hosted video') and immediately bounds scope: Reddit-hosted video only, with posts linking to YouTube/other sites returning empty. That differentiates it cleanly from youtube_transcript, dailymotion_transcript and the other *_transcript siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use context (direct v.redd.it URL, post URL, or post id) and a clear when-not condition (non-Reddit-hosted links have no Reddit caption file and return empty). It also advises that a v.redd.it URL is one request quicker, an actionable preference. It does not name alternative sibling tools explicitly, 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.
reddit_searchreddit: Search postsARead-onlyInspect
Search posts. Reddit post search, site-wide or restricted to one subreddit with subreddit, in Reddit's own ranking with scores and comment counts. Reddit returns seven results a page; pass pagination.cursor for the next. raw.posts names each result's subreddit. Body text comes from Reddit's feed of the same query and is null for a result that feed does not carry. raw.via names the surface that answered; on atom, scores and comment counts are null. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | relevance | |
| limit | No | Results per page, 1-100. Default 25. | |
| query | Yes | Search terms. Reddit's own syntax works, e.g. `flair:"news"`. | |
| cursor | No | `pagination.cursor` from a previous response | |
| subreddit | No | Restrict to one subreddit | |
| timeframe | No | Window for the search. Default "all". | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover read-only and open-world, so the description carries the real burden and does: 7 results per page, cursor consumption, 1-credit cost, `raw.posts` subreddit naming, `raw.via` surface tagging, and the important caveats that body text can be null and that scores/comment counts are null on the `atom` surface. These are non-obvious failure modes an agent would otherwise misread as missing 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, then layers pagination, result-shape, and cost in descending priority; every sentence conveys a distinct operational fact. It is densely packed with backticked field names, but nothing is 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 7-parameter search tool with no output schema, the description covers result count per page, continuation, cost, null-field conditions, and which raw fields identify source and answering surface — enough to call and correctly interpret results. Only `cache_max_age` and `sort` semantics are left entirely to the 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?
At 71% schema coverage the schema does most of the work, but the description adds real semantics: the cursor must come from `pagination.cursor` of a prior response, and `subreddit` narrows scope. One tension exists — the description says Reddit returns seven results a page while the `limit` schema claims 1-100 with default 25, which an agent may find confusing.
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 posts') plus the scope distinction of site-wide vs. one subreddit via the `subreddit` parameter. This makes it distinguishable from reddit_subreddit and reddit_post, though it never names those siblings explicitly to route the agent.
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 context is implied by 'site-wide or restricted to one subreddit', and pagination/cost guidance is given. But there is no explicit statement of when to use this instead of reddit_subreddit, reddit_userPosts, or reddit_postComments — the agent must infer the boundary from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reddit_subredditreddit: Subreddit postsARead-onlyInspect
Subreddit posts. Posts from a subreddit, sorted the way Reddit sorts them, with scores and comment counts. sort=top and sort=controversial accept a timeframe. raw.posts adds each post's subreddit, flair, post type and upvote ratio. raw.via names the surface that answered; when Reddit serves only its Atom feed (atom), scores and comment counts are null. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | hot | |
| limit | No | Posts per page, 1-100. Default 25. | |
| cursor | No | `pagination.cursor` from a previous response | |
| subreddit | Yes | Subreddit name ("aww", "r/aww") or a full reddit.com/r/... URL | |
| timeframe | No | Window for sort=top / sort=controversial. Default "day". | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly and openWorld, and the description still adds real context: the Atom-feed fallback case where scores and comment counts are null, the meaning of raw.via, extra raw.posts fields, and a 1-credit cost. This is beyond what the annotations provide and useful for interpreting degraded responses.
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, topic front-loaded, no filler. The 'raw.posts' and 'raw.via' fragments are terse to the point of ambiguity since neither appears as a parameter in the schema, but overall it is tight.
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 tool, the description covers what comes back, the sort/timeframe relationship, the degraded Atom case and credit cost. Missing only pagination behavior and any sibling routing, which keeps it short of full coverage.
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 67% schema coverage, the schema already documents limit, cursor, subreddit and timeframe. The description reinforces the sort/timeframe coupling (top and controversial accept a timeframe) but does not add syntax or defaults, and cache_max_age is undocumented in both places.
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: posts from a subreddit, with sort order, scores and comment counts. It is clear what the tool returns, though it never names siblings like reddit_search or reddit_userPosts to disambiguate when this endpoint rather than those applies.
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 at all. An agent choosing between reddit_subreddit, reddit_search, reddit_subredditDetails and reddit_userPosts gets no routing help; the description only documents behavior of the call once made.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reddit_subredditDetailsreddit: Subreddit detailsARead-onlyInspect
Subreddit details. Public metadata for a subreddit: title, description, icon, banner, and where Reddit shows them, subscribers, people online now, creation date and whether it is private or restricted. raw.via names the surface: on shreddit, subscribers, creation date and privacy are null, and raw.weeklyVisitors and raw.weeklyContributions carry Reddit's weekly activity figures. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| subreddit | Yes | Subreddit name ("aww", "r/aww") or a full reddit.com/r/... URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the read-only/open-world profile, and the description adds genuinely non-obvious behavior: the surface-dependent shape (on `shreddit` subscribers, creation date and privacy come back null), the alternate weekly activity fields, and the 1-credit cost. Missing: nothing about rate limits, failures on private/banned subreddits, or caching 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 dense sentences, front-loaded with the resource and its fields, then the caveat about `raw.via` and nulls, then cost. Every sentence carries information, though the field enumeration is a long clause that could be tightened.
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 and the surface-dependent nulls, which is the right instinct. Gaps remain for a 2-parameter tool: `cache_max_age` is unexplained and there is no mention of behavior when a subreddit is private, banned, or nonexistent.
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 only 50%: `subreddit` is documented (name or full URL) but `cache_max_age` has no schema description and the tool description never mentions it either, so its units and effect are unknown. The description's only parameter-adjacent content is the credit cost. Below the high-coverage baseline because the uncovered parameter is left entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource (a subreddit) and enumerates exactly which metadata it returns: title, description, icon, banner, subscribers, online-now, creation date, privacy status. That is far more specific than a tautology. It does not, however, distinguish itself from the sibling reddit_subreddit (subreddit posts) or reddit_search, so the 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?
Usage is implied by the field list – you call this when you need subreddit metadata rather than posts or search results – but no when-to-use/when-not-to-use statement or named alternative is given. With reddit_subreddit and reddit_search in the same family, an explicit routing rule would have been easy and valuable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reddit_userreddit: User profileBRead-onlyInspect
User profile. A Reddit account's public profile: display name, description, avatar, account age, and karma (returned under raw.karma, since the unified schema has no karma field). Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Username ("spez", "u/spez") or a reddit.com/user/... URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds real value beyond that: it discloses a cost (1 credit) and flags that karma lives at raw.karma because the unified schema lacks a field for it. It does not cover failure modes for missing/nonexistent users.
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 resource and then the highest-value caveats (karma field path, credit cost). The leading 'User profile.' is mildly redundant with the title, but the rest carries 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 does the right thing by listing returned fields and explaining the karma exception. But cache_max_age is left entirely undefined in both schema and description, and there is no guidance on error behavior for invalid or deleted usernames.
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 only 50%: username is documented with both accepted forms ("spez" or a reddit.com/user/... URL), but cache_max_age has no description anywhere. The description says nothing about either parameter, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific resource (a Reddit account's public profile) and enumerates the fields returned: display name, description, avatar, account age, karma. That distinguishes it in substance from reddit_userPosts or reddit_commentReplies, though no sibling is named 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?
Usage is only implied: 'User profile' plus a field list suggests 'call this to look up who an account is.' There is no explicit when-to-use, no pointer to reddit_userPosts for activity, and no note about what happens with private/suspended/deleted accounts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reddit_userPostsreddit: User postsBRead-onlyInspect
User posts. Posts submitted by a Reddit account, newest first by default. Falls back to the account's Atom feed when the JSON surface is blocked. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | new | |
| limit | No | Posts per page, 1-100. Default 25. | |
| cursor | No | `pagination.cursor` from a previous response | |
| username | Yes | Username ("spez", "u/spez") or a reddit.com/user/... URL | |
| timeframe | No | Window for sort=top. Default "all". | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds useful behavioral context beyond that: the Atom-feed fallback when the JSON surface is blocked, the default newest-first ordering, and the 1-credit cost. Pagination and rate-limit behavior are not covered, but the added fallback and cost details are meaningful.
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 and scope, then useful behavioral notes. There is no filler and each sentence contributes.
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 six-parameter, read-only list tool with no output schema, the description covers purpose, default ordering, fallback behavior, and cost. However, it leaves parameter semantics (sort variants, timeframe, cache_max_age) and return/pagination structure largely unexplained.
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 67%, with sort and cache_max_age lacking descriptions. The description's 'newest first by default' merely restates the schema default for sort and does not explain hot/top sorting, timeframe behavior, or cache_max_age. It does not compensate for the remaining schema gaps.
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: it returns posts submitted by a Reddit account, with default ordering. It is clear enough to distinguish from reddit_user (profile) and reddit_post (single post), though it does not explicitly name those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus reddit_search, reddit_user, or reddit_subreddit. The phrase 'newest first by default' hints at chronological listing, but no alternatives or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redfin_agentredfin: Real estate agent profileARead-onlyInspect
Real estate agent profile. Public profile for a Redfin agent or partner agent: name, brokerage, contact and bio. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| tld | No | Redfin marketplace, default com. One of: com, ca | |
| url | Yes | Redfin agent or partner-agent profile URL, e.g. https://www.redfin.com/real-estate-agents/the-home-team | |
| country_code | No | ||
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely non-obvious context: the data is a public profile and the call consumes 1 credit, which matters for budgeting against siblings. It stops short of describing failure modes or how much of the profile is populated for partner agents.
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, resource first, payload second, cost last. Zero filler; every sentence 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?
With no output schema, the description does the necessary work by naming the fields returned, and the credit cost is disclosed. For a simple, read-only single-record lookup this is nearly complete; only the semantics of the two undocumented auxiliary parameters are 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 50%: url and tld are documented in-schema (including a concrete example URL), but country_code and cache_max_age have no description anywhere and the description does not fill that gap. The required parameter is unambiguous, so baseline 3 applies, but no value is added beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource ('Real estate agent profile') and enumerates the returned fields (name, brokerage, contact, bio), which clearly separates it from redfin_search / redfin_forSale / redfin_forRent and signals it parallels zillow_agent. It does not explicitly name a sibling it differs from, 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?
Usage is implied: fetch a single agent profile given a profile URL. There is no explicit statement of when to prefer this over zillow_agent for the same agent, nor any prerequisite or constraint (e.g. 'URL must be a profile page, not a listing page').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redfin_forRentredfin: For-rent property detailsBRead-onlyInspect
For-rent property details. Public details for one Redfin rental: price (or starting price for a multi-unit building), specs, availability and amenities. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| tld | No | Redfin marketplace, default com. One of: com, ca | |
| url | Yes | Redfin rental URL, e.g. https://www.redfin.com/CA/San-Francisco/952-Sutter-St-94109/apartment/1594243 | |
| country_code | No | ||
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds genuinely useful context — 'Costs 1 credit' and the multi-unit 'starting price' nuance — but says nothing about caching behavior (cache_max_age) or failure modes for an open-world fetch.
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 payload front-loaded, and the cost note at the end. No wasted verbiage; slightly more could be said about the URL prerequisite, but nothing 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?
With no output schema, the description usefully enumerates the returned fields, which is the right call. However, it omits the critical prerequisite (obtaining a rental URL via redfin_search) and leaves two of four parameters unexplained, so an agent is not fully equipped 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 only 50%: 'url' and 'tld' are documented in the schema, but 'country_code' and 'cache_max_age' are undocumented in both schema and description. The description adds nothing about parameter formats or the caching parameter, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and verb: 'Public details for one Redfin rental' and enumerates the returned fields (price, specs, availability, amenities). The 'for-rent' framing implicitly distinguishes it from redfin_forSale, but no sibling is named explicitly, so an agent must infer the routing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus redfin_search or redfin_forSale, and no note that the required 'url' must first be obtained from redfin_search. The agent is left to infer that this is a detail-fetch step following a search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redfin_forSaleredfin: For-sale property detailsARead-onlyInspect
For-sale property details. Public details for one Redfin for-sale listing: price, specs, agent, price history and nearby schools. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| tld | No | Redfin marketplace, default com. One of: com, ca | |
| url | Yes | Redfin for-sale listing URL, e.g. https://www.redfin.com/CA/San-Francisco/2040-Laguna-St-94115/unit-201/home/1642558 | |
| country_code | No | ||
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint and openWorldHint, and the description adds genuinely new operational context: the data is public, it is scoped to exactly one listing, and each call costs 1 credit. It stops short of explaining caching behavior (despite a cache_max_age param) or what happens with a malformed or non-for-sale URL.
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 resource and payload front-loaded and the cost note at the end where it belongs. The opening 'For-sale property details' largely restates the title, which is the only wasted phrase.
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 data fields, and the read-only/open-world annotations cover the safety profile. What is missing is only edge-case behavior (invalid URL, non-for-sale listing) and the meaning of the two undocumented optional parameters.
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 only 50% — url and tld are documented with an example and allowed values, but country_code and cache_max_age have no description anywhere. The description contributes nothing about parameters, so the two undocumented fields remain opaque and the description fails to compensate for the coverage gap.
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 ('Public details for one Redfin for-sale listing') and enumerates the payload (price, specs, agent, price history, schools), so an agent knows exactly what it returns. The 'for-sale' qualifier implicitly separates it from redfin_forRent, but no sibling is named 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?
Usage is only implied: fetch this when you have a single listing URL. There is no explicit guidance such as 'use redfin_search first to find listing URLs' or 'use redfin_forRent for rentals', even though those siblings exist. The 'Costs 1 credit' note gives a cost threshold but not a when-to-use rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redfin_searchredfin: Search Redfin listing resultsARead-onlyInspect
Search Redfin listing results. Public results from a Redfin search or listing-results page URL (a city, zip code or filtered search). Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| tld | No | Redfin marketplace, default com. One of: com, ca | |
| url | Yes | Redfin search page URL, e.g. https://www.redfin.com/zipcode/94109 | |
| country_code | No | ||
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, and the description adds valuable non-schema context: results are public and the call costs 1 credit. It still does not describe pagination, rate limits, or the shape of returned listings, so it is not fully comprehensive.
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-loads the core action, and includes only useful details such as public availability and credit cost. There is no repetition 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 search tool with annotations and no output schema, the core invocation requirement and credit cost are covered. However, optional parameters are underdocumented and return values, pagination, or result limits 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 50%, and the description adds meaning to the required url parameter by specifying city, zip code, or filtered search URLs. It does not compensate for the undocumented country_code and cache_max_age parameters, and tld is only explained 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 ('Search') and resource ('Redfin listing results'), and clarifies that it operates on a Redfin search or listing-results page URL. It is clear on its own, but does not explicitly distinguish itself from sibling Redfin tools such as redfin_forSale or redfin_forRent.
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 useful input precondition: the URL should come from a city, zip code, or filtered Redfin search page, and it notes a 1-credit cost. However, it gives no explicit guidance on when to use this instead of sibling Redfin search/listing tools or 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.
rumble_channelVideosrumble: Channel videosARead-onlyInspect
Channel videos. A Rumble channel's public uploads, newest first, 25 per page. Pass the cursor from the previous response to page. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | `pagination.cursor` from the previous response | |
| handle | Yes | Channel handle (Asmongold), c/Handle, user/Handle, or a full rumble.com URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and open-world behavior, and the description adds genuinely useful traits: fixed ordering (newest first), page size of 25, cursor-based continuation, and a cost of 1 credit. It stops short of describing failure modes or whether the full upload history is reachable.
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 resource and ordering, then pagination mechanics, then cost. The opening sentence is redundant with the title, but everything after it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with readOnly/openWorld annotations this covers most needs, but with no output schema the description never hints at what an upload record contains, and cache_max_age is left entirely unexplained.
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 67%, so the schema documents handle formats and cursor adequately, and the description reinforces the cursor's paging role. The third parameter, cache_max_age, is undocumented in both the schema and the description, and no parameter meaning is added 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?
The description states the specific resource and scope: a Rumble channel's public uploads, ordered newest first. It is clearly distinguishable from siblings like rumble_video (single video), rumble_search (query-based) and rumble_comments, though the verb is implied rather than explicit and the first sentence only restates the title.
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: supply a channel handle to list its uploads, and pass the cursor from a previous response to continue paging. It never says when to prefer this over rumble_search or rumble_video, nor what happens for a channel with no uploads or an invalid handle.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rumble_commentsrumble: Video commentsBRead-onlyInspect
Video comments. Public comments on a Rumble video, including replies. Rumble hides comments behind a login on some videos; when it does, this returns an unbilled empty result rather than logging in. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Rumble watch URL (rumble.com/v7e9i52-slug.html) or a bare permalink id | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds genuinely useful behavior beyond the readOnlyHint/openWorldHint annotations: on login-gated videos it returns an unbilled empty result rather than failing or authenticating, and the call costs 1 credit. It stops short of describing pagination, ordering, or volume 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?
Short and front-loaded, with the surprising failure mode and credit cost placed before invocation. The opening fragment 'Video comments.' merely restates the title and is the only wasted 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 should sketch what comes back (comment fields, reply nesting, approximate counts); it only says 'including replies'. Also silent on the undocumented cache_max_age, leaving an agent without enough to call it optimally.
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 only 50%: `url` is documented but `cache_max_age` has no schema description, and the tool description says nothing about either parameter. It misses the chance to reinforce accepted URL forms or explain cache_max_age semantics, so the gap is uncompensated.
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: retrieves public comments (including replies) on a Rumble video. Clear against most siblings, though it never explicitly contrasts with rumble_video, which an agent might also consider when it wants per-video 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?
Usage is implied by naming the resource ('comments on a Rumble video'), but there is no explicit when-to-use/when-not or routing to alternatives like rumble_video or rumble_transcript. The login-hiding note is behavioral context, not a selection guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rumble_searchrumble: Search videosBRead-onlyInspect
Search videos. Public Rumble video search results, 25 per page. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | relevance | |
| query | Yes | Search terms | |
| cursor | No | `pagination.cursor` from the previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds two genuinely useful behavioral facts not in the structured data: results are paginated at 25 per page, and each call consumes 1 credit — the cost signal is exactly the kind of context annotations cannot express.
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 purpose, then scope, then the two operational facts that matter most. No filler and nothing repeated from 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 4-parameter search tool with no output schema, the description covers purpose, page size, and credit cost, which is enough to call it correctly in the happy path. It leaves 'sort' and 'cache_max_age' entirely unexplained and says nothing about what a result record contains or how to detect the last page.
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 only 50%: 'query' and 'cursor' are documented in the schema, but 'sort' (with its relevance/views/date enum) and 'cache_max_age' have no description anywhere. The description says nothing about sort ordering or cache behavior, so it fails to compensate for the coverage gap.
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 videos') and scopes it to Rumble, which separates it from the content-fetch siblings (rumble_video, rumble_channelVideos, rumble_comments, rumble_transcript). It does not explicitly name those siblings as alternatives, but the verb 'search' alone disambiguates within the rumble_ family.
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 or when-not-to-use guidance and no alternative named. 'Public Rumble video search results' hints that only public content is covered, but an agent must infer that from the adjective rather than from a stated rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rumble_transcriptrumble: Video transcriptARead-onlyInspect
Video transcript. A Rumble video's captions as one text block plus timed cues. Returns the requested language when the video has it, otherwise the default track. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Rumble watch URL (rumble.com/v7e9i52-slug.html) or a bare permalink id | |
| language | No | Language code, e.g. "en" | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a read-only, open-world operation. The description adds useful behavioral details beyond annotations: output shape (one text block plus timed cues), language fallback to the default track, and a 1-credit cost. It does not describe failure behavior when no transcript exists, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, with no irrelevant content. The opening fragment 'Video transcript.' largely repeats the title, which slightly weakens conciseness, but the remaining sentences each add 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?
There is no output schema, so the description appropriately explains the return shape as one text block plus timed cues. Combined with annotation coverage, language fallback, and cost transparency, this is nearly complete for a read-only retrieval tool; it could be stronger with error/no-transcript behavior.
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 moderate at 67%: url and language are documented, though cache_max_age is not documented in either the schema or the description. The description adds useful semantics for language by explaining the fallback behavior, but the undocumented cache_max_age parameter leaves a gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource and scope: a Rumble video's captions, returned as text plus timed cues. It is more specific than the name alone and implicitly distinguishes transcript retrieval from general video metadata, but it does not explicitly name or contrast with siblings like rumble_video or other transcript 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?
It explains the language fallback behavior but gives no explicit guidance on when to use this tool versus rumble_video, rumble_comments, or transcript tools for other platforms. Usage is only implied by the tool name and resource description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rumble_videorumble: Video detailsBRead-onlyInspect
Video details. Public metadata for a Rumble video: exact view count, likes and dislikes, comment count, duration, upload date, channel and follower count. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Rumble watch URL (rumble.com/v7e9i52-slug.html) or a bare permalink id | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds real value the annotations don't: the 1-credit cost. It says nothing about caching behavior (cache_max_age), failure modes for private/deleted videos, or rate 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?
Two short sentences, front-loaded with the resource and then the returned field list plus 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?
No output schema, so field enumeration substitutes for it, and cost is disclosed. But for a paid, open-world fetch the description omits what happens on invalid/private URLs, whether missing fields are omitted or null, and what cache_max_age does — meaningful gaps for a 2-param tool with 50% schema coverage.
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 50% and description is silent on parameters, but the schema itself documents the critical url format (watch URL or bare permalink id) thoroughly. cache_max_age remains undocumented in both places, which caps this below a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the verb-less but unambiguous purpose: retrieve public metadata for a single Rumble video, and enumerates the fields returned. It is distinguishable from siblings like rumble_search and rumble_channelVideos, though it never names them 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?
No guidance on when to use this versus rumble_search, rumble_channelVideos, rumble_comments, or rumble_transcript — the natural 'I have a URL, I want X' family. Only the implicit signal is the single-video scope and the url requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapchat_profilesnapchat: User profileARead-onlyInspect
User profile. Public Snapchat profile. Creator and business accounts return subscriber count, bio, website and avatar; personal accounts return the handle, display name and Bitmoji avatar, which is all Snapchat publishes for them. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Handle (teamsnapchat) or a snapchat.com/add/<handle> URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and open-world, but the description adds meaningful non-structured context: the 1-credit cost, the fact that only public data is available, and the differing payloads for creator/business vs personal accounts. It stops short of stating failure behavior for unknown or private handles.
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 identity of the tool, then return shape, then cost. Nothing is repeated from the name or schema 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 shoulders the burden of describing return values, and does so per account type. Remaining gaps are edge-case behavior (private/deleted handle) and the undocumented cache_max_age parameter, both minor 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 coverage is 50%: handle is well documented in the schema, while cache_max_age is undocumented in both places. The description implies a handle-based lookup but adds no syntax or format detail beyond the schema, so the baseline 3 holds; it does not compensate for the cache_max_age gap.
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 ('User profile. Public Snapchat profile') and immediately enumerates what is returned, including the account-type split. The snapchat_ prefix plus the profile framing makes it trivially distinguishable from snapchat_spotlight and snapchat_spotlightComments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the description signals 'public profile lookup' so an agent can infer when it applies, but there is no explicit guidance on when to prefer it over other Snapchat tools or what to do when a handle is private/nonexistent. 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.
snapchat_spotlightsnapchat: Spotlight by linkARead-onlyInspect
Spotlight by link. A public Snapchat Spotlight video: view, like, comment and share counts, caption and hashtags, duration, creator, thumbnail, media URL, and the auto-generated transcript when Snapchat has one. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Spotlight URL (https://www.snapchat.com/spotlight/<id>) | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the description does not need to re-establish safety. It adds value the annotations cannot: a stated cost of 1 credit, the fact that only public Spotlights work, and that the transcript is only present 'when Snapchat has one' – a meaningful conditional an agent should plan around.
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 resource identity before the field inventory. The field list is dense but each item is a distinct return value, and the credit cost is placed at the end where it reads as a note rather than burying the lede.
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 carries that burden well by enumerating exactly which fields come back and flagging the transcript's conditional presence. The only gap is the unexplained cache_max_age parameter, which is minor relative to the return-value coverage.
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 only 50%: url is documented in the schema and the description reinforces it with 'by link', but cache_max_age is undocumented in both places, leaving an agent to guess its format and effect. With half the parameters undescribed, the description should have compensated and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely ('A public Snapchat Spotlight video') and enumerates what the tool returns: view/like/comment/share counts, caption, hashtags, duration, creator, thumbnail, media URL, and transcript. It is clearly distinguishable from snapchat_profile, though it does not explicitly contrast with the sibling snapchat_spotlightComments, which is the closest lookalike.
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 link' implies a URL-keyed lookup, which is the main usage signal, but there is no explicit when-to-use guidance, no mention of when to prefer snapchat_spotlightComments for comment data, and no stated fallback. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapchat_spotlightCommentssnapchat: Spotlight comments by linkARead-onlyInspect
Spotlight comments by link. Public comments on a Snapchat Spotlight, ranked the way Snapchat ranks them, with reaction and threaded-reply counts. Pass the cursor from the previous response to page. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Spotlight URL (https://www.snapchat.com/spotlight/<id>) | |
| cursor | No | `pagination.cursor` from the previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the bar is lower, yet the description adds real context beyond them: results are limited to public comments, ordering is Snapchat's ranking and not caller-controlled, and each call costs 1 credit. It stops short of stating rate limits or whether the ranking can drift between pages, which keeps it at 4 rather than 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 what the tool returns and followed by pagination and cost. The opening sentence largely restates the title, which is minor waste, but every other 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 usefully characterizes the return payload (comments, reaction counts, threaded-reply counts) and the pagination contract, plus cost. Missing only minor operational detail such as approximate page size, which is a small gap for a 3-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 67%: url and cursor are already documented in the schema, and the description's note about cursor only echoes the schema text. cache_max_age is undocumented in both places, and the description adds no format or freshness semantics 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+resource: fetching public comments on a Snapchat Spotlight by URL, and adds distinguishing detail (ranked by Snapchat, includes reactions and threaded-reply counts). It is distinguishable from snapchat_spotlight, but it never names that sibling or explicitly says it returns comments rather than the Spotlight post itself, so the differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives paging guidance ("Pass the `cursor` from the previous response to page") which is genuinely useful usage context for a paginated call. However, there is no guidance on when to choose this over snapchat_spotlight or snapchat_profile, and no prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
solo_pagesolo: Solo pageBRead-onlyInspect
Solo page. Public Solo page as a creator profile: display name, bio, avatar, and every outbound link in order. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL (https://solo.to/<username>) or just the username | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds one genuinely useful behavioral fact — 'Costs 1 credit' — and implies it only works against public pages, but says nothing about rate limits, failure modes for private/deleted pages, or caching 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 with the payload description front-loaded and the credit cost placed last where it is easy to scan. The opening 'Solo page.' is a slightly redundant restatement of the title, but the rest 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 correctly compensates by listing the returned fields, which is the most important gap filled. However, the undocumented cache_max_age parameter and the absence of any note on credit cost implications or error behavior leave the definition only partially 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 only 50%: the url parameter is well documented in the schema (accepts full https://solo.to/<username> URL or bare username), but cache_max_age has no schema description and the tool description never mentions it or its accepted format. The description adds nothing about parameters that the schema does not already 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 resource (a public Solo.to creator page) and enumerates exactly what is returned: display name, bio, avatar, and every outbound link in order. It is clear enough to distinguish from generic profile tools, though it never names the near-identical link-in-bio siblings (linktree_page, linkbio_page, taplink_page, komi_page) it competes with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The platform specificity in the name and description ('Solo page', solo.to URL format) implies when to reach for this tool rather than a sibling, but there is no explicit statement of when to use it, when not to, or which alternative handles other link-in-bio hosts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
soundcloud_artistsoundcloud: Artist profileBRead-onlyInspect
Artist profile. Public SoundCloud profile: followers, following, track count, bio, avatar and header image. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Handle (flume), or a full soundcloud.com profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description goes beyond them with two genuinely useful behavioral facts: only public profiles are accessible, and the call 'Costs 1 credit', which is cost/rate information an agent cannot get from structured fields. It stops short of describing failure modes for private or nonexistent handles.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the resource and then the return contents and cost. The opening fragment 'Artist profile' duplicates the title and could be cut, but there is no other 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 compensates by enumerating the returned profile fields, and it discloses cost and public-only scope. The remaining gap is the undocumented cache_max_age parameter and no statement about what happens for invalid or private handles, which is minor for a simple read 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 coverage is only 50%: handle is well documented in the schema ('Handle (flume), or a full soundcloud.com profile URL'), but cache_max_age has no description anywhere. The description text says nothing about either parameter, so it does not compensate for the undocumented one, leaving the agent to guess at caching behavior.
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 second sentence names a specific resource and enumerates exactly what is returned (followers, following, track count, bio, avatar, header), which lets an agent distinguish a profile lookup from soundcloud_track or soundcloud_artistTracks without opening a schema. The lead fragment 'Artist profile' is a restatement of the title and adds nothing, but the substantive sentence carries the purpose.
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 and no mention of alternatives, even though soundcloud_artistTracks is an obvious sibling that an agent would need to choose between for a profile vs. a discography request. The word 'Public' implies only public accounts are reachable, but no prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
soundcloud_artistTrackssoundcloud: Artist tracksARead-onlyInspect
Artist tracks. An artist's public uploads, newest first. Pass the cursor from the previous response to page. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | `pagination.cursor` from the previous response | |
| handle | Yes | Handle (flume), or a full soundcloud.com profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the description adds real value beyond them: result ordering ('newest first'), pagination mechanics, and a credit cost ('Costs 1 credit'). This is meaningful operational context an agent needs before calling. It does not explain whether all uploads are covered (e.g. private/reposts) or the page size 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, front-loaded with the resource definition before the pagination tip and cost. 'Artist tracks' is slightly redundant with the title but is immediately expanded. 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?
Covers ordering, pagination, and cost, which are the key call-time facts for a list tool. With no output schema, the description could say more about what each returned item contains and what limit controls, leaving gaps for a 4-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: handle and cursor are documented in the schema, and the description reinforces cursor usage. However, limit (default 50) and cache_max_age are undocumented in both schema and description, so the description doesn't fully compensate for the coverage gap. Baseline 3 fits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: 'An artist's public uploads, newest first.' An agent can distinguish this from soundcloud_artist (profile) and soundcloud_track (single track) by the plural uploads framing. It stops short of naming those siblings explicitly, but the verb+resource is 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?
Provides pagination guidance ('Pass the cursor from the previous response to page') but gives no explicit when-to-use versus soundcloud_track or soundcloud_artist, and no preconditions. Usage is implied by the resource description rather than stated as guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
soundcloud_tracksoundcloud: Track detailsARead-onlyInspect
Track details. Public metadata for a SoundCloud track: plays, likes, reposts, comments, duration, genre and publisher metadata (ISRC, label, writers). Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Track URL, or "user/track-slug" | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuinely useful context beyond them: the result is public metadata only, and the call 'Costs 1 credit', which is decision-relevant for an agent. It omits any mention of the cache_max_age behavior or failure modes, 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?
Two tight sentences, front-loaded with the resource and then the payload, with the cost note placed last where it belongs. 'Track details.' slightly restates the title but the following clause immediately 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 substitutes by enumerating the return fields, and it discloses cost. The remaining gap is the undocumented cache_max_age parameter and no guidance on invalid-URL behavior, which for a simple read-only lookup is a minor omission.
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 only 50%: 'url' is documented in the schema while 'cache_max_age' is completely undocumented. The description adds no parameter meaning at all — it never mentions accepted URL forms or what cache_max_age controls — so the gap in the schema is not compensated.
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 resource (SoundCloud track) and enumerates the exact fields returned (plays, likes, reposts, comments, duration, genre, ISRC/label/writers), which makes it clearly a single-track lookup rather than a listing. It does not explicitly contrast itself with soundcloud_artistTracks or soundcloud_artist, but the singular scope is evident.
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: you call it when you already have a track URL/slug. There is no statement about when to prefer it over soundcloud_artistTracks (enumerate an artist's tracks) or how to obtain the URL in the first place, and 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.
spotify_albumspotify: Album detailsARead-onlyInspect
Album details. Public Spotify album: title, artist, release date, artwork and total runtime. The track listing, release type (album or single) and track count are in raw. Add include_raw=true. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Spotify album id, spotify:album: URI, or open.spotify.com album URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish a safe, public read (readOnlyHint, openWorldHint), so the description is free to add what annotations cannot: the 1-credit cost and the split between the default payload and what only appears in `raw`. That cost disclosure is exactly the kind of behavioral context an agent needs before deciding how often to call. It stops short of noting caching behavior despite exposing cache_max_age.
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, each doing distinct work: purpose, returned fields, raw-only fields with the enabling flag, and cost. Front-loaded with the answer and nothing 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 burden of describing returns, and it does so by enumerating the default fields and the raw-only additions. Two gaps remain: cache_max_age is never explained, and include_raw is described as a parameter that the schema does not declare, so an agent reading the schema alone would be misled.
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 50%: `id` is documented, `cache_max_age` is not documented anywhere. The description partially compensates by explaining the effect of include_raw, but it never mentions cache_max_age, and worse, include_raw is not present in the input schema at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (Spotify album) and enumerates the concrete fields returned (title, artist, release date, artwork, runtime), which is more informative than the bare title. It does not explicitly distinguish itself from spotify_track, spotify_artist or appleMusic_album, so sibling differentiation is left to the name and the album-specific field list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives one actionable usage rule — add include_raw=true to pull the track listing, release type and track count out of `raw` — which tells the agent when the extra data is worth fetching. It offers no guidance on when to pick this over spotify_search or spotify_track, and no prerequisites beyond the implicit album id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_artistspotify: Artist detailsARead-onlyInspect
Artist details. Public Spotify artist: name, exact follower count, biography, artwork and external links. Monthly listeners and current top tracks with play counts are in raw. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Spotify artist id, spotify:artist: URI, or open.spotify.com artist URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and open-world behavior, but the description adds valuable context: credit cost and a clear partition of response data (top-level fields vs `raw` containing monthly listeners and top tracks). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core purpose, and every sentence adds relevant information (purpose, return scope, cost) without 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?
For a simple read-only tool with no output schema, the description adequately covers returned fields and cost. It falls short on usage alternatives and the meaning of `cache_max_age`, but overall gives enough context 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 50% – the `id` parameter is well-described, but `cache_max_age` is undocumented in both schema and description. The description provides no parameter guidance or syntax details to compensate for the gap.
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 (retrieves details) and resource (Spotify artist), and enumerates the returned fields (name, follower count, biography, artwork, links), clearly distinguishing it from sibling tools like spotify_album or spotify_track.
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 for fetching artist information, but does not explicitly say when to use this tool versus spotify_search or other artist tools, nor does it provide exclusions. The credit cost note is a useful usage hint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_playlistspotify: Playlist contentsARead-onlyInspect
Playlist contents. Public Spotify playlist: name, owner, description, cover art, total track count and its tracks, 50 per cursor page, up to the first 100. On a longer playlist the last page reports hasMore true with a null cursor: the remaining tracks exist but are not served. Costs 1 credit. Pass exactly one of id or url.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Spotify playlist id, spotify:playlist: URI, or open.spotify.com playlist URL | |
| url | No | open.spotify.com playlist URL | |
| cursor | No | Offset into the track list. Pass back `pagination.cursor` | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld annotations by disclosing the truncation behavior that actually matters: 50 tracks per cursor page, a hard cap at the first 100, and the pathological case where the last page sets hasMore=true with a null cursor so the remaining tracks simply cannot be served. It also states the credit cost, which no annotation conveys.
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 resource in two words, then packs the returned fields, page size, cap, truncation edge case, cost, and input exclusivity into four tight sentences. No filler and nothing repeated from 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 carries the full burden of describing returns and does so explicitly, including the ambiguous hasMore/null-cursor end state that would otherwise cause an agent to loop forever. Combined with the credit cost and the id/url rule, an agent has everything needed to call this correctly and interpret the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, and the description adds real value on top: id and url are mutually exclusive ('exactly one of'), which the schema never says, and `cursor` is tied to the hasMore/null-cursor failure mode so an agent knows when pagination is exhausted. The only gap is cache_max_age, which is undocumented in both the schema and the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific resource and scope (a public Spotify playlist) and enumerates exactly what it returns: name, owner, description, cover art, track count and tracks. It does not name or contrast with its nearest siblings (spotify_album, spotify_search, deezer_playlist), 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 one explicit routing rule ('Pass exactly one of `id` or `url`') is a parameter-selection guideline rather than when-to-use guidance. There is no statement about when to pick this over spotify_search, spotify_track, or the equivalent deezer/youtube playlist tools; usage is only implied by the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_podcastspotify: Podcast detailsARead-onlyInspect
Podcast details. A Spotify podcast: title, publisher, description, artwork and episode count, with its rating and topics in raw. Two fields carry something different here than they do elsewhere: category holds the show's publisher, and postCount is its episode count. The unified schema has no publisher field, and naming it here is better than leaving you to infer it. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Spotify show id, spotify:show: URI, or open.spotify.com show URL | |
| market | No | ISO 3166-1 alpha-2 market code | US |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/open-world profile, and the description goes beyond them with the credit cost (1 credit) and the non-obvious field remapping (`category` = publisher, `postCount` = episode count, rating/topics under `raw`). Nothing here contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The payload summary comes first, then the two field-mapping caveats, then cost. The aside ("naming it here is better than leaving you to infer it") is slightly self-referential but earns its place by justifying the caveat.
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 explaining return values, and it does so well, including the two misleadingly named fields. Only the undocumented `cache_max_age` and market behavior leave a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, with `id` and `market` documented in the schema; `cache_max_age` has no description anywhere and the description does not mention it or the market default. The description's field-mapping notes concern outputs rather than parameters, so it adds only marginal parameter 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?
"Podcast details" plus an enumeration of the returned fields (title, publisher, description, artwork, episode count, rating, topics) makes the resource and payload concrete. It does not explicitly differentiate itself from spotify_podcastEpisodes or spotify_search, 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?
There is no statement of when to call this versus spotify_search (to find an id) or spotify_podcastEpisodes (to list episodes). The only conditional information is that `id` accepts a show id, URI, or URL, which the schema already states.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_podcastEpisodesspotify: Podcast episodesARead-onlyInspect
Podcast episodes. Episodes for a Spotify podcast, newest first. Pass the cursor from the previous response to page. hasMore true with a null cursor means the show has more episodes than this response can page to. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Spotify show id, spotify:show: URI, or open.spotify.com show URL | |
| limit | No | ||
| cursor | No | `pagination.cursor` from the previous response | |
| market | No | ISO 3166-1 alpha-2 market code | US |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, but the description adds genuinely non-obvious behavior: result ordering, cursor-based pagination, a truncation edge case where more episodes exist than the API can page to, and a per-call cost of 1 credit. That cost and truncation disclosure is exactly the kind of context annotations cannot 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?
Four short sentences, front-loaded with the resource and ordering, then pagination, then the cost note last. The only waste is the opening fragment 'Podcast episodes.', which merely restates the title and the tool name before the useful sentence arrives.
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 two response fields (`cursor`, `hasMore`) and explains their failure mode, which is more than most list tools offer. What remains uncovered is the shape of an episode object and the meaning of `limit`/`cache_max_age`, but for a straightforward paginated listing this is close to sufficient.
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 60%, so `id` and `cursor` are documented structurally; the description reinforces cursor semantics by tying it to 'the previous response.' But `limit`, `market`, and `cache_max_age` receive no explanation in either place, and the description does not compensate — no max limit, no statement of what market changes for episode availability.
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 second sentence states the resource precisely — episodes belonging to a Spotify podcast — and adds an ordering guarantee (newest first) that an agent can rely on. It is clearly not the show-metadata tool (spotify_podcast) or a search tool, though it never names those siblings explicitly, so the differentiation is inferential rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is solid guidance for using the response (pass `cursor` from the previous response to page) and for the terminal condition (`hasMore` true with null `cursor`). However, there is no guidance on when to choose this tool over spotify_podcast or spotify_search, so the selection decision is left implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_searchspotify: SearchARead-onlyInspect
Search. Search Spotify's catalogue for tracks, albums, artists, podcasts or episodes. Uses Spotify's official Web API, so this endpoint needs app credentials; everything else on this platform is keyless. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | track | |
| limit | No | ||
| query | Yes | Search terms | |
| market | No | ISO 3166-1 alpha-2 market code | US |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered; the description adds genuinely non-obvious context that this endpoint requires Spotify app credentials while the rest of the platform is keyless, plus a 1-credit cost. It adds nothing about pagination, result caps, or empty-result behavior, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and followed by the operational constraints, with no filler. The leading standalone "Search." is redundant with the sentence that follows and is the only wasted token.
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 should tell the agent what a result looks like and how type/limit shape it, but it doesn't. It does cover the two things an agent can't infer elsewhere (auth requirement, credit cost), so it is adequate rather than 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 only 40% for 5 parameters, so the description must compensate: the phrase "tracks, albums, artists, podcasts or episodes" loosely maps to the type enum (with 'podcasts'/'episodes' corresponding to 'show'/'episode'), but limit, market, and cache_max_age receive no explanation anywhere. An agent must guess what limit does or whether market changes filtering.
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 Spotify's catalogue") and enumerates the searchable entity types, which separates it from the single-entity siblings like spotify_track or spotify_album. It stops short of explicitly saying 'use spotify_track when you already have an ID', leaving the boundary with siblings only implied.
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 Spotify's catalogue" and the enumeration of types, and the credential note signals this is a different setup path from the keyless siblings. However there is no explicit when-to-use/when-not guidance, and the real alternative (fetch a known item directly via spotify_track/spotify_album instead of searching) is never mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spotify_trackspotify: Track detailsBRead-onlyInspect
Track details. Public Spotify track: title, artists, artwork, duration, release date and the preview clip URL. viewCount is the play count when the track is among its artist's top tracks, and null otherwise. The explicit-content label is in raw. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Spotify track id, spotify:track: URI, or open.spotify.com track URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuinely non-obvious behavior: viewCount is null unless the track is among the artist's top tracks, the explicit label lives inside `raw`, and each call costs 1 credit. That null-vs-populated nuance is exactly the kind of conditional data behavior 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?
Four short sentences, front-loaded with the core purpose followed by return fields then edge cases then cost. Every sentence carries information. Minor weakness: the credit-cost note sits last when it is the kind of gating detail that could be 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-shape burden and does so well by enumerating fields plus the conditional viewCount and where the explicit flag lives. What's missing is error/empty behavior (e.g. invalid id, region-restricted track) and any mention of the cache_max_age parameter.
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 only 50%: `id` is documented in the schema with accepted formats (id, spotify:track: URI, URL), but `cache_max_age` has no description anywhere. The description compensates for neither gap and devotes no text to parameter meaning, so the undocumented parameter stays opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource (a public Spotify track) and enumerates the exact fields returned: title, artists, artwork, duration, release date, preview clip URL. That is far beyond restating the name. It does not explicitly contrast itself with nearby siblings such as spotify_search or spotify_album, 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?
There is no statement of when to use this tool versus spotify_search (to find an id) or spotify_album / spotify_artist. The only usage-adjacent detail is the cost line ('Costs 1 credit'), which helps budgeting but not selection. The agent must infer that it needs a known track id already.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
substack_commentssubstack: Post commentsARead-onlyInspect
Post comments. Every public comment on a Substack post, replies included, newest first; parentId links a reply to its comment. Comments a publication shows only to paid subscribers are not available. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Numeric post id, as returned in `id` by `substack.posts` | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the bar is lower, yet the description adds real value: newest-first ordering, replies included with parentId linkage, exclusion of paid-only comments, and a cost of 1 credit. That is meaningful operational context beyond the 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 clauses, front-loaded with the resource and its ordering, then the coverage caveat and cost. Minimal waste, though the opening 'Post comments' fragment is slightly misleading and could be tightened into a single verb phrase.
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 return-shape duty and does so adequately: ordering, reply nesting via parentId, and what is excluded. Missing only pagination/limit behavior and any explanation of cache_max_age, but an agent can 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 50%: `id` is well documented in the schema, but `cache_max_age` is undocumented in both schema and description. The description mentions parentId, which is a response field rather than a parameter, so it does not compensate for the coverage gap; baseline 3 fits.
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 lead 'Post comments' is ambiguous on its own (reads like a write verb), but the next clause disambiguates: 'Every public comment on a Substack post, replies included, newest first' — a specific resource with scope. It is clearly a read of comments tied to a post, distinct from substack_post/substack_posts, though it never names 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?
Usage is only implied: an agent infers it should call this when it has a post id and wants the comment thread, and the 'paid-subscriber comments not available' note signals a coverage boundary. There is no explicit when-to-use statement and no routing to alternatives such as substack_post or substack_posts to obtain the id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
substack_postsubstack: PostBRead-onlyInspect
Post. One Substack post with its text, reactions, comments, restacks and word count. For a subscriber-only post, text is the public preview and truncated is true. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Numeric post id, as returned in `id` by `substack.posts` | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds two genuinely non-obvious behaviors beyond that: the 1-credit cost and the paywall truncation rule where `text` becomes a public preview and `truncated` flips true. It does not cover caching 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 compact sentences, no padding, and the most decision-relevant caveat (paywall truncation) is placed early. The opening 'Post.' is wasted space and slightly 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 carries the return-shape burden and does so by naming the returned fields and the `truncated` flag. Cost and paywall semantics are covered. The remaining gap is the undocumented `cache_max_age` parameter.
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 only 50%: `id` is documented in the schema, but `cache_max_age` is undocumented in both schema and description, and the description never explains it. It also adds nothing about the id format beyond what the schema already says. With a low-coverage schema, the description should compensate and does not.
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 it returns one Substack post and enumerates the payload (text, reactions, comments, restacks, word count), which distinguishes it from the list-oriented substack_posts sibling. The leading fragment 'Post.' is a weak, near-tautological opener, but the sentence that follows resolves the ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this versus substack_posts, substack_comments, or substack_profile, and no mention of prerequisites such as needing an id obtained elsewhere. The only implied signal is 'one Substack post', which hints at single-item retrieval but does not route the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
substack_postssubstack: Publication postsARead-onlyInspect
Publication posts. A publication's posts, newest first, with reactions, comments, restacks and word count. Substack shows no view counts. Pass the cursor from the previous response to page. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| cursor | No | `pagination.cursor` from the previous response | |
| publication | Yes | The publication: its name on Substack (garymarcus), its host (garymarcus.substack.com or www.lennysnewsletter.com), or any URL on it | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, and the description adds real value on top: newest-first ordering, the returned metric fields, the caveat that Substack exposes no view counts, and a 1-credit cost. That's solid beyond-schema context, though nothing is said about failure modes for invalid publications.
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 that each carry information: purpose, payload, data caveat, pagination, cost. Minor waste in the leading fragment 'Publication posts,' which restates the title, but nothing else 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?
For a 4-parameter read tool with no output schema, the description covers return contents, ordering, pagination, and cost, which is most of what an agent needs. The unexplained `limit` and `cache_max_age` parameters are 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 coverage is 50%: publication and cursor are documented in the schema, and the description only restates cursor paging. The `limit` (default 20) and `cache_max_age` parameters get no explanation anywhere, so the description doesn't compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: a publication's posts, newest first, including the fields returned (reactions, comments, restacks, word count). It's clear it lists many posts rather than one, but it never names substack_post or substack_comments, so differentiation from siblings is left to the agent.
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 'Publication posts' framing plus the cursor instruction implies usage, but there is no explicit when-to-use, when-not-to-use, or pointer to the single-post or comments siblings. An agent must infer the boundary itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
substack_profilesubstack: ProfileARead-onlyInspect
Profile. A Substack writer's public profile: followers, bio, links, and their main publication. Subscribers appear only as Substack's rounded badge. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Substack handle (lenny), @handle, or a substack.com/@handle URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint and openWorldHint already declared, the description still adds real value: it discloses that subscriber counts are only Substack's rounded badge (a data-fidelity caveat that prevents misreporting) and that the call costs 1 credit. It does not contradict 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 short sentences with no filler, and the important caveats (subscriber rounding, credit cost) are placed last where they are still easy to scan. The leading 'Profile.' repeats the title and title field, wasting one of the few slots.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of describing returns, and it does enumerate the payload (followers, bio, links, main publication) plus the subscriber-count caveat. The only material omission is any hint about the undocumented cache_max_age parameter.
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 50%: 'handle' is fully documented with accepted formats (bare handle, @handle, URL), but 'cache_max_age' is described nowhere and the description does not compensate. The description implies the lookup is keyed on the writer's identity, but adds no format or caching 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?
The first sentence is a tautology ('Profile'), but the second specifies the resource precisely: a Substack writer's public profile with followers, bio, links, and main publication. That distinguishes it from the content-oriented siblings (substack_post, substack_posts, substack_comments), though it never names substack_publication as the alternative for publication-level data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the resource itself (fetch a writer's profile). There is no explicit when-to-use guidance, no statement of the handle prerequisites, and no routing to the sibling tools that cover posts, comments, or publications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
substack_publicationsubstack: PublicationBRead-onlyInspect
Publication. A Substack publication: name, description, author, custom domain, whether it sells paid plans, and its rounded subscriber badge. Custom domains are accepted. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| publication | Yes | The publication: its name on Substack (garymarcus), its host (garymarcus.substack.com or www.lennysnewsletter.com), or any URL on it | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful non-annotated context: the operation costs 1 credit and custom domains are accepted as input. It does not cover caching behavior implied by cache_max_age or why a 'rounded' subscriber badge matters (precision loss in the returned 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 resource type and the returned field list. The leading fragment 'Publication.' duplicates the title, but the remaining content is dense 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 field enumeration in the description is what tells an agent what comes back, and it does that adequately. The main residual gaps are the undocumented cache_max_age parameter and the absence of any cue separating this from substack_profile.
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 50%: the `publication` parameter is well documented in-schema, while `cache_max_age` has no description anywhere. The description usefully reinforces that custom domains are accepted, which expands acceptable input formats beyond the schema's examples, but it says nothing to compensate for the undocumented cache_max_age 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 clearly identifies the resource as a Substack publication and enumerates the returned fields (name, description, author, custom domain, paid plans, subscriber badge), which makes the retrieval purpose concrete. It lacks an explicit verb and never distinguishes itself from the close sibling substack_profile, so an agent cannot tell from the description alone which one fetches publication-level data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool, no exclusions, and no reference to any of the four Substack siblings (substack_profile, substack_post, substack_posts, substack_comments). The only usage-adjacent remark is the cost note, which is not guidance about tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
taplink_pagetaplink: Taplink pageBRead-onlyInspect
Taplink page. Public Taplink page as a creator profile: display name, bio, avatar, and every outbound link in order. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page URL (https://taplink.cc/<username>) or just the username | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered; the description adds non-structured value by disclosing a billing cost (1 credit) and by describing the return payload, which matters because no output schema exists. It stops short of saying whether a credit is still charged on failure or what happens for private/nonexistent 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?
Three compact sentences that put the identity of the tool first and the cost last — no filler. The opening 'Taplink page.' is slightly redundant with the title but functions as a lead.
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 read with no output schema, describing the returned fields is the right instinct and is done well. But one parameter is left completely unexplained and the credit-charging semantics (per call? per success?) are ambiguous, which matters for an agent deciding whether to retry.
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 description says nothing about parameters. With schema coverage at 50%, the undocumented `cache_max_age` parameter is explained nowhere at all, and the description does not reinforce the useful 'username or full URL' flexibility the schema offers. It therefore fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource (a public Taplink creator page) and enumerates what it returns: display name, bio, avatar, and ordered outbound links. That is specific enough for an agent to know what it gets. However, it never distinguishes itself from the many identical-shaped siblings (linktree_page, linkbio_page, linkme_page, solo_page, komi_page, pillar_page), so the reader must infer that the only difference is the platform.
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 guidance, and no mention of prerequisites (e.g. that the page must be public). Given a sibling list containing nearly a dozen link-in-bio page tools, the absence of any routing advice is a real gap — the agent cannot tell from the description alone when Taplink is the right pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_channeltelegram: ChannelARead-onlyInspect
Channel. Public Telegram channel or group metadata including its name, description, avatar, verification status, subscriber or member count, and public media counters. The subscriber or member count is exact, read from the channel's t.me page, and falls back to the rounded preview value ("9.66M") when that page cannot be read. The media counters in raw.counters are Telegram's rounded display text. Uses Telegram's public web preview and does not use a logged-in Telegram account, so private channels, invite-only groups and user accounts are not covered. An old username still resolves to the channel that took it over, so handle here is the header username and may differ from the one inside a post id, so join on a post id, never on the handle. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Public channel or group username: @telegram, telegram, or https://t.me/telegram | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint and openWorldHint annotations, it discloses exact-count fallback behavior, rounded media counters, public-web-preview/no-login access, exclusion of private and user accounts, old-username takeover semantics, and the 1-credit cost. This is rich behavioral context that materially helps correct invocation.
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 is front-loaded in the first sentence, followed by tightly relevant caveats about exact counts, rounded counters, access limitations, handle behavior, and cost. Despite being longer than a minimal definition, every sentence adds actionable context and there is little 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 does the necessary work by enumerating the returned metadata fields and explaining count reliability and counter rounding. It also covers access limitations, handle caveats, and cost, leaving only the optional cache_max_age parameter unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already explains the handle formats, but the description adds important semantic nuance: an old username resolves to the channel that took it over, and the handle may differ from the one embedded in a post id. It does not describe cache_max_age, which is undocumented in the schema as well, so the 50% schema coverage is only partially compensated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource and the returned metadata: public Telegram channel or group metadata, including name, description, avatar, verification, subscriber count, and media counters. It does not explicitly name the sibling telegram_channelPosts as the alternative for posts, so sibling differentiation is implied rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear coverage boundaries: public web preview only, no logged-in account, and private channels, invite-only groups, and user accounts are not covered. It also warns to join on a post id rather than the handle. However, it does not explicitly direct the agent to telegram_channelPosts for posts or another sibling for related data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_channelPoststelegram: Channel postsARead-onlyInspect
Channel posts. One public web-preview page of Telegram posts with text, publish date, views, reactions when exposed, forwards, media (photos and the playable video file), and link previews. Twenty posts per page, newest first. Pass the returned cursor to fetch the previous page. Empty and terminal pages are not charged. viewCount is Telegram's own rounded display value ("1.37M" → 1370000), not an exact count; the original text is in raw.messages[].viewsText. likeCount totals every public reaction, paid stars included, from Telegram's rounded display values, and is null when a post shows no reactions. Each reaction, the forward source and the link preview are under raw. A post id carries the CANONICAL username of the channel, which differs from the one you asked for when an old username still resolves to it. Join on id, not on the handle you passed. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | `pagination.cursor` from a previous response | |
| handle | Yes | Public channel or group username: @telegram, telegram, or https://t.me/telegram | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint/openWorldHint already covering the safety profile, the description adds substantial non-obvious behavior: per-page size and ordering, cursor direction, billing model ('Costs 1 credit', 'Empty and terminal pages are not charged'), and precision semantics for viewCount and likeCount (rounded display values, null when no reactions). It also discloses where raw data lives (raw.messages[].viewsText, reactions, forward source, link preview) and warns that a post id carries the canonical username rather than the handle requested.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense and mostly front-loaded: content shape first, then pagination mechanics, then caveats about the derived counts, then cost. Nearly every sentence carries distinct information, though the first fragment 'Channel posts.' is a weak lead and the cluster of backticked field names makes the back half read as a data dictionary rather than guidance.
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 must carry return-shape burden, and it largely does: it names the payload fields, the pagination cursor path, the raw container for nested data, and the precision quirks of viewCount/likeCount. It leaves the top-level envelope structure and terminal-page signaling (how an agent detects an exhausted channel) unstated, which keeps it short of complete for a paginated listing 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 67%, so baseline is 3. The description genuinely enriches the handle parameter with a semantic caveat (canonical usernames differ from the one passed, so join on id) that the schema's format examples do not convey, and it reinforces cursor usage. But cache_max_age is undocumented in both schema and description, and the description never repeats or extends the accepted handle formats, so the coverage gap is only partly compensated.
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: it returns one public web-preview page of a Telegram channel's posts, and enumerates what each post carries (text, publish date, views, reactions, forwards, media, link previews). An agent can tell this is a paginated post listing rather than a profile lookup, but the description never names its siblings telegram_channel or telegram_post, so the boundary between them 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?
It gives concrete pagination procedure: 'Pass the returned cursor to fetch the previous page', newest-first ordering, and 20 posts per page, which is real guidance for repeated invocation. However, it never says when to reach for this tool instead of telegram_channel (channel metadata) or telegram_post (single post), nor any exclusions or prerequisites, so the when-to-use-vs-alternatives question is only implied by the phrase 'channel posts'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
telegram_posttelegram: PostARead-onlyInspect
Post. A single public Telegram post with its text, publish date, views, reactions when exposed, forward source, media (photos and the playable video file), and link preview. viewCount is Telegram's own rounded display value ("1.37M" → 1370000), not an exact count; the original text is in raw.viewsText. likeCount totals every public reaction, paid stars included, from Telegram's rounded display values, and is null when the post shows no reactions. Each reaction, the forward source and the link preview are under raw. Reads the public post embed and does not use a logged-in Telegram account. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Post link: https://t.me/<handle>/<message id>, for example https://t.me/telegram/441 | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint, so the description adds real value: it discloses that no logged-in account is used, that the call costs 1 credit, that view/like counts are Telegram's rounded display values (with raw.viewsText preserving the original), and that likeCount is null when no reactions exist. These are non-obvious data-shape caveats an agent could not get elsewhere. It stops short of addressing rate limits, failure modes for private/deleted posts, or pagination.
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 body is dense but nearly every clause conveys a distinct data-shape fact (rounding, null semantics, where raw fields live). The leading sentence fragment 'Post.' is pure title restatement and earns nothing. Otherwise it is front-loaded with what the tool returns before the access/credit caveats.
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 explaining return values and does so thoroughly, including rounding behavior and null semantics for reactions. The remaining holes are the undocumented cache_max_age parameter and lack of sibling routing guidance, but the field-level explanation is unusually complete for a scraper tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: the url parameter is well documented in the schema with a concrete example, so no description help is needed there. The second parameter, cache_max_age, is undocumented in both the schema and the description, and the description does nothing to compensate for that gap.
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?
It states a specific resource (a single public Telegram post) and enumerates exactly what is returned: text, publish date, views, reactions, forward source, media, link preview. The phrase 'Reads the public post embed' also pins down the mechanism. It does not, however, contrast itself with the sibling telegram_channelPosts (which presumably lists many posts), leaving that distinction to 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?
There is no explicit when-to-use guidance and no mention of when to prefer telegram_channelPosts or telegram_channel instead. The only implied signal is the required URL parameter, which suggests single-post lookup, but an agent must infer that from the schema rather than the text.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
threads_postthreads: PostCRead-onlyInspect
Post. A single public Threads post with like count, reply count, and any attached media. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Post URL (https://www.threads.com/@handle/post/ABC) or a shortcode | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety and external-dependency behavior are covered. The description adds one genuinely useful operational fact — "Costs 1 credit" — and hints at return contents, but says nothing about failure modes for private/deleted posts or how cache_max_age affects freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and readable, but the leading "Post." is pure redundancy with the title, and the credit-cost note is stranded at the end rather than front-loaded with the usage 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 does carry the burden of describing returns, and it partially does (like count, reply count, media). But the undocumented cache_max_age and the absence of any error/edge-case behavior for a public-post lookup leave it only minimally 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 only 50%: the url parameter is documented in the schema, but cache_max_age has no description anywhere. The description does not compensate — it never mentions URL formats, shortcode acceptance, or caching behavior, leaving half the surface undocumented.
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?
"Post." merely restates the tool name; the useful content is the second sentence, which says it returns a single public Threads post with like count, reply count, and media. That clarifies scope (one post vs. many) but never states the action verb (fetch/retrieve), so the agent must infer it from readOnlyHint.
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 guidance on when to use this versus threads_userPosts, threads_search, or threads_profile, all of which could plausibly return post data. The URL-shaped input is the only implicit routing signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
threads_profilethreads: ProfileARead-onlyInspect
Profile. Public Threads profile: follower count, bio, bio links, avatar, and verification status. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Handle (@zuck) or a threads.com profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the description's job is supplementary; it does add the credit cost ('Costs 1 credit') and the public-data scope, both concrete traits not present in annotations. It stops short of saying what happens for private, suspended, or nonexistent handles.
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 no padding, and the returned-field list is packed efficiently. The leading 'Profile.' fragment merely restates the title and earns no 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?
There is no output schema, so the description usefully enumerates the returned fields, which is exactly what an agent needs. The remaining holes are error/edge behavior for non-public handles and the meaning of cache_max_age.
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 only 50% and the description says nothing about parameters. The handle parameter is well documented in the schema itself, but cache_max_age is undocumented in both places, and the description does not compensate for that gap.
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 the resource (Threads profile) and enumerates the returned fields (followers, bio, bio links, avatar, verification), which goes beyond the bare title. It does not explicitly distinguish itself from siblings like threads_searchUsers or threads_userPosts, 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?
Usage is implied: supply a handle or profile URL, get that profile. The word 'Public' hints at a scope limit, but there is no statement of when to use this versus threads_searchUsers (finding a handle) or threads_userPosts (fetching content).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
threads_searchthreads: Search posts by keywordCRead-onlyInspect
Search posts by keyword. Public Threads posts matching a keyword. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Keyword to search for | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds one genuinely non-obvious trait — 'Costs 1 credit' — but says nothing about result limits, pagination, or how far back the public index reaches, which matters for a search 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 short fragments, front-loaded with the core action and with the cost note at the end where it belongs. The second sentence largely restates the first ('posts by keyword' vs 'posts matching a keyword'), which is 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?
No output schema exists, yet the description says nothing about what a result contains, how many are returned, or how to page through them. Combined with the undocumented cache_max_age parameter, an agent cannot predict response behavior before spending a credit.
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 only 50%: 'query' is documented but 'cache_max_age' has no description anywhere. The description does not explain the cache parameter's format or effect, so it fails to compensate for the coverage gap.
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 (public Threads posts matched by keyword), which separates it from threads_searchUsers and threads_userPosts by resource type. It never names the sibling alternatives explicitly, so differentiation comes from the name rather than the text.
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, and no mention of the obvious alternatives (threads_searchUsers for people, threads_userPosts for a known account's timeline). The only implicit scoping is 'public' posts, which the agent has to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
threads_searchUsersthreads: Search usersBRead-onlyInspect
Search users. Public Threads accounts matching a keyword. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Keyword or partial handle | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and openness are covered. The description usefully adds that results are limited to public accounts and that the call costs 1 credit, but it does not describe return shape, pagination, or caching 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 purpose and scope, with no filler. Every sentence adds a distinct fact: action, scope, and 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?
For a simple search tool this covers the core purpose and cost, but it leaves meaningful gaps for an agent navigating many sibling tools. It lacks routing guidance versus threads_search and threads_profile, and it does not explain the undocumented cache_max_age parameter.
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 required query parameter is already documented in the schema as 'Keyword or partial handle', and the description only restates the keyword idea without adding syntax or matching behavior. The second parameter, cache_max_age, is undocumented in both the schema and the description, leaving half the parameters unexplained.
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 users') and scopes it to public Threads accounts matching a keyword. It is clear on its own, but it does not distinguish itself from nearby siblings such as threads_search or threads_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, no when-not-to-use guidance, and no named alternatives. The agent must infer that this is for user discovery rather than generic Threads search or profile lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
threads_userPoststhreads: User postsARead-onlyInspect
User posts. Public posts from a Threads profile in the order the profile shows them, with like, reply and repost counts. Pass pagination.cursor back as cursor for the next page. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | `pagination.cursor` from a previous response | |
| handle | Yes | Handle (@zuck) or a threads.com profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as a read-only open-world operation. The description adds useful behavioral context: results are public, ordered as the profile shows them, include like/reply/repost counts, support cursor pagination, and cost 1 credit. It does not cover auth or error behavior, but the added cost and pagination context is significant.
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 short and front-loaded with the core purpose, then pagination and cost details. The opening fragment 'User posts.' is slightly redundant with the title, but overall there is little wasted text.
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 limited annotations, the description still gives an agent enough to call the tool: it identifies the returned post type, ordering, engagement counts, pagination mechanism, and credit cost. The main remaining gap is cache_max_age semantics.
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 67%, with cursor and handle documented in the schema. The description clarifies that pagination.cursor should be passed back as cursor for the next page, but it does not add meaning for cache_max_age or expand on handle formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and scope: public posts from a Threads profile, in profile display order, with engagement counts. It is clearly not a single-post or profile tool, though it does not explicitly name sibling alternatives.
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 what the tool returns but gives no explicit when-to-use guidance versus siblings such as threads_profile, threads_post, or threads_searchUsers. It also does not state prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_adLibraryAdtiktok: One TikTok adARead-onlyInspect
One TikTok ad. One TikTok ad by id or URL. Two public surfaces carry ads and an id alone does not say which: Creative Center Top Ads (ads.tiktok.com) is checked first, then the Commercial Content Library (library.tiktok.com). Pass a URL from either and only that source is queried. Both return the same Ad shape; fields a source does not publish are null rather than inferred - Top Ads carries no flight dates or advertiser entity, and the library carries no performance metrics. countries here is the ad's own targeting, unlike a search result's, where it is the market that was searched. An id neither source knows is a 404; an id that only one source could be asked about is not, because a source that did not answer has not said no. Reach bands stay in raw, not in the impressions fields, because reach is not impressions. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| ad_id | Yes | Numeric ad id, a library.tiktok.com `/ads/detail?ad_id=` URL, or an ads.tiktok.com Top Ads URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only annotation, the description discloses the source-check order, source-specific null behavior, 404 semantics when an id is unknown to both sources, the cost of one credit, and the deliberate placement of reach data in raw. It also clarifies a subtle field meaning: countries here is ad targeting, not search-market 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?
The description is dense but front-loaded, starting with what the tool returns and then explaining source resolution. It is somewhat long, but nearly every sentence carries behavioral or semantic information relevant to correct invocation.
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 does a good job explaining the shared Ad shape and source-specific null fields, as well as 404 and reach-field behavior. It is nearly complete, though the undocumented cache_max_age parameter remains a 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?
The description richly explains ad_id as a numeric id or URL from either surface, going beyond the schema's brief note. However, schema coverage is only 50% and cache_max_age is neither described in the schema nor mentioned in the description, leaving one parameter undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and retrieval mode: one TikTok ad by id or URL. It also distinguishes this lookup from its dual-source resolution behavior and from broader search semantics, so an agent can identify the correct 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?
It clearly explains when a URL restricts the query to one surface and when an id triggers the Creative Center-then-Library fallback. The only gap is that it does not explicitly name tiktok_adLibrarySearch as the alternative for discovery rather than direct lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_adLibrarySearchtiktok: Search the TikTok Ads LibraryARead-onlyInspect
Search the TikTok Ads Library. Ads in TikTok's public Commercial Content Library, by keyword (query) or by advertiser (advertiser_name). An advertiser name is resolved through TikTok's own typeahead first, then searched as an entity, so it matches the registered legal name ("NIKE Retail B.V.") rather than a brand. Results are NOT global: TikTok publishes this archive per market and refuses a search without one, so region is required, validated against the market list the library itself publishes rather than a fixed list here, and every result ran in that market, which is what each ad's countries reports. TikTok returns its own relevance ranking; we ask for the most recently shown first, but that is only a tiebreak within it, so results are not ordered by date. Cursor-paginated 12 at a time, each ad carrying its public library.tiktok.com detail URL. Pages are not guaranteed disjoint: the archive re-ranks live, so an ad can repeat across pages. Political and election ads are outside the archive. Reach is published as a band and is not impressions, so it stays in raw.estimated_audience rather than the impressions fields. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Keyword, matched against ad text and advertiser name | |
| cursor | No | `pagination.cursor` from a previous response | |
| region | Yes | Market to search. TikTok publishes this archive per market; one of AT, BE, BG, CH, CY, CZ, DE, DK, EE, ES, FI, FR, GB, GR, HR, HU, IE, IS, IT, LI, LT, LU, LV, MT, NL, NO, PL, PT, RO, SE, SI, SK, TR. | |
| cache_max_age | No | ||
| advertiser_name | No | Advertiser name, resolved through TikTok's typeahead to one advertiser entity |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond the readOnly/openWorld annotations: discloses advertiser-name typeahead resolution to legal entity, region-scoped results with per-market `countries`, relevance ranking with recency only as a tiebreak (explicitly not date-ordered), cursor pagination of 12, non-disjoint pages that can repeat ads, political ads excluded, reach reported as a band in `raw.estimated_audience`, and a 1-credit cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and search modes, then dense operational caveats, nearly all of which are decision-relevant (region requirement, ranking, page overlap, reach semantics, credit cost). It is information-rich but quite long and clause-dense, costing a little on readability.
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 5-param read tool with no output schema, the description covers what an agent needs: required params and their semantics, return shape hints (`countries`, detail URL, `pagination.cursor`, `raw.estimated_audience`), ordering guarantees, and pagination behavior.
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 80%, so the baseline is 3; the description adds real meaning by explaining that `region` is validated against the library's own published market list (rather than a fixed local list) and that `advertiser_name` matches the registered legal name ("NIKE Retail B.V.") rather than a brand. It adds little for `query`, `cursor`, or `cache_max_age` 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+resource ("Search the TikTok Ads Library") and immediately enumerates the two search modes (keyword `query` vs `advertiser_name`). This lets an agent distinguish it from tiktok_adLibraryAd (detail fetch) and the analogous facebook/google ad-library search tools 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 clear when-to-use framing: it is the search entry point, `region` is mandatory and required, and political/election ads are out of scope. It does not explicitly name which sibling to call for per-ad detail (tiktok_adLibraryAd) or how it differs from the other platform ad searches, so it falls short of full alternatives routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_collectionVideostiktok: Collection videosARead-onlyInspect
Collection videos. Videos in a public TikTok collection, a creator-curated playlist of other people's posts as well as their own. Costs 1 credit. Pass either url or collection_id.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Collection URL, e.g. https://www.tiktok.com/@nasa/collection/Artemis-7123… | |
| count | No | Items per page (default 20, max 30) | |
| cursor | No | `pagination.cursor` from a previous response | |
| cache_max_age | No | ||
| collection_id | No | Numeric collection id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, openWorldHint), and the description adds two non-structured facts: the call costs 1 credit and only public collections are accessible. It does not describe pagination behavior despite the cursor parameter, but the annotations carry that lower bar.
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 resource and immediately followed by the identifying constraint and cost. The opening fragment "Collection videos." restates the title and earns little, but the rest is waste-free.
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 5-parameter read tool with no output schema, the description is adequate: it gives the resource, the cost, and the required parameter choice. It leaves unaddressed how to discover a collection_id and how this differs from the playlist siblings, which is the one gap an agent would actually hit.
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 80%, so the baseline is 3, and the description adds a real constraint the schema does not encode: url and collection_id are mutually exclusive alternatives (both are plain optional in the schema). Beyond that it adds nothing for count/cursor/cache_max_age.
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: videos contained in a public TikTok collection, and clarifies what a collection is (creator-curated playlist of others' and own posts). It does not differentiate from the near-identical siblings tiktok_playlists / tiktok_playlistVideos, which is the main ambiguity an agent would face, 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?
"Pass either `url` or `collection_id`" gives invocation guidance but no when-to-use guidance: it never says how to obtain a collection_id (presumably tiktok_playlists) or when to prefer this over tiktok_playlistVideos. Usage is implied only by the resource name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_commentRepliestiktok: Replies to a commentARead-onlyInspect
Replies to a comment. The reply thread under one TikTok comment. parentId on each reply points back at the comment it answers, so nested threads reconstruct cleanly. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The video the comment is on: URL, share link, or numeric id | |
| count | No | Items per page (default 20, max 50) | |
| cursor | No | `pagination.cursor` from a previous response | |
| comment_id | Yes | `id` of the parent comment, from `tiktok.comments` | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover read-only and open-world status, but the description adds two things not in structured data: the 1-credit cost and the shape of the result (each reply carries parentId pointing at the comment it answers, so threads reconstruct). It does not mention pagination limits or rate behavior, but the credit disclosure is genuinely useful pre-call context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with purpose, then structure, then cost. Minor redundancy between "Replies to a comment" and "The reply thread under one TikTok comment," which say nearly the same thing.
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 explains the reply-object linkage (parentId) and the credit cost, and the required comment_id/url are fully documented in the schema. What's missing is pagination guidance (count defaults to 20, max 50, cursor round-trip) — that lives only in the schema, which is acceptable but leaves the description slightly short for a paginated list 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 80%, so the baseline is 3. The description adds no parameter-level meaning beyond the schema — comment_id's provenance from tiktok.comments, count/cursor semantics, and the url forms are all already documented. The parentId sentence describes response structure, not an input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely: the reply thread under one TikTok comment, with the parent linkage made explicit. It is clearly the child of tiktok_comments (referenced via the comment_id param), though it never names that sibling directly. The opening "Replies to a comment" reads momentarily like a write action before the second sentence establishes it as a retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: you need a comment_id sourced from tiktok.comments, and this returns its nested replies. There is no explicit when-to-use/when-not, and no routing between this and top-level tiktok_comments for an agent that hasn't already fetched comments.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_commentstiktok: Comments on a videoARead-onlyInspect
Comments on a video. Top-level comments on a TikTok, with like counts, reply counts, pinned status and a flag for the creator's own replies. Use tiktok.commentReplies to expand a thread. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Video URL (preferred), share link, or numeric video id | |
| count | No | Items per page (default 20, max 50) | |
| cursor | No | `pagination.cursor` from a previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only and open-world profile; the description adds real context beyond that by disclosing the returned fields (like counts, reply counts, pinned status, creator flag) and a 1-credit cost. It does not describe pagination depth or rate limits, but the cost disclosure is a meaningful addition 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 short sentences, front-loaded with the core action and scope, then the returned fields, then the routing hint and cost. Every sentence carries new 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?
With no output schema, the description usefully enumerates what a comment record contains and flags the credit cost, which is what an agent needs before calling. The only gap is the undocumented cache_max_age parameter and any hint about pagination limits.
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 75%, so url, count and cursor are already documented; the description adds no parameter-level detail such as accepted URL formats or pagination semantics. The one undocumented parameter (cache_max_age) is left unexplained in both schema and description, keeping this at 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 (comments on a video) and narrows the scope precisely to top-level comments, listing the fields returned. It explicitly distinguishes itself from the sibling tiktok_commentReplies, so an agent can select between them 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.commentReplies`) and the condition that selects it — expanding a thread. It gives a clear context for use on a video's comments, though it does not state explicit exclusions beyond the reply-thread case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_followerstiktok: Accounts following a creatorARead-onlyInspect
Accounts following a creator. The public follower list for a TikTok account, newest first. TikTok caps how deep this list can be walked regardless of paging. Requires a configured TikTok signer. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Items per page (default 30, max 50) | |
| cursor | No | `pagination.cursor` from a previous response | |
| handle | Yes | Handle (@nike), or a full tiktok.com profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial value beyond the annotations: it discloses ordering ('newest first'), a hard depth cap independent of paging, an authentication prerequisite ('requires a configured TikTok signer'), and a cost ('1 credit'). It stops short of describing the per-item payload or what happens when the signer is not configured.
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 identity before caveats, and every sentence carries information (ordering, cap, auth, cost). Mild redundancy between 'Accounts following a creator' and 'The public follower list for a TikTok account' costs it the top mark.
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, a 4-parameter read-only tool needs the ordering, cost, auth, and paging limits explained — and all four are present. The only real gap is the shape of returned follower records and failure behavior without a signer.
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 75%, so the schema already documents handle, count, and cursor meaningfully. The description only alludes to paging behavior ('regardless of paging') and adds no semantics for cache_max_age, which is undocumented everywhere. 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+resource combination ('Accounts following a creator', 'public follower list for a TikTok account') that an agent can immediately map to the intended data. It does not, however, explicitly differentiate itself from near-neighbors in the sibling list such as tiktok_profile or mixcloud_followers/github_followers.
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 described (fetch followers of a creator), but there is no explicit when-to-use guidance, no exclusions, and no pointer to an alternative tool if this one hits its depth cap. The 'TikTok caps how deep this list can be walked' note is a behavioral caveat rather than a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_hashtagtiktok: Hashtag detailsARead-onlyInspect
Hashtag details. Stats for a TikTok hashtag: total videos and total views, plus its description and cover. Read straight off the tag page, so it needs no signer. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| hashtag | Yes | Tag without the # (fyp), or a full /tag/ URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the description adds real value beyond them: it discloses that no signer/auth is needed, that the data is scraped from the tag page, and that the call costs 1 credit. This is genuine operational context not present in the 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, front-loaded with the purpose and then the key operational facts (source, auth, cost). Minimal waste, though 'Hashtag details' slightly duplicates the title and could be merged into the stats 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?
For a simple read-only stat tool with an annotation-covered safety profile, the description supplies what to expect back, that no auth is required, and the credit cost. Only the undocumented 'cache_max_age' parameter is left unexplained, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: the required 'hashtag' parameter is well documented in the schema (tag without # or a full /tag/ URL), while 'cache_max_age' is undocumented in both schema and description. The description adds no parameter-level guidance, so at this coverage baseline a 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?
It names a specific resource (a TikTok hashtag) and enumerates the exact payload: total videos, total views, description, and cover image, which implicitly separates it from tiktok_hashtagVideos (videos vs. metadata). It does not name that sibling explicitly, so an agent must infer the boundary from the returned-fields 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?
The description gives useful context (reads straight off the tag page, no signer, 1 credit) but never states when to pick this over tiktok_hashtagVideos or what a caller should do with the stats. There are no explicit when-not conditions, so usage 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_hashtagVideostiktok: Videos using a hashtagARead-onlyInspect
Videos using a hashtag. TikToks carrying a given hashtag, in TikTok's own feed order, with a cursor for the next page. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Items per page (default 30, max 30) | |
| cursor | No | `pagination.cursor` from a previous response | |
| hashtag | Yes | Tag without the # (fyp), or a full /tag/ URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint declared, the description still adds real context: results come in TikTok's own feed order (not a sortable order), the response includes a cursor for the next page, and each call costs 1 credit. That credit cost and pagination contract are behavior 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 short sentences, each earning its place: the scope first, then ordering and pagination, then cost. Nothing is repeated from 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 does tell the agent what comes back (a page of TikToks plus a next-page cursor) and what the call costs. It stops short of describing response fields like video stats or author info, which would be 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 coverage is 75%, with count (default 30, max 30), cursor source, and hashtag format all documented inline. The description adds nothing about the parameters, and cache_max_age remains undocumented in both places, 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 names a specific verb and resource: it returns TikToks carrying a given hashtag, in TikTok's own feed order. It implicitly separates this from tiktok_hashtag (hashtag metadata) but never names a sibling or states the contrast 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?
Usage is only implied — an agent infers it should call this when it has a hashtag string and wants the videos. There is no statement of when to prefer tiktok_searchSuggestions, tiktok_popularVideos, or tiktok_songVideos instead, and no prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_livetiktok: Live stream infoARead-onlyInspect
Live stream info. Details of a creator's stream while they are live: room id, title, cover, current viewers and start time. A creator who is not live returns empty_result, a real answer that costs nothing, so this works as a cheap "are they live?" poll. Pass room_id (from a previous response's roomId) to look the room up directly on TikTok's own webcast surface. No third-party provider is involved. On the room_id path handle may come back empty if the webcast payload omits the room owner. Costs 1 credit. Pass either handle or room_id.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | No | Handle (@nike), or a full tiktok.com profile URL | |
| room_id | No | TikTok LIVE room id, e.g. from a previous tiktok.live response's `roomId` | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld annotations: discloses the empty_result behavior for non-live creators, the 1-credit cost, that no third-party provider is involved, and the caveat that `handle` can come back empty on the room_id path. These are exactly the traits an agent needs to plan a poll.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource and returned fields, followed by the behavioral notes in a logical order. Slightly dense and the opening 'Live stream info' restates the title, but 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 carries the burden of describing return values and does so explicitly, plus cost and empty-result semantics. The gaps are `cache_max_age` meaning and what happens when both or neither identifier is passed.
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 67%, and the description compensates by explaining where `room_id` comes from (`roomId` in a prior response), which TikTok surface it targets, and the either/or relationship between `handle` and `room_id`. `cache_max_age` is left undocumented in both schema and description.
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 ('Live stream info', 'Details of a creator's stream while they are live') and enumerates the returned fields (room id, title, cover, viewers, start time), which separates it from siblings like tiktok_profile or tiktok_userVideos that cover non-live content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context: it works as a cheap 'are they live?' poll because a non-live creator returns `empty_result`, and it says to pass `room_id` to hit TikTok's own webcast surface. It lacks an explicit statement of when to prefer a different tool or what happens if both identifiers are supplied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_playliststiktok: A creator's playlistsARead-onlyInspect
A creator's playlists. The playlists (TikTok calls them "mixes") a creator has organised their videos into. Pair with tiktok.playlistVideos to walk one. Requires a configured TikTok signer. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Items per page (default 20, max 30) | |
| cursor | No | `pagination.cursor` from a previous response | |
| handle | Yes | Handle (@nike), or a full tiktok.com profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint; the description adds genuinely new context: an auth prerequisite (configured signer) and a billing cost (1 credit). It stops short of describing failure behavior when the signer is unconfigured or what a returned playlist record contains.
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?
Short, front-loaded, and each sentence carries a distinct fact (identity, jargon, workflow, prerequisite, cost). The first two sentences overlap slightly in restating the resource, but the jargon clarification 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?
For a read-only paginated list tool with no output schema, it covers the essentials: what is listed, the pagination partner, auth requirement, and cost. Remaining gaps (return shape per playlist, the undocumented cache parameter) are minor.
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 75%, with `handle` (formats), `count` (default/max) and `cursor` well documented; only `cache_max_age` is bare. The description adds nothing about parameters, so the schema does essentially all the work — the baseline 3 fits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (a creator's playlists) and even disambiguates TikTok's jargon, noting playlists are called "mixes". It clearly separates itself from the follow-on `tiktok.playlistVideos`, though it doesn't distinguish from other adjacent siblings like `tiktok_collectionVideos` or `tiktok_userShowcase`.
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?
"Pair with `tiktok.playlistVideos` to walk one" gives an explicit workflow step and names the alternative/complement. Prerequisites ("Requires a configured TikTok signer") and cost are stated, but there is no explicit when-not-to-use guidance versus collection or showcase tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_playlistVideostiktok: Videos in a playlistBRead-onlyInspect
Videos in a playlist. The videos inside one TikTok playlist, in the creator's chosen order. Requires a configured TikTok signer. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Items per page (default 30, max 30) | |
| cursor | No | `pagination.cursor` from a previous response | |
| playlist_id | Yes | `id` from `tiktok.playlists`, or a /playlist/ URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, the description discloses two genuinely useful behaviors: it requires a configured TikTok signer (a hard prerequisite that causes failure if unmet) and it costs 1 credit (a cost signal). It omits pagination semantics despite a cursor parameter, but the prerequisite and cost details materially help correct invocation.
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?
Very short and front-loaded, with prerequisites and cost at the end where an agent will still see them. Minor redundancy: 'Videos in a playlist' and 'The videos inside one TikTok playlist' largely repeat the same 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?
For a read-only, annotated, no-output-schema tool, the description covers purpose and prerequisites adequately. However, it does not describe pagination behavior (the cursor/count parameters imply paging), page size limits, or result shape, leaving gaps an agent would need to reason about.
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 75%, with count, cursor, and playlist_id documented in the schema. The description adds only one non-schema semantic detail — result ordering follows the creator's chosen order — and says nothing about cache_max_age, the undocumented parameter. Baseline 3 is appropriate when the schema does most of 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?
States a specific verb+resource: retrieves the videos inside a single TikTok playlist, including that they come back in the creator's chosen order. It is clear what the tool returns, though it never explicitly contrasts with the sibling tiktok_playlists (which lists playlists rather than their contents).
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 statement of when to use this vs. alternatives like tiktok_playlists, tiktok_userVideos, or tiktok_hashtagVideos. The only guidance is an operational prerequisite (needs a configured signer), not a usage/exclusion condition. The agent must infer the selection rule from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_popularCreatorstiktok: Popular creatorsARead-onlyInspect
Popular creators. Creators trending in a market, from TikTok's own Creative Center leaderboard. Filter by country, follower band and category. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Items per page (default 20, max 50) | |
| cursor | No | `pagination.cursor` from a previous response | |
| period | No | Trailing window in days: 7, 30 or 120 | 7 |
| region | No | Two-letter market code (US, GB, ID…). TikTok feeds and catalogues are per-market. | |
| cache_max_age | No | ||
| follower_band | No | Restrict to creators in this follower range |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds genuinely non-structural context: the data originates from TikTok's own Creative Center leaderboard and each call 'costs 1 credit', which is important cost/latency information an agent cannot get from the schema. It does not describe pagination behavior or result shape, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, front-loaded sentences with no filler; the value/cost note is placed last where it belongs. The leading 'Popular creators.' largely repeats the title and could be merged, but it functions as a scannable headline.
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, open-world listing tool with six optional params and no output schema, the definition covers source, filters and cost. However, it never says what a creator record contains or how pagination/ordering works, and the phantom 'category' filter leaves an agent guessing which filters actually exist.
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 83%, so the schema does the heavy lifting (period windows, region codes, follower bands are all documented). The description only restates 'country' and 'follower band' while adding a 'category' filter that does not exist in the schema, and it says nothing about period, count or cursor semantics — the one extra detail it offers is potentially misleading.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (creators) with scope ('trending in a market') and provenance (TikTok's Creative Center leaderboard), which implicitly separates it from tiktok_popularVideos, tiktok_popularSongs and tiktok_trending. No sibling is named explicitly, so the differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Creators trending in a market' implies the discovery use case and the filter dimensions hint at narrowing by market/audience size. But there is no explicit when-to-use, no when-not-to-use, and no pointer to alternative tools such as tiktok_trending or tiktok_popularVideos for the same job.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_popularSongstiktok: Popular songsARead-onlyInspect
Popular songs. Sounds trending in a market, the endpoint behind music A&R and sync-licensing research. From TikTok's Creative Center. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Items per page (default 20, max 50) | |
| cursor | No | `pagination.cursor` from a previous response | |
| period | No | Trailing window in days: 7, 30 or 120 | 7 |
| region | No | Two-letter market code (US, GB, ID…). TikTok feeds and catalogues are per-market. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds genuinely non-obvious operational context the annotations do not carry: the data source (TikTok Creative Center) and a billing cost of 1 credit per call. It stops short of describing the ranked-chart return shape or the default trailing window.
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?
Roughly 30 words, purpose front-loaded in the first two words, with cost placed at the end where it is easy to scan. The A&R/sync-licensing sentence earns its place as routing context, though the one-word "Popular songs." opener is slightly choppy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter, read-only listing tool with no output schema, the description covers what it returns (a set of trending songs) and what it costs. It leaves gaps on pagination behavior and on whether results are ranked or merely a set, which matters since cursor and count exist and there is no output schema to answer that.
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 80%, so parameters are largely documented in the schema itself and 3 is the baseline. The description reinforces the per-market nature of the data (relevant to region) but says nothing that clarifies period, count, or cursor beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Popular songs. Sounds trending in a market" gives a specific resource plus a scope qualifier (trending, per-market) that separates it from the catalogue-lookup siblings like tiktok_song or tiktok_songVideos. It never names those siblings explicitly, so an agent still has to infer the boundary, but the function itself 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 phrase "the endpoint behind music A&R and sync-licensing research" hints at the intended use case, which is useful routing context. However, there is no explicit when-to-use/when-not guidance and no named alternative for point lookups on a specific song or for a song's videos.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_popularVideostiktok: Popular videosARead-onlyInspect
Popular videos. Videos trending in a market over a trailing window, from TikTok's Creative Center. Distinct from /v1/tiktok/trending, which is the personalised For You feed. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Items per page (default 20, max 50) | |
| cursor | No | `pagination.cursor` from a previous response | |
| period | No | Trailing window in days: 7, 30 or 120 | 7 |
| region | No | Two-letter market code (US, GB, ID…). TikTok feeds and catalogues are per-market. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and open-world behavior, so the bar is lower. The description adds real value beyond them: the upstream data source (Creative Center, implying a different catalogue than the app feed) and the per-call cost of 1 credit. It stops short of describing pagination behavior or result volume, but the extra context is substantive.
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: identity, scope/source, disambiguation, cost. Front-loaded 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 and five optional parameters, the description supplies the context an agent needs: what the data represents, where it comes from, and how it differs from the sibling trending tool. Only minor gaps remain, such as pagination expectations and the undocumented cache_max_age parameter.
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 80%, so parameters like period, region and count are already well documented in the schema. The description reinforces the notions of 'market' (region) and 'trailing window' (period) but adds no syntax, format, or defaulting detail beyond what the schema states. 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 resource (popular/trending videos) plus the exact scope: videos trending in a market over a trailing window, sourced from TikTok's Creative Center. It also names the sibling endpoint tiktok_trending and explains how it differs, 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?
Explicitly contrasts this tool with /v1/tiktok/trending (personalised For You feed), which is the main selection ambiguity among siblings. It also discloses the credit cost, which informs invocation decisions. It doesn't discuss choosing between this and adjacent tools like tiktok_popularCreators or tiktok_hashtagVideos, but the core routing guidance is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_producttiktok: Product detailsARead-onlyInspect
Product details. A single TikTok Shop product: title, description, images, price and original price, rating, review and sales counts, stock, category and the seller. price is the lowest-priced variant; it is null when TikTok hides the digits from logged-out visitors. Catalogues are per market: region picks one, default US. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Product id, or a tiktok.com/shop/pdp/… URL | |
| region | No | Two-letter market code (US, GB, ID…). TikTok feeds and catalogues are per-market. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, and the description adds real value on top: the null-price behavior for logged-out visitors and the 1-credit cost. It stops short of describing error behavior for invalid ids/URLs, but the data-quality and quota disclosures are the important extras here.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense and front-loaded: the resource is named first, then field inventory, then caveats, then cost. The opening 'Product details.' is near-tautological but is immediately superseded by specifics, and 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 field enumeration does the necessary work of telling the agent what comes back, and the price caveat and credit cost round it out. Only `cache_max_age` is left entirely unexplained.
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 67% with documented `url` and `region`; the description adds only the 'default US' detail beyond the schema's per-market note. `cache_max_age` is undocumented in both schema and description, leaving one parameter opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource ('A single TikTok Shop product') and enumerates the fields returned, so the agent knows exactly what it retrieves. The word 'single' implicitly distinguishes it from list/search siblings such as tiktok_shopProducts and tiktok_shopSearch 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 usage context for `region` (per-market catalogues, default US) and flags the logged-out data caveat that affects expectations. It does not explicitly route the agent to alternatives like tiktok_productReviews or tiktok_shopSearch, so there is context but no exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_productReviewstiktok: Product reviewsARead-onlyInspect
Product reviews. The reviews a TikTok Shop product page shows, with star rating, reviewer, photos and the purchased variant. That is the page's first screen, not every review. region picks the market, default US. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Product id, or a tiktok.com/shop/pdp/… URL | |
| count | No | Items per page (default 20, max 50) | |
| cursor | No | `pagination.cursor` from a previous response | |
| region | No | Two-letter market code (US, GB, ID…). TikTok feeds and catalogues are per-market. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnly/openWorld; the description adds two things they do not: the call costs 1 credit and the result set is limited to the first screen of reviews rather than the complete set. It does not discuss rate limits or failure modes for invalid/expired product URLs, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with what is returned, then the scope limit, then the market default, then the cost. No filler and every sentence carries information the agent would otherwise have to guess.
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, describing the return fields (rating, reviewer, photos, variant) is the right move, and the region/cost notes cover the main call-shaping concerns. Pagination behavior is left to the cursor parameter description in the schema rather than being explained, a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 80%, so the baseline is 3; the description adds the region default of US, which the schema does not state. cache_max_age remains undocumented in both places, so it is not a full 5.
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 (fetching the reviews shown on a TikTok Shop product page) and enumerates returned fields (star rating, reviewer, photos, purchased variant). It is clearly distinguishable from tiktok_product / tiktok_shopProducts, which return product data rather than reviews.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope caveat 'That is the page's first screen, not every review' tells the agent when this tool is insufficient, and the credit cost frames it as a paid call. It stops short of naming a sibling alternative for full review history or for product details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_profiletiktok: Profile detailsARead-onlyInspect
Profile details. Public profile for a TikTok account: followers, following, video count, bio, bio link, verification and account region. Private accounts return their public shell with isPrivate: true rather than an error. That is a real answer, not a failure. Total likes received (TikTok's "hearts") is in raw, since it is a like total rather than the lifetime view count viewCount means elsewhere in the schema. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Handle (@nike), or a full tiktok.com profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly/openWorld, and the description supplies the non-obvious behavior an agent could not infer: private accounts return a shell with isPrivate: true instead of an error, that result should not be retried as a failure, the call costs 1 credit, and total likes live in `raw` rather than `viewCount`. This is exactly the kind of semantic and cost context the annotation layer does not 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, each carrying distinct information, with the field list front-loaded right after the lead. The conversational aside ('That is a real answer, not a failure') is slightly informal but earns its place by preventing a false-negative read of private accounts.
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 return-value burden by enumerating the profile fields and flagging the `raw` hearts caveat. The remaining hole is `cache_max_age`, left undefined by both schema and description, and there is no cross-reference to the many adjacent tiktok profile-ish siblings.
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 50%: `handle` is well described in the schema (accepts @handle or full URL) but `cache_max_age` is entirely bare in both schema and description. The description adds nothing about either parameter, so it neither compensates for the gap nor contradicts 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?
The second sentence names the resource precisely and enumerates the returned fields (followers, following, video count, bio, bio link, verification, region), so an agent knows exactly what it gets back. The lead phrase 'Profile details' is a near-tautology and the description never contrasts itself with close siblings like tiktok_followers or tiktok_profileRegion, which keeps it off 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 explicit when-to-use or when-not-to-use guidance and no routing to alternatives such as tiktok_userShowcase, tiktok_followers or tiktok_profileRegion. The private-account sentence describes an outcome, not a usage condition, so selection still has to be inferred 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.
tiktok_profileRegiontiktok: Creator regionARead-onlyInspect
Creator region. The market TikTok assigns a creator's account. Read from TikTok's own region field: on the profile where TikTok publishes one, otherwise from the region stamped on the creator's recent posts. Never inferred from language, timezone or content. Costs 1 credit. Pass either handle or url.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Profile URL, e.g. https://www.tiktok.com/@nasa | |
| handle | No | Creator handle, e.g. @nasa | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint; the description adds meaningful behavioral detail beyond them: the two-tier data source (profile field first, recent posts as fallback), the explicit non-inference guarantee, and a 1-credit cost. It omits what happens when no region is determinable and says nothing about the cache behavior the schema exposes.
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 short sentences, each load-bearing: what it returns, where the value comes from, what it is not, cost, and invocation. Front-loaded 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 should say what the response looks like (a bare region string? a code? an object?) and what is returned when TikTok publishes no region anywhere. It covers the sourcing logic and cost well but leaves the return contract and the degenerate case 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 67% and the schema marks zero required parameters, so the description's 'Pass either `handle` or `url`' is genuinely additive — it tells the agent one identifier suffices. However, the third parameter `cache_max_age` has no schema description and no mention in the description, so a third of the parameter surface is undocumented everywhere.
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 resource — the market/region TikTok assigns a creator account — and disambiguates it from broader profile data by spelling out the exact data source (the `region` field, falling back to post-stamped region). It does not explicitly name a sibling tool it should be preferred over (e.g. tiktok_profile), but the 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 says to pass either `handle` or `url` and that the result is never inferred from language/timezone/content, which narrows expectations. But it gives no explicit when-to-use vs. when-to-use-a-sibling guidance — an agent must still decide on its own between this and tiktok_profile.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_searchSuggestionstiktok: Search suggestionsARead-onlyInspect
Search suggestions. TikTok's typeahead completions for a partial query: what the platform thinks people are looking for. Useful for keyword research. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Partial search term | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuinely new behavior: a stated cost of 1 credit and the framing that results reflect the platform's own perception rather than measured volume. It omits anything about the shape or size of the returned list.
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 definition, then interpretation, then use case, then cost. The opening 'Search suggestions.' is mildly redundant with the title but nothing else 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?
For a two-parameter read-only lookup with no output schema and annotations covering safety, the description supplies purpose, interpretation, use case, and cost — enough to call it correctly. Only the return format and cache_max_age remain 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 50%: query is documented as 'Partial search term' and the description reinforces that with 'partial query'. The second parameter, cache_max_age, is undocumented in both the schema and the description, so no compensation is offered for the gap; baseline 3 fits.
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?
'TikTok's typeahead completions for a partial query' is a precise verb+resource statement that distinguishes this from full-search tools and from siblings like tiktok_hashtag or tiktok_shopSearch. It stops short of naming an alternative but the resource is unmistakable.
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?
'Useful for keyword research' supplies a use context, but there is no when-not guidance, no mention of prerequisites, and no routing to contrasting siblings such as youtube_searchTypeahead or tiktok_hashtag.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_shopProductstiktok: Seller's product catalogueARead-onlyInspect
Seller's product catalogue. The products a TikTok Shop store lists, page by page, with price, rating, review and sales counts. Pass the store's URL (tiktok.com/shop/store//<seller_id>). region picks the market, default US. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | TikTok Shop store URL, e.g. https://www.tiktok.com/shop/store/goli-nutrition/7495794203056835079 | |
| count | No | Items per page (default 20, max 50) | |
| cursor | No | `pagination.cursor` from a previous response | |
| region | No | Two-letter market code (US, GB, ID…). TikTok feeds and catalogues are per-market. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, and the description adds useful behavioral context: it costs 1 credit, returns price/rating/review/sales counts, and paginates page by page. It stops short of discussing rate limits, error handling, or caching behavior for `cache_max_age`.
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 short, front-loaded, and every sentence carries useful information: purpose, returned fields, URL requirement, region default, and credit cost. There is no filler or repetition beyond the initial title-like phrase.
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 catalogue tool with no output schema, it adequately describes the returned data and the key invocation constraints. Minor gaps remain around `cache_max_age` behavior and exact pagination semantics, but the core information an agent needs 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 coverage is high (80%), so most parameters are already documented, and the description adds only the default US behavior for `region` plus the store URL shape. It does not explain `cache_max_age`, and `count`/`cursor` semantics are left to 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 states a specific resource and scope: a seller’s TikTok Shop product catalogue, listing products page by page with price, rating, review, and sales counts. It distinguishes the catalogue use case from a single-product lookup by requiring a store URL and describing paginated catalogue results.
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 invocation guidance such as passing the store URL and using `region` to pick the market, with US as the default. However, it does not explicitly say when to use this tool versus siblings like `tiktok_product`, `tiktok_shopSearch`, or `tiktok_productReviews`, so usage is mainly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_shopSearchtiktok: Search TikTok ShopARead-onlyInspect
Search TikTok Shop. The products TikTok Shop search returns for a query, page by page, with price, rating, review and sales counts. US market. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Items per page (default 20, max 50) | |
| query | Yes | Search terms | |
| cursor | No | `pagination.cursor` from a previous response | |
| region | No | Two-letter market code (US, GB, ID…). TikTok feeds and catalogues are per-market. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the bar is lower; the description still adds useful traits — credit cost, pagination via cursor, market scope, and the shape of returned fields (price, rating, review, sales counts). The only weakness is the unresolved tension between 'US market' and the region parameter.
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 followed by output shape, scope, and cost. Every sentence 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 correctly compensates by naming the returned fields and stating page-by-page behavior plus cost. It is close to complete for a search tool, with the region/market discrepancy the main remaining ambiguity.
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 80% and most parameters (query, count, cursor, region) are self-documented; the description adds only 'page by page', which lightly reinforces cursor/count semantics. It says nothing about cache_max_age or how region interacts with the stated US-market scope.
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 TikTok Shop') and clarifies the returned entity is products, page by page. It implicitly separates itself from tiktok_product/tiktok_productReviews (lookup by id vs. query search) but never names a sibling, 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?
'Costs 1 credit' and the pagination hint give practical context, but there is no explicit when-to-use guidance and no mention of alternatives such as tiktok_shopProducts or tiktok_product. Additionally, the description asserts 'US market' while the schema exposes a region parameter for US, GB, ID, leaving the agent unsure which governs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_songtiktok: Sound / song detailsBRead-onlyInspect
Sound / song details. Details for a TikTok sound: title, artist, album, cover, clip length, and how many videos use it. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| song | Yes | Music id, or a full tiktok.com/music/… URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds a genuinely useful, non-structured fact — 'Costs 1 credit' — which lets an agent budget calls. It stops short of noting failure modes for invalid or private sound IDs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the resource and then the payoff fields. The opening 'Sound / song details.' largely restates the title, which is the only wasted fragment.
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, enumerating the returned fields is the right move and is done well. However, the undocumented cache_max_age parameter and the absence of any guidance on the songVideos companion leave gaps for a 2-parameter lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: 'song' is documented as a music id or tiktok.com/music URL, but 'cache_max_age' has no description anywhere. The description mentions no parameters at all, so it does not compensate for the undocumented half.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (a TikTok sound) and enumerates exactly what is returned: title, artist, album, cover, clip length, and video usage count. That distinguishes it in practice from tiktok_songVideos, which lists the videos themselves, though the sibling is never named 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 statement of when to use this tool versus tiktok_songVideos, tiktok_popularSongs, or tiktok_playlists, and no prerequisites. Usage is only inferable from the returned-field list, which is not real guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_songVideostiktok: Videos using a soundARead-onlyInspect
Videos using a sound. TikToks built on a given sound: the endpoint behind "who is using my track", with a cursor for the next page. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| song | Yes | Music id, or a full tiktok.com/music/… URL | |
| count | No | Items per page (default 30, max 30) | |
| cursor | No | `pagination.cursor` from a previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and open-world traits, but the description adds genuinely non-derivable context: the call costs 1 credit and results are cursor-paginated. It still doesn't say anything about the volume or shape of returned videos.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the resource and immediately followed by the use-case gloss and the cost note. 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 should hint at return structure; the cursor reference implies a paginated list, and the credit cost is disclosed. Minor gap: it doesn't confirm what a page contains (video objects vs. ids).
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 75%, so the schema already documents song (music id or URL), count and cursor. The description only reinforces the cursor's paging role and leaves count limits and cache_max_age entirely to 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 resource with a concrete framing: videos built on a given sound, i.e. 'who is using my track'. This clearly separates it from tiktok_song (sound metadata) and the other *_Videos siblings, though it never names 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?
The 'who is using my track' framing implies the use case, and the cursor mention signals paging through results. However, there is no explicit when-to-use vs. when-not guidance and no pointer to tiktok_song for retrieving the sound id needed as input.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_transcripttiktok: Video transcriptARead-onlyInspect
Video transcript. The spoken transcript of a TikTok, as one text block plus timed cues. Returns the ORIGINAL spoken-language track by default rather than whichever track TikTok lists first, so the text reflects what was actually said. Pass language for a specific track. A miss is an error listing what is available, never a silent substitution into another language. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Video URL (preferred), share link, or numeric video id | |
| language | No | BCP-47 or ISO-639 code, e.g. "en", "es", "pt-BR". Omit for the original spoken track. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld annotations by disclosing three non-obvious traits: the default is the ORIGINAL spoken track rather than TikTok's first-listed track, a language miss errors out with a list of available tracks instead of silently substituting, and the call costs 1 credit. These are exactly the failure modes and costs an agent needs 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?
Five short sentences, front-loaded with what is returned, then default behavior, then error behavior, then cost. Every sentence carries distinct information and the rationale clause ('so the text reflects what was actually said') justifies the default rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully characterizes the return value ('one text block plus timed cues') and covers cost and error behavior for a 3-param read tool. The only omission is any explanation of cache_max_age.
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 67%, so url and language are already documented. The description adds real value for `language` (default semantics and the hard-error-on-miss behavior), but `cache_max_age` is undocumented in both the schema and the description, leaving a gap the prose doesn't compensate for.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and output shape: 'The spoken transcript of a TikTok, as one text block plus timed cues.' An agent immediately knows this is the text-extraction counterpart to tiktok_video's metadata. It doesn't explicitly name sibling tools, so it falls 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?
Usage guidance is implied rather than stated: 'Pass `language` for a specific track' tells you how to select a non-default track, but there is no explicit when-to-use-this-vs-tiktok_video or when-not guidance, and no mention of prerequisites (e.g. whether the video must have captions).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_trendingtiktok: Trending feedARead-onlyInspect
Trending feed. TikTok's logged-out For You feed for a region, showing what the platform is pushing to a brand-new visitor right now. Not a ranking anyone can reproduce: TikTok personalises even the anonymous feed, so two calls a second apart return different videos. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Items per page (default 30, max 30) | |
| region | No | Two-letter country code, e.g. US, GB, DE | US |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and open-world safety, and the description adds valuable behavior beyond them: the feed is personalised even when logged out, non-reproducible between calls, and costs 1 credit. It doesn't describe the response shape or pagination, but for a simple feed that's a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: identity first, then the volatile/personalised caveat, then 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 no-required-param feed with annotations and no output schema, the definition covers what the tool returns conceptually and its cost and volatility. The only real omission is meaning for cache_max_age, which is left undocumented in both schema and description.
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 67% – count and region are documented, cache_max_age is not. The description adds no parameter semantics at all, so the undocumented cache_max_age remains opaque, though the documented ones carry the usage. 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 ('TikTok's logged-out For You feed for a region') and makes the nature of the data unambiguous – a live anonymous feed, not a stable ranking. This clearly separates it from siblings like tiktok_popularVideos or tiktok_hashtagVideos.
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 is the right tool: when you want what the platform pushes to a brand-new visitor right now. It does not explicitly name alternatives (e.g. 'use tiktok_popularVideos for a curated stable ranking'), so the when-not guidance 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_userShowcasetiktok: Creator's product showcaseARead-onlyInspect
Creator's product showcase. Products a creator has pinned to their profile showcase. This is what they are actually promoting, as opposed to what they sell. Requires a configured TikTok signer. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Items per page (default 20, max 50) | |
| cursor | No | `pagination.cursor` from a previous response | |
| handle | Yes | Creator handle, e.g. @charlidamelio | |
| region | No | Two-letter market code (US, GB, ID…). TikTok feeds and catalogues are per-market. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, yet the description still adds two real facts: an authentication prerequisite (configured TikTok signer) and a billing cost (1 credit). It stops short of noting pagination or result-shape behaviour, but that is close to the schema's job.
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 concept, then the differentiating nuance, then prerequisites and cost. The opening restates the title almost verbatim, which is the only wasted line.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still conveys what the entity is, how it differs from adjacent product tools, that auth setup is required, and that it costs credits — everything needed to decide and call correctly. Remaining details (pagination, market scoping) live in a well-covered 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 coverage is 80%, so nearly every parameter is documented in the schema itself (count limits, cursor provenance, handle format, region semantics). The description adds nothing parameter-specific and leaves cache_max_age unexplained in both places, 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 resource (products pinned to a creator's profile showcase) with a scope qualifier distinguishing it from products the creator merely sells. The distinction gestures at siblings like tiktok_product and tiktok_shopProducts, but never names 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 line 'This is what they are actually promoting, as opposed to what they sell' implies when to pick this over a shop/catalog tool, and 'Requires a configured TikTok signer' is a useful prerequisite. There is no explicit 'use X instead when Y' routing, so the guidance remains implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_userVideostiktok: Videos posted by a creatorARead-onlyInspect
Videos posted by a creator. A creator's public posts, newest first, with view/like/comment/share counts. Photo posts are included and typed as image or carousel. Up to 15 per page, with a cursor for older posts. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Items per page (default 35, max 35) | |
| cursor | No | `pagination.cursor` from a previous response | |
| handle | Yes | Handle (@nike), or a full tiktok.com profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover read-only/open-world, and the description adds real behavioral context: newest-first ordering, inclusion of photo posts typed as `image` or `carousel`, per-page cap with cursor paging, and a 1-credit cost. One flaw: it claims "Up to 15 per page" while the schema says count defaults to 35 / max 35, leaving the agent unsure of actual page size.
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, then return contents, content types, pagination, and cost — each carrying distinct information. Minor redundancy between the title line and "A creator's public posts," and the page-size figure adds noise given its conflict with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the right work by summarizing what comes back (counts, media typing), how to page, and the credit cost. The incomplete/contradictory page-size statement is the only meaningful gap for a four-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 75%, so the baseline is 3; the description reinforces `cursor` ("pagination.cursor from a previous response") and page-size behavior. However, its page-size claim conflicts with the schema's count description, and `cache_max_age` remains undocumented in both places.
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 (videos posted by a creator) and clarifies scope with "A creator's public posts, newest first." It implicitly distinguishes itself from hashtagVideos/songVideos/playlistVideos by tying the listing to a creator, though no sibling is named 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 statement of when to use this versus tiktok_profile, tiktok_video, or the other video-listing siblings, and no exclusions or prerequisites. The only usage-adjacent detail is that a cursor fetches older posts, which is pagination mechanics rather than tool selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tiktok_videotiktok: Video or photo-post detailsARead-onlyInspect
Video or photo-post details. Full public metadata for one TikTok: caption, hashtags, mentions, author, sound, duration, and view/like/comment/share counts. Photo posts return every image in mediaUrls. Accepts a full URL, a share link (vm.tiktok.com), or a numeric video id. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Video URL (preferred), share link, or numeric video id | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations mark the tool as read-only and open-world, and the description adds useful operation-specific context: photo posts return all images in mediaUrls and each call costs 1 credit. It does not describe error behavior, rate limits, or cache behavior beyond the exposed parameter name.
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 written sentences with no filler. The purpose is front-loaded, followed by return fields, accepted inputs, and 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 does a good job listing the returned metadata and noting photo-post media URLs. Input forms and credit cost are covered, though cache_max_age is left unexplained.
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 only 50%. The description usefully clarifies that URLs, vm.tiktok.com share links, and numeric IDs are accepted, but it completely omits cache_max_age, leaving one parameter undocumented in both the schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and verb: full public metadata for one TikTok video or photo post. The phrase 'one TikTok' and the field list clearly distinguish it from sibling list/search tools such as tiktok_userVideos or tiktok_popularVideos.
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 implies use for retrieving a single TikTok's details rather than searching or listing, and specifies accepted input forms. It does not explicitly name alternatives or exclusions, such as using tiktok_comments for comment threads or tiktok_transcript for transcripts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
truthsocial_posttruthsocial: PostBRead-onlyInspect
Post. A single public Truth with its engagement counts and attached media. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Post URL (https://truthsocial.com/@handle/posts/<id>) or a bare numeric post id | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only and open-world behavior. The description usefully adds that only public posts are returned, that the result includes engagement counts and attached media, and that each call costs 1 credit. It still omits error behavior for deleted/private posts and any rate-limit context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the key fact that this returns a single public post. The initial 'Post.' duplicates the title and adds little, but the remaining sentences are efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool without an output schema, the description adequately explains what comes back (engagement counts and media) and the credit cost. It is incomplete on cache_max_age and does not clarify how private or deleted posts behave, leaving an agent with a couple of operational 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?
The URL parameter is well documented in the schema, but cache_max_age is undocumented in both schema and description. At 50% schema coverage, the description should compensate by explaining cache_max_age, yet it adds no parameter 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?
The description identifies a single-resource read ('A single public Truth') and distinguishes itself from list-style siblings like truthsocial_userPosts by emphasizing 'single'. However, the opening 'Post.' is just the resource name rather than a verb, and no sibling is named 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 guidance on when to use this tool versus truthsocial_userPosts, truthsocial_profile, or other platform post tools. The only usage-adjacent note is 'Costs 1 credit,' which is cost information rather than selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
truthsocial_profiletruthsocial: ProfileBRead-onlyInspect
Profile. Public Truth Social profile: follower and following counts, Truth count, bio, avatar, header image, and verification status. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Handle (@realDonaldTrump) or a truthsocial.com profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuinely new behavior: it is limited to public profiles and consumes 1 credit. It does not explain caching behavior despite a cache_max_age parameter, leaving a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the resource and field list front-loaded and the cost caveat last. The leading fragment 'Profile.' is redundant with the title and could be dropped, but overall there is little 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, listing the returned fields is the right move and largely complete. However, the undocumented cache_max_age parameter and the absence of any alternative-routing guidance leave it only minimally sufficient for a tool that sits among many profile siblings.
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 50%: 'handle' is documented in the schema, but cache_max_age has no description anywhere. The description adds nothing about parameter semantics, so an agent gets no help with the undocumented second 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 names the resource (Truth Social profile) and enumerates exactly which fields are returned (followers, following, Truth count, bio, avatar, header, verification), which lets an agent distinguish it from truthsocial_post and truthsocial_userPosts. There is no explicit verb, 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?
It says the profile is 'Public', implying private/restricted accounts are out of scope, but there is no statement of when to use this versus truthsocial_userPosts or truthsocial_post, and no prerequisites. The only operational hint is the credit cost.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
truthsocial_userPoststruthsocial: User postsBRead-onlyInspect
User posts. Recent public Truths from an account, newest first, with favourite, reply and ReTruth counts. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| cursor | No | `pagination.cursor` from a previous response (Mastodon `max_id`) | |
| handle | Yes | Handle or profile URL | |
| user_id | No | Numeric account id, if you already have it | |
| cache_max_age | No | ||
| exclude_replies | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint and openWorldHint, but the description adds genuinely non-structured facts: results are public-only, ordered newest-first, and include engagement counts, plus a per-call credit cost. It stops short of stating pagination semantics or how many pages are reachable.
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?
Compact and front-loaded: scope, ordering, fields and cost all land in two short sentences. The leading "User posts." fragment merely restates the title and earns nothing, a small but real 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, describing the returned counts and ordering is valuable, but for a 6-parameter tool at 50% schema coverage and no annotations covering cost or filtering, the description leaves too much to the schema. It is adequate for calling the tool, not for calling it well.
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 50%: count, cache_max_age and exclude_replies are undocumented in the schema, and the description explains none of them. "From an account" loosely gestures at handle/user_id, but a caller gets no help on page size, reply exclusion, or cache behavior — the gap the description was supposed to close.
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?
"Recent public Truths from an account, newest first, with favourite, reply and ReTruth counts" is a specific resource + scope + ordering + return-content statement. It does not, however, distinguish this from truthsocial_profile or truthsocial_post, which sit in the same family and could plausibly fetch the same content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance and no named alternative (e.g. truthsocial_profile for profile metadata vs this for post lists). "Costs 1 credit" is a useful budget signal but is not routing guidance, so an agent must infer selection 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.
twitch_cliptwitch: Clip detailsARead-onlyInspect
Clip details. Public metadata for a Twitch clip: views, duration, creator, broadcaster, category, and the offset into the source VOD. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Clip URL (twitch.tv/<channel>/clip/<slug> or clips.twitch.tv/<slug>) or a bare slug | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description still adds real value beyond them: 'Public metadata' signals no authentication is required, and 'Costs 1 credit' discloses a billing cost that appears nowhere in the structured fields — a material detail for an agent deciding whether to 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?
Two tight sentences, front-loaded with purpose then the returned fields, with the credit cost last. The leading fragment 'Clip details.' largely restates the title and could be folded into the following sentence, but nothing else 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 field enumeration (views, duration, creator, broadcaster, category, VOD offset) is exactly the return-value disclosure an agent needs, and the credit cost is covered. Remaining gaps are minor: no guidance on invalid/private clip handling and no explanation of the undocumented caching parameter.
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 50%: the required `url` parameter is thoroughly documented in the schema (two URL forms plus bare slug), but `cache_max_age` has no description anywhere. The description adds nothing about either parameter, so it neither compensates for the undocumented caching parameter nor explains cache/refresh behavior.
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 the resource (a single Twitch clip) and enumerates exactly what metadata is returned (views, duration, creator, broadcaster, category, VOD offset), so an agent knows this is a single-item metadata lookup rather than a listing. It never names the sibling it is not (twitch_userVideos, kick_clip), so differentiation is inferred from the resource 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?
Usage is only implied: you have a clip URL/slug, so you call this. There is no explicit statement of when to prefer it over twitch_userVideos, twitch_profile, or the parallel kick_clip tool, and no mention of preconditions or failure cases such as private or deleted clips.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitch_profiletwitch: Channel profileBRead-onlyInspect
Channel profile. Public Twitch channel: followers, partner/affiliate status, bio, avatar, banner, account age, and whether the channel is live right now. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Channel login (shroud), or a twitch.tv URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is clear. The description adds useful context: the channel is public, what data is returned, and that the call costs 1 credit. It does not explain caching behavior, rate limits, or error handling.
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: it states the resource, lists returned fields efficiently, and adds the cost note. 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?
Because there is no output schema, listing the returned fields is important and well done. The description is nearly complete for a simple read-only profile lookup, but leaves the optional cache_max_age parameter entirely unexplained.
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 handle parameter is documented well in the schema, but cache_max_age has no description in either the schema or the tool description. With only 50% schema description coverage, the description does not compensate by explaining what cache_max_age controls or how it should be used.
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 that it retrieves a public Twitch channel profile and enumerates the fields returned (followers, partner/affiliate status, bio, avatar, banner, account age, live status). This clearly distinguishes it from content-focused siblings like twitch_userVideos or twitch_clip, though it lacks an explicit verb and does not name alternatives.
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 tool versus alternatives such as twitch_userVideos, twitch_userSchedule, or twitch_clip. Usage is only implied by the tool name and field list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitch_userScheduletwitch: Stream scheduleARead-onlyInspect
Stream schedule. A channel's published schedule for the current week, plus the next upcoming segment. Segments are returned as posts of type live whose publishedAt is the scheduled start time. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Channel login (hasanabi), or a twitch.tv URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, yet the description still adds real value: the credit cost, the time window covered (current week plus next segment), and how the result is shaped (posts of type `live`). It stops short of 5 because it says nothing about failure modes for channels with no published schedule.
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 resource and scope, then the return shape, then the credit cost. Every sentence carries information an agent needs; 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?
For a read-only, two-parameter tool with no output schema, the description covers scope, return representation and cost. The one substantive gap is `cache_max_age`, which is undocumented in both schema and description.
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 only 50% — `handle` is documented in the schema but `cache_max_age` has no description anywhere — and the description adds nothing about either parameter, not even that a twitch.tv URL is acceptable or what cache_max_age controls. It fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"A channel's published schedule for the current week, plus the next upcoming segment" is a specific resource plus scope, and the note that segments come back as posts of type `live` with `publishedAt` as start time further pins down what the tool yields. It doesn't name a sibling (e.g. twitch_userVideos for past broadcasts), 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?
Usage is only implied: an agent can infer you call this when you want a channel's upcoming stream times. There is no explicit when-to-use/when-not-to-use guidance and no pointer to alternatives such as twitch_userVideos or twitch_profile for other channel data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitch_userVideostwitch: Channel videosARead-onlyInspect
Channel videos. A channel's public VODs, highlights or uploads. Returns up to 100 per call, because Twitch gates deeper pages behind a browser integrity challenge and we do not run browser sessions. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| handle | Yes | Channel login (shroud), or a twitch.tv URL | |
| sort_by | No | time | |
| filter_by | No | archive = past broadcasts, highlight = clipped highlights, upload = uploaded videos | archive |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the bar is lower, yet the description adds real context: the 100-per-call cap is explained by a browser integrity challenge the service won't bypass, and each call costs 1 credit. That's useful operational detail 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?
Three tight sentences, front-loaded with the resource definition, then the access ceiling, then 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?
No output schema, and the description never characterizes the shape of returned video data (fields, ordering, pagination token). It covers the access ceiling and cost, but an agent calling this still lacks clarity on what it gets back.
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 only 40%; handle and filter_by are documented in the schema, but limit, sort_by, and cache_max_age are not. The description mentions VODs/highlights/uploads, which just restates the filter_by enum already in the schema, and adds nothing about limit bounds, sort behavior, or cache 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?
Clear verb-like framing of a specific resource: a channel's public VODs, highlights, or uploads. An agent can distinguish it from twitch_clip (clips) and twitch_profile, though no sibling is named 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?
Implicit usage is clear (fetch a channel's videos), and the 100-per-call ceiling plus credit cost is stated. But there's no explicit when-to-use-vs-alternative guidance, e.g. when to reach for twitch_clip instead of video listings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitter_communitytwitter: Community detailsARead-onlyInspect
Community details. Public details for an X Community: name, description, member count, topic, join policy, banner and the creator's handle. Read from the server-rendered community page, which X still serves to logged-out callers. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Community URL (x.com/i/communities/...) or the numeric id | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly and openWorld, yet the description still adds real value: the source is the server-rendered page, it works for logged-out callers (no auth needed), and each call costs 1 credit. It does not describe failure modes or whether private/NSFW communities are reachable.
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, field list front-loaded and the cost note last where it is easy to scan. The leading 'Community details.' is largely redundant with the title, a minor 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 inline field enumeration usefully describes the return payload, and the credit cost plus auth-free access round it out. Only the undocumented `cache_max_age` parameter is left unexplained for what is otherwise a simple two-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 only 50%, and the schema already documents `url` as an x.com/i/communities URL or numeric id. The description adds nothing for `cache_max_age`, which is undocumented in both places, so it does not compensate for the coverage gap.
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 (read) and resource (X Community) and enumerates the returned fields — name, description, member count, topic, join policy, banner, creator handle — which implicitly separates it from twitter_communityTweets (posts) and twitter_profile. It stops short of naming the sibling explicitly, so it is clear but not fully differentiated.
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 presence of a required `url`/id and the phrase 'Read from the server-rendered community page' imply you use this when you have a specific community reference, but there is no explicit when-to-use, when-not, or named alternative (e.g. twitter_communityTweets for posts).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitter_communityTweetstwitter: Community postsARead-onlyInspect
Community posts. Recent posts in an X Community, with likes, retweets, replies and view counts. The community page publishes metrics X's embed CDN does not. One page only: X serves logged-out callers a single rendered batch and no continuation token, so hasMore is always false. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Community URL (x.com/i/communities/...) or the numeric id | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld annotations: it discloses the single-page limitation, why hasMore is always false, that view counts are available here but not from X's embed CDN, and the 1-credit cost. Only auth/session prerequisites and error behavior are left 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?
Four short sentences, front-loaded with the resource, then metric coverage, pagination caveat, and credit cost. 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?
For a 2-parameter, no-output-schema read tool, the description covers what is returned, the pagination ceiling, and cost. The single gap is cache_max_age semantics, and the tool's overall limits are otherwise fully 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?
With only 50% schema coverage, the description should compensate but does not: cache_max_age is undocumented in both the schema and the description, leaving its format and effect unknown. The url parameter's accepted forms are covered entirely by the schema, so the description adds nothing there.
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: recent posts in an X Community, listing included metrics (likes, retweets, replies, view counts). It does not explicitly contrast itself with the sibling twitter_community (which presumably returns community metadata), so an agent must infer the split, but the purpose itself 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?
Usage is implied rather than stated: you call it with a community URL or id to get its recent posts. The description usefully rules out pagination ('one page only, no continuation token'), but never names an alternative tool or the condition for choosing between this and twitter_community / twitter_userTweets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitter_profiletwitter: Profile detailsARead-onlyInspect
Profile details. Public profile for an X account: bio, location, avatar, banner, website, exact follower, following and post counts, join date and verified badge. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Handle (@jack), or a full x.com profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and open-world nature, and the description adds real context beyond them: the per-call credit cost and the fact that only the public profile surface is returned (exact counts, join date, verified badge). It stops short of covering cache behavior, auth, or what happens for private/suspended accounts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with purpose followed by the returned fields, with the credit cost as a trailing note. 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 enumerated field list does the job of telling an agent what it gets back, and the credit cost sets expectations for call volume. The remaining hole is the undocumented cache_max_age parameter and failure modes for non-public accounts.
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 50% and the description says nothing about either parameter. The handle format is documented in the schema itself, but cache_max_age has no description in the schema and no mention here, so the description does not compensate for the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope ('public profile for an X account') and enumerates the exact fields returned — bio, location, avatar, banner, website, exact follower/following/post counts, join date, verified badge. That field list distinguishes it from siblings like twitter_userTweets or twitter_tweet without naming them, though no alternative is named 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?
Usage is only implied: the field list tells an agent this is the tool for account metadata rather than posts, and 'Costs 1 credit' hints at a paid call to weigh. There is no explicit when-to-use/when-not statement and no reference to sibling tools such as twitter_userTweets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitter_tweettwitter: Post detailsARead-onlyInspect
Post details. One public post with its text, media and engagement. Served from X's embed CDN, which is the most durable logged-out surface X still operates; with TWITTER_BEARER_TOKEN set it uses the official API instead and adds retweet, quote and impression counts. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Post URL (x.com/user/status/123...) or a bare post id | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the readOnlyHint/openWorldHint annotations: it names the data source (X's embed CDN), explains why (most durable logged-out surface), discloses that TWITTER_BEARER_TOKEN switches to the official API and adds retweet/quote/impression counts, and states the cost of 1 credit. Data-source and output-shape variability are exactly the traits an agent can't 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, front-loaded with the resource and payload, then the sourcing/fallback behavior, then the cost. Nothing is padded; every clause carries information the 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 does supply the return shape (text, media, engagement, plus extra counts under bearer auth), which is the main gap it needed to fill. Minor omissions remain: behavior for private/deleted/protected posts and the meaning of `cache_max_age`.
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 only 50%: `url` is documented in the schema but `cache_max_age` is undocumented in both schema and description. The description adds no parameter meaning at all — no mention of accepted URL/id forms, no caching semantics — so it fails to compensate for the coverage gap.
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: "Post details. One public post with its text, media and engagement." The word "one" distinguishes it from list-style siblings like twitter_userTweets, and the payload (text, media, engagement) separates it from twitter_tweetTranscript. It never names a sibling explicitly, 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 bearer-token sentence implies the two operating modes but doesn't say when to pick this over twitter_tweetTranscript or twitter_userTweets. Use is inferable (single post retrieval by URL/id) rather than stated, and no exclusions or prerequisites are given beyond the cost note.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitter_tweetTranscripttwitter: Post transcriptARead-onlyInspect
Post transcript. Captions for a video post on X, as one text block plus timed cues. Sourced from the caption track in the video's HLS playlist, which is the only transcript X exposes to logged-out callers. Posts whose author never attached captions return an empty result and are not charged. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Post URL (x.com/user/status/123...) or a bare post id | |
| language | No | BCP-47 code, e.g. "en". Defaults to the first track. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld annotations: discloses the data source (caption track in the HLS playlist), the coverage limit (only transcript X exposes to logged-out callers), the empty-result behavior for uncaptioned posts, and the 1-credit cost with the no-charge caveat.
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 purpose and return shape, then source, then the empty-result/cost caveat. No filler and no repetition of the name.
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 describes the return format, source, and billing edge case. It falls short only on the undocumented cache_max_age parameter and on any hint about the language-selection behavior the schema exposes.
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 description says nothing about any of the three parameters. The schema documents url and language, but cache_max_age has no description at all (67% coverage), and the description does not compensate for that gap or clarify accepted id formats.
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 ('Post transcript / captions for a video post on X') and defines the return shape ('one text block plus timed cues'), which cleanly separates it from twitter_tweet and twitter_userTweets metadata siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied — fetch this when you need captions for a video post — and the note that captionless posts return empty tells the agent when the tool will yield nothing. But it never names an alternative (e.g. twitter_tweet for non-video posts) or states prerequisites, so explicit routing is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
twitter_userTweetstwitter: Recent posts from an accountARead-onlyInspect
Recent posts from an account. An account's public posts with media, likes, replies and retweets. With TWITTER_BEARER_TOKEN this pages through the timeline; without one it returns the single page X's embedded timeline exposes, a selection of the account's posts rather than the latest, or the pinned post and latest few from the profile page when that timeline is unavailable. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Posts to return, 5-100. Defaults to 20 on the official API and to every post on the page otherwise. | |
| cursor | No | `pagination.cursor` from a previous response. Official API only. | |
| handle | Yes | Handle (@jack), or a full x.com profile URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover read-only/open-world safety, and the description goes well beyond them by disclosing the two operating modes (paged with TWITTER_BEARER_TOKEN vs a single embedded page without), that results may be a selection rather than the latest, the profile-page fallback, and a 1-credit cost. It does not describe the response shape or how cursor terminates, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first short sentence, followed by payload contents, behavior modes and cost in descending importance. The fallback sentence is dense and slightly convoluted but each clause carries real information, so nothing is wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, single-resource fetch with no output schema and 75% schema coverage, the description covers the important surprises: mode-dependent volume, non-chronological selection, fallback path and credit cost. The main remaining gap is any hint about the returned post fields, which an agent must infer.
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 75%, so the schema already explains handle, count and cursor well. The description adds only indirect meaning for count (that its effective default and ceiling depend on which mode is active), which is useful framing but not new per-parameter 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?
The title and first sentence give a specific verb+resource: an account's public posts including media, likes, replies and retweets. That clearly separates it from siblings like twitter_tweet (single post) or twitter_profile (account info), though the description never names 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?
Usage is implied rather than stated: the tool is for retrieving an account's timeline, and the dual-mode paragraph hints at when results will be sparse. There is no explicit 'use twitter_tweet when you have a URL' or 'use twitter_communityTweets for community posts' routing guidance despite many close siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
walmart_categorywalmart: Browse a Walmart categoryBRead-onlyInspect
Browse a Walmart category. Public Walmart category listing: the same shape as walmart.search, keyed by category id instead of a query. Costs 3 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| tld | No | Walmart marketplace, default com. One of: com, ca | |
| page | No | ||
| category | Yes | Walmart category id, e.g. "3944_1089430_37807" | |
| country_code | No | ||
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and open-world behavior; the description adds useful non-annotation context in the form of the 3-credit cost and the 'public listing' nature of the data. However, pagination behavior and result shape (beyond 'same shape as walmart.search') are not disclosed.
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 scope, then the differentiation, then the cost. Minor redundancy in repeating 'Walmart category' but no wasted bulk.
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 5-parameter tool with no output schema, the description leans entirely on the 'same shape as walmart.search' reference and leaves pagination and the three undocumented parameters unaddressed. Adequate for a basic browse call but incomplete for full 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 coverage is only 40%: page, country_code, and cache_max_age are undocumented in both schema and description, and the description does not compensate by explaining them. It only reinforces the required category id via 'keyed by category id,' which the schema already covers with an 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 and resource (browse a Walmart category listing) and differentiates it from the sibling walmart_search by noting it is keyed by category id instead of a query. The analogy is clear enough that an agent can distinguish the two 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?
The phrase 'keyed by category id instead of a query' implicitly routes the agent to walmart_search when a query is available, but there is no explicit when-to-use/when-not guidance and no mention of walmart_product or walmart_reviews for drilling into items.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
walmart_productwalmart: Walmart product detailsARead-onlyInspect
Walmart product details. Public details for a Walmart listing: title, price, availability, seller, ratings, images and specifications, read from the page's own NEXT_DATA payload. Costs 3 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| tld | No | Walmart marketplace, default com. One of: com, ca | |
| product_id | Yes | Numeric Walmart item id, the last path segment of an /ip/ URL, e.g. 18210919718 | |
| country_code | No | ||
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the description is not obligated to explain safety, and it instead adds genuinely new context: the data source (the page's own __NEXT_DATA__ payload) and a concrete credit cost of 3. It does not cover what happens when a listing is missing or region-restricted, but the added cost and provenance detail is above 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?
Two sentences, front-loaded with the resource, then the returned fields and cost. Every clause carries information; nothing is repeated from the schema fields 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?
Without an output schema, listing the returned fields is the right move and the description does it well, and the cost disclosure is valuable. However, for a 4-parameter tool with half its parameters undocumented, an agent still lacks guidance on the tld/country_code interaction and cache behavior, so it is only minimally 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 only 50%, so the description needs to compensate and it does not mention any parameter at all. Two parameters (country_code, cache_max_age) carry no schema description and no explanation in the description, and the relationship between tld and country_code is left entirely ambiguous for the agent.
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 ('product details for a Walmart listing') and enumerates what is returned: title, price, availability, seller, ratings, images, specifications. It's clearly distinct from walmart_search in practice, but the description never names or contrasts the sibling tools that could be confused with 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?
Usage is only implied: the required product_id makes it obvious this is a lookup-by-id tool for a listing already known. There is no explicit when-to-use or when-not-to-use statement, and no pointer to walmart_search for discovering an item id. The 3-credit cost is the only explicit decision aid offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
walmart_reviewswalmart: Walmart product reviewsBRead-onlyInspect
Walmart product reviews. Paginated customer reviews for a Walmart product, from its dedicated reviews page. Costs 3 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| tld | No | Walmart marketplace, default com. One of: com, ca | |
| page | No | ||
| sort | No | ||
| ratings | No | Comma list of star ratings to include, e.g. "5,4" | |
| product_id | Yes | Numeric Walmart item id, e.g. 18210919718 | |
| country_code | No | ||
| cache_max_age | No | ||
| verified_purchase | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful non-schema context — that results are paginated and that each call 'costs 3 credits' — but says nothing about page size, result caps, rate limits, or what a review record contains.
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 with no wasted clauses; the lead sentence is slightly redundant with the tool name/title but the scope and cost follow immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the burden of explaining return values, yet it never describes what a review record includes (rating, text, author, date) or how many are returned per page. Combined with 8 under-documented parameters, this is thin for a paginated retrieval 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?
With only 38% schema description coverage across 8 parameters, the description should compensate but explains none of them: sort enum values, ratings list syntax, verified_purchase, cache_max_age and country_code are all left to the bare schema, and 'paginated' only hints at the page parameter without any detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (customer reviews) for a specific entity (a Walmart product) and adds the source ('its dedicated reviews page'), which distinguishes it from walmart_product and walmart_search. It stops short of explicitly naming those siblings, so an agent must infer that walmart_product is the record-level tool and this one returns the review 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?
'Paginated customer reviews for a Walmart product' implies the use case (you have a product_id and want reviews), but there is no explicit when-to-use/when-not guidance and no reference to the obvious alternative walmart_product or tiktok_productReviews for cross-marketplace comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
walmart_searchwalmart: Search WalmartBRead-onlyInspect
Search Walmart. Public Walmart search results for a query: position, price, rating and availability per item. Costs 3 credits.
| Name | Required | Description | Default |
|---|---|---|---|
| tld | No | Walmart marketplace, default com. One of: com, ca | |
| page | No | ||
| query | Yes | Search terms, e.g. "laptop" | |
| country_code | No | ||
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint, openWorldHint), and the description adds genuinely non-obvious context: a 3-credit cost and the shape of each returned item. That cost disclosure is exactly the kind of operational detail annotations cannot carry. It omits caching behavior and pagination, 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?
Three short sentences, purpose first, then result shape, then cost — the highest-value fact (credit cost) is not buried. 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 does carry the return-value burden and does so in one clause. But for a 5-parameter tool at 40% schema coverage, it should explain pagination and the tld/country_code relationship; that gap leaves it only minimally 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 only 40% — tld and query are documented in the schema, while page, country_code, and cache_max_age have no description anywhere. The description does not compensate at all: it never mentions the page parameter, the marketplace selector, or the cache lifetime, leaving three of five parameters unexplained.
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 Walmart') and characterizes the result set (position, price, rating, availability per item), so an agent can tell it apart from walmart_product or walmart_category. It stops short of explicitly naming those siblings, which keeps 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?
It says the results are 'public,' implying unauthenticated listing retrieval, but gives no when-to-use guidance, no exclusions, and never mentions that walmart_product or walmart_reviews exist for follow-up detail. An agent must infer the routing decision 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.
youtube_channelyoutube: Channel detailsARead-onlyInspect
Channel details. Public details for a YouTube channel: subscribers, video count, description, links. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Handle (@mrbeast), channel id (UC...), or full URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only and open-world behavior, so the description's added value is the credit cost (1 credit) and the 'public details' scope, which signals no authenticated/private analytics or ownership data. Caching behavior, despite an exposed cache_max_age parameter, is not disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the resource and followed by the returned-field summary and cost. The opening 'Channel details' slightly restates the title, but nothing else 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?
For a simple read tool with annotations covering safety, the description supplies the field scope and pricing an agent needs to decide whether to call it. The only real gap is the undocumented optional cache_max_age parameter, which is secondary.
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 only 50%: `handle` is documented in the schema while `cache_max_age` is undocumented in both schema and description. The description says nothing about accepted identifier formats or cache semantics, so it does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (a YouTube channel) and enumerates the returned fields (subscribers, video count, description, links), which implicitly distinguishes it from youtube_channelVideos/channelShorts siblings that return content lists. It never names a sibling explicitly, so an agent must infer the split 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?
Usage is only implied by 'Public details' — useful when you need channel metadata before fetching content. There is no when-not guidance and no mention of when to prefer youtube_channelVideos, youtube_channelPlaylists, or youtube_search instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_channelCommunityPostsyoutube: Channel community postsARead-onlyInspect
Channel community posts. A channel's Posts tab (what YouTube used to call Community). Images, multi-image carousels, shared videos and polls all come back as posts; poll options are under raw. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | `pagination.cursor` from a previous response | |
| handle | Yes | Handle (@mrbeast), channel id (UC…), or full URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only and open-world; the description adds useful behavior: images, carousels, shared videos and polls all return as posts, poll options are under `raw`, and the call costs 1 credit. It does not describe pagination behavior or auth/rate-limit details, so it is not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and short, with useful scope and return-shape details. The opening phrase 'Channel community posts' is close to a name/title restatement, which keeps it from a 5.
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 annotations and no output schema, the description supplies key return-content context and the credit cost. It still leaves cache_max_age behavior and the single-post alternative unaddressed, so it is not 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 coverage is 67%; handle and cursor are described in the schema, but cache_max_age is undocumented and the description mentions no parameters. It adds no parameter meaning beyond the schema and does not compensate for the missing 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 that the tool returns a channel's Posts tab content and enumerates what counts as a post, so the resource is clear. It stops short of 5 because it does not explicitly contrast with the closest sibling, youtube_communityPost, or with youtube_channelVideos.
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 'Posts tab' framing implies when to use it, but there is no explicit when-not guidance or named alternative such as youtube_communityPost for a single post. The agent must infer routing from the resource label.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_channelLivesyoutube: Channel live streamsARead-onlyInspect
Channel live streams. A channel's Live tab: streams that are live now, scheduled, or finished and still on the tab. viewCount is concurrent viewers while a stream is live and total views once it ends. YouTube swaps the label, and we surface whichever it gave us. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | `pagination.cursor` from a previous response | |
| handle | Yes | Handle (@mrbeast), channel id (UC…), or full URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds real value beyond that: it explains the dual meaning of `viewCount` (concurrent vs. total) and warns that YouTube swaps the label, which is exactly the kind of caveat an agent cannot infer. It also states the 1-credit cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, followed by scope, then a caveat and a cost note. Four sentences all carry information, though the viewCount explanation and the label-swap sentence could be tightened into one.
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 should carry more of the return-shape burden. It addresses the trickiest field (`viewCount`) but says nothing about the overall response structure or how pagination via `cursor` terminates, leaving the agent to discover those by calling.
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 67% — `handle` and `cursor` are documented in the schema, but `cache_max_age` has no description anywhere. The description adds nothing about parameter semantics, so it neither compensates for the gap nor detracts; baseline 3 fits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and scope: a channel's Live tab, covering live-now, scheduled, and finished-but-still-listed streams. That implicitly separates it from youtube_channelVideos and youtube_channelShorts, though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the 'Live tab' framing rather than stated. There is no explicit 'use this when you want X, use youtube_channelVideos when you want Y' routing, and no note about what happens if a channel has no Live tab.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_channelPlaylistsyoutube: Channel playlistsARead-onlyInspect
Channel playlists. Playlists a channel has made public. Pass an id from here to /v1/youtube/playlist for the videos in it. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | `pagination.cursor` from a previous response | |
| handle | Yes | Handle (@mrbeast), channel id (UC…), or full URL | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, and the description adds real value beyond them: only public playlists are returned and each call costs 1 credit. It doesn't cover pagination behavior beyond the cursor param.
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 purpose stated first and the chaining hint second.
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, but the description tells the agent what the results are (public playlists) and that IDs are reusable downstream. A note on pagination result shape would make it 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 coverage is 67%; the description clarifies that the returned `id` is the input to the playlist tool, which the schema does not convey. The handle formats are documented in the schema and cache_max_age is left unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope ('Channel playlists. Playlists a channel has made public'), which clearly separates it from youtube_playlist (videos inside a playlist) and youtube_channelVideos.
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 follow-up tool and how to chain: 'Pass an `id` from here to /v1/youtube/playlist for the videos in it.' No when-not guidance or comparison against youtube_channelVideos, 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.
youtube_channelShortsyoutube: Channel shortsARead-onlyInspect
Channel shorts. A channel's Shorts grid, newest first, about 48 per page. Shorts carry no duration or publish date on this surface, because YouTube does not render either, so both are null rather than guessed. With extra_fetch=true, each Short is fetched individually to fill its exact view count, publish date and duration. Costs 1 credit per item fetched, up to the page size. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | `pagination.cursor` from a previous response | |
| handle | Yes | Handle (@mrbeast), channel id (UC…), or full URL | |
| extra_fetch | No | When true, fetches each item's own page to fill fields the list page leaves null. Costs 1 extra credit per page fetched, up to the page size. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and open-world, so the description correctly spends its words elsewhere: page size (~48), ordering (newest first), the fact that duration and publish date are null because YouTube doesn't render them, and the credit cost of extra_fetch scaling with page size. That is genuine behavioral disclosure 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?
Mostly efficient and front-loaded, with the surface and ordering stated first and the null-field caveat immediately after. The closing 'Costs 1 credit per item fetched, up to the page size. Costs 1 credit.' is redundant and slightly ambiguous about whether the base call is free or costs 1 credit.
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 explaining what fields will be null and how to fill them, plus pagination and cost. The only gap is the unclear base-credit accounting and no explicit note on when cursor pagination should be followed.
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 75%, and the description adds real meaning beyond it: it explains why extra_fetch exists (to populate nulls individually) and quantifies its cost up to the page size. The cursor parameter's role is implied by the 'about 48 per page' statement, though 'cache_max_age' is left entirely to 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 resource and surface: 'A channel's Shorts grid, newest first', which is clearly a channel-scoped Shorts listing. It is distinguishable from youtube_channelVideos by naming 'Shorts', though it never explicitly contrasts with youtube_trendingShorts.
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 scope (channel Shorts), and the extra_fetch note implies a when-to-use condition ('fill fields the list page leaves null'). But there is no explicit guidance on when to prefer this over youtube_channelVideos or youtube_trendingShorts, nor any stated prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_channelVideosyoutube: Channel videosARead-onlyInspect
Channel videos. Recent public uploads for a channel. Use tab to switch between videos and shorts. With extra_fetch=true, each item is fetched individually to fill its exact view count, publish date and duration. Costs 1 credit per item fetched, up to the page size. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| tab | No | videos | |
| cursor | No | `pagination.cursor` from a previous response | |
| handle | Yes | Handle (@mrbeast), channel id, or full URL | |
| extra_fetch | No | When true, fetches each item's own page to fill fields the list page leaves null. Costs 1 extra credit per page fetched, up to the page size. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safe read profile (readOnlyHint=true, openWorldHint=true), and the description adds real value by disclosing the credit economics: 1 credit base plus 1 credit per item fetched up to page size, and that extra_fetch fills exact view count, publish date and duration. The cost wording is slightly garbled ("Costs 1 credit per item fetched, up to the page size. Costs 1 credit.") and pagination behavior via cursor isn't described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It's short and front-loads the purpose, but the closing pair of sentences redundantly restates the cost after already explaining per-item cost in the same paragraph, and the tab sentence is split awkwardly from the credit details.
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 paged list tool with no output schema, the agent still lacks the return shape (what fields a list item carries when not extra-fetched), how cursor pagination terminates, and coverage of the streams tab and cache_max_age. Cost behavior is the one area that is 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 60%, and the description only explains `tab` (videos/shorts) and `extra_fetch` on top of what the schema already says. It omits the `streams` enum value entirely and says nothing about `cache_max_age`, which has no schema description at all.
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?
"Recent public uploads for a channel" is a specific verb+resource statement, so an agent can tell this lists a channel's content. It stops short of differentiating itself from the close siblings youtube_channelShorts and youtube_channelLives, even though the tab enum overlaps with both.
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 says to use `tab` to switch between videos and shorts, which gives implied routing. But it never states when to prefer this tool over the dedicated youtube_channelShorts or youtube_channelLives tools, and it gives no guidance on when extra_fetch is worth the extra credits beyond a cost statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_commentRepliesyoutube: Comment repliesARead-onlyInspect
Comment replies. Replies to one comment thread. Takes a cursor from the replyCursors list on /v1/youtube/video/comments, or (as a convenience) a video url plus comment_id, in which case we locate the thread on the first comment page for you. Costs 1 credit. Pass either cursor (from replyCursors on /v1/youtube/video/comments), or both url and comment_id.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Video URL or id. Required only when using `comment_id` | |
| cursor | No | Reply cursor from `/v1/youtube/video/comments`, or `pagination.cursor` to page deeper | |
| comment_id | No | Top-level comment id (Ugx…) to fetch replies for | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the description's added value is the 1-credit cost disclosure and the fallback behavior (the thread is located on the first comment page when using url+comment_id). That is meaningful context beyond structured fields, though return/pagination behavior is not described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and cost, but the cursor-from-`replyCursors` instruction is repeated nearly verbatim twice, adding a redundant 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 should ideally say what comes back (reply list plus next-page cursor); it only implies pagination via the schema's `pagination.cursor` note. Otherwise complete enough for a 4-param read-only fetch.
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 75%, and the description reinforces the conditional relationship between `cursor` vs `url`+`comment_id` that the schema only hints at. It leaves `cache_max_age` unexplained, but that is the only gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope ('Comment replies. Replies to one comment thread'), which an agent can immediately separate from youtube_videoComments (top-level comments) and other YouTube siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to pass either a `cursor` taken from `replyCursors` on `/v1/youtube/video/comments`, or `url` + `comment_id` as a convenience. It does not name a sibling tool alternative, but the parameter-choice guidance is concrete and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_communityPostyoutube: Community post detailsARead-onlyInspect
Community post details. One community post by id or permalink, with its full text, attachments, like count and exact comment count. Poll questions and options are under raw. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Post URL (youtube.com/post/Ugk…) or bare post id | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, openWorldHint), and the description still adds real value: it discloses the credit cost, the exact return fields, and that poll questions/options live under `raw`. That last detail is behaviorally useful and not derivable from annotations or 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?
Four short sentences, each carrying distinct information: purpose, return contents, structural hint about `raw`, and cost. Front-loaded 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 correctly takes on the job of describing the return shape (text, attachments, likes, comment count, `raw` polls) and adds cost. The only missing piece is any explanation of `cache_max_age`, which leaves one parameter opaque for a caching-sensitive 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 50% — `url` is documented in the schema and the description reinforces it with the permalink form and bare-id alternative. `cache_max_age` is undocumented in both places, so the description neither compensates for the gap nor adds 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?
The description gives a specific verb+resource ('One community post by id or permalink') and enumerates the returned payload (text, attachments, likes, exact comment count), which clearly separates it from the listing sibling youtube_channelCommunityPosts. It stops short of naming that sibling explicitly, so the differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the phrase 'by id or permalink' signals that the caller must already have an identifier, which hints at fetching after a listing call, but no when-to-use or when-not-to-use guidance is given. There is no mention of youtube_channelCommunityPosts as the way to obtain ids, and no exclusion for posts that are actually videos.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_playlistyoutube: Playlist contentsARead-onlyInspect
Playlist contents. The videos in a public playlist, in playlist order, 100 per page. Playlist metadata (title, description, owner) comes back alongside the items. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | `pagination.cursor` from a previous response | |
| playlist_id | Yes | Playlist id (PL…), or any URL containing `list=` | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint/openWorldHint annotations, the description adds page size (100), ordering (playlist order), that metadata comes back alongside items, and the cost of 1 credit. That is meaningful operational context an agent can plan around; only retry/error behavior is missing.
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 resource, then ordering, page size, return shape, and cost. Nothing redundant or 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 usefully says what comes back (videos in order plus playlist metadata) and covers pagination and cost. Enough to call correctly; only the undocumented cache_max_age and public/private edge cases are uncovered.
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 67% and the schema documents playlist_id format (PL… or URL with list=) and cursor origin. The description adds nothing param-specific except implying pagination via '100 per page'; cache_max_age remains undocumented anywhere.
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?
First sentence 'Playlist contents' plus 'The videos in a public playlist, in playlist order' clearly states the resource and scope. It does not, however, differentiate from siblings like youtube_channelPlaylists or tiktok_playlistVideos, which an agent scanning the tool list would need.
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 word 'public' implicitly excludes private playlists and the required playlist_id is stated in the schema, but there's no explicit when-to-use or when-to-prefer-a-sibling guidance. With a large sibling set containing several playlist-ish tools, this is a real gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_searchyoutube: Search videosARead-onlyInspect
Search videos. Public YouTube search results for a query: videos and Shorts in YouTube’s ranking order, with a cursor for the next page. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| cursor | No | `pagination.cursor` from a previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and open-world behavior, yet the description adds real value: results come back in YouTube's own ranking order, a cursor is provided for paging, and the call costs 1 credit. That credit cost and ranking-order behavior are not derivable from annotations or 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 short sentences, front-loaded with the verb+resource and followed by scope, ordering, and cost. Minor redundancy between "Search videos." and the following clause, but 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?
With no output schema and 3 parameters, the description covers return shape (videos + Shorts, ranking order, cursor) and cost, which is helpful. Gaps remain on result fields, pagination termination, and the undocumented cache_max_age parameter.
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 only 33%, so the description must carry weight. It does explain the cursor as "for the next page," matching the schema hint, but cache_max_age is undocumented in both places and query gets no format guidance (phrases, operators, locale).
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 videos") and narrows the scope to "Public YouTube search results for a query: videos and Shorts in YouTube's ranking order." That scope implicitly separates it from youtube_channelVideos and youtube_searchHashtag, though no sibling is named 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?
Usage is implied by "for a query" and "Public" (i.e., keyword search over public content), but the description never says when to prefer this over youtube_searchHashtag, youtube_searchTypeahead, or youtube_channelVideos. No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_searchHashtagyoutube: Search by hashtagARead-onlyInspect
Search by hashtag. Videos or Shorts carrying a hashtag, as YouTube ranks them on the hashtag landing page. type=shorts switches to the Shorts tab, which is a different result set rather than a filter over the same one. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | all | |
| cursor | No | `pagination.cursor` from a previous response | |
| hashtag | Yes | Hashtag, with or without the leading # | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds genuinely non-obvious behavior: the cost (1 credit), the ranking provenance (YouTube's hashtag landing page order), and the important caveat that `type=shorts` returns a distinct result set rather than a filtered subset.
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, each carrying distinct information, front-loaded with purpose before the param caveat and the cost note. Nothing 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?
With no output schema, the description adequately characterizes the return as ranked hashtag-landing-page results, and it discloses the credit cost. Minor gaps are the unstated meaning of `cache_max_age` and how pagination continues, both partly covered by the cursor schema field.
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 only 50%, but the description compensates for the most consequential gap by explaining the `type` enum's behavior beyond its default value. The hashtag and cursor params are already covered in the schema; only `cache_max_age` remains undocumented in both places.
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 ('Search by hashtag') and further pins down the result set as videos/Shorts carrying the tag, ranked as on YouTube's hashtag landing page. It is clearly distinct from a general keyword search, though it never names youtube_search as the sibling 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 explains the key decision point for `type`: `shorts` switches to a different result set rather than filtering, which guides correct selection between the two modes. However, it gives no guidance on when to prefer this tool over youtube_search or youtube_searchTypeahead, and no stated preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_searchTypeaheadyoutube: Search typeaheadARead-onlyInspect
Search typeahead. YouTube's own search suggestions for a partial query, the autocomplete list the search box shows. Useful as a keyword-research signal: these are ranked by what people actually search for. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Partial search query | |
| region | No | ISO 3166-1 alpha-2 country code | US |
| language | No | Interface language | en |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and open-world behavior, yet the description adds two things they don't: a credit cost ('Costs 1 credit') and the ranking semantics (ordered by real user search volume). It still doesn't say how many suggestions come back or how cache_max_age affects freshness, 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?
Three short sentences, definition first, then usage signal, 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?
For a simple suggestion lookup with no output schema, the definition covers identity, use case, and cost. The remaining gap is return shape (how many suggestions, whether they include ranking metadata) and what cache_max_age does, which an agent would still want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, with query/region/language self-documented; cache_max_age has no description anywhere. The description's 'partial query' phrasing mirrors the schema rather than extending it, so baseline 3 is right.
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 typeahead... YouTube's own search suggestions for a partial query') and clarifies it is the autocomplete list, not full search. That distinction separates it cleanly from the sibling youtube_search.
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 ('keyword-research signal') that tells the agent when this is the right call. It stops short of explicitly contrasting with youtube_search or stating when not to use it, so it falls just below the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_transcriptyoutube: Video transcriptARead-onlyInspect
Video transcript. Full transcript for a YouTube video, as one text block plus timed cues. Returns the requested language when available, otherwise the default track. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Video URL or 11-character video id | |
| language | No | BCP-47 language code, e.g. "en", "es" | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered; the description adds genuinely new behavior beyond that: the language fallback ('otherwise the default track') and the cost ('Costs 1 credit'). It stops short of describing pagination or transcript length handling, 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 short sentences with the core purpose front-loaded, then output shape, then fallback and cost. Barely any waste, though the leading 'Video transcript.' fragment mildly restates the title before the more informative 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 does well to sketch the return format and cost, but it leaves cache_max_age unexplained and gives no hint about permission requirements or transcript availability failures. Adequate for a simple read tool, but there are remaining gaps an agent must guess at.
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 67%, and the description only enriches the language parameter by explaining the fallback-to-default behavior. The url parameter and cache_max_age are left entirely to the schema, and cache_max_age has no description in either place, so the description does not fully compensate for the coverage gap.
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 ('Full transcript for a YouTube video') and even states the return shape ('one text block plus timed cues'). This clearly distinguishes it from non-transcript YouTube siblings like youtube_video or youtube_videoComments, though it does not explicitly contrast with sibling transcript tools on other platforms.
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 platform-specific name and the phrase 'Full transcript for a YouTube video', but there is no explicit when-to-use versus alternatives (e.g., youtube_video for metadata) or when-not guidance. The language fallback note adds some operational context but not selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_trendingShortsyoutube: Trending shortsARead-onlyInspect
Trending shorts. Shorts YouTube is currently surfacing, by region. Note that YouTube retired the global Trending feed (/feed/trending now serves the ordinary home feed), so this reads the ranked Shorts surface instead, which is what still exists. Results differ per request; it is deliberately not subscribable. With extra_fetch=true, each Short is fetched individually to fill its exact view count, publish date and duration. Costs 1 credit per item fetched, up to the page size. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | `pagination.cursor` from a previous response | |
| region | No | ISO 3166-1 alpha-2 country code | US |
| extra_fetch | No | When true, fetches each item's own page to fill fields the list page leaves null. Costs 1 extra credit per page fetched, up to the page size. | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only and open-world, and the description adds meaningful behavior beyond them: non-deterministic results, non-subscribable nature, per-item credit cost, and the extra_fetch cost ceiling up to page size. This is solid added context, though the return shape isn't described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose and keeps sentences purposeful. The cost statement is slightly redundant ('Costs 1 credit per item fetched, up to the page size. Costs 1 credit'), which costs a point but doesn't obscure meaning.
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 and mostly succeeds: it covers region scope, credit costs, and the pagination cursor implicitly via schema. It stops short of describing the returned item shape, but for a trending-list tool it 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 coverage is 75%, so the schema already documents most parameters including extra_fetch's cost note. The description reinforces region scoping and extra_fetch behavior but adds little beyond the schema, and cache_max_age remains unexplained in both.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope up front ('Trending shorts... by region') and explains that it reads the ranked Shorts surface rather than the retired global Trending feed. This clearly separates it from siblings like youtube_channelShorts or youtube_search.
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 useful context on what the tool returns and warns that results differ per request and are not subscribable, but never states when to prefer it over alternatives such as youtube_channelShorts or youtube_search. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_videoyoutube: Video or Short detailsBRead-onlyInspect
Video or Short details. Public metadata for a YouTube video or Short, including view/like counts. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Video URL or 11-character video id | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and open-world behavior, so the description carries a lower burden. It adds useful behavioral context by noting that the data is public, includes view/like counts, and costs 1 credit, but it does not explain cache behavior or limitations around private/deleted videos.
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 short, front-loaded, and wastes little space. The phrase 'video or Short' is repeated, which is a minor redundancy but not harmful.
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 detail endpoint with annotations and no output schema, the description covers the core return content and cost. However, it leaves the cache_max_age parameter unexplained and does not address edge cases such as unavailable or private videos.
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 only 50%: the url parameter is documented in the schema, but cache_max_age has no description in either the schema or the tool description. The description adds no parameter meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as a YouTube video or Short and specifies that it returns public metadata including view/like counts. It is specific enough to distinguish this from channel-level or search tools, though it does not explicitly contrast with related endpoints like youtube_videoComments or youtube_transcript.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Public metadata for a YouTube video or Short' and the cost note, but there is no explicit guidance on when to use this versus alternatives such as youtube_videoComments, youtube_videoSponsors, or youtube_transcript. The agent must infer the intended scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_videoCommentsyoutube: Video commentsARead-onlyInspect
Video comments. Top-level comments on a video, about 20 per page. Pass pagination.cursor back as cursor for the next page. Each item that has replies also appears in replyCursors; feed that cursor to /v1/youtube/video/comment-replies. Use order=newest when polling for new comments, since top is re-ranked by YouTube and will churn. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Video URL or 11-character video id | |
| order | No | top | |
| cursor | No | `pagination.cursor` from a previous response | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond readOnlyHint/openWorldHint by disclosing page size (~20), the pagination round-trip ('Pass pagination.cursor back as cursor'), the presence of replyCursors per item, ranking churn behavior of `top`, and a cost of 1 credit. That is exactly the runtime context annotations can't express.
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, zero filler, and the identifying statement is front-loaded before pagination, reply routing, ordering, and cost. 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?
Pagination, reply traversal, and credit cost make this complete for a list tool with no output schema. The only shortfall is `cache_max_age`, which an agent cannot reason about from either the schema or the description.
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 50%, and the description compensates well for the two undocumented ones: it explains `order` semantics (top is re-ranked vs newest for polling) and how `cursor` flows from `pagination.cursor`. `cache_max_age` is left entirely unexplained in both schema and description, which is the remaining gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource and scope precisely — 'Top-level comments on a video, about 20 per page' — which immediately separates it from reply-fetching siblings like youtube_commentReplies. An agent knows what it retrieves 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?
Routes to the alternative explicitly ('feed that cursor to /v1/youtube/video/comment-replies') and gives situational guidance for parameters ('Use order=newest when polling for new comments, since top is re-ranked'). Both the when and the alternative are stated, not inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
youtube_videoSponsorsyoutube: Video sponsors (inferred)ARead-onlyInspect
Video sponsors (inferred). Brands, promo codes and affiliate links inferred from a video's description, plus YouTube's own paid-promotion disclosure. Every signal carries the description line it was read from and a confidence, because this is inference over prose. YouTube publishes no structured sponsor data. Experimental: expect to check evidence before acting on low confidence. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Video URL or 11-character video id | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond readOnlyHint/openWorldHint: discloses that this is inference over prose, that YouTube publishes no structured sponsor data, that every signal carries a source line and a confidence, that it is experimental, and that it costs 1 credit. That is exactly the context annotations cannot 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?
Four short sentences, front-loaded with what is returned, followed by why evidence/confidence matter, then the experimental caveat and cost. Zero filler; each sentence changes how the agent treats the result.
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 — naming the signal fields and their accompanying evidence/confidence. Combined with the credit cost and experimental status, an agent has everything needed to call it and interpret the result responsibly.
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 50%: `url` is documented as URL-or-11-char-id, while `cache_max_age` is undocumented in both schema and description. The description adds no parameter-level detail, so it neither compensates for the gap nor is required to for the documented required param. 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?
Specific: it enumerates the resource (brands, promo codes, affiliate links, YouTube's paid-promotion disclosure) and the source (a video's description prose). An agent can tell it apart from youtube_video or youtube_transcript without opening the schema. It stops short of explicitly naming which sibling to use instead when only raw metadata is wanted.
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 real operational rule — check `evidence` before acting on `low` confidence — which is genuine when-to-use guidance for the output. However, it never states when to pick this over youtube_video (metadata) or youtube_transcript, and no exclusion is given. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zillow_agentzillow: Zillow agent profileBRead-onlyInspect
Zillow agent profile. Public Zillow agent/team profile: brokerage, license, rating and review count, where published. Costs 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Zillow agent profile URL, e.g. https://www.zillow.com/profile/<username> | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover read-only and open-world, and the description adds two things they cannot: the operation costs 1 credit, and fields are returned only 'where published,' so partial results are expected. That is real behavioral context an agent needs before spending credits, though response shape and failure behavior on a bad/inaccessible URL remain unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded clauses with no filler; the field list and credit cost each carry information. The opening sentence mostly restates the title ('Zillow agent profile'), a small redundancy, but the rest is efficient.
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 returned fields and flags partial availability, which is good compensation. However, the undocumented `cache_max_age` parameter and no guidance on URL validity or error cases leave gaps for a paid, open-world fetch.
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?
At 50% schema coverage, the schema already documents the required `url` with a format example, so the description adds nothing there. The optional `cache_max_age` parameter is undocumented in both places, and the description does not compensate, so it sits at 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?
Names a specific verb+resource (fetch a public Zillow agent/team profile) and enumerates returned fields (brokerage, license, rating, review count), which tells an agent exactly what this yields. It does not explicitly distinguish itself from the closest sibling, redfin_agent, but the Zillow naming plus the field list make the domain 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?
No statement of when to use this versus zillow_property, zillow_search, or redfin_agent, and no prerequisites beyond what the schema implies. The only implicit guidance is the required profile URL, which comes from the schema rather than the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zillow_propertyzillow: Zillow listing detailsARead-onlyInspect
Zillow listing details. Public details for a Zillow listing: price, status, beds/baths, area, address and an inline photo set. Costs 1 credit. Pass either zpid or url.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Zillow listing URL, e.g. https://www.zillow.com/homedetails/<slug>/<zpid>_zpid/ | |
| zpid | No | Zillow property id (zpid), e.g. "120900080" | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuinely new behavioral context — the cost of 1 credit and the fact that photos come back inline — which an agent cannot infer from the annotations. It does not mention rate limits, cache behavior, or what happens when a listing is delisted.
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 identity of the tool, followed by return contents and then the invocation rule. No filler and nothing repeated from 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 correctly compensates by listing the returned fields, and it discloses cost. It falls short only on the unexplained `cache_max_age` parameter and the absence of routing guidance against zillow_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 coverage is 67%; the description supplies the crucial constraint the schema does not express (0 required params): that exactly one of `zpid` or `url` must be passed. The third parameter, `cache_max_age`, is undocumented in both the schema and the description, which is the remaining gap.
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 ("Public details for a Zillow listing") and enumerates the fields returned: price, status, beds/baths, area, address, photo set. This lets an agent tell it apart from zillow_search by implication (single-listing detail vs. search), though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the requirement to supply a `zpid` or `url` scopes the tool to a known listing, which distinguishes it from a search tool. There is no explicit statement of when to use this versus zillow_search or zillow_agent, and no mention of prerequisites or failure modes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zillow_searchzillow: Search Zillow listings by locationARead-onlyInspect
Search Zillow listings by location. Public Zillow search results for a location, as full listing records. Costs 1 credit. Pass either location or url.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Zillow search URL, e.g. https://www.zillow.com/austin-tx/ | |
| page | No | ||
| location | No | City/state or ZIP, e.g. "Austin, TX" | |
| listing_type | No | sale | |
| cache_max_age | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuinely useful behavior beyond that: it costs 1 credit and returns full listing records. It omits pagination behavior and any caching semantics despite a cache_max_age parameter.
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 purpose, then cost and input rule. The middle sentence partly restates the first ('search results for a location'), so there is minor redundancy, but nothing is bloated.
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 5-parameter tool with no output schema and 40% coverage, the description covers cost, input mode, and rough return shape, which is adequate. It leaves listing_type semantics, page numbering, and cache_max_age entirely unaddressed, which an agent would need 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?
With only 40% schema coverage, the description carries real weight, and it does add the non-obvious one-of constraint (location OR url) that the schema does not encode since nothing is required. But listing_type (sale/rent), page, and cache_max_age are undocumented in both places, leaving over half the parameters unexplained.
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 Zillow listings by location') and clarifies it returns full listing records rather than a single property. It does not distinguish itself from zillow_property or the redfin siblings, so an agent must infer that this is the listing-level search while those are detail/vertical 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?
'Pass either `location` or `url`' gives concrete input-selection guidance for the two entry modes. However, there is no guidance on when to prefer this over zillow_property or redfin_search, and no exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
254 tool updates
- First observed
amazon_offers - First observed
amazon_product - First observed
amazon_search - First observed
amazon_shop - First observed
appleMusic_album - First observed
appleMusic_artist - First observed
appleMusic_search - First observed
appleMusic_track - First observed
bitchute_channel - First observed
bitchute_channelVideos - First observed
bitchute_search - First observed
bitchute_video - First observed
bluesky_post - First observed
bluesky_profile - First observed
bluesky_userPosts - First observed
cancel_watch - First observed
create_watch - First observed
dailymotion_channel - First observed
dailymotion_channelVideos - First observed
dailymotion_search - First observed
dailymotion_transcript - First observed
dailymotion_video - First observed
deezer_album - First observed
deezer_artist - First observed
deezer_artistAlbums - First observed
deezer_artistTopTracks - First observed
deezer_charts - First observed
deezer_playlist - First observed
deezer_podcast - First observed
deezer_podcastEpisodes - First observed
deezer_search - First observed
deezer_track - First observed
deezer_userPlaylists - First observed
ebay_product - First observed
ebay_search - First observed
facebook_ad - First observed
facebook_adLibraryAdvertisers - First observed
facebook_adLibrarySearch - First observed
facebook_adTranscript - First observed
facebook_cityEvents - First observed
facebook_commentReplies - First observed
facebook_event - First observed
facebook_eventsSearch - First observed
facebook_group - First observed
facebook_groupPosts - First observed
facebook_marketplaceItem - First observed
facebook_marketplaceLocations - First observed
facebook_marketplaceSearch - First observed
facebook_pageAds - First observed
facebook_pagePosts - First observed
facebook_pageReels - First observed
facebook_post - First observed
facebook_postComments - First observed
facebook_postTranscript - First observed
facebook_profile - First observed
facebook_profileEvents - First observed
facebook_profilePhotos - First observed
github_activity - First observed
github_contributions - First observed
github_followers - First observed
github_following - First observed
github_pullRequests - First observed
github_repository - First observed
github_trendingDevelopers - First observed
github_trendingRepositories - First observed
github_user - First observed
github_userRepositories - First observed
google_ad - First observed
google_adLibraryAdvertisers - First observed
google_advertiserAds - First observed
google_jobs - First observed
google_mapsSearch - First observed
google_news - First observed
google_search - First observed
google_shopping - First observed
identity_findSocialProfiles - First observed
inference_ageGender - First observed
instagram_audioReels - First observed
instagram_commentReplies - First observed
instagram_hashtagPosts - First observed
instagram_highlight - First observed
instagram_popularSearch - First observed
instagram_post - First observed
instagram_postComments - First observed
instagram_profile - First observed
instagram_profilePostCount - First observed
instagram_profileSearch - First observed
instagram_reelsSearch - First observed
instagram_search - First observed
instagram_transcript - First observed
instagram_trendingReels - First observed
instagram_userEmbed - First observed
instagram_userHighlights - First observed
instagram_userPosts - First observed
instagram_userReels - First observed
instagram_userTaggedPosts - First observed
kick_clip - First observed
komi_page - First observed
kwai_post - First observed
kwai_profile - First observed
kwai_userPosts - First observed
linkbio_page - First observed
linkedin_ad - First observed
linkedin_adsSearch - First observed
linkedin_company - First observed
linkedin_companyPosts - First observed
linkedin_post - First observed
linkedin_postTranscript - First observed
linkedin_profile - First observed
linkedin_searchPosts - First observed
linkme_page - First observed
linktree_page - First observed
list_watches - First observed
mastodon_post - First observed
mastodon_postReplies - First observed
mastodon_profile - First observed
mastodon_userPosts - First observed
milkshake_page - First observed
mixcloud_followers - First observed
mixcloud_following - First observed
mixcloud_profile - First observed
mixcloud_search - First observed
mixcloud_tag - First observed
mixcloud_upload - First observed
mixcloud_uploadComments - First observed
mixcloud_userUploads - First observed
odysee_channel - First observed
odysee_channelVideos - First observed
odysee_comments - First observed
odysee_search - First observed
odysee_video - First observed
peertube_channel - First observed
peertube_channelVideos - First observed
peertube_commentReplies - First observed
peertube_comments - First observed
peertube_search - First observed
peertube_transcript - First observed
peertube_video - First observed
pillar_page - First observed
pinterest_board - First observed
pinterest_pin - First observed
pinterest_search - First observed
pinterest_userBoards - First observed
reddit_commentReplies - First observed
reddit_post - First observed
reddit_postComments - First observed
reddit_postTranscript - First observed
reddit_search - First observed
reddit_subreddit - First observed
reddit_subredditDetails - First observed
reddit_user - First observed
reddit_userPosts - First observed
redfin_agent - First observed
redfin_forRent - First observed
redfin_forSale - First observed
redfin_search - First observed
rumble_channelVideos - First observed
rumble_comments - First observed
rumble_search - First observed
rumble_transcript - First observed
rumble_video - First observed
snapchat_profile - First observed
snapchat_spotlight - First observed
snapchat_spotlightComments - First observed
solo_page - First observed
soundcloud_artist - First observed
soundcloud_artistTracks - First observed
soundcloud_track - First observed
spotify_album - First observed
spotify_artist - First observed
spotify_playlist - First observed
spotify_podcast - First observed
spotify_podcastEpisodes - First observed
spotify_search - First observed
spotify_track - First observed
substack_comments - First observed
substack_post - First observed
substack_posts - First observed
substack_profile - First observed
substack_publication - First observed
taplink_page - First observed
telegram_channel - First observed
telegram_channelPosts - First observed
telegram_post - First observed
threads_post - First observed
threads_profile - First observed
threads_search - First observed
threads_searchUsers - First observed
threads_userPosts - First observed
tiktok_adLibraryAd - First observed
tiktok_adLibrarySearch - First observed
tiktok_collectionVideos - First observed
tiktok_commentReplies - First observed
tiktok_comments - First observed
tiktok_followers - First observed
tiktok_hashtag - First observed
tiktok_hashtagVideos - First observed
tiktok_live - First observed
tiktok_playlists - First observed
tiktok_playlistVideos - First observed
tiktok_popularCreators - First observed
tiktok_popularSongs - First observed
tiktok_popularVideos - First observed
tiktok_product - First observed
tiktok_productReviews - First observed
tiktok_profile - First observed
tiktok_profileRegion - First observed
tiktok_searchSuggestions - First observed
tiktok_shopProducts - First observed
tiktok_shopSearch - First observed
tiktok_song - First observed
tiktok_songVideos - First observed
tiktok_transcript - First observed
tiktok_trending - First observed
tiktok_userShowcase - First observed
tiktok_userVideos - First observed
tiktok_video - First observed
truthsocial_post - First observed
truthsocial_profile - First observed
truthsocial_userPosts - First observed
twitch_clip - First observed
twitch_profile - First observed
twitch_userSchedule - First observed
twitch_userVideos - First observed
twitter_community - First observed
twitter_communityTweets - First observed
twitter_profile - First observed
twitter_tweet - First observed
twitter_tweetTranscript - First observed
twitter_userTweets - First observed
walmart_category - First observed
walmart_product - First observed
walmart_reviews - First observed
walmart_search - First observed
youtube_channel - First observed
youtube_channelCommunityPosts - First observed
youtube_channelLives - First observed
youtube_channelPlaylists - First observed
youtube_channelShorts - First observed
youtube_channelVideos - First observed
youtube_commentReplies - First observed
youtube_communityPost - First observed
youtube_playlist - First observed
youtube_search - First observed
youtube_searchHashtag - First observed
youtube_searchTypeahead - First observed
youtube_transcript - First observed
youtube_trendingShorts - First observed
youtube_video - First observed
youtube_videoComments - First observed
youtube_videoSponsors - First observed
zillow_agent - First observed
zillow_property - First observed
zillow_search
Related MCP Connectors
Public social media data: profiles, posts, comments, transcripts and ad libraries, 30+ platforms.
Real-time public data from 157 platforms for AI: posts, comments, profiles and engagement from TikTok, Reddit, Instagram, X, YouTube, Xiaohongshu, Douyin and more. Pay per use.
Real-time public data from 157 platforms for AI: posts, comments, profiles and engagement from TikTok, Reddit, Instagram, X, YouTube, Xiaohongshu, Douyin and more. Pay per use.
Public Instagram and TikTok data: profiles, posts, reels, stories, comments, hashtags and places.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables retrieval and management of social media data from Instagram, TikTok, YouTube, X, and Facebook through MCP tools, supporting extractions, search, discovery, batches, schedules, and saved results.25 npmMIT

ProLevelMax MCPofficial
AlicenseNot gradedqualityCmaintenanceEnables AI agents and developers to discover, inspect, run, and schedule live public social media data collection from 157 platforms, including Reddit, TikTok, Instagram, X, YouTube, Xiaohongshu, and Douyin. It supports previews, cost quotes, async runs, and download links via remote MCP, an Agent Skill, or REST API.MIT
insightsocialofficial
AlicenseNot gradedqualityBmaintenanceEnables AI agents to search, describe and call 239 social data endpoints across Instagram, TikTok, LinkedIn, Facebook, YouTube, X, Reddit, Threads and Pinterest through a single API key, covering profiles, posts, comments, followers, hashtags, ads and transcripts with one unified schema. Full responses are saved server-side and can be re-sliced for free with jq, fields or size outlines, so agents pull only the data they need into context.379 npmMIT
SocialCrawlofficial
AlicenseAqualityDmaintenanceSocialCrawl provides the "best" quality public web data on the internet. Access 65+ real-time social media, e-commerce and public web data from a single API with a single schema.5215 npm27MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.