Skip to main content
Glama

Server Details

Public social-data API and live docs for AI coding agents.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
social-freak-ltd/socialfetch-mcp
GitHub Stars
1
Server Listing
Social Fetch MCP

Available Tools

208 tools
amazon_shop_getGet Amazon Shop pageB
Read-only
Inspect

Get a creator Amazon Shop storefront by URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic Amazon Shop storefront URL.
cursorNoPagination cursor returned by a previous response.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, but the description adds no behavioral context beyond restating the request. It does not mention what the response contains, whether the returned 'page' is full or paginated, or any scraping/rate-limit behavior. Since it adds nothing over the structured hints, it falls below 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

This is a single sentence with no filler, and the core action and input are front-loaded. It earns every word and is appropriately sized for a straightforward getter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The five parameters are fully documented in the schema and the purpose is clear, but there is no output schema and the description does not characterize the return value or pagination behavior despite the cursor parameter. For a simple read-only fetch this is adequate, but it leaves some ambiguity about what 'page' means as a result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters. The description adds no parameter-level insight beyond the schema—'by URL' merely echoes the url property description. Baseline 3 is appropriate because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource ('creator Amazon Shop storefront'), the action ('Get'), and the key input ('by URL'), so an agent can tell it apart from the many other *_get tools by resource. It is clear but generic—'Get' does not specify whether the result is raw HTML or structured storefront data—so it stops short of a top-tier purpose statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage signal is implied: call this when you have a public Amazon Shop storefront URL. There is no explicit when-to-use/when-not-to-use guidance, no alternatives, and no note about cases that should route elsewhere (e.g., Amazon product pages vs creator storefronts).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appleMusic_album_getGet Apple Music albumA
Read-only
Inspect

Get an Apple Music album by id or album URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoOptional Apple Music album URL for the request.
albumIdNoOptional Apple Music album id for the request.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the core behavioral safety profile is covered. The description adds that lookup happens by id or URL, which is useful input scoping, but it does not disclose auth needs, rate limits, or return behavior. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the operation and input options. Every word contributes: 'Get', 'Apple Music album', 'by id or album URL'. There is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple lookup tool, the description is mostly adequate: the schema documents all five parameters and annotations cover read-only/open-world behavior. However, it does not clarify that one of url or albumId should be supplied even though both are marked optional in the schema, and it says nothing about the return shape, leaving some ambiguity for an agent deciding how to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the url and albumId parameters already have descriptions. The description's 'by id or album URL' essentially restates those schema entries without adding extra meaning about whether one is required, whether they are mutually exclusive, or how they relate to the required context and llm_model parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get'), resource ('Apple Music album'), and input criteria ('by id or album URL'). It clearly identifies what the tool does, though it does not explicitly differentiate it from siblings like appleMusic_track_get or appleMusic_search_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool should be used when the agent already has an album id or URL, but it provides no explicit when-to-use guidance, exclusions, or alternatives. The sibling list includes closely related tools such as appleMusic_search_list and appleMusic_track_get, but the description never mentions them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appleMusic_artist_getGet Apple Music artistA
Read-only
Inspect

Get an Apple Music artist by id or artist URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoOptional Apple Music artist URL for the request.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
artistIdNoOptional Apple Music artist id for the request.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds the detail that lookup is by id or URL, but it does not disclose behavior such as what happens when neither identifier is provided, whether one is required, or how not-found cases are handled. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence with no filler. It front-loads the core action and the two accepted identifier forms, earning its place entirely.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only lookup, the description is mostly adequate, but it leaves an important ambiguity: the input schema marks both artistId and url as optional, while the description implies one is needed. It also does not clarify whether exactly one must be supplied or what the response contains, especially since there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents url and artistId as optional parameters. The description's 'by id or artist URL' slightly reinforces the purpose of these parameters but does not add meaningful detail beyond what the input schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly names the verb ('Get'), the resource ('Apple Music artist'), and the input forms ('by id or artist URL'). It is unambiguous against sibling tools like appleMusic_album_get and appleMusic_track_get, though it does not explicitly name a sibling to distinguish itself from.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this tool is appropriate when the agent has an artist id or URL, but it does not explicitly state when to prefer this over appleMusic_search_list or other artist lookups (e.g., spotify_artist_get). No exclusions or alternative-routing guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

appleMusic_search_listSearch Apple MusicA
Read-only
Inspect

Search the Apple Music catalog by keyword. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoCatalog result type to return. Omit to search across types (treated as all).
queryYesSearch query text for Apple Music catalog results.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds the useful behavioral note about returning a list and using a cursor when paginated, which goes beyond the annotations but does not discuss rate limits, result limits, or auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, each earning its place: one states the core action and resource, the other states the return shape and pagination behavior. No filler or redundant restating of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list/search tool, the description communicates the core function, the return type, and pagination handling, which are the main things an agent needs beyond the schema. It does not describe the exact result payload, but in this case the absence of an output schema is partially mitigated by the simplicity of a search-list result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters including query, context, llm_model, type, and conversation_id. The description adds no parameter-specific meaning beyond the keyword concept already covered by the query field, so the baseline score applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action — searching the Apple Music catalog by keyword — and notes that it returns a list. It clearly reads as a search/list tool rather than a direct getter, though it does not explicitly name any sibling tool for comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for keyword searches of the Apple Music catalog versus direct lookups via sibling get tools, but it does not state when to prefer this tool over appleMusic_album_get, appleMusic_track_get, or other search alternatives. The pagination note gives some operational guidance 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.

appleMusic_track_getGet Apple Music trackA
Read-only
Inspect

Get an Apple Music track by id or track URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoOptional Apple Music song URL for the request.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
trackIdNoOptional Apple Music song id for the request.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.7/5.0
Behavior3/5

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 the id/URL retrieval mechanism but does not disclose behavior when both identifiers are supplied, when neither is, or what happens for a nonexistent track — the weak optionality of both lookup fields makes this ambiguity material.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single 9-word sentence with zero filler. The verb and resource are front-loaded, and every word carries meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity get tool with strong schema coverage and safety annotations, the description is mostly adequate, but with no output schema it omits any hint of what the response contains. It also leaves unresolved how to choose between id and URL when both are marked optional, which is a genuine completeness gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents url, trackId, context, llm_model, and conversation_id. The description's 'by id or track URL' marginally reinforces that trackId and url are the two lookup keys, but adds no semantics beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('an Apple Music track'), plus the two lookup modes ('by id or track URL'). The platform+resource combination clearly differentiates it from sibling track getters like spotify_track_get and soundcloud_track_get, and the identifier-based retrieval distinguishes it from appleMusic_search_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'by id or track URL' phrasing implies this tool is for retrieving a known, specific track rather than discovering one, but it never says so explicitly and names no alternatives such as appleMusic_search_list for when an ID is unavailable. No exclusions or when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

auth_whoamiWhoamiA
Read-only
Inspect

Get the authenticated API account for this session.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The read-only and open-world annotations already convey the safety profile, and the description adds that the returned account is scoped to the current session. It doesn't disclose behavior when no authentication is present or the exact shape of the account object, but no contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, well-formed sentence with no verbiage and the key action front-loaded. This is appropriately concise for a trivial whoami tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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's mention of 'authenticated API account' is the agent's only handle on the return value. For such a simple tool this may prove suficient, but it leaves the exact response fields and edge cases (e.g., no session) implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — all three parameters (context, llm_model, conversation_id) have detailed descriptions. The tool description itself contributes no additional parameter context, matching the baseline for a fully documented schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource — 'get the authenticated API account' — and scopes it to the current session. This makes the tool's purpose unmistakable and clearly distinguishes it from the many platform-content getters 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit instructions on when to use this tool or when to prefer a sibling are provided. Since no other tool in the sibling list handles authentication identity, the usage is reasonably implied by the name and description, but this falls short of explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

billing_balance_getGet account balanceA
Read-only
Inspect

Get remaining credit balance before running large batches of metered tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior3/5

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 the useful context that this is for checking remaining credit before large metered operations, but it does not add further behavioral details such as whether the call itself consumes credit, how fresh the balance is, or how the result is structured.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one sentence, front-loaded with the core purpose, and contains no filler. Every word contributes to the tool's intent and usage timing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 full schema coverage, this is nearly complete: it states the purpose, when to call it, and implies the returned value is the remaining credit balance. The absence of an output schema means a slightly clearer statement of result format could help, but the tool's function is straightforward enough for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents context, llm_model, and conversation_id thoroughly. The description adds no parameter-level meaning, which is acceptable given the baseline of 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('remaining credit balance'), and adds the relevant context of running before large batches of metered tools. It clearly distinguishes this from the many sibling get tools by focusing on billing/credit state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when to use the tool: before running large batches of metered tools. There are no obvious sibling alternatives to exclude, so the lack of an explicit 'when not to use' is not a major gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bluesky_post_getGet Bluesky postA
Read-only
Inspect

Get a single Bluesky post by URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the Bluesky post.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already car r readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds only the by-URL retrieval scoping and does not contradict the annotations. It contributes no context on auth requirements, error behavior for deleted/private posts, or output format, but with annotation coverage the bar is lower and the lack is a minor gap, not 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence, 'Get a single Bluesky post by URL,' with zero waste. The primary verb, resource, scoping qualifier, and mechanism are all front-loaded and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity read-only fetch with full schema coverage and safety annotations, this is nearly sufficient. An agent can identify the operation and all parameter expectations. The notable gap is the absence of usage guidance to steer it away from sibling listing tools, but nothing critical to invoking the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are already documented (url, context, llm_model, conversation_id). The description's 'by URL' reinforces the url parameter's role but adds no substantive meaning beyond what the schema already provides. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get), resource (Bluesky post), and the retrieval mechanism ('by URL'), with 'single' scoping the operation. This distinguishes it from sibling tools like bluesky_profile_get (profile, not a post) and bluesky_profile_posts_list (listing, not a single URL fetch) without needing to open the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides no guidance on when to use this tool vs alternatives. There is no mention of when to prefer bluesky_profile_posts_list, no exclusions, and no note about restrictions (e.g. public posts only). The intended context is only implied by the name and parameter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bluesky_profile_getGet Bluesky profileC
Read-only
Inspect

Get a Bluesky profile for a creator or account. Accepts a handle.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesBluesky handle to look up, with or without a leading @.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already provide readOnlyHint=true and openWorldHint=true, so the description carries a lower burden. However, the description adds no behavioral context beyond that: it does not describe return format, error handling, handle normalization, or data freshness. It rephrases the schema's handle input instead of disclosing anything new.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded: the core action and resource appear in the first sentence, and the input requirement is in the second. 'For a creator or account' adds little value, but the overall size is appropriate and no essential content is buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple read-only getter with full schema coverage and readOnly/openWorld annotations, so the description does not need to carry much. However, there is no output schema and the description does not indicate what fields or data the returned profile contains, leaving the agent without a clear expectation of the result payload.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 even without param information in the description. The description's 'Accepts a handle' adds no new meaning beyond the schema's detailed handle description, and it says nothing about required fields like context or llm_model. This is acceptable because the schema covers them fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get a Bluesky profile' and identifies the required input form ('Accepts a handle'). It is clearly distinguishable from sibling tools like bluesky_post_get and bluesky_profile_posts_list by resource type, though it does not explicitly name those alternat]ves.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to prefer this tool over alternatives. It does not mention bluesky_profile_posts_list or any other profile-related tool, and it does not state when not to use it. 'Accepts a handle' is a prerequisite, not a usage rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bluesky_profile_posts_listList Bluesky profile postsA
Read-only
Inspect

List posts from a Bluesky profile by handle. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor returned by a previous response.
handleYesBluesky handle whose posts should be listed.
userIdNoOptional Bluesky user id to speed up the request.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already convey read-only and open-world behavior, and the description does not contradict them. The description adds that the result is a list and that pagination uses a cursor, which is useful but sparse — it does not mention rate limits, authentication requirements, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core action and resource, followed by a high-value pagination note. No filler, no repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple read-only nature, full schema coverage, and readOnly/openWorld annotations, the description covers the main execution concerns. The absence of an output schema means the agent only learns that the result is a list, not the precise fields per post, but for this tool's simplicity that is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter. The phrase 'by handle' reinforces the handle parameter and 'use cursor when paginated' reinforces the cursor parameter, but neither adds meaning beyond what the schema properties already state.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List'), a specific resource ('posts from a Bluesky profile'), and a clear lookup key ('by handle'). This cleanly distinguishes the tool from sibling tools like bluesky_profile_get (profile metadata) and bluesky_post_get (single post).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use case is explicit: list a profile's posts by handle. It also provides a concrete pagination instruction ('use cursor when paginated'). It does not name alternative tools or state when not to use this tool, but the context is clear and no competing Bluesky listing tool exists in the sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

docs_readRead SocialFetch docs pageA
Read-only
Inspect

Read a corpus page by docsPathname from docs_search. Defaults to mode=outline (compact field digest). Pass mode=full for Examples/SDK snippets. Accepts /docs/... and /product/... pathnames (including /product/ask-ai/field-crosswalk).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNooutline (default) = compact params/credits/field digest. full = complete page including Examples.outline
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
docsPathnameYesCorpus pathname from docs_search, e.g. /docs/api/v1/tiktok/videos/get or /product/ask-ai/field-crosswalk. Trailing .mdx accepted.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false. The description adds useful behavioral context beyond these annotations: it explains what each mode returns (compact field digest vs. full page including Examples/SDK snippets) and specifies the accepted pathname patterns. It does not describe error handling or auth requirements, but the readOnly annotation already covers the safety profile and the description provides meaningful mode semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each carrying essential information: the action and source, the mode behavior, and the accepted pathname formats. No filler or redundant restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description gives an adequate sense of the return format for both modes (compact field digest vs. full page with Examples). It clearly ties the required docsPathname to docs_search, documents mode variants, and the schema covers the remaining required params (context, llm_model) with precise instructions. An agent has enough to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters thoroughly. The description adds minor value by explicitly tying docsPathname to docs_search and noting acceptable pathname prefixes, but this largely echoes the schema's own examples and the mode param description. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: read a corpus page using a docsPathname obtained from docs_search. It distinguishes itself from the sibling docs_search tool by specifying the read action, the accepted pathname families, and the mode options, leaving no ambiguity about what it does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use the tool (after obtaining a pathname from docs_search) and provides specific guidance on choosing mode=outline versus mode=full for different content needs. It references docs_search as the source of the pathname, which implicitly guides the agent away from using docs_read without a prior search, though it doesn't explicitly state 'use docs_search when you don't have a pathname'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

facebook_adLibrary_ad_getGet Facebook Ad Library adA
Read-only
Inspect

Get a single Facebook Ad Library ad by archive id or public Ad Library URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoPublic Facebook Ad Library URL for the ad.
adIdNoFacebook Ad Library archive id for the ad.
trimNoWhen true, requests a smaller payload before normalization.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.
includeTranscriptNoWhen true, includes a plain-text transcript when available for the ad video.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint and openWorldHint, covering the core safety and data-freshness profile. The description adds the single-ad and dual-locator behavior, but it does not disclose return-value shape, error behavior for invalid ids, or how trim/transcript affect the response. This is adequate but 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no wasted words, front-loading the verb, resource, and input forms. It is compact while conveying everything the agent needs at the description level.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the fully documented 7-parameter schema, readOnly/openWorld annotations, and the simple getter pattern, the description covers the essential selection semantics. It could mention return structure or expected outputs since no output schema exists, but the tool name and sibling conventions make the result sufficiently predictable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description correctly avoids restating each parameter. It does add useful relational meaning by indicating that either adId or url may be used as the locator, which is not enforced in the schema's required list (only context and llm_model are required).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get'), names a precise resource ('single Facebook Ad Library ad'), and states the two accepted locator forms ('archive id or public Ad Library URL'). This clearly distinguishes it from facebook_adLibrary_ads_search_get and from platform-specific siblings like google_adLibrary_ad_get and linkedin_adLibrary_ad_get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies the intended use: when the agent already has a specific ad identifier or public URL and wants one ad, this is the tool. It does not explicitly name the search sibling as the alternative for discovery workflows, so it falls just short of full exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

facebook_adLibrary_ads_search_getSearch Facebook Ad Library adsA
Read-only
Inspect

Search Facebook Ad Library ads by keyword and filters. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
trimNoWhen true, returns a smaller response with fewer fields.
queryYesSearch query text for Facebook Ad Library ads.
adTypeNoOptional filter for all ads or political and issue ads.
cursorNoOpaque pagination cursor from a previous response.
sortByNoOptional sort order for returned ads.
statusNoOptional ad status filter.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
countryNoOptional country code filter. Use ALL to search all countries.
endDateNoOptional end date filter in YYYY-MM-DD format.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
mediaTypeNoOptional creative media filter.
startDateNoOptional start date filter in YYYY-MM-DD format.
searchTypeNoOptional keyword matching mode for the search query.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint and openWorldHint annotations, the description adds behavioral detail: it returns a list and supports cursor-based pagination. This tells the agent what kind of response shape to expect, which is useful given there is no output schema. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The primary action is front-loaded, and the pagination note is a valuable, efficient addition. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter search tool with full schema coverage and read-only annotations, the description captures the essential behavior: search, filter, return a list, and paginate via cursor. There is no output schema, so the return-type note is important. The special semantics of required params like context and llm_model are left to the schema, which is acceptable given the schema's richness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is documented in the schema. The description adds only a high-level summary ('by keyword and filters'), which does not enrich parameter meaning beyond what the schema already provides. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Search'), a specific resource ('Facebook Ad Library ads'), and the operation's nature ('by keyword and filters', 'Returns a list'). The 'Returns a list' clause helps distinguish it from single-ad retrieval siblings like facebook_adLibrary_ad_get, though it does not explicitly name that alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the core use case implicit — search ads by keyword and filters — and gives a pagination instruction ('use cursor when paginated'), but it does not explicitly state when to prefer this tool over sibling tools such as facebook_adLibrary_ad_get or other ad-library search tools. The alternative-selection guidance is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

facebook_company_ads_listList Facebook company adsA
Read-only
Inspect

List ads a company or Page is running in the Facebook Ad Library. Accepts a page id or company name. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoOpaque pagination cursor from a previous response.
pageIdNoFacebook page id when you have it instead of a company name.
sortByNoOptional sort order for returned ads.
statusNoOptional ad status filter.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
countryNoOptional country code filter. Use ALL to search all countries.
endDateNoOptional end date filter in YYYY-MM-DD format.
languageNoOptional language code filter.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
mediaTypeNoOptional creative media filter.
startDateNoOptional start date filter in YYYY-MM-DD format.
companyNameNoCompany or page name to search when you do not have a page id.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds the pagination hint ('use cursor when paginated') and the accepted input forms, which is useful. It does not specify what fields are returned, rate limits, or the fact that the Ad Library may omit some ads, but three is appropriate given the annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the primary action and resource, and the pagination note is compact. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with 13 parameters, the description does not explain which parameters are required to be meaningful (e.g., must provide pageId or companyName), even though schema marks only context and llm_model as required. That is a notable gap in selection/correct invocation. Otherwise, with annotations covering read-only and open-world behavior, plus schema documentation, the description is nearly sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so every parameter has at least a basic description. The tool description does not add deeper parameter semantics (e.g., that pageId and companyName are mutually exclusive, or which one takes precedence), but it does mention two key inputs ('page id or company name'). Baseline 3 is fair.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List', the resource ('ads a company or Page is running in the Facebook Ad Library'), and the accepted inputs ('page id or company name'). It also mentions the return type ('list') with pagination usage, which distinguishes it from sibling tools that retrieve single ads (facebook_adLibrary_ad_get) or search across advertisers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates that a page id or company name is required, which guides usage. It does not explicitly compare itself to the sibling get/search ad library tools, but the distinction is largely inferable from the naming and 'Ad Library' scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

facebook_event_getGet Facebook eventA
Read-only
Inspect

Get a Facebook event by URL or event id.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoPublic Facebook event URL.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
eventIdNoFacebook event id when you have it instead of a full URL.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds that the event is fetched by URL or id, but it does not disclose expected response content, error conditions, or any limitations beyond what annotations and schema provide. It is consistent, but adds minimal behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with zero filler. It states the action and the two acceptable input forms without wasting words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only getter, the description is largely complete: it identifies the resource and the two ways to target it. It could mention that only public events are accessible or what information is returned, but the annotations and schema descriptions cover the essential safety and parameter requirements.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all parameters. The description adds marginal value by framing 'url' and 'eventId' as alternative ways to identify an event, but it does not provide meaningful semantics beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and resource ('Facebook event'), and clearly identifies the two input modes: URL or event id. This distinguishes it from sibling list/search tools like facebook_events_list and facebook_events_search_list, which operate without a specific identifier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: call this tool when you have a Facebook event URL or event id. However, it does not explicitly mention alternatives such as facebook_events_search_list when no identifier is available, nor does it state exclusions. The guidance is clear but not fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

facebook_events_listList Facebook city eventsA
Read-only
Inspect

List Facebook events for a city by explore URL. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic Facebook Events explore URL for a city.
timeNoOptional time window for events.
cursorNoOpaque pagination cursor returned by a previous response.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly and openWorld hints, lowering the burden. The description adds that results are paginated and cursor should be used, but doesn't disclose response item shape, potential incompleteness, or any rate/access constraints beyond that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two brief sentences with no filler; the core purpose and pagination behavior are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list operation, the description plus complete schema is sufficient to invoke correctly. It notes pagination and scope but, with no output schema, could add a bit more about what each returned item contains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already documented. The description reit's 'explore URL' and 'cursor' but doesn't add meaning 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a clear verb ('List'), resource ('Facebook events'), and scope ('for a city by explore URL'), which distinguishes it from profile-level and single-event tools. 'By explore URL' also sets it apart from search-based event tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to choose this tool over siblings such as facebook_events_search_list or facebook_profile_events_list. The only implicit cue is that an explore URL is required; no when-not or alternative conditions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

facebook_events_search_listSearch Facebook eventsA
Read-only
Inspect

Search Facebook events by name. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query text for Facebook events by name.
cursorNoOpaque pagination cursor returned by a previous response.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds useful behavioral context by stating that the tool returns a list and that pagination should be handled with a cursor. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The primary action is front-loaded, and the pagination note is placed directly after the return-type statement. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only search tool with full schema coverage and openWorldHint, the description covers the core concerns: what is searched, the return shape, and pagination. It does not explicitly differentiate from facebook_events_list, but that is a usage-guideline gap already penalized.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description is not required to add parameter-level detail. The only addition is the 'by name' qualifier, which already appears in the query parameter's description. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (search), resource (Facebook events), and scope (by name), which distinguishes it from generic list tools like facebook_events_list and facebook_events_list. It does not explicitly name sibling tools, but the search-by-name qualifier makes the purpose clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 such as facebook_events_list, facebook_event_get, or facebook_profile_events_list. There is no mention of exclusions or conditions that would route an agent to a sibling tool. The usage context at best is implied by the word 'search'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

facebook_group_getGet Facebook groupB
Read-only
Inspect

Get a Facebook group by URL or group id.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoPublic Facebook group URL.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
groupIdNoNumeric Facebook group id when you have it instead of a full URL.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds no behavioral detail beyond the readOnlyHint and openWorldHint annotations already present. It does not mention return format, public-group restrictions, rate limits, or other runtime behavior; however, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence with no filler. The action, resource, and identifier modes are all front-loaded and immediately actionable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with no output schema, the description is minimally viable but sparse. It does not clarify what the response contains or how to distinguish this from facebook_group_posts_list, so an agent might still be uncertain about expected output or appropriate selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented in the schema. The description's mention of 'URL or group id' usefully signals that url and groupId are alternative identifiers, but this adds only marginal value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the verb 'Get' and the resource 'Facebook group,' and it identifies the two accepted identifier forms (URL or group id). It does not explicitly distinguish itself from siblings like facebook_group_posts_list, but the resource noun is specific enough to avoid major confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives, nor are exclusions or sibling recommendations given. The agent must infer context from the tool name and sibling-list, which is minimal support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

facebook_group_posts_listList Facebook group postsA
Read-only
Inspect

List posts from a Facebook group by group URL. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic Facebook group URL whose posts should be listed.
cursorNoOpaque pagination cursor from a previous response.
sortByNoOptional sort order for posts returned from the group feed. `top`: Facebook's default relevance ranking. `recentActivity`: sorted by most recent comment/reaction activity. `chronological`: regular posts sorted by post time, newest first. `chronologicalListings`: Facebook's separate feed of listing-style posts (e.g. items for sale) within the group, sorted by time.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations carry the read-only safety profile (readOnlyHint=true, openWorldHint=true), and the description adds value beyond them by disclosing the return shape ('Returns a list') and the pagination contract ('use cursor when paginated'). 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero wasted words: the purpose is front-loaded, and the return/pagination note earns its place because there is no output schema to reveal that information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a moderate-complexity tool with fully documented parameters and read-only annotations, the short description is sufficient: it states the resource, the return type, and the pagination mechanism. Explicit routing to alternatives like facebook_group_get would push this to a 5, but nothing needed to invoke the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all six parameters; the description only echoes 'by group URL' and 'cursor', which map to url and cursor. This meets the baseline expected when the schema carries the semantic load, but adds nothing beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List'), a specific resource ('posts from a Facebook group'), and a scoping mechanism ('by group URL'), which is clear and unambiguous. It implicitly differentiates from siblings like facebook_group_get, facebook_profile_posts_list, and facebook_post_comments_list, but it does not name any alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied by the purpose statement — when you need posts from a group given its URL, use this tool. However, the description provides no explicit when-not-to-use guidance or named alternatives, despite a large sibling set with closely related facebook_* list tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

facebook_marketplace_item_getGet Facebook Marketplace itemA
Read-only
Inspect

Get details for a Facebook Marketplace listing by item URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoPublic Facebook Marketplace item URL.
itemIdNoFacebook Marketplace item identifier. Provide this instead of url when you already know the item id.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations (readOnlyHint=true, openWorldHint=true) already establish the core behavioral profile: a safe read over potentially ephemeral data. The description adds little beyond restating the read operation and does not disclose common Marketplace failure modes (removed listings, regional unavailability, rate limits). It is fully consistent with the annotations — no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One 12-word sentence, verb-first, with zero filler. The 'by item URL' clause is the only content beyond the title, and it is precisely the detail an agent needs. Ideal front-loading.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-compilexity read tool with 100% schema coverage and safety annotations, the structured fields carry most of the weight. Gaps remain: there is no output schema and the description never hints at what 'details' will contain, nor what happens when a listing is stale or removed — relevant given openWorldHint. Groundly adequate, not rich.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema descriptions are unusually rich — they explain the url-vs-itemId tradeoff, demand an exact or 'unknown' llm_model, and warn against inventing conversation_id. The description contributes only the marginal hint that URL is the primary lookup path. Baseline 3 applies since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('details for a Facebook Marketplace listing') with a clear lookup mechanism ('by item URL'). Among the large sibling list full of search tools, this single-item fetch is immediately distinguishable — no other sibling retrieves a marketplace item's details. It paraphrases the title but adds the URL-based lookup detail, so it is not a tautology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to choose this tool over facebook_marketplace_search_list or facebook_marketplace_locations_search. The only selection advice lives inside the itemId parameter description ('Provide this instead of url when you already know the item id'), which governs parameter choice, not tool choice. No contexts, exclusions, or alternatives are named at the tool level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

facebook_marketplace_search_listSearch Facebook Marketplace listingsA
Read-only
Inspect

Search Facebook Marketplace listings by keyword near a latitude and longitude. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
latNoLatitude for the marketplace search location.
lngNoLongitude for the marketplace search location.
countNoDeprecated alias for `limit`. When both are set, `limit` wins.
limitNoOptional number of listings to return (1–100). Prefer this over `count`.
queryYesSearch query text for marketplace listings.
cursorNoOpaque pagination cursor returned by a previous response.
sortByNoOptional sort order for marketplace listings. `suggested`: Facebook's default relevance ranking. `distanceAscend`: nearest first. `creationTimeDescend`: newest listings first. `priceAscend`/`priceDescend`: lowest/highest price first.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
maxPriceNoOptional maximum listing price. Must be greater than or equal to `minPrice` when both are set.
minPriceNoOptional minimum listing price. Must be less than or equal to `maxPrice` when both are set.
radiusKmNoOptional search radius in kilometers.
conditionNoOptional item condition filter for marketplace listings.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
dateListedNoOptional date-listed filter for marketplace listings. `1`/`last24Hours` both mean the last 24 hours, `7`/`last7Days` both mean the last 7 days, and `30`/`last30Days` both mean the last 30 days — these are separate values Facebook accepts for the same window; prefer the named variants (`last24Hours`, `last7Days`, `last30Days`) for clarity. `all` applies no date filter.
availabilityNoOptional availability filter for marketplace listings.
deliveryMethodNoOptional delivery method filter for marketplace listings.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe, open-world read operation. The description adds the pagination behavior ('use cursor when paginated') and the list return type, plus the keyword+near-lat/lng scoping. It doesn't disclose details like whether lat/lng are required together, what happens when no results are found, or whether the cursor is opaque and must be passed unmodified, but with annotations covering the safety profile, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence of 19 words, front-loads the verb and resource, and earns its place by adding the pagination guidance that is not in the schema. There is zero verbiage or repetition of structured data.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is complete for a read-only search list tool: it covers the core inputs (keyword, location), the output shape (a list), and pagination behavior. The parameter schema is 100% covered, annotations carry the read-only/open-world safety profile, and there is no output schema to explain. The only minor gaps are things like mutual inclusiveness of lat/lng and the meaning of 'context', but the schema itself documents those parameters sufficiently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 17 parameters including enums, ranges, and the deprecated count/limit relationship. The description adds the high-level notion that query + lat/lng is the core search mode and that cursor is the pagination mechanism, which somewhat exceeds the schema. However, it doesn't add detail beyond what the schema already provides for most parameters, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Search'), the resource ('Facebook Marketplace listings'), and the two core constraints: keyword and latitude/longitude. It is distinct from siblings like facebook_marketplace_item_get and facebook_marketplace_locations_search, though it doesn't explicitly name them. The addition of 'Returns a list (use cursor when paginated)' gives a bit of output shape, 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for keyword-based marketplace searches around a location, which differentiates it from facebook_marketplace_locations_search (which searches locations, not listings) and facebook_marketplace_item_get (which gets a single item). However, it doesn't explicitly state when to choose this over other facebook marketplace tools, nor does it mention prerequisites like requiring both lat and lng or how the cursor should be used beyond 'use cursor when paginated'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

facebook_post_comments_listList Facebook post or reel commentsA
Read-only
Inspect

List comments on a Facebook post or Reel by URL. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoLink to the Facebook post or reel whose comments should be listed.
cursorNoOpaque cursor from a previous response to fetch the next page.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
feedbackIdNoOptional Facebook feedback identifier for the target post; when available it can improve lookup performance.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the read-only nature is clear. The description adds value by confirming the return is a list and warning that cursor-based pagination may be required, which is useful behavioral context beyond 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence with no filler. The core action, target resource, and pagination note are all included efficiently, and the URL-based scoping is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward read-only listing tool, the description covers the essential inputs (URL, cursor) and the output shape (a list). It does not specify whether replies are included or excluded, but the existence of a sibling replies tool makes that inferable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already documented. The description reinforces the url param ('by URL') and cursor pagination, but adds little meaningful semantic information beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and a concrete resource ('comments on a Facebook post or Reel'), scoped by URL. It does not explicitly differentiate top-level comments from the sibling facebook_post_comments_replies_list, so the distinction between tools 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the primary use case clear — listing comments for a given Facebook post or Reel — and even hints at pagination via cursor. However, it offers no explicit guidance on when to choose this tool over facebook_post_comments_replies_list or cross-platform comment tools like instagram_post_comments_list or reddit_post_comments_list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

facebook_post_comments_replies_listList Facebook comment repliesA
Read-only
Inspect

List replies to a Facebook comment. Accepts a from post comments. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorYesComment `repliesCursor` from post comments, or `page.nextCursor` to paginate replies.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that the tool returns a list and that a cursor should be used for pagination, which is useful, but it does not disclose response fields, rate limits, or what happens when no replies exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and mostly front-loaded, but the sentence "Accepts a from post comments" is gramatically incomplete and confusing. A focused, correct phrase like "Accepts the replies cursor from post comments" would make the description more effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list-style tool, the description, together with the rich schema and readOnly annotations, covers the main behaviors: the resource, the expected input source, and pagination. The lack of an output schema is partially mitigated by the explicit statement that the tool returns a list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, and the schema already explains the cursor, context, llm_model, and conversation_id fields with detailed meanings. The description's phrase "Accepts a from post comments" appears to be a malformed reference to the cursor and adds no value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: "List replies to a Facebook comment." This distinguishes it from the sibling tool facebook_post_comments_list, which lists top-level comments, and from other platforms' reply-list tools. The title reinforces the same message.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is used after retrieving post comments via the cursor mention, but it never explicitly says when to use this tool versus alternatives like facebook_post_comments_list or instagram_post_comments_replies_list. No exclusions or conditions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

facebook_post_getGet Facebook post or reelA
Read-only
Inspect

Get a Facebook post or Reel by URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic permalink to the Facebook post or reel.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.
includeCommentsNoWhen true, includes a sample of top-level comments when available.
includeTranscriptNoWhen true, includes a plain-text transcript when available for the video.

TDQS

A3.6/5.0
Behavior3/5

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 cover read-only safety. The description adds useful behavioral context by noting comments and transcripts are only included 'when available', implying the tool degrades gracefully. However, it doesn't disclose the output format, what fields the response will contain, or how it behaves when the URL is invalid or not a public permalink. With annotations carrying the safety profile, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence: 'Get a Facebook post or Reel by URL.' It is front-loaded, directly states the resource and the required input, and contains zero filler. It could arguably be slightly more descriptive about what a return value includes, but for a retrieval tool this is appropriately sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-resource retrieval tool with 100% schema coverage, no output schema, and annotations declaring read-only and open-world semantics, the description is mostly complete. An agent can determine that it provides a post/reel's content (with optional comments and transcript). The only notable gap is that it doesn't describe the shape of the return payload, but since there is no output schema and annotations cover safety, this is a minor deficiency rather than a critical one.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema documents all six parameters fully. The description itself doesn't add parameter-level meaning beyond what the schema provides. The description's mention of URL retrieval aligns with the url parameter, but the context and llm_model parameters (which appear to be universal tracking fields) are not discussed. Baseline 3 is correct when the schema handles parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The title 'Get Facebook post or reel' and description 'Get a Facebook post or Reel by URL' state a specific verb (get) and resource (Facebook post/reel) with an input method (URL), which clearly differentiates it from sibling tools like facebook_post_comments_list or facebook_profile_posts_list. It doesn't emphasize the post-vs-reel duality as strongly as it could in the description, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes clear the tool is for retrieving a specific post or reel by its public permalink URL. It doesn't explicitly state exclusions or alternatives, but sibling tool names such as facebook_post_comments_list and facebook_post_transcript_get make the usage context inferable: this is for the post content itself, not comments or transcripts. The inclusion of 'includeComments' and 'includeTranscript' boolean flags implies this is the primary post retrieval endpoint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

facebook_post_transcript_getGet Facebook post transcriptA
Read-only
Inspect

Get the transcript for a Facebook post or Reel by URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the Facebook post or reel whose transcript should be returned.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior3/5

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 no behavioral detail beyond the input mechanism ('by URL'), and there is no mention of failure cases like missing captions. This is adequate but not enriching.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler; the key scope ('Facebook post or Reel') and mechanism ('by URL') are front-loaded. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity read-only fetch tool, the description plus fully documented schema is nearly sufficient. The lack of an output schema and any note about transcript availability for captioned versus uncaptioned content leaves a small gap, but it does not impede correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with detailed descriptions for url, context, llm_model, and conversation_id, so the schema does the heavy lifting. The description only echoes 'by URL,' adding no extra meaning beyond what the schema already provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get'), names the resource ('transcript'), and scopes it to 'Facebook post or Reel' with 'by URL'. This clearly distinguishes it from platform-specific siblings and from facebook_post_get, which retrieves the post itself rather than its transcript.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the trigger case: getting a transcript for a Facebook post or Reel from a URL. It does not explicitly state when to prefer facebook_post_get or other platforms' transcript tools, so it stops short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

facebook_profile_events_listList Facebook profile eventsA
Read-only
Inspect

List events hosted by a Facebook profile or Page. Accepts a profile or page URL. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic Facebook profile or page URL.
cursorNoOpaque pagination cursor from a previous response.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly and openWorld hints, the description adds that the tool returns a list and that pagination is handled through a cursor. This gives the agent practical expectations about the response shape and how to continue larger result sets. No contradiction with the annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The core action and resource are front-loaded, the input requirement is stated, and the pagination note earns its place by conveying actionable behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with full parameter schema coverage and safety annotations, the description conveys the URL input, the list-shaped return, and the pagination mechanism. It does not describe the event fields in the returned list, but that is not necessary for correct invocation and no output schema was promised.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 even without description-level parameter detail. The description adds a small amount of value by indicating the URL is a profile or page URL and that cursor should be used when paginated, but the schema already documents these parameters adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('events hosted by a Facebook profile or Page'), and states that it accepts a profile or page URL. This clearly distinguishes it from search-oriented and single-event siblings, though it does not explicitly name or contrast with near-sibling facebook_events_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use case is implied: call this when the user provides a Facebook profile or page URL and wants the events hosted by that entity. However, it gives no explicit guidance about when not to use it or how it compares to facebook_events_list, facebook_events_search_list, or facebook_event_get.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

facebook_profile_getGet Facebook profileA
Read-only
Inspect

Get a Facebook profile or Page by URL or username.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFacebook public profile or page URL to look up.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.
includeBusinessHoursNoOptional: include structured business hours in the response when available.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety and live-data profile. The description adds minor context by indicating the tool supports both profiles and Pages, but it does not disclose return shape, pagination, or any access limitations. With annotations present, this is acceptable but not detailed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is direct, front-loaded, and free of filler. It conveys the core purpose without redundantly repeating the title or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only profile lookup with full schema coverage and safety annotations, the description is mostly sufficient. It lacks explicit guidance about the response contents, but the tool name and resource type make the expected outcome reasonably clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds value by clarifying that the url parameter can also accept a username, which is not explicitly stated in the schema's parameter description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), a specific resource ('Facebook profile or Page'), and the lookup method ('by URL or username'). It clearly distinguishes the tool from the many facebook_profile_* list tools, since it is the one that fetches the profile/Page entity itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when an agent needs a Facebook profile or Page by URL or username. However, it does not explicitly mention when not to use it or point to alternative sibling tools for profile posts, events, photos, or other related data.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

facebook_profile_photos_listList Facebook profile photosA
Read-only
Inspect

List photos from a Facebook profile or Page. Accepts a profile or page URL. Credits: 1 base; hostMedia=true adds +2 per hosted asset (up to 24 / 49 max). Failed assets are not surcharged.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic Facebook profile or page URL whose photos should be listed.
cursorNoOpaque pagination cursor from a previous response.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
hostMediaNoWhen true, hosts source media for 90 days and returns delivery URLs in each photo's `hostedMedia`.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.2/5.0
Behavior4/5

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 valuable behavioral context beyond that: base credit cost, +2 per hosted asset when hostMedia=true, credit caps, and the no-surcharge-on-failed-assets policy. This billing/failure behavior is not inferable 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three terse sentences with no filler: the action and resource are front-loaded, followed by URL requirement and credit/failure policy. Every sentence earns its place and nothing is restated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with no output schema, the description covers the required input, cost behavior, and failure policy. The only mild gap is the somewhat ambiguous 'up to 24 / 49 max' figure and no explicit mention of pagination, though the cursor parameter is already documented in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with detailed parameter docs, so the baseline is 3. The description adds semantic value by explaining the cost implications of hostMedia=true, which the schema only describes in terms of hosting duration and delivery URLs. It does not restate parameter details already fully covered by the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with an explicit verb–resource pair ('List photos from a Facebook profile or Page') and clarifies that it accepts profile or page URLs. This distinguishes it from sibling tools that list posts, reels, events, or return profile metadata.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives the core invocation context (requires a profile or page URL) and makes clear it is for photo listings, but it does not explicitly state when to prefer this tool over similar Facebook list sibling tools like facebook_profile_posts_list or facebook_profile_reels_list. No when-not or alternative routing is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

facebook_profile_posts_listList Facebook profile postsA
Read-only
Inspect

List posts from a Facebook profile or Page. Accepts a profile URL or page id. Credits: 1 base; hostMedia=true adds +2 per hosted asset (up to 24 / 49 max). Failed assets are not surcharged.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoFull public Facebook profile or page URL.
cursorNoOpaque pagination cursor from a previous response.
pageIdNoFacebook page or profile id when you have it instead of a full URL.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
hostMediaNoWhen true, hosts source media for 90 days and returns delivery URLs in each post's `hostedMedia`.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Given the annotations already declare readOnlyHint=true and openWorldHint=true, the description adds useful supplementary behavior: credit costs, hostMedia surcharge details, a per-asset cap, and that failed assets are not surcharged. This goes beyond what annotations provide, though it does not describe return format 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with zero filler. The purpose is front-loaded, followed by accepted inputs and a compact cost note. Every sentence contributes useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only listing tool with full schema coverage and clear annotations, the description covers the core purpose, accepted identifiers, and cost implications. It does not describe the return structure, but the absence of an output schema and the simple list nature of the tool make this a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful extra semantics by clarifying that either a URL or pageId can be used, and by explaining the cost behavior of hostMedia. This exceeds the schema's parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'List posts from a Facebook profile or Page.' It also states the accepted input forms (profile URL or page id), making the tool's scope unambiguous and clearly distinguishable from sibling tools like facebook_group_posts_list or facebook_profile_photos_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for profile/Page posts and not for groups or reels, but it never explicitly states when to prefer this tool over alternatives or when not to use it. With many similar Facebook siblings, more explicit routing guidance would help, but basic usage context is clear from the resource description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

facebook_profile_reels_listList Facebook profile reelsA
Read-only
Inspect

List Reels from a Facebook profile or Page. Accepts a profile or page URL. Credits: 1 base; hostMedia=true adds +2 per hosted asset (up to 24 / 49 max). Failed assets are not surcharged.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic Facebook profile or page URL whose reels should be listed.
cursorNoOpaque pagination cursor from a previous response.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
hostMediaNoWhen true, hosts source media for 90 days and returns delivery URLs in each reel's `hostedMedia`.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, and the description goes beyond them by disclosing credit costs: 1 base credit, +2 per hosted asset when hostMedia=true, a cap, and no surcharge for failed assets. This is genuinely useful behavioral context. It does not detail response shape or pagination, but read-safety is covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded with purpose, and packs in useful cost behavior without excessive detail. The only minor issue is slight redundancy between 'from a Facebook profile or Page' and 'Accepts a profile or page URL.'

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 provides enough orientation: what is listed, what input is needed, and how hostMedia affects cost. Cursor, conversation_id, and llm_model are documented in the schema. The 'up to 24 / 49 max' phrasing is slightly ambiguous but not blocking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter. The description mainly reiterates that a profile or page URL is accepted, which duplicates the url schema description. The hostMedia credit note is useful but relates to cost behavior rather than clarifying parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List', the resource 'Reels', and the scope 'Facebook profile or Page', and notes that it accepts a URL. This cleanly distinguishes it from sibling tools like facebook_profile_posts_list, facebook_profile_photos_list, and instagram_profile_reels_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes it clear the tool is appropriate when someone wants reels from a Facebook profile or page, including that a URL is the required input. It does not explicitly name alternative tools or state when not to use it, but the context is clear enough for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_more_toolsA
Read-onlyIdempotent
Inspect

Check for additional tools whenever your task might benefit from specialized capabilities - even if existing tools could work as a fallback.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextYesA description of your goal and what kind of tool would help accomplish it.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already communicate read-only, idempotent, open-world, and non-destructive behavior, so the description does not need to restate those. The description adds useful context about when to invoke the tool, but it does not disclose return format, rate limits, or other runtime behavior. No contradiction with 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence conveys both the purpose and the usage threshold without filler. Every clause adds value, and the fallback clause is a meaningful decision heuristic for the agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a meta-tool with rich parameter documentation and safe annotations, the description is largely complete: it tells the agent when to call and the schema tells it how. The lack of an output schema means return structure is not described, but 'additional tools' reasonably implies a list of tool definitions, so this is a minor gap rather than a blocking omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema itself provides detailed guidance: llm_model is for analytics only and must not be guessed, and conversation_id must come from a prior server response without parallel calls until available. The tool description adds no parameter-specific meaning, so the baseline score applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool checks for additional tools and gives the trigger condition: when specialized capabilities might help. This immediately distinguishes it from the domain-specific getters and search tools among its siblings, which retrieve data rather than expand the available toolset.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance: call it whenever a task might benefit from specialized capabilities, even if existing tools could work as a fallback. It does not list when-not-to-use cases, but for a discovery tool this is a clear and actionable usage rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_profile_activity_listList GitHub profile activityA
Read-only
Inspect

List recent public activity for a GitHub profile, one month per request. Accepts a username. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoCalendar year to read activity for. Default: current calendar year.
cursorNoPagination cursor from a previous response (`data.page.nextCursor`). Pages backward one month at a time through the selected year.
handleYesGitHub username whose public activity timeline should be listed.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true and openWorldHint=true; the description adds useful behavioral detail by stating activity is returned one month per request, the response is a list, and cursor-based pagination is used. This goes beyond the annotations, though it does not discuss rate limits or event-type granularity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no filler. The core action, time window, input, and pagination behavior are all front-loaded and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list with 100% parameter coverage, the description combined with annotations and schema is adequate: it names the output shape, monthly window, and pagination. The main gap is the absence of routing guidance versus sibling GitHub profile tools, but the basics for invoking correctly are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the structured schema already documents all six parameters thoroughly. The description only restates that a username is accepted, which adds no meaning beyond the handle field's schema description. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('recent public activity for a GitHub profile'), and notes the monthly pagination window. It does not explicitly name siblings, so an agent must infer how this differs from github_profile_contributions_get or github_profile_repositories_list, though 'activity' is conceptually distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this tool over the many GitHub profile siblings, no exclusions, and no mentions of alternatives. The description only states what the tool does, leaving selection entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_profile_contributions_getGet GitHub contribution graphA
Read-only
Inspect

Get the contribution graph for a GitHub profile for a given year. Accepts a username.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoCalendar year for the contribution graph. Default: current calendar year.
handleYesGitHub username to look up, with or without a leading @.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe, read-only operation. The description adds the year-scoping behavior and username input. It doesn't describe what the graph data looks like, whether it supports handles with/without @, or how it behaves for inactive users — the schema covers the @ detail, but behavioral output remains unspecified. With annotations already carrying the safety profile, a 3 is fair.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, front-loaded with the core purpose and time scope. Every word earns its place. The description is appropriately brief for a simple read-only lookup tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only single-resource tool with 100% schema coverage and readOnlyHint/openWorldHint annotations, the description plus schema is largely sufficient. It doesn't describe the response shape, but there is no output schema and the graph's content is predictable from the name. A 4 is justified because the only notable gap is the absence of any guidance on what the graph data contains or edge cases like missing years, which is minor for this tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 5 parameters. The description adds minimal semantic value beyond restating that a username is accepted and the year is a calendar year. The 'Accepts a username' line slightly reinforces that handle can include a leading @, which the schema also states. Baseline 3 is correct because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific verb ('Get'), resource ('contribution graph for a GitHub profile'), and temporal scope ('for a given year'), plus the primary input ('Accepts a username'). It clearly distinguishes from sibling tools like github_profile_activity_list, github_profile_get, and github_profile_repositories_list because it targets the contribution graph specifically, which no sibling name mentions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys the core usage context: call it to retrieve a GitHub profile's contribution graph for a year, accepting a username. It does not explicitly list when not to use it or name alternatives like github_profile_activity_list, but the tool name and description make the use case clear enough. A 4 is appropriate because it gives clear context but lacks explicit exclusionary guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_profile_followers_listList GitHub profile followersA
Read-only
Inspect

List followers for a GitHub profile. Accepts a username. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor from a previous response (numeric page index as a string).
handleYesGitHub username whose followers should be listed.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and open-world behavior are covered. The description adds useful behavioral information beyond annotations: it says the result is a list and explicitly tells the agent to use a cursor when paginated. This is concise but meaningful disclosure of response-shaped 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the main verb and resource, and every sentence earns its place. It states what the tool does, what it accepts, what it returns, and how pagination behaves, all in minimal text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list-retrieval tool with readOnly annotations and a fully described input schema, the description supplies purpose, required input, return shape, and pagination guidance. It could have mentioned what fields each follower entry contains, but in absence of an output schema this is a minor gap rather than a blocker.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents handle, cursor, context, lllm_model, and conversation_id. The description adds no substantive parameter semantics beyond calling the required identifier a 'username', which matches the handle parameter. This meets the baseline of 3 but does not elevate it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'List followers for a GitHub profile' and immediately clarifies it accepts a username. It is clearly distinguishable from the sibling github_profile_following_list by naming the target as followers rather than following. The additional 'Returns a list' reinforces the expected outcome without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear functional context—list followers for a GitHub profile—but does not explicitly state when to choose this tool over alternatives such as github_profile_following_list or github_profile_get. Usage is implied by the name and the stated purpose, but no exclusions or alternative-routing guidance are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_profile_following_listList GitHub profile followingA
Read-only
Inspect

List accounts a GitHub profile follows. Accepts a username. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor from a previous response (numeric page index as a string).
handleYesGitHub username whose following list should be listed.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnlyHint=true and openWorldHint=true, so the safe-read nature is externally declared. The description adds that a list is returned and cursor pagination should be used, though this partly duplicates the schema's cursor property.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core operation and finished with the pagination hint. There is no filler, repetition, or unnecessary caveat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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, the description covers what it returns and how pagination is handled. A description of item fields would be nice but is not essential given the title and the overall simplicity; no output schema exists, but the description gives enough to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so handle, cursor, context, llm_model, and conversation_id are already documented in the schema. The description only rephrases handle as 'Accepts a username' and cursor as 'use cursor when paginated,' adding no new semantic meaning. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List accounts a GitHub profile follows,' which clearly scopes the operation to the following list rather than the profile itself. It distinguishes from github_profile_followers_list by using 'follows,' but does not explicitly name alternatives or boundary conditions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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. The phrase 'Accepts a username' implies the handle parameter is needed, and 'use cursor when paginated' gives a pagination hint, but an agent must infer that followers should go to github_profile_followers_list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_profile_getGet GitHub profileA
Read-only
Inspect

Get a GitHub profile for a user or organization. Accepts a username.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesGitHub username to look up, with or without a leading @.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true and openWorldHint=true annotations, the description does not need to restate safety. It adds useful behavioral context by stating the tool works for both users and organizations and accepts a username. It does not mention rate limits or response shape, but the annotations already carry the main behavioral signals, and the description adds value beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero redundancy. Each phrase adds value: the verb, the resource, the entity scope, and the parameter are all covered efficiently. The description is front-loaded and appropriately sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 a single meaningful parameter and full schema coverage, the description is sufficient. There is no output schema, so return-value details are not described, but the tool's simplicity and the annotations make the package complete enough for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are already documented in the schema. The description adds minimal extra meaning—'for a user or organization' and 'accepts a username'—which partially overlaps with the schema's handle description. With full schema 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and names the resource ('GitHub profile') plus the accepted entity types ('user or organization'). This distinguishes it from the many GitHub sibling tools that target other aspects like activity, contributions, followers, or repositories. However, it does not explicitly contrast it with the closely related github_profile_* siblings, 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use the tool: whenever a GitHub profile for a user or organization is needed. The sibling list provides context for alternative GitHub profile-related tools, but the description itself does not state when not to use it or explicitly point to alternatives. It gives clear context but no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_profile_pullRequests_listList GitHub profile pull requestsA
Read-only
Inspect

List pull requests authored by a GitHub user. Accepts a username. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNoOnly return pull requests created on or after this date (YYYY-MM-DD).
untilNoOnly return pull requests created on or before this date (YYYY-MM-DD).
cursorNoPagination cursor from a previous response (`data.page.nextCursor`).
handleYesGitHub username whose public pull requests should be listed.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true and openWorldHint=true, so the read-only/open-world aspects are covered. The description adds useful pagination behavior ('use cursor when paginated') and clarifies that the result is a list. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the primary action front-loaded. Every clause earns its place: scope, input, return type, and pagination; there is no filler or duplicated schema detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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, the description plus 100% schema coverage adequately convey what the tool returns and how to paginate. It does not state whether all PR states are included or how results are ordered, but openWorldHint and schema coverage make those gaps minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters such as since, until, handle, context, and conversation_id are already fully documented. The description only re-states 'username' and 'cursor' without adding meaning beyond the schema, so it stays at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Starts with a specific verb 'List' and a specific resource: 'pull requests authored by a GitHub user.' This clearly differentiates it from siblings like github_profile_get, github_profile_activity_list, and github_profile_repositories_list. The title and name reinforce the same scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 mention of alternative tools. The only implicit cue is the scope stated in the first sentence; it never tells an agent to prefer this over related profile list tools or explains what it is not for.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_profile_repositories_listList GitHub profile repositoriesB
Read-only
Inspect

List repositories for a GitHub user or organization. Accepts a username. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort field for repositories.
typeNoRepository type filter. `owner`: repos owned by the user. `all`: owned repos plus repos from organizations the user belongs to. `member`: only repos the user belongs to via organization membership (not owned by the user). Default: `owner`.
cursorNoPagination cursor returned by a previous response.
handleYesGitHub username whose public repositories should be listed.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
directionNoSort direction.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnlyHint=true and openWorldHint=true, so the description's burden is lighter. It does add that the call returns a list and that cursor-based pagination applies, which is useful beyond the schema. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the core action and scope front-loaded, followed by the pagination caveat. No filler or redundant restating of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 full schema documentation and readOnly annotations, the description covers the essential contract: what is listed, for whom, and how pagination works. The absence of an output schema is partially mitigated by 'returns a list'; more detail about returned item fields would help but is not necessary for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the description is not expected to repeat parameter details. It adds only a minimal 'accepts a username' mapping and a pagination hint, both already largely covered by the well-documented handle and cursor schema entries.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action — 'List repositories for a GitHub user or organization' — with a clear resource and return type. It is distinct enough from profile activity/contributions/followers tools, but it does not explicitly differentiate itself from github_repositories_get, so it misses full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the main use case but provides no when-to-use guidance, no exclusions, and no pointers to alternatives such as github_repositories_get or github_profile_get. In a large sibling set, an agent gets no routing help beyond the obvious name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

github_repositories_getGet GitHub repositoryA
Read-only
Inspect

Get a single GitHub repository by URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull public GitHub repository URL.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, which aligns with the non-destructive 'Get' wording. The description adds no additional behavioral context such as auth requirements, rate limits, or restrictions beyond the schema's 'public' mention, but for a simple read-only fetch tool the annotation coverage lowers the bar. No contradiction exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler or redundancy. It states the verb and resource immediately and avoids repeating the schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a low-complexity tool: four parameters, all fully documented in the schema, with read-only annotations covering the safety profile. An output schema is absent, but 'Get' sufficiently implies that the repository object is returned. An agent has enough information to invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description's 'by URL' only restates what the url property already documents and adds no meaning about context, llm_model, or conversation_id. Those parameters are already fully explained in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and a specific resource ('a single GitHub repository'), and further clarifies the access pattern ('by URL'). This distinguishes it from list-style siblings like github_profile_repositories_list and from profile-focused tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the main usage condition: the agent should call this when it has a specific repository URL in hand. However, it does not explicitly state when to prefer this over github_profile_repositories_list or other repository-related tools, so the guidance is implicit rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

google_adLibrary_ad_getGet Google Ad Library adA
Read-only
Inspect

Get a single Google Ad Transparency creative by public Ad Transparency URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic Google Ad Transparency URL for the creative.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so safety is covered. The description adds the 'single' scope but does not mention rate limits, error behavior, or the shape of the returned creative data. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence with zero filler; the action, resource, and input are front-loaded. It is appropriately sized for a tool that takes only one meaningful parameter plus generic metadata fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete enough for a simple read-only single-resource tool: the schema documents all required params, annotations cover the safety profile, and the description identifies the sole semantic input (public URL). It does not describe return contents, but the tool name and 'creative' make the expected output clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; the url parameter is already documented as 'Public Google Ad Transparency URL for the creative.' The description mostly repeats that phrase and does not add new parameter-level nuance. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get'), resource ('single Google Ad Transparency creative'), and input method ('by public Ad Transparency URL'). The explicit 'Google' clearly distinguishes it from facebook_adLibrary_ad_get, linkedin_adLibrary_ad_get, and tiktok_adLibrary_ad_get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies the use case: call when you have a public Ad Transparency URL and want one creative. However, it does not explicitly state when to use google_adLibrary_advertisers_search or google_company_ads_list instead, and it gives no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

google_company_ads_listList Google company adsA
Read-only
Inspect

List ads a company or advertiser is running in Google Ad Transparency. Accepts a domain or advertiser id. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoOptional topic filter. When `political`, `region` is required.
cursorNoOpaque pagination cursor from a previous response.
domainNoCompany domain when you do not have an advertiser id.
formatNoOptional creative format filter.
regionNoOptional region filter as a two-letter country code.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
endDateNoOptional end date filter in YYYY-MM-DD format.
platformNoOptional Google surface filter.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
startDateNoOptional start date filter in YYYY-MM-DD format.
advertiserIdNoGoogle Ad Transparency advertiser id when you have it instead of a domain.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only and external-data characteristics are covered. The description adds practical behavior: returns a list, supports cursor pagination, and accepts either a domain or advertiser id. It does not disclose what fields each ad item contains, whether results are sorted, whether this is the correct tool for all ad types, or what happens when both domain and advertiserId are supplied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no filler. It front-loads the purpose, then the identifier alternatives, then the return/pagination behavior. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 all parameters documented in the schema, the description provides sufficient operational guidance: identifier alternatives, list response, and pagination marker. Minor gaps: no mention of output item shape, no guidance on handling both domain and advertiserId, and no note that political topic requires region (though the schema covers that).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents every parameter. The description adds the key semantic that domain and advertiserId are alternatives ('Accept a domain or advertiser id'), which is important and not fully captured by individual parameter descriptions. However, it does not clarify precedence/conflict behavior when both are provided, and the cursor semantics are partially implied by 'use cursor when paginated' and the schema's opaque-pagination description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists ads from Google Ad Transparency for a company or advertiser, and it identifies the two accepted identifier forms (domain or advertiser id). It also mentions the return type is a list with cursor-based pagination, which differentiates it from ad-get and search tools among siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states when to use the tool (when you have a domain or advertiser id and need ads from the ad library), and the schema adds clarity that topic=political requires region. It does not explicitly contrast against google_adLibrary_ad_get, google_adLibrary_advertisers_search, or facebook_company_ads_list, but the 'List' action plus 'domain or advertiser id' provides enough context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hackernews_comment_context_getGet Hacker News comment contextA
Read-only
Inspect

Get a Hacker News comment with its ancestor chain to the root story. Accepts a comment id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesHacker News comment id.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already communicate readOnlHint=true and openWorldHint=true, so the safety profile is covered. The description adds that the result includes the ancestor chain to the root story, which is useful behavior, but it does not describe response shape, ordering, or edge cases such as a comment missing from the chain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with the key differentiator — ancestor chain to root story — front-loaded. 'Accepts a comment id' is slightly redundant with the schema but does not add significant noise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only get tool with full schema coverage and annotations, the core return value is described. Because no output schema exists, a little more detail about the chain format, order, or whether the root story itself is included would make it fully complete, but the current text is sufficient for typical use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are already documented. The description only repeats that id is a comment id and adds no extra meaning for context, llm_model, or conversetion_id, matching the baseline of 3 for fully covered schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and a precise resource: a Hacker News comment plus its ancestor chain to the root story. This clearly distinguishes it from the siblings hakernews_item_get and hakernews_story_comments_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool — when the caller needs the comment along with its ancestor chain — but it never names alternatives or states when not to use it. An agent must infer the boundary against hakernews_item_get and hakernews_story_comments_list without explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hackernews_feed_listList a Hacker News feedA
Read-only
Inspect

List a Hacker News feed by type (top, new, best, ask, show, or jobs). Accepts a feed name. Returns a list (use page/pageSize when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
feedYesHacker News feed: top, new, best, ask, show, or jobs.
pageNoZero-based page index (maximum 50 pages). Default: 0. Advance with `data.page.nextPage` when `hasMore` is true.
limitNoItems to hydrate per page (1–50). Default: 30. Prefer this over `pageSize`.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
pageSizeNoDeprecated alias for `limit`. When both are set, `limit` wins.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint and openWorldHint already covering side effects and world closure, the description adds useful behavioral context by stating it returns a list and that pagination is supported. It does not describe item shape or rate limits, but the annotation coverage lowers 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded, and easy to parse. It loses a point because 'Accepts a feed name' is largely redundant with the first clause and the title, adding slight verbosity without new information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The rich schema covers required params, defaults, max values, deprecated aliases, and conversation sequencing, so the description need not repeat those. It correctly states the output kind (a list) and pagination approach. It is not a 5 because with no output schema, the returned item shape is left to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already explains each parameter including enums, defaults, maximums, deprecated aliases, and pagination mechanics. The description's 'Accepts a feed name' and 'use page/pageSize' add no meaningful semantics beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List') and resource ('Hacker News feed') and enumerates the valid feed types (top, new, best, ask, show, jobs), making it clear and distinct from sibling tools like hackernews_item_get or hackernews_search_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear context for what the tool lists and provides pagination guidance ('use page/pageSize when paginated'), but it does not explicitly say when to choose this over alternatives such as hackernews_search_list or hackernews_story_comments_list. The usage is implied rather than contrasted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hackernews_item_getGet Hacker News itemC
Read-only
Inspect

Get a Hacker News item by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesHacker News item id.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, and the description adds no behavioral context beyond the predictable 'get' semantics. It does not disclose what kinds of items are returne (story, comment, job, poll), how missing or invalid ids behave, or any external API quirks. The description neither contradicts nor meaningfully enriches 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with zero filler and front-loads the verb and resource. It is economical, though arguably too spare to cover the important distinctions and behavioral notes. As pure conciseness it is strong, but as a complete tool description it sacrifices useful context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and a large set of closely related siblings, the description leaves important gaps: it does not define what an HN 'item' is, what shape the response takes, or how this relates to hackernews_story_get and hackernews_comment_context_get. An agent can identify the basic operation but cannot confidently choose or interpret this tool without additional knowledge.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents id, context, llm_model, and conversation_id. The description's 'by id' merely restates the id parameter and adds no new semantic information. The baseline of 3 applies because the schema carries the full parameter-documentation burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: 'Get a Hacker News item by id.' This is far from tautological and identifies the core operation. However, it does not explain how an 'item' differs from sibling concepts such as hackernews_story_get or hackernews_comment_context_get, so sibling 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to use this tool instead of alternative Hacker News tools. With a large sibling list containing story_get, comment_context_get, user_get, and maxitem_get, the agent is not told which id types or scenarios map to item_get. No exclusions or conditional advice are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hackernews_jobs_who_is_hiring_listList Who is Hiring jobsA
Read-only
Inspect

List top-level jobs from the monthly Hacker News Who is Hiring thread (latest thread, or a YYYY-MM month). Returns a list (use page/pageSize when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoZero-based page index of top-level hiring comments.
limitNoJob rows per page (1–50). Default: 20. Prefer this over `pageSize`.
monthNoCalendar month (YYYY-MM) to pin a Who is Hiring thread. Default: latest thread.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
pageSizeNoDeprecated alias for `limit`. When both are set, `limit` wins.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.9/5.0
Behavior4/5

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 behavioral context beyond that: only 'top-level' comments are returned (excluding replies), the default thread selection behavior, and that pagination applies. The only minor blemish is recommending page/pageSize when the schema marks pageSize as a deprecated alias for limit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the purpose front-loaded before the pagination note. Every sentence earns its place. The only deduction is the slight inaccuracy of pointing the agent to page/pageSize when the schema designates pageSize as deprecated and limit as preferred.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with no output schema, the description states the source resource, the month-selection behavior, and the paginated-list return shape — the essential facts an agent needs. It would benefit from hinting at what a job item contains (e.g., company, position, link to the HN comment), but the description is adequate for a simple list retrieval.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 7 parameters, giving a baseline of 3. The description adds modest value by clarifying the month default ('latest thread') and hinting at pagination, but those facts are also present in the schema itself. The description doesn't complement the parameter semantics in any significant way.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and a precise resource ('top-level jobs from the monthly Hacker News Who is Hiring thread'). This clearly distinguishes it from sibling tools like hackernews_search_list, hackernews_feed_list, and linkedin_jobs_search_list, which an agent could otherwise confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear contextual guidance about which thread is used ('latest thread, or a YYYY-MM month'), which clarifies parameter behavior. However, it never explicitly states when to prefer this tool over alternatives (e.g., hackernews_search_list), nor does it mention exclusions. 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.

hackernews_maxitem_getGet Hacker News max item idB
Read-only
Inspect

Get the current largest Hacker News item id.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3/5.0
Behavior2/5

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 only the 'current' qualifier and 'largest item id' semantics, contributing little beyond what the title and annotations already convey. No contradiction with annotations, but minimal behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence with no waste, but it largely restates the title and tool name, so it does not fully earn its place as added value. Appropriate size, but low informational increment.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a trivial scalar-geter with readOnly/openWorld annotations and no domain parameters, the description is minimally adequate. However, it omits useful context such as what the max item id is used for (new-item detection), and there is no output schema to clarify the return value.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three params are generic meta-parameters (context, llm_model, conversation_id) fully described in the schema at 100% coverage; the tool itself takes no domain-specfic parameters. Since there is nothing domain-specific to document, the schema carries the burden and the description need not add more.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and a specific resource ('current largest Hacker News item id'), so the tool's function is unambiguous. However, it does not differentiate itself from sibling tools such as hackernews_item_get or hackernews_updates_get, so it earns a 4 rather than a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus the many sibling HackerNews tools. There is no mention of use cases (e.g., detecting the latest item for polling), no exclusions, and no named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hackernews_search_listSearch Hacker NewsB
Read-only
Inspect

Search Hacker News by keyword. Returns a list (use page/pageSize when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoRestrict search to story URLs matching this URL substring. Can omit `query`.
pageNoZero-based page index (maximum 50 pages, up to 1,000 hits).
sortNoRanking mode. Default: `popularity`.
typeNoRestrict search results to a Hacker News content type. `ask_hn`: Ask HN posts (questions to the community). `show_hn`: Show HN posts (projects/work being shared). `launch_hn`: Launch HN posts (YC-affiliated company launches). Default: `all`.
limitNoHits per page. Must be one of 10, 20, 30, 50. Default: 20. Prefer this over `pageSize`.
queryNoFull-text search query. Required unless `frontPageOnly`, `author`, `domain`, or `url` is set.
authorNoRestrict results to items by this Hacker News username.
domainNoRestrict search to story URLs matching this domain (e.g. example.com). Can omit `query`.
prefixNoWhen true, enable prefix matching for query tokens.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
pageSizeNoDeprecated alias for `limit`. When both are set, `limit` wins.
dateRangeNoCreation-time window. Default: `all`.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
minPointsNoMinimum points/score filter.
searchAuthorNoWhen true, include author username in the searchable fields.
frontPageOnlyNoWhen true, restrict results to current front-page items. Allows omitting `query`.
typoToleranceNoEnable typo tolerance. Default: true.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.
searchStoryTextNoInclude story/comment text in searchable fields. Default: true. Set false to search title/URL only.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool read-only, so the low bar is met. The description adds that it returns a list and implies pagination, but says nothing about rate limits, indexing behavior, or open-world result characteristics. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the core purpose and result type. The only minor blemish is the slightly imprecise 'page/pageSize' for pagination when the schema prefers `limit`.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 19-parameter tool with no output schema, the description is minimal: it covers purpose and list/pagination but omits when-to-use guidance against siblings and any description of response shape beyond 'a list'. The rich per-parameter schema compensates for much of the gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline of 3 applies; the description contributes no parameter meaning beyond mentioning pagination. It even refers to pageSize, which the schema marks as deprecated in favor of limit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Search') and resource ('Hacker News'), and notes that it returns a list. It is clear but does not explicitly distinguish itself from sibling HackerNews tools like hackernews_feed_list or hackernews_item_get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool vs alternatives. It does not mention that single-item fetches should use hackernews_item_get or that feed/user-specific lists have dedicated tools; the only usage hint is that pagination uses page/pageSize.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hackernews_story_comments_listGet Hacker News story commentsA
Read-only
Inspect

List comments on a Hacker News story by id. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesHacker News story id whose comment tree should be returned.
limitNoMaximum comment nodes to return in this page (1–100). Default: 50.
cursorNoOpaque continuation cursor from a previous response. Omit for the first page.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true and openWorldHint=true, so safety is covered. The description goes beyond the annotations by stating that the result is a list and that cursor-based pagination should be used, which is directly useful for invoking and iterating correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences front-load the core action and add the one operational nuance that matters for paginated reads. There is no filler, no repetition of the schema, and no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 fully documented parameters and safety annotations, it is mostly sufficient. However, there is no output schema and the description only says 'returns a list'; it does not clarify whether the comments are flat, nested as a tree, ordered, or what fields each comment contains, which an agent may need to process the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and every parameter already has a meaningful schema description. The description only echoes id and cursor without adding semantic detail about limits, continuation behavior, or the context/model parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List'), a clear resource ('comments on a Hacker News story'), and the required entry point ('by id'). It is immediately distinguishable from the many platform-specific comment-list siblings because it names Hacker News as the source and makes clear this is a list operation, not a single-item get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended usage is implied clearly: call with a story id and paginate with the cursor when needed. However, there is no explicit when-to-use versus alternatives, no exclusion such as 'for the story itself use hackernews_story_get', and no guidance on when a different comments tool would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hackernews_story_getGet Hacker News storyC
Read-only
Inspect

Get a Hacker News story by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesHacker News story id.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe read. The description adds no behavioral context beyond the title—no mention of return format, error behavior, or rate limits—so it does not contribute beyond the structured data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, front-loaded with the verb and resource, and contains no wasted words. It borders on tautology with the title, but structurally it is efficient for a simple lookup tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 does not state what is returned, although that is inferable for a story fetch. More importantly, the ambiguous relationship with hackernews_item_get is unresolved, leaving the definition incomplete for tool selection among siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (id, context, llm_model, conversation_id) are already documented. The description's 'by id' merely restates the id parameter, adding no new semantic information, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and resource ('Hacker News story') with a direct lookup key ('by id'), so what the tool does is unambiguous. However, it does not explicitly distinguish itself from near-neighbor hackernews_item_get, since both fetch Hacker News entities by id; the word 'story' implies scope but no alternative is named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to choose this tool over hackernews_item_get or hackernews_story_comments_list. The implied use case (having a story id and needing the story) is present, but there are no exclusions or alternative routing, which matters given the large sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hackernews_updates_getGet Hacker News updatesB
Read-only
Inspect

Get recently changed Hacker News item ids and usernames.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety and auth posture. The description adds minimal context by clarifying the output is recent item IDs and usernames, but it does not disclose response shape, ordering, time window, or rate-limit behavior. No contraction 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the core action and resource. There is no filler, repetition, or unnecessary detail; every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 strong annotations and full param documentation, the description is close to sufficient. However, there is no output schema, and the description does not clarify the response structure or what 'recently' means, nor does it distinguish itself from other Hacker News list-style tools, leaving some ambiguity for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already well documented, including the warning not to invent conversation_id or issue parallel calls. The description adds no parameter-level details, but none are required given full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Get recently changed Hacker News item ids and usernames.' This clearly states what the tool returns and is easily distinguishable from siblings like hackernews_item_get or hackernews_feed_list. However, it does not explicitly name sibling alternatives or draw the distinction itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 vs alternatives such as hackernews_feed_list, hackernews_maxitem_get, or hackernews_search_list. The usage context is only implied by the word 'recently'; there are no exclusion criteria or references to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hackernews_user_comments_listList Hacker News user commentsA
Read-only
Inspect

List a Hacker News user's comments (newest first). Accepts a username. Returns a list (use page/pageSize when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoZero-based page index (maximum 50 pages, up to 1,000 hits).
limitNoHits per page (1–50). Default: 20. Prefer this over `pageSize`.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
pageSizeNoDeprecated alias for `limit`. When both are set, `limit` wins.
usernameYesHacker News username (case-sensitive).
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnlyHint=true and openWorldHint=true, so the read-only safety profile is established. The description adds useful ordering context ('newest first') and return shape (returns a list). However, it recommends 'use page/pageSize' while the schema marks pageSize as deprecates and says limit wins, creating a mild internal inconsistency that could lead the agent to prefer the deprecated parameter. No contradiction with annotations, but no rich behavioral depth either.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, purpose front-loaded, zero fill. Slightly inefficient because 'Accepts a username' repeats what the required-parameter schema already states, and the 'page/pageSize' phrase conflicts with the schema's 'prefer limit' guidance, but overall it is tight and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a filtered-list read tool with a rich 100%-covered schema, the description conveys ordering, pagination behavior, and return shape (list) — the key runtime facts an agent needs. The one gap is restating the deprecation relationship between limit and pageSize, which the schema already handles, so nothing significant is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline of 3 applies; the schema already documents username case-sensitivity, the deprecation of pageSize, limit defaults, and the llm_model/context/conversation_id contract. The description adds only redundant confirmation ('Accepts a username') and a return-type hint, which is mildly useful given no output schema, but does not go beyond the schema's coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource — 'List a Hacker News user's comments' — with the ordering ('newest first') disclosed. This clearly differentiates the tool from sibling hackernews_story_comments_list (story-scoped) and hackernews_user_submissions_list (posts, not comments) without needing to open the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to choose this tool over siblings such as hackernews_user_submissions_list or hackernews_story_comments_list, nor are exclusions/exceptions stated. The only usage note is pagination ('use page/pageSize when paginated'), which is a parameter behavior, not tool-selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hackernews_user_favorites_listList Hacker News user favoritesA
Read-only
Inspect

List favorites for a Hacker News user by username. Returns a list (use page when paginated; 1-based).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoOne-based HTML favorites page number. Default: 1. Each page bills 1 credit.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
usernameYesHacker News username (case-sensitive).
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only safety profile is covered. The description adds modest value beyond that: it discloses the return shape ('Returns a list') and the pagination behavior. It does not add context like what 'favorites' means on Hacker News, staleness risks, or empty-result behavior, but with annotations present the bar is met at a basic level.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler: the main action is front-loaded, the second sentence earns its place by adding return type and pagination behavior. Nothing could be removed without losing information, and nothing extraneous exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema present, the description carries the burden of explaining return values, and 'Returns a list' only conveys top-level shape—not what the list items contain (story objects vs IDs, fields, timestamps, or how pagination appears in the response). The schema and annotations are rich, and the tool is low-complexity, so an agent could call it correctly, but the return-item detail gap is real.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents username case-sensitivity, one-based page numbering, per-page credit billing, context semantics, and the llm_model/unknown rule. The description only echoes 'by username' and '1-based' without adding new meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: 'List favorites for a Hacker News user by username.' The resource ('favorites') inherently differentiates it from closely named siblings like hackernews_user_comments_list and hackernews_user_submissions_list. However, it doesn't explicitly contrast with those siblings, and the description largely restates the title, so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied: an agent can infer this is the tool for retrieving a user's favorited items, and the parenthetical 'use page when paginated; 1-based' gives a light operational hint. But there is no explicit when-to-use guidance, no mention of alternatives (comments, submissions, user profile), and no exclusions, despite a large sibling set with near-identical naming patterns.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hackernews_user_getGet Hacker News user profileB
Read-only
Inspect

Get a Hacker News user profile by username.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
usernameYesHacker News username (case-sensitive).
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety and dynamic nature of the data. The description adds little behavioral context beyond what annotations provide, such as what happens for nonexistent users or whether profile fields vary. No contradiction exists, but additional useful context 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no wasted words. It is front-loaded with the action and resource. A slightly richer clause distinguishing it from sibling user-related tools would push it to 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 full schema coverage and no output schema, the description is minimally viable. An agent can invoke it correctly. But it does not describe what the returned profile contains, how to handle missing usernames, or how it differs from the many sibling hackernews tools, leaving some contextual gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are already well-documented in the schema. The description adds no new parameter-level meaning beyond restating that the lookup is by username. Baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get a Hacker News user profile by username' clearly states a specific verb and resource. It distinguishes itself from sibling tools that target items, comments, submissions, or feeds, though it does not explicitly call out those differences.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a username is known and the profile is needed, and the username parameter pattern adds case-sensitivity guidance. However, it does not explicitly state when to prefer this tool over related tools like hackernews_user_comments_list or hackernews_user_submissions_list, nor does it mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hackernews_user_submissions_listList Hacker News user submissionsA
Read-only
Inspect

List a Hacker News user's stories, polls, and jobs (newest first). Accepts a username. Returns a list (use page/pageSize when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoZero-based page index (maximum 50 pages, up to 1,000 hits).
limitNoHits per page (1–50). Default: 20. Prefer this over `pageSize`.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
pageSizeNoDeprecated alias for `limit`. When both are set, `limit` wins.
usernameYesHacker News username (case-sensitive).
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/openWorldHint, so the safety profile is covered. The description adds useful behavioral details beyond that: output is a list, results are newest-first, and pagination is supported via page/pageSize. This is meaningful practical guidance for invoking and interpeting the result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, front-loaded sentences with no filler. The core action and scope appear first, ordering is stated succinctly, and pagination guidance is one clause. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple filtered-list tool with rich schema coverage and read-only annotations, the description covers what is listed, the order, and pagination. There is no output schema, but the item classes (stories, polls, jobs) are named, so an agent has enough shape. Minor omission: it could have noted that pageSize is deprecated in favor of limit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3 and the description need not restate every param. It adds a useful hint that username is the core input and that pagination may apply, but it does not deepen parameter semantics beyond schema, and its 'page/pageSize' wording leans toward the deprecated pageSize param rather than the preferred limit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb, resource, and scope: it lists a specific Hacker News user's submissions, defined as stories, polls, and jobs, newest first. This explicit content-type breakdown distinguishes it from sibling tools like hackernews_user_comments_list and hackernews_user_favorites_list without needing to open their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the usage context clear: use this tool when the agent needs a user's submitted stories, polls, or jobs. It does not explicitly name alternatives or state exclusions, but the defition of submissions as stories/polls/jobs implicitly separates it from user comments and favorites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instagram_audio_reels_listList Instagram audio ReelsA
Read-only
Inspect

List Instagram Reels that use a specific audio track, with track metadata, tagged users, and coauthors when Instagram exposes them. Accepts a audio id. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor returned by a previous response.
audioIdYesInstagram audio id whose Reels should be listed.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds value beyond annotations by disclosing that track metadata, tagged users, and coauthors are only included "when Instagram exposes them," and by communicating the list/pagination return behavior. This is useful behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core purpose, followed by return details and pagination guidance. Every sentence earns its place, and there is no filler or irrelevant information. The minor grammatical slip ("a audio id") does not affect clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward list operation with readOnly annotations and no output schema, the description adequately covers what the tool does, the key input, the return type, and pagination. It does not specify the exact item shape or error conditions, but the described metadata fields and caveat about Instagram's data exposure give an agent enough context to select and call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description repeats that an audio id is accepted and that cursor is used for pagination, both already present in the schema. It adds no additional semantic detail about the parameters or their edge cases, but it does not need to compensate since the schema is fully documented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: "List Instagram Reels that use a specific audio track." It clearly distinguishes this tool from sibling tools like instagram_profile_reels_list, instagram_reels_trending_list, and instagram_search_reels_list by focusing on the audio-track use case, and it names the exact scope (specific audio id).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the trigger condition explicit: use it when you need Reels for a particular audio track. It also states the required input (audio id) and pagination behavior. It does not explicitly name alternative tools or exclusions, which keeps it just below a 5, 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.

instagram_highlight_getGet Instagram highlightA
Read-only
Inspect

Get stories inside a saved Instagram highlight by highlight id.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
highlightIdYesNumeric Instagram highlight id from a highlight URL.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and openWorldHint=true; the description aligns with readOnlyHint by framing the action as a read ('Get stories'). It adds the behavioral detail that the operation targets stories inside a saved highlight, which is useful scoping but does not disclose any further runtime behavior such as availability of stories, privacy restrictions, or return envelope. Given the annotations cover the safety profile, this is an adequate but not enriched disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one sentence, front-loads the operation ('Get stories'), and names the target resource and required identifier type. Every word earns its place and there is no boilerplate or repetition of schema content. It is concise, scannable, and directly actionable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 100% schema parameter coverage, the core selection and invocation information is present: what it returns, what identifier is needed, and that it operates on saved Instagram highlights. It falls short of a 5 only because it does not orient the agent toward the companion tool for listing highlights or warn about scenarios where the highlight ID may be stale/inaccessible, but the annotations, schema, and simple operation keep the gap small.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents highlightId, context, llm_model, and conversation_id with meaningful descriptions. The description only restates the role of highlightId in natural language ('by highlight id') without adding new semantic detail such as how to obtain the ID. Per the baseline for high schema coverage, this is a correct score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and a specific resource ('stories inside a saved Instagram highlight'), which clearly differentiates it from sibling tools like instagram_profile_highlights_list that list highlights rather than retrieve their contents. The phrase 'by highlight id' further anchors the operation precisely. This is enough for an agent to select this tool over the many similar Instagram tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. There is no mention that instagram_profile_highights_list should be used first to discover highlight IDs, nor any exclusion or comparison to similar tools. The only implicit usage signal is 'by highlight id', which is too weak to count as real guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instagram_post_comments_listList Instagram post or reel commentsA
Read-only
Inspect

List comments on an Instagram post or Reel by URL. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the Instagram post or reel whose comments should be listed.
cursorNoOpaque cursor from a previous response to fetch the next page.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations readOnlyHint=true and openWorldHint=true already establish the read-only live-data nature, so the bar is lower. The description goes beyond annotations by disclosing pagination ('Returns a list (use cursor when paginated)'), which is a genuine behavioral trait an agent needs to know. Rate limits and ordering are not covered, but these are minor given the annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the verb and resource front-loaded. Every clause adds value: 'by URL' specifies inputs, 'Returns a list' signals output, and 'use cursor when paginated' gives a key behavior. No filler or restated title content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple read-only list operation; the schema fully documents all five parameters, and the description covers the core invocation (URL) and pagination (cursor). With no output schema, the agent would benefit from a hint about the shape of each comment item, but the absence of that detail is not crippling for correctly selecting and invoking the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter already has its own description in the input schema; the description adds no new parameter-level detail beyond echoing 'by URL' and mentioning pagination via cursor. Per the rubric, baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List') and resource ('comments on an Instagram post or Reel by URL'), making the tool's purpose unambiguous. It clearly scopes to comments on posts/reels, which distinguishes it from instagram_post_comments_replies_list and other Instagram read tools. The title reinforces the same meaning.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear invocation scenario (list comments by URL) and adds a concrete pagination instruction ('use cursor when paginated'). It does not explicitly name sibling alternatives or state when not to use this tool, but the comment-vs-replies distinction is implied by the resource naming.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instagram_post_comments_replies_listList Instagram comment repliesA
Read-only
Inspect

List replies to a comment on an Instagram post or Reel. Accepts a comment id and post URL. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the Instagram post or reel that contains the parent comment.
cursorNoOpaque cursor from a previous response to fetch the next page.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
commentIdYesParent comment id from List Instagram post or reel comments (`data.comments[].id`).
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior3/5

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 behavioral context by stating it returns a list and that pagination is handled via a cursor. It does not disclose more granular behavior such as rate limits, empty responses, or data shape, but this is acceptable given the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences deliver the core purpose, required inputs, return type, and pagination behavior with no redundant wording. The key information is front-loaded, and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 full schema documentation and readOnlyHint/openWorldHint annotations, the description covers the essential inputs, output, and pagination. An output schema is absent, but the description does state that a list is returned. The main gap is not specifying the shape of the returned replies, but this is a minor omission given the simplicity of the operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters are already documented in the schema. The description adds minimal extra meaning beyond naming comment id and post URL, which the schema already covers with type and description details. This matches the baseline for full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List'), the specific resource ('replies to a comment'), and the container ('Instagram post or Reel'). It distinguishes this from the sibling instagram_post_comments_list by specifying that it targets replies to a parent comment, and references the parent comment id from that sibling's output in the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the correct use case: this tool is for replies to a specific comment, not top-level comments. It also gives a clear pagination directive ('use cursor when paginated'). However, it does not explicitly say 'use instagram_post_comments_list for top-level comments' or list alternative tools by name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instagram_post_download_getDownload Instagram post or reel mediaC
Read-only
Inspect

Download Instagram post or reel media. Accepts a post URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the post or reel.
regionNoOptional ISO 3166-1 country code for request routing.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already signal a safe read operation, and the description adds no behavioral detail beyond the title. It does not disclose what the download returns, whether media is stored or streamed, or any limits or special handling, leaving important behavioral traits undocumented.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short and front-loaded, with the key action stated first. However, the second sentence largely repeats information already in the schema, 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.

Completeness2/5

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 clarify what the agent receives after calling this tool, such as a direct media URL, binary content, or a temporary file path. It also does not differentiate this tool from the many related Instagram post tools, leaving a noticeable completeness gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already fully documented. The description adds no extra semantic value beyond restating that a post URL is accepted, which is already present in the url property description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Download') and resource ('Instagram post or reel media'), making the core function immediately clear. It is reasonably distinguishable from siblings like instagram_post_get or instagram_post_transcript_get by its download focus, though it does not explicitly contrast with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to choose this tool over alternatives such as instagram_post_get or transcript tools. 'Accepts a post URL' is a parameter-level hint rather than usage context, and no exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instagram_post_getGet Instagram post or reelA
Read-only
Inspect

Get a single Instagram post or Reel by URL. Author is under owner (not author); timestamps use createdAt (ISO; legacy Unix takenAt may still appear at runtime).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the post or reel.
trimNoWhen true, returns a smaller response with fewer fields.
regionNoOptional ISO 3166-1 country code for request routing.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
downloadMediaNoWhen true, asks the upstream provider to download media and return provider-hosted URLs in `downloads` (not SocialFetch-owned storage). Adds 10 credits when media is found (11 total including the base lookup); when no media is returned the base lookup credit still applies.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only nature is structured. The description adds meaningful runtime caveats beyond that: the author field is under owner rather than author, and legacy Unix takenAt timestamps may still appear alongside createdAt. It also signals that the upstream provider may return media URLs when downloadMedia is true (via parameter docs). This is exactly the kind of behavioral context that helps an agent interpret results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences: the first states the operation, the second packs three behavioral caveats into a compact note. There is no redundant restatement of the schema or annotations. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only fetch with rich annotations and 100% schema coverage, the description covers the main behavioral surprises (owner vs author, timestamp fields). However, it omits any mention of the downloadMedia media-URL semantics in the description itself (only in the schema), and it does not clarify what happens for mixed post/reel URLs or how trim behaves. An agent can call correctly, but a little more would round it out.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 7 parameters thoroughly, including the string-coercion enum values and the credit cost of downloadMedia. The description adds only the field-mapping caveats, which are return-shape guidance, not parameter semantics. Baseline 3 applies because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and a precise resource ('a single Instagram post or Reel by URL'), distinguishing it from the many Instagram siblings (profile, comments, search, download). Although it does not explicitly name sibling tools, the scope is so clearly delimited that an agent can select it correctly without ambiguity. The extra field-mapping caveats reinforce what is being fetched.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description establishes clear context: it is the single-post/reel fetch by URL, which overlaps lightly with instagram_post_download_get (media-focused) and the various list tools. However, it does not explicitly say 'use this instead of X when you need a single post,' nor does it mention when to prefer downloadMedia=true or trim=true. Useful but largely implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instagram_post_transcript_getGet Instagram post transcriptA
Read-only
Inspect

Get the spoken transcript for an Instagram post or Reel by URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the Instagram post or Reel whose transcript should be returned.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior3/5

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 that the transcript is 'spoken,' which is useful, but it does not disclose what happens when a post has no transcript or when content is unsupported.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that immediately communicates the action, resource, and input. No filler, no repetition of schema details, and the core purpose is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 combined with the fully documented schema is largely sufficient. Minor gaps are the lack of an output schema and no mention of transcript-unavailable behavior, but the low complexity keeps the definition adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are already documented, including url, context, llm_model, and conversation_id. The description's 'by URL' adds no new semantic detail beyond the schema's url description, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), a precise resource ('spoken transcript for an Instagram post or Reel'), and the required input mechanism ('by URL'). This distinguishes it clearly from other Instagram metadata tools and from 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear context for use: when a spoken transcript of an Instagram post or Reel is needed, pass its URL. It does not explicitly name alternatives or exclusions, but the platform-specific scope makes the appropriate usage unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instagram_profile_basic_getGet Instagram basic profileA
Read-only
Inspect

Get a lightweight Instagram profile by numeric user ID when you already have the id.

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdYesInstagram numeric user id to look up.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior3/5

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 the useful expectation that the result is 'lightweight' and that the lookup requires a pre-known numeric ID. It does not mention rate limits, data completeness, or what the basic profile contains, but the annotations lower the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the action and resource, then states the precondition. Every word earns its place; there is no filler or redundant restating of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple nature of the tool, the full parameter schema, and read-only/open-world annotations, the description is mostly sufficient. It conveys the lightweight scope and the prerequisite. It could be more complete by mentioning what fields the basic profile typically includes or by explicitly routing users to instagram_profile_get for full profiles, but this is a minor gap for such a simple lookup.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of the parameters with clear descriptions, so the baseline is 3. The tool description's mention of 'numeric user ID' only restates what the userId parameter schema already specifies; no additional parameter meaning is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get'), the resource ('lightweight Instagram profile'), and the key input condition ('by numeric user ID'). It implicitly distinguishes from the fuller instagram_profile_get sibling via 'lightweight', but it does not explicitly name that sibling or the search alternatives, so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear usage condition: use this when you already have the numeric user ID. This is helpful context for selecting between lookup and search tools. However, it does not explicitly state when not to use it or name a preferred alternative, such as instagram_profile_get for full profile data.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instagram_profile_engagement_getGet Instagram profile engagement auditC
Read-only
Inspect

Get Instagram profile engagement audit. Accepts a handle.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesInstagram handle to look up, with or without a leading @. A profile URL is also accepted.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description does not contradict this. However, the description adds no behavioral detail beyond the title: it does not explain what the audit computes, what data it returns, or any limitations. With annotations present the bar is lower, but the description still adds almost no value beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded, which is good, but the second sentence ('Accepts a handle.') largely repeats what the schema already states, so not every sentence earns its place. It is concise to the point of being under-specified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and a tool whose name suggests a substantive audit of engagement metrics, the description should clarify what the audit returns and how it differs from perfil_get/basic_get. It does neither, leaving agents to guess the tool's scope. The readOnly/openWorld annotations help, but do not cover the missing functional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 even without parameter info in the description. The phrase 'Accepts a handle' merely echoes the schema's handle parameter and does not add meaning beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get...engagement audit') and is clear that it operates on an Instagram profile. However, it does not distinguish this tool from sibling tools like instagram_profile_get or instagram_profile_basic_get, leaving ambiguity about what an 'engagement audit' includes compared to those.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus the many Instagram sibling tools (e.g., instagram_profile_get, instagram_profile_posts_list, tiktok_profile_engagement_get). The only usage hint is 'Accepts a handle,' which addresses input format, not selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instagram_profile_getGet Instagram profileA
Read-only
Inspect

Get a full Instagram profile by handle (bio, counts, and related fields). Returns lookupStatus plus follower/post metrics and privacy flags.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesInstagram handle to look up, with or without a leading @. A profile URL is also accepted.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety and data-freshness expectations. The description adds value beyond the annotations by disclosing the presence of lookupStatus (implying the lookup can fail or report not-found) and privacy flags (implying private accounts may return restricted data). 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence of about 20 words that front-loads the core action ('Get a full Instagram profile by handle') and then packs the return contents into a parenthetical and a final clause. No filler, every phrase contributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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, the description compensates by naming key return elements (lookupStatus, follower/post metrics, privacy flags) and the scpoe (bio, counts, related fields). Parameters are fully documented in the schema and safety is covered by annotations. The main gap is explicit sibling-routing guidance, already noted in usage_guidelines.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all four parameters including handle formats, context purpose, llm_model analytics rules, and conversation_id handling. The description adds no parameter-level meaning beyond restating that the lookup is 'by handle.' Per the baseline for high coverage, a 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Get a full Instagram profile') and enumerates concrete return contents: bio, counts, related fields, lookupStatus, follower/post metrics, and privacy flags. The word 'full' plus the listed fields differentiates it from siblings like instagram_profile_basic_get and instagram_profile_engagement_get without needing to open their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool — when a full profile with bio, metrics, and privacy flags is needed — but never explicitly names alternatives or states when NOT to use it versus instagram_profile_basic_get or instagram_profile_engagement_get. With so many instagram profile siblings, more explicit routing guidance would help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instagram_profile_highlights_listList Instagram profile highlightsA
Read-only
Inspect

List story highlight albums for an Instagram profile by handle. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesInstagram handle whose story highlight albums should be listed.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety and open-world profile. The description adds a return type and a pagination note ('use cursor when paginated'), which is useful context beyond annotations. It does not discuss auth, rate limits, or error behavior, but the annotations lower the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with the action and resource front-loaded. The pagination note is directly useful and there is no filler. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose and return shape, and the schema handles parameters. However, with no output schema, the instruction 'use cursor when paginated' is vague because no cursor parameter exists in the input schema; pagination appears to rely on conversation_id. This ambiguity makes the description adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters. The tool description only reiterates 'by handle' and adds no additional meaning about context, llm_model, or conversation_id. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List story highlight albums for an Instagram profile by handle.' This clearly distinguishes it from the singular sibling instagram_highlight_get and from other profile list tools. The title and description align well.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear use-case: list story highlights for a given handle. However, it does not explicitly mention alternatives like instagram_highlight_get or provide when-not-to-use guidance. Usage is clear but implied rather than stated with exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instagram_profile_posts_listList Instagram profile postsA
Read-only
Inspect

List posts from an Instagram profile by handle. Credits: 1 base; hostMedia=true adds +2 per hosted asset (up to 24 / 49 max). Failed assets are not surcharged.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoOpaque pagination cursor from a previous response.
handleYesInstagram handle whose posts should be listed.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
hostMediaNoWhen true, hosts source media for 90 days and returns delivery URLs in each post's `hostedMedia`.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=true and openWorldHint=true already covering the safety profile, the description adds genuine value by disclosing the credits economics: "Credits: 1 base; hostMedia=true adds +2 per hosted asset (up to 24 / 49 max). Failed assets are not surcharged." This informs the agent of cost escalation and a no-charge-on-failure guarantee, which are not present in the annotations. The "up to 24 / 49 max" phrasing is ambiguous, but the transparency intent is strong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, purpose front-loaded in sentence one and critical cost behavior in sentence two. Every clause earns its place, and the agent can absorb the full meaning in seconds. Minor ambiguity in "up to 24 / 49 max" does't detract from the compact structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-output-schema list tool, the description covers purpose and cost but omits pagination behavior (cursor semantics are only in the schema), expected result shape, and what counts as a 'post.' The readOnlyHtt and openWorldHtt annotions plus 100% schema coverage carry much of the burden, making this adequate for invocation but not complete enough to fully anticipate the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds one parameter-level insight — that hostMedia incurs +2 credits per hosted asset — which the schema's hostMedia description does't mention, and it maps handle to "by handle." This is supplementary but not substantial; the schema descriptions already fully explain cursor, context, llm_model, and conversation_id semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: "List posts from an Instagram profile by handle." This clearly distinguishes it as a posts-listing tool from the many instagram_profile_* siblings (get, basic_get, engagement_get, reels_list). However, it doesn't explicitly differentiate it from instagram_profile_taggedPosts_list or instagram_profile_reels_list beyond the resource noun, so it stops short of full suspicion disambiguation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 provided. The description says what it lists but never addresses alternatives among the dense clister of instagram profile tools (e.g., instagram_profile_get for profile metadata, instagram_profile_taggedPosts_list for taggeed content), nor does it state prerequisites like a public profile or login status. The usage context must be entirely infered 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.

instagram_profile_reels_listList Instagram profile reelsA
Read-only
Inspect

List Reels from one specific Instagram profile by handle (not a keyword search — use instagram.search.reels.list for that; not trending — use instagram.reels.trending.list for that). Credits: 1 base; hostMedia=true adds +2 per hosted asset (up to 24 / 49 max). Failed assets are not surcharged.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoOpaque pagination cursor from a previous response.
handleYesInstagram handle whose reels should be listed.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
hostMediaNoWhen true, hosts source media for 90 days and returns delivery URLs in each reel's `hostedMedia`.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds behavioral detail beyond annotations by disclosing cost behavior: 'Credits: 1 base; hostMedia=true adds +2 per hosted asset (up to 24 / 49 max). Failed assets are not surcharged.' This gives the agent useful cost expectations and a failure-handling guarantee.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler: purpose and scope in the first, exclusions and cost in the second. The most decision-relevant information is front-loaded, and every clause carries distinct value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, sibling differentiation, and cost, while the schema covers all parameters at 100% coverage. There is no output schema, but the listing behavior is clear from the tool name and title. The only minor weakness is the slightly ambiguous 'up to 24 / 49 max' credit cap phrasing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all six parameters. The description adds only cost implications for hostMedia rather than new parameter semantics. Baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'List Reels from one specific Instagram profile by handle.' It explicitly contrasts with keyword-search and trending tools, naming instagram.search.reels.list and instagram.reels.trending.list as different operations. An agent can distinguish this from its closest siblings without inspecting their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-not-to-use guidance: 'not a keyword search — use instagram.search.reels.list for that; not trending — use instagram.reels.trending.list for that.' It names the alternatives and the conditions that select them, leaving no ambiguity about when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instagram_profile_taggedPosts_listList Instagram tagged postsA
Read-only
Inspect

List Instagram posts a user is tagged in, by user id. Credits: 1 base; hostMedia=true adds +2 per hosted asset (up to 24 / 49 max). Failed assets are not surcharged.

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoOpaque pagination cursor from a previous response.
userIdYesInstagram numeric user id whose tagged posts should be listed.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
hostMediaNoWhen true, hosts source media for 90 days and returns delivery URLs in each post's `hostedMedia`.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations mark this as read-only and open-world, so safety is already covered. The description adds valuable behavioral details beyond annotations: the credit cost model (1 base, +2 per hosted asset), the maximums (up to 24/49), and the edge case that failed assets are not surcharged. This gives the agent a realistic expectation of cost 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, each earning its place: the first states the core operation and identifying input; the second packs cost, limits, and failure behavior into a compact, scannable sentence. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 a fully described schema, the description covers the core purpose, the key required parameter, and the cost implications of the optional hostMedia flag. It does not mention pagination or the overall return shape, but these are partially handled by the cursor parameter description and the list semantics, so the gap is minor. A slightly stronger description would explicitly state that the response contains a paginated list of tagged posts.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so a baseline of 3 applies. The description goes further by tying hostMedia to a cost and maximum asset count, adding practical meaning that the schema description alone doesn't fully convey. It also reinforces that userId is the primary selector.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('Instagram posts a user is tagged in') with the key identifier ('by user id'). It clearly differentiates this from sibling tools like instagram_profile_posts_list or instagram_profile_reels_list, which target different content types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use this tool: when the goal is to retrieve posts where a specific Instagram user is tagged. It doesn't name alternative tools explicitly, but the phrase 'tagged in' provides enough context to route an agent correctly among the Instagram siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instagram_search_hashtag_listSearch Instagram by hashtagA
Read-only
Inspect

Search public Instagram posts and Reels by hashtag. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor returned by a previous response.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
hashtagYesHashtag to search for. A leading # is optional.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
mediaTypeNoContent filter. Use `all` for posts and Reels, or `reels` for Reels only. Default: `all`.
datePostedNoOptional filter for when matching posts were posted.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description carries a lighter burden. It adds the useful scope that only public posts/Reels are searched and that results are paginated via cursor, but does not disclose rate limits, auth needs, or result truncation. The description is consistent with the annotations and contradicts nothing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences: the first states purpose and scope, the second the output shape and a practical pagination hint. There is no filler, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, open-world list search whose schema documents every parameter and whose annotations cover the safety profile, the description supplies the remaining essentials: public scope, list output, and pagination. It stops short of describing what the list items look like, which would be more useful given there is no output schema, but nothing needed to invoke the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage across all seven parameters, including mediaType, datePosted, cursor, and conversation_id, so the parameter burden is already handled. The description's only parameter-related addition is confirming that results use a cursor when paginated, which the cursor's own schema description already conveys, adding little meaning beyond the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Search'), resource ('public Instagram posts and Reels'), and mechanism ('by hashtag'), and notes the return shape ('Returns a list'). The 'by hashtag' condition and tool name clearly set it apart from sibling search tools like instagram_search_profiles_list or instagram_search_reels_list, even though no explicit sibling names are mentioned.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it — whenever Instagram content should be found by hashtag — but provides no explicit when-not-to-use guidance or named alternatives. It does not direct the agent to prefer a different sibling for profile or keyword searches, leaving tool selection mostly to inference from sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instagram_search_listSearch Instagram accounts, hashtags, and placesA
Read-only
Inspect

Search Instagram accounts, hashtags, and places by keyword (not posts — use instagram.search.popular.list; not profile discovery — use instagram.search.profiles.list). Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query text for Instagram accounts, hashtags, and places.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.1/5.0
Behavior4/5

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 responsible for establishing the safety profile. It adds useful behavioral context beyond the annotations by stating that the tool returns a list and that cursor-based pagination should be used. It does not detail output structure or rate limits, but the annotation coverage lowers that burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The core action is front-loaded, exclusions are compactly parenthesized, and the return-type/pagination note is the only additional clause. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a combined-entity search with no output schema, the description provides only 'Returns a list (use cursor when paginated)' — it does not explain what entity types or fields appear in that list, nor how the cursor is actually passed given it is absent from the input schema. The strong sibling and annotation context makes the tool selectable, but confident paginated use is not fully supported.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline of 3 applies: the schema already explains query, context, llm_model, and conversation_id in detail. The description adds only the notion of keyword-based search and a cursor mention, but cursor is not an exposed parameter in the input schema, so the added meaning is limited and somewhat ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Search'), a specific resource ('Instagram accounts, hashtags, and places'), and the scoping mechanism ('by keyword'). It also explicitly distinguishes itself from posts search and profile discovery search, so an agent can tell it apart from nearby siblings without inspecting schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-not-to-use guidance by pointing to instagram.search.popular.list for posts and instagram.search.profiles.list for profile discovery. However, those alternative names use dot notation that does not match the actual sibling tool names in the provided list (instagram_search_popular_list, instagram_search_profiles_list), which weakens the otherwise strong routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instagram_search_profiles_listSearch Instagram profilesB
Read-only
Inspect

Search Instagram profiles by keyword. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query text for Instagram profiles.
cursorNoOpaque pagination cursor returned by a previous response.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safe read-only nature is covered. The description adds useful context that the result is a list and pagination is handled via cursor, which goes beyond the schema. However, it does not describe the shape of the returned items, potential empty results, or any platform-specific quirks.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The core purpose is front-loaded, and the pagination note is a meaningful addition that earns its place. Nothing extraneous is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward read-only search endpoint, the description covers the essential behavior: keyword search, list result, and cursor pagination. Required parameters like context, llm_model, and conversation_id are fully documented in the schema, so the description does not need to repeat them. The absence of an output schema is partially mitigated by the explicit 'Returns a list' statement, though richer return details would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all five parameters. The description adds no new semantic detail about parameters; it only echoes the existence of query and cursor. A baseline of 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Search'), a clear resource ('Instagram profiles'), and a scoping mechanism ('by keyword'). It clearly distinguishes from profile retrieval tools like instagram_profile_get, though it does not explicitly distinguish itself from sibling search tools like instagram_search_list or instagram_search_hashtag_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to choose this tool over alternatives. With multiple Instagram search siblings (instagram_search_list, instagram_search_hashtag_list, instagram_search_popular_list, instagram_search_reels_list), the description should state that this is for profile-specific searches, but it leaves that differentiation to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instagram_search_reels_listSearch Instagram ReelsA
Read-only
Inspect

Search Reels site-wide by keyword (not scoped to one profile — use instagram.profile.reels.list; not trending — use instagram.reels.trending.list; not audio-page — use instagram.audio.reels.list). Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo1-based results page number. Omit to request the first page. Pagination is page-based.
queryYesSearch query text for Instagram Reels.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
datePostedNoOptional filter for when matching reels were posted.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds useful scope context, but the pagination guidance is misleading: it says 'use cursor when paginated' while the input schema explicitly describes page-based pagination via a 'page' integer. This is an inaccurate behavioral claim that could cause an agent to look for a cursor parameter that the schema does not define.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core action and scope, and the parenthetical alternative routing is efficient. However, the 'use cursor when paginated' clause is inaccurate and therefore does not earn its place in an otherwise tight definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-output-schema tool, the description at least states it returns a list and clarifies scope boundaries, which is the minimum viable. But the incorrect pagination instruction leaves the agent without reliable guidance on how to navigate multi-page results, and there is no description of what list items look like or when pagination is triggered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds nothing useful about parameters and actively conflicts with the page parameter by telling agents to use a cursor. It also provides no extra semantic clarity around query, context, or llm_model beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Search Reels site-wide by keyword' — and immediately distinguishes itself from the profile-scoped, trending, and audio-page variants. The agent can tell this apart from closely named siblings such as instagram_profile_reels_list and instagram_reels_trending_list without opening their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use this tool (site-wide keyword search) and names the exact alternatives for when not to use it: profile-scoped, trending, and audio-page searches. This is strong routing guidance even though it doesn't mention every possible Instagram search sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

linkedin_adLibrary_ad_getGet LinkedIn Ad Library adA
Read-only
Inspect

Get a LinkedIn Ad Library ad by ad id or Ad Library URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoPublic LinkedIn Ad Library URL for the ad.
adIdNoLinkedIn Ad Library id for the ad.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint=true and openWorldHint=true annotations already cover the safety profile, lowering the bar. The description adds the identifier-based lookup constraint but discloses no further behavioral traits such as error handling for invalid IDs, response shape, or rate-limit behavior. It adds some context but no rich behavioral detail, consistent with a 3.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single 13-word sentence, front-loaded with the verb and resource followed immediately by the lookup method. Every word earns its place; there is zero redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get-by-id tool, the description plus 100% schema coverage and read-only annotations cover what an agent needs to select and call it correctly: the operation, the resource, the platform, and the accepted identifiers. The only gap is that with no output schema present, the description does not hint at what the returned ad object contains, which is a minor omission for a retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds one genuine piece of semantics beyond the schema: it conveys the 'or' relationship between adId and url — that either identifier alone suffices — which is valuable because neither parameter is marked required in the schema. This clarification helps an agent avoid passing both or being unsure whether one is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), a specific resounce ('LinkedIn Ad Library ad'), and the two lookup keys (ad id or Ad Library URL). Naming 'LinkedIn' distinguishes it from the facebook_adLibrary_ad_get, google_adLibrary_ad_get, and tiktok_adLibrary_ad_get siblings, and 'Get by id/URL' distinctishes it from the lintedIn_adLibrary_ads_search_list sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'by ad id or Ad Library URL' makes the usage context clear: this tool is for when the agent already has a specific identifier, not for discovery. However, it does not explicitly name the search alternative (linkedIn_adLibrary_ads_search_list) or state when-not-to-use it, 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_adLibrary_ads_search_listSearch LinkedIn Ad Library adsA
Read-only
Inspect

Search LinkedIn Ad Library ads by company, keyword, or company id. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoOpaque pagination cursor from a previous response.
companyNoCompany name to search for in the LinkedIn Ad Library.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
endDateNoOptional end date filter in YYYY-MM-DD format.
keywordNoKeyword or phrase to search for in LinkedIn Ad Library ads.
companyIdNoLinkedIn company id to search for in the Ad Library.
countriesNoOptional comma-separated list of country codes (for example US,CA,MX).
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
startDateNoOptional start date filter in YYYY-MM-DD format.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety and world-query breadth. The description adds that results are returned as a list and that pagination is handled via a cursor, which is useful. However, it does not disclose how multiple query parameters interact (e.g., whether company and keyword are combined or exclusive), or any date/country filtering behavior beyond what the schema names.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single informative sentence with one parenthetical that earns its place: it states the resource, the search keys, the return shape, and the pagination mechanism. There is zero wasted text and the most decision-relevant information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search/list tool with 10 parameters and no output schema, the description covers the essential headline behavior but leaves important operational details to the schema. Notably, there is no guidance on whether company, keyword, and companyId are mutually exclusive or how to choose among them, and no mention of what fields each ad result contains. Given the schema rating covers parameter formats, the description is serviceable but not deeply complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 10 parameters are already documented in the input schema. The description adds modest value by highlighting company, keyword, and companyId as the primary search dimensions, but it does not clarify their semantics (e.g., required mutual exclusivity, OR vs AND) or the role of the optional date and country filters. The parenthetical about the cursor corresponds directly to the schema's cursor parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Search'), an unambiguous resource ('LinkedIn Ad Library ads'), and the three supported search dimensions (company, keyword, company id). It is immediately distinguishable from sibling tools like linkedin_adLibrary_ad_get (single ad retrieval) and ad-library searches for other platforms because the resource and scope are explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this tool is for searching the LinkedIn Ad Library rather than retrieving a specific ad, but it does not explicitly state when to prefer this over linkedin_adLibrary_ad_get or other ad-library search tools. There is no mention of exclusions, such as 'if you already have a specific ad ID, use ad_get instead.' Usage context is conveyed indirectly through the word 'search' and the plural 'Returns a list.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

linkedin_company_getGet LinkedIn company pageA
Read-only
Inspect

Get a LinkedIn company page by company URL — use linkedin.organization.get for schools and mixed organization URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLinkedIn company page URL for this lookup. School and organization-guest pages are not supported; use `GET /v1/linkedin/organizations`.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already signal readOnlyHint=true, lowering the bar. The description adds meaningful scope behavior: it only supports company pages, not schools or mixed organization URLs. It does not go into return format, but for a simple read-only lookup the annotated safety profile plus the scope caveat is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence with zero filler. The core action and the exclusion/alternative are front-loaded. The sentence earns its place and no word is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only company page fetch, the description plus the fully covered schema is complete. The only plausible confusion (school vs company organization pages) is explicitly handled. No output schema exists, but none is needed for this brevity tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (url, context, llm_model, conversation_id) are already fully documented. The description reinforces that the URL is a company page URL, which adds marginal value, but does not carry additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and the resource ('LinkedIn company page'), and it names the specific routing rule: use linkedin.organization.get for schools/mixed organization URLs. This disambiguates it from the most confusable sibling 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly identifies when to use an alternative tool ('use linkedin.organization.get for schools and mixed organization URLs'), which is a strong when-not/alternative signal. This is enough to guide selection among the LinkedIn siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

linkedin_company_posts_listList LinkedIn company postsA
Read-only
Inspect

List posts from one specific LinkedIn company page by URL (not a keyword search — use linkedin.posts.search.list to search across public posts). Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLinkedIn company page URL or slug whose posts should be listed.
pageNo1-based results page number. Pagination is page-based; at most 7 pages can be requested for a given company.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds a return-type claim and pagination guidance, but the guidance is misleading: it says 'use cursor when paginated' while the input schema defines page-based pagination with a page parameter and a maximum of 7 pages. There is no cursor parameter, so this behavioral disclosure actively conflicts with 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two focused sentences with no filler. The core behavior, scope restriction, and sibling alternative are all front-loaded efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 explaining return and pagination behavior, but the only output hint is 'Returns a list' and the pagination instruction contradicts the schema. Missing details like the page-based max and list item shape leave the agent under-informed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description reinforces that the primary input is a URL, which helps slightly, but it does not add meaningful parameter semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: list posts from one specific LinkedIn company page by URL. It also explicitly distinguishes itself from keyword search, so an agent can tell this tool apart from search-like siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly says this is not a keyword search and points to linkedin.posts.search.list as the alternative, which is good when-to-use guidance. However, the cited alternative name uses dots while the actual sibling is linkedin_posts_search_list, so the pointer may not resolve correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

linkedin_jobs_getGet LinkedIn jobsA
Read-only
Inspect

Get LinkedIn job postings by job URL. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoLinkedIn job posting URL to look up.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.1/5.0
Behavior4/5

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 value by disclosing the return shape ('Returns a list') and that pagination via cursor is needed for large results, going 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, no filler, and the core behavior is front-loaded. Everything included is actionable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity read-only URL lookup, the description covers the main behavior and return type, but the cursor instruction is incomplete: the input schema contains no cursor parameter, so an agent cannot tell how to supply or continue with a cursor. Without an output schema, a bit more detail on the list shape or pagination mechanism would make it fully actionable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all four parameters, including the /jobs/view/ URL requirement. The description adds no parameter-level detail beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-object pair ('Get LinkedIn job postings') and scopes the operation to lookup by job URL, which clearly distinguishes it from linkedin_jobs_search_list and other LinkedIn tools. The title 'Get LinkedIn jobs' is generic, but the description resolves that ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit context: use this tool when you already have job URLs, and it gives a pagination instruction ('use cursor when paginated'). It does not name alternatives like linkedin_jobs_search_list, but the 'by job URL' condition makes the usage context clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

linkedin_jobs_search_listSearch LinkedIn jobsA
Read-only
Inspect

Search LinkedIn jobs by keyword and filters. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum job listings to return (default 10).
remoteNoOptional work arrangement filter.
companyNoOptional company name filter.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
countryNoOptional ISO 3166-1 alpha-2 country code, e.g. "GB" or "US". Narrows an ambiguous `location` label to one country; leave unset when `location` is already a country name.
jobTypeNoOptional job type filter.
keywordYesRequired. Search keyword for LinkedIn job listings — a job title, skill, or company term, e.g. "typescript engineer" or "growth marketer".
locationYesRequired. Location label as you would type it into LinkedIn's location box — a city, region, or country name, e.g. "London", "Greater Seattle Area", or "United Kingdom".
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
timeRangeNoOptional time range filter for when jobs were posted.
locationRadiusNoOptional location radius filter.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.
experienceLevelNoOptional experience level filter.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds pagination context ('use cursor when paginated'), but does not disclose result ordering, rate limits, or what happens with no matches. This is acceptable but 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, no fluff: the first states the core action, the second states the return shape and pagination hint. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 13 parameters and no output schema, the description is minimal: it says a list is returned and mentions pagination, but 'use cursor when paginated' is vague—there is no cursor parameter and no explicit link to the conversation_id pagination mechanism described in the schema. The schema fills many gaps, but the description leaves the pagination workflow unclear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for all 13 parameters, each with meaningful descriptions. The tool description only says 'by keyword and filters' without adding any parameter-level detail, so it meets the baseline but does not go beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

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 LinkedIn jobs by keyword and filters,' and notes it 'Returns a list,' which distinguishes it from linkedin_jobs_get-style single-item tools. It does not explicitly name any sibling for contrast, but the list/search semantics are clear enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: an agent looking for a list of matching jobs would choose this tool. However, the description provides no explicit alternatives, exclusions, or when-not-to-use guidance compared with siblings like linkedin_people_search_list or linkedin_posts_search_list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

linkedin_organization_getGet LinkedIn organization pageA
Read-only
Inspect

Look up LinkedIn company, school, or organization pages by URL (broader than linkedin.company.get). Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoLinkedIn organization page URL.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description does not contradict this. It adds useful behavioral details beyond the annotations: the tool returns a list and supports pagination via a cursor. It doesn't describe rate limits or auth, but the read-only safety profile is already covered by annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one tight sentence plus a parenthetical. It front-loads the action and resource, includes the scoping comparison, and adds a return/pagination hint without any wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only lookup tool with 100% schema coverage and annotations covering safety, the description covers the essential invocation facts: what it operates on (URLs), what it covers (company/school/org), what it returns (a list), and pagination behavior. No output schema exists, so a bit more detail about the item shape would improve completeness, but it is adequate for correct selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters. The description reinforces that the tool operates by 'URL', which aligns with the url parameter, but it adds no new syntax, formatting, or semantic details beyond what the schema already provides. This earns the baseline score for full coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Look up') and identifies the exact resource (LinkedIn company, school, or organization pages by URL), which clearly distinguishes it from linkedin_company_get and other LinkedIn tools. It explicitly calls out that it is broader than linkedin.company.get, so an agent can immediately understand the tool's scope without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context: use this for LinkedIn organization-type pages by URL, and it points to linkedin.company.get as a narrower alternative. It does not explicitly state when to prefer one over the other, but the 'broader than' phrasing plus the allowed URL paths gives an agent enough signal. The pagination hint ('use cursor when paginated') adds practical invocation guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

linkedin_people_search_listSearch LinkedIn peopleA
Read-only
Inspect

Search LinkedIn people by first and/or last name. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
lastNameNoLast name filter. At least one of `firstName` or `lastName` is required.
firstNameNoFirst name filter. At least one of `firstName` or `lastName` is required.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint and openWorldHint, so no safety ambiguity exists. The description adds genuinely useful behavior beyond that: it states the return shape is a list and warns about pagination via cursor. The cursor instruction is a bit vague because no explicit cursor parameter appears in the schema, but it still helps the agent anticipate paginated results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with no filler. It states the search verb, the target resource, the key filters, the return type, and a pagination hint, all in minimal space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple read-only people search with no output schema. The description covers the search criteria, return shape, and pagination behavior, which is enough to invoke it. It could be more complete by describing the shape of list items or explicitly routing to linkedin_profile_get when a specific profile is already known, but those are minor gaps for this low-complexity tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all five parameters thoroughly. The description only reinforces the firstName/lastName filter relationship; it adds no new meaning beyond what the schema already provides, hence the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 LinkedIn people by first and/or last name.' The name filters and the 'people' resource distinguish it clearly from sibling tools like linkedin_jobs_search_list, linkedin_posts_search_list, and linkedin_company_get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use case is implied: use when searching for LinkedIn people by first or last name. However, there is no explicit guidance about when not to use it, no mention of the more specific linkedin_profile_get for known profiles, and no comparison to alternative LinkedIn search tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

linkedin_post_getGet LinkedIn post or articleB
Read-only
Inspect

Get a LinkedIn post or article by URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic permalink to the post or article.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.1/5.0
Behavior2/5

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. However, the description discloses no additional behavioral context such as auth/permission requirements, public-visibility limits, rate limits, or what exactly is returned. It adds nothing beyond the basic fetch action and the resource identity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single eight-word sentence with the action front-loaded and zero filler. Every word earns its place, and no structural reorganization would improve it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-operational-parametertrieval tool, the description is minimal but adequate to select and invoke it. However, with no output schema and no mention of what the response contains (e.g., article body vs. metadata) or any limitations (e.g., only public posts), an agent has to infer the return shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with detailed descriptions for all four parameters, including the operational url param and meta params like context and llm_model. The description's 'by URL' merely reates what the url schema description already says, so it adds no new interpretive value. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Get), a clear resource (LinkedIn post or article), and a scoping mechanism (by URL). This distinguishes it from sibling search/list tools such as linkedin_posts_search_list and linkedin_company_posts_list, though it does not explicitly name alternatives like linkedin_post_transcript_get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. 'By URL' implies a direct fetch, but there is no mention of when to choose this over linkedin_post_transcript_get for transcripts or linkedin_posts_search_list for discovery, and no exclusions or preconditions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

linkedin_posts_search_listSearch LinkedIn postsA
Read-only
Inspect

Search public LinkedIn posts site-wide by keyword (not scoped to one profile or company — use linkedin.profiles.posts.list or linkedin.company.posts.list for that). Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesKeyword or phrase to search for in public LinkedIn posts.
cursorNoOpaque pagination cursor returned by a previous response.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
datePostedNoOptional filter for how recently matching posts were published.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only/open-world behavior; the description adds that results are public, site-wide, returned as a list, and paginated via cursor. This is useful context beyond annotations, though it does not detail output fields 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences: the first states action, scope, and exclusion; the second names alternatives and return/pagination behavior. No filler, and the key scope distinction is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 100% schema coverage, the description covers scope, alternatives, list return, and pagination. Nothing needed to select and invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline applies. The description reinforces that 'query' is a keyword and that 'cursor' is for paginated results, but it does not add meaning beyond the schema's own parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses a specific verb ('Search') plus a specific resource ('public LinkedIn posts') and explicitly limits scope to site-wide keyword search. It also names the profile- and company-scoped alternatives, so an agent can distinguish this tool from linkedin_profiles_posts_list and linkedin_company_posts_list 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit routing guidance: use this tool for site-wide keyword search, and use linkedin.profiles.posts.list or linkedin.company.posts.list when scoped to a profile or company. It also tells the agent to expect a list and to use a cursor when results are paginated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

linkedin_post_transcript_getGet LinkedIn post transcriptA
Read-only
Inspect

Get the transcript for a LinkedIn post video by URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the LinkedIn post whose video transcript should be returned.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description is consistent with the readOnlyHint annotation, describing a safe read operation. It adds only the 'by URL' detail and doesn't disclose edge cases such as missing transcripts, but the annotations already cover the safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single ten-word sentence that starts with the action and resource, with no filler or redundancy. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 fully documented parameters and safety annotations, this description is adequate. It identifies the input and purpose clearly; missing details like error handling are minor for a fetch-by-URL tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are already well-documented. The description's 'by URL' merely echoes the url parameter and adds no new semantic information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Get) and resource (the transcript for a LinkedIn post video), with the input method (by URL). The platform-specific language 'LinkedIn' naturally distinguishes it from the many sibling transcript tools for other social networks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description and name make the intended use case unambiguous: fetching transcripts of LinkedIn post videos. It doesn't explicitly name alternatives or exclusions, but the platform-specific wording gives clear context for when to select this tool over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

linkedin_profile_getGet LinkedIn profilesA
Read-only
Inspect

Get LinkedIn person profiles by URL or handle. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoLinkedIn profile URL.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior4/5

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 behavioral context: it returns a list even for a single lookup and mentions pagination via cursor, which is useful beyond what the schema provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The core action and input mode are front-loaded, and the pagination note is the only additional information, earning its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description plus the fully documented schema cover the lookup operation, accepted handle formats, pagination, and required context/model parameters. There is no output schema, but the 'returns a list' note provides a minimal return contract; the only meaningful gap is explicit usage guidance versus sibling search tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema fully documents the parameters, including the URL/handle variants. The description adds no parameter details beyond what the schema already states, 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), a resource ('LinkedIn person profiles'), and an explicit input mode ('by URL or handle'). The qualifier 'person profiles' distinguishes it from company/organization tools like linkedin_company_get, and the URL/handle scope separates it from linkedin_people_search_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'by URL or handle' implies use when the agent already has identifiers rather than when searching, but it never explicitly names the alternative (linkedin_people_search_list) or states when not to use this tool. The cursor note is operational guidance, not selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

linkedin_profiles_posts_listList LinkedIn profile postsA
Read-only
Inspect

List posts from one specific LinkedIn person profile by URL (not a keyword search — use linkedin.posts.search.list to search across public posts). Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLinkedIn profile URL or vanity handle whose public posts should be listed.
limitNoMaximum posts to return (default 10).
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
endDateNoOptional end of the date range for posts to include. Must be a valid ISO-8601 date-time. For profile URLs, date filtering applies only to LinkedIn articles.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
startDateNoOptional start of the date range for posts to include. Must be a valid ISO-8601 date-time. For profile URLs, date filtering applies only to LinkedIn articles.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.
onlyAuthoredPostsNoWhen true, return only posts created by the profile owner.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only safety (readOnlyHint=true) and data volatility (openWorldHint=true), and the description adds value beyond them by disclosing the return shape ('Returns a list') and pagination behavior ('use cursor when paginated'). No contradction 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste: the core action and scope come first, followed by the exclusion/alternative and the return/pagination note. Every clause earns its place, and the most decision-relevant information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 100% schema coverage and no output schema, the description covers the essential operational facts: scope, exclusion, alternative routing, and pagination. It could go further by describing post fields or the onlyAuthoredPosts behavior, but those are partially covered by the rich schema descriptions and openWorldHint annotation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each of the 8 parameters (url, limit, context, startDate, endDate, conversation_id, llm_model, onlyAuthoredPosts) is already documented in the schema. The description does not add parameter-level meaning beyond confirming the URL-driven scope, which matches the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List posts from one specific LinkedIn person profile by URL') and explicitly distinguishes itself from keyword search by naming the alternative (linkedin.posts.search.list). An agent can immediately tell this apart from sibling tools like linkedin_company_posts_list and linkedin_people_search_list without inspecting their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use ('one specific LinkedIn person profile by URL'), when-not-to-use ('not a keyword search'), and the named alternative ('use linkedin.posts.search.list'). This directly resolves the most likely confusion point — profile-scoped listing vs public keyword search — with no inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

linktree_profile_getGet Linktree profileA
Read-only
Inspect

Get a public Linktree profile by handle, including links and socials.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesLinktree handle to look up, with or without a leading @.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior3/5

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 that the profile is public and includes links and socials, but does not disclose error behavior, rate limits, or return structure. This is adequate given the annotation coverage but 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler. It front-loads the action and resource, includes the key scope qualifier ('public') and the returned-content summary ('links and socials'), earning every word.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, read-only get-by-handle tool with no output schema, the description covers the core purpose and return contents. It does not mention possible failure cases or whether the handle can include '@', but the schema already addresses the '@' nuance. The description is complete enough for an agent to invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents handle, context, llm_model, and conversation_id in detail. The description only repeats the handle lookup concept and adds no new parameter meaning 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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Get a public Linktree profile by handle') and explicitly names the returned content ('including links and socials'). It is unambiguous and distinguishable from the many other platform profile_get siblings by naming Linktree and the handle-based lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the use case clear: retrieve a public Linktree profile by handle. No exclusions are needed because there are no other Linktree-specific sibling tools, so this is the obvious choice for that domain. It does not explicitly name alternatives or conditions for when not to use it, hence the one-point deduction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

monitors_checks_listList a monitor's recent check historyA
Read-only
Inspect

The self-serve "why didn't I get a webhook" view — the last ~50 checks with outcome/credits/reason.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true, so the safety profile is covered; the description adds behavioral value on top by disclosing the bounded retention behavior ('last ~50 checks') and the exact result contents (outcome/credits/reason). It does not mention ordering or pagination for older checks, but for an idempotent read-only history view this is a meaningful, non-redundant addition.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single em-dashed sentence that front-loads the user-facing purpose before giving the operational details (count cap and returned fields). Every word carries meaning; there is no filler or repetition of schema/annotation content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 a rich input schema handling the boilerplate parameteres, the description covers the essential invocation context: what it lists, the recency bound, and the result fields. With no output schema present, the description reasonably carries the return-format burden; only minor gaps remain — the exact meaning of `id` and whether checks are sorted newest-first — neither of which would block correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75% — context, llm_model, and conversation_id are fully documented in the schema, so no duplication is needed. The one gap is the required `id` parameter, which has no schema description and is not explicitly clarified in the tool description; the title implies it is the monitor id, but the description itself never states that, so the agent must infer param semantics from the title.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: lists a monitor's recent check history, with a bounded scope (last ~50 checks) and the fields returned (outcome/credits/reason). The diagnostic framing as the 'why didn't I get a webhook' view clearly distinguishes it from siblings like monitors_events_list and webhookEndpoints_deliveries_list, so an agent can select it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'self-serve why didn't I get a webhook view' gives a clear, concrete trigger condition — a user asking why a webhook was not delivered. It implies the diagnostic context for use but does not explicitly name alternative tools or state when not to use it, which keeps it at a 4 rather than a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

monitors_createCreate a monitorAInspect

Watch a social account or search and get a signed webhook when new content appears. Runs a synchronous baseline check on create — the response includes what's there right now, and you'll only get webhooks for items after that.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
typeYesinterval or cron.
paramsYesParams for the source, e.g. { handle: "elonmusk" }.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
minutesNoRequired when type is interval.
timezoneNoIANA timezone, required when type is cron.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
expressionNoCron expression, required when type is cron.
operationIdYesA watchable operationId from monitors_sources_list.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.
spendCapCreditsNo
webhookEndpointIdNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite sparse annotations, the description adds material behavioral context: a synchronous baseline check on create, a response reflecting current state, and webhooks only for items appearing after that baseline. The mention of a 'signed' webhook is also a useful security-relevant detail. This goes well beyond the readOnlyHint/openWorldHint flags without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste: the first front-loads the core purpose and the second discloses the crucial baseline-check behavior. Every clause earns its place, and the structure places the most decision-relevant fact (baseline semantics) right after the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-param, 5-required mutation tool with no output schema, the description conveys the create-time workflow but omits the scheduling model, the interaction between type and its conditional params (minutes vs expression/timezone), and what webhookEndpointId binding entails. The schema covers param-level details, yet an agent still lacks a clear picture of what a configured monitor does over time beyond 'webhook on new content.'

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%, with good inline descriptions for operationId, type, minutes, timezone, expression, context, and llm_model, so the schema carries most of the param-documentation burden. The description adds workflow-level meaning by linking the watch target (operationId) and delivery mechanism (webhookEndpointId) to the returned behavior, but it does not explain the interval-vs-cron conditional requirements or spendCapCredits semantics. Baseline 3 is appropriate since the schema already does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Watch a social account or search and get a signed webhook when new content appears') that squarely defines what creating a monitor produces. The webhook-on-new-content behavior distinguishes it from one-shot data getters and from sibling monitors_* tools like monitors_list and monitors_get, which operate on existing monitors.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies the use case — ongoing monitoring of a source for new content — but never says when not to use it or names alternatives like monitors_trigger or the platform-specific getters for one-time fetches. The prerequisite link to monitors_sources_list exists only in the schema's operationId description, not in the tool description, so routing guidance is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

monitors_deleteDelete a monitorA
Destructive
Inspect

Permanently delete a monitor. Cannot be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare destructiveHint=true, and the description reinforces this by saying 'Permanently delete' and 'Cannot be undone.' It adds useful context beyond the annotation by clarifying the deletion is irreversible, which is meaningful behavioral information for the agent to relay to the user.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only nine words across two sentences, with the key action front-loaded. Every word contributes: 'Permanently' and 'Cannot be undone' convey the destructive and irreversible nature; no filler or redundant phrasing exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete operation with destructiveHint annotation, the description is largely sufficient: it names the target resource and the irreversible consequence. There is no output schema, but a delete tool typically does not require detailed return-value documentation. Minor gaps include not stating what happens to associated checks or events, but this is unlikely to prevent correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no parameter-level detail on its own, but the input schema covers 3 of 4 parameters with clear descriptions. The 'id' parameter lacks a description, and the tool description does not clarify that id refers to the monitor identifier, though that is strongly implied by the tool name and delete semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states an exact verb and resource: 'Permanently delete a monitor.' This clearly distinguishes the operation from sibling tools like monitors_create, monitors_update, and monitors_trigger. The additional warning 'Cannot be undone' removes any ambiguity about the nature of the action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when the user wants to remove a monitor permanently, and the 'cannot be undone' warning functions as a caution against casual use. However, it does not explicitly say when to use it versus alternatives or mention any prerequisites or exclusions, so the 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.

monitors_events_listList monitor eventsA
Read-only
Inspect

Pull API for a monitor's events — queryable regardless of webhook delivery configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
limitNo
cursorNo
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already signals that this is a safe read operation. The description adds one meaningful behavioral detail: this API is queryable independently of webhook delivery configuration. However, it does not describe response format, pagination behavior, or event ordering, so it is adequate but 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tight sentence with no filler. It front-loads the main action and then adds the key differentiator about webhook independence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, no return-format details, and no explanation of cursor-based pagination, the description is not complete enough for correct invocation. The tool has six parameters, three required, and the description does not clarify what an event is, how events are returned, or how pagination works.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%, and the description does not meaningfully compensate for the undocumented parameters. The phrase "a monitor's events" implies the id parameter refers to a monitor ID, but limit and cursor semantics are not addressed anywhere. The schema documents context, llm_model, and conversation_id, but cursor pagination and result limiting remain unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states this is a pull API for a monitor's events, using a specific verb and resource. The phrase 'queryable regardless of webhook delivery configuration' distinguishes it from webhook-related tools such as webhookEndpoints_deliveries_list. It separates this tool from siblings like monitors_get and monitors_checks_list by focusing on event retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear usage context: this tool can be used to query monitor events even when webhook delivery is not configured. It does not explicitly name alternatives or state when not to use it, but the 'regardless of webhook delivery configuration' clause is a strong contextual signal for choosing this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

monitors_getGet a monitorA
Read-only
Inspect

Get one monitor by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations declare readOnlyHint=true, and the description's 'Get' is consistent with that, so there is no contradiction. The description adds the 'by id' scoping but does not explain return shape, errors, or other behavioral details; the read-only annotation reduces the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler or redundancy. Every word contributes to understanding the tool's core operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only get-by-id tool, the description is mostly adequate, and the schema with annotations covers required parameter semantics and safety. However, with no output schema, the description does not clarify what the returned monitor payload contains or explicitly connect the tool to related siblings like monitors_list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75%, with context, llm_model, and conversation_id already documented in the schema. The tool description adds meaning to the undocumented 'id' parameter by identifying it as the monitor ID, but provides no further detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get'), a concrete resource ('monitor'), and an identifier scope ('by id'), so it is clear that the tool retrieves a single monitor. The word 'one' also implicitly distinguishes it from monitors_list, though it does not explicitly name sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'by id' implies this tool should be used when the agent already has a monitor ID and wants a single monitor, rather than listing monitors or retrieving checks. However, there is no explicit when/when-not guidance and no named alternative such as monitors_list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

monitors_listList monitorsA
Read-only
Inspect

List the caller's monitors, optionally filtered by status.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the agent knows this is a read-only operation confined to known results. The description's value beyond annotations is modest but real: it specifies 'the caller's monitors' (ownership scope) and the optional status filter, which are behavioral details not carried by the annotation fields. Since annotations capture the read-only safety profile, the description's additional context earns a solid 4 rather than a 3.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the verb and resource, then appends the optional filter. There is no filler or repetition of schema content. It is appropriately sized for a straightforward list tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list operation with readOnlyHint=true and a clear scope, the description plus annotations provide a good picture. The absence of an output schema and the lack of detail about pagination or response shape are minor gaps given the tool's simplicity. It would be slightly stronger if it mentioned whether the results are ordered or what happens when the status filter is omitted, but those are not critical for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema's description coverage is 75% with the status parameter having no description, and the description adds the meaning of the status filter. The context, llm_model, and conversation_id parameters are already well described in the schema. The description does not explain, for example, what the returned data looks like or whether status values are mutually exclusive, but the core parameter semantics are mostly handled by the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List the caller's monitors, optionally filtered by status' uses a clear verb (List) and resource (the caller's monitors), and the optional status filter is mentioned. It is not entirely trivial, since the schema doesn't include a description for the status property, so the description contributes the key filtering behavior. However, it doesn't explicitly differentiate among the sibling monitors_* tools (checks_list, events_list, get, etc.), though the domain word 'monitors' and 'list' are reasonably clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that the tool is for listing monitors and optionally filtering by status, which is useful context for choosing it over monitors_get or monitors_checks_list. It doesn't explicitly mention alternatives or when-not-to-use it, nor does it clarify the relationship to siblings like monitors_checks_list (which would also be a list of something monitor-related). It is not misleading, but it leaves the selection reasoning mostly to inference from sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

monitors_sources_listList watchable sourcesA
Read-only
Inspect

List every public API operation Monitors can watch (Twitter/X, Instagram, TikTok, Reddit profiles and searches). Powers the monitor-creation flow.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds that the tool returns public API operations watchable by Monitors, but it does not disclose pagination, return shape, or other behavioral details. This is acceptable but not exceptional given the annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. The core action and scope are front-loaded, and the second sentence supplies useful workflow context. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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, the description provides enough context to select and invoke it: it names the result category, gives examples, and indicates its role in monitor creation. Without an output schema, a bit more detail about the returned data shape could help, but the tool's complexity is low and the intended use is clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters are already documented with clear meaning. The description adds no parameter-level guidance, which is fine because the schema carries the full burden. A baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 watchable source types Monitors can monitor, and it names concrete platforms and search/profile scopes. The title 'List watchable sources' further clarifies the tool's role, and it is clearly distinguished from sibling tools like monitors_list, monitors_checks_list, and monitors_events_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Powers the monitor-creation flow' gives clear contextual guidance: use this tool when setting up a new monitor and needing to know what can be watched. It does not explicitly name alternatives or exclusion conditions, but the intended workflow is evident.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

monitors_triggerManually trigger a monitor pollAInspect

Queue an immediate check for an active monitor (async — returns once queued, not once the check finishes).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnly=false; the description adds the key behavioral trait that the call is asynchronous and returns once queued, not when the check finishes. It also scopes to active monitors. It could go further on success/error surfacing, but the critical async nuance is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, front-loaded sentence with a useful parenthetical that clarifies return timing. Every word earns its place; no fluff or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 clarify what is returned when queued and how to observe the eventual check result (e.g. via monitors_checks_list). It covers timing but leaves outcome payload and post-queue observation undefined, which is a meaningful gap for an async mutating tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%: context, llm_model, and conversation_id already have descriptive text, and id has only minLength. The description's phrase 'an active monitor' implies id refers to an existing monitor, but it doesn't explicitly map parameters or add meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific action ('Queue an immediate check') on a specific resource ('an active monitor'), and the title adds 'Manually trigger a monitor poll'. This clearly separates it from monitors_create/update/delete/list and other monitor siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: this is for manually forcing a check on an existing active monitor, and the async behavior is stated up front. It does not explicitly list exclusions or name alternative tools, but the unique verb and resource make the boundary obvious within the monitors_* family.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

monitors_updateUpdate a monitorAInspect

Update a monitor's name, schedule, webhook endpoint, spend cap, or status (pause/resume).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
nameNo
typeNo
statusNo
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
minutesNo
timezoneNo
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
expressionNo
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.
spendCapCreditsNo
webhookEndpointIdNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint:false already signals a mutating operation and the descripton is consistent with it, adding which particular dimensions mutate (name, schedule, webhook, spend cap, status incluing pause/resume). No annotation contradion. But it does not disclose whether updates are partial PATCH-style or full replacement, whether switching between interval and cron schedule types is permitted, or an side effects or permission requirements — useful context an annotations alone do not provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One efficient sentence that front-loads the verb+resource and compressed the mutable attribute list with a clarifying parenthetical for status. Every word carries meaning and nothing is redundant or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter mutation tool with no output schema, the description is operationally thin. It omits update semantics (partial vs full), the conditional relationship between schedule parameters (interval requires minutes, cron requires expression/timezone), and what the response looks like, so the agent must guess at valid call construction. The schema descriptions for context, llm_model, and conversation_id help marginally, but the core operational knowledge needed to invoke correctly is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at only 25%, the description should compensate, and partially does: it groups the 12 largely undocumented parameters into five semantic categories (name, schedule, webhook endpoint, spend cap, status), giving the agent a mental model the raw schema lacks. However, it never explains how 'schedule' maps to type/minutes/timezone/expression, what null means for spendCapCredits and webhookEndpointId, or the role of the required id/context/llm_model parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the specific verb 'update', the resource 'monitor', and enumerates the exact mutable attributes (name, schedule, webhook endpoint, spend cap, status). The field enumeration plus the update verb clearly distinguishes it from sibling tools like monitors_create, monitors_delete, monitors_get, and monitors_trigger without needing to open the schema. The parenthetical '(pause/resume)' adds precision about what the status field controls.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage context is implied — this is the tool for changing an existing monitor's configuration — but there is no explicit when-to-use guidance, no named alternatives (e.g., use monitors_create for new monitors, monitors_delete for removal), and no stated prerequisites such as needing the monitor's id from a prior monitors_list/monitors_get call. The required id parameter is left entirely unexplained, so the agent must infer the precondition from the schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

nl_ask_postAsk in natural languageA
Read-only
Inspect

Route a natural-language social-data question to the right lookup when you do not yet know the typed tool — prefer typed tools once the operation is known. Accepts a natural-language query.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesNatural-language question to route to a public API lookup.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, and the description adds that this is a routing/dispatch layer rather than a direct data source. It also signals that typed tools should be favored once identified, which is a useful behavioral trait. However, it does not describe what the agent receives back or potential failure modes, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with no filler. It front-loads the decisive routing behavior and then states what the tool accepts, keeping the essential usage guidance visible immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a router over a large set of lookups and has no output schema, so the description could usefully explain the return value or conversation flow. The schema covers the parameters well and the annotations cover safety, but what the agent gets back and how the conversation_id fits into iterative use are left implicit. This makes the description functional but not fully complete for such a complex tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description only adds the concept of a natural-language query, while the context and llm_model parameters are already well documented in the schema. It does not materially enrich parameter understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a distinct role: route a natural-language social-data question to the appropriate lookup when the typed tool is unknown. The verb 'route' plus the resource 'natural-language social-data question' distinguishes it from the many typed sibling tools, and 'prefer typed tools once the operation is known' reinforces its scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly tells the agent when to use the tool: when it does not yet know the typed tool. It also gives an exclusion rule: prefer typed tools once the operation is known. This is direct, actionable guidance that prevents over-reliance on the router.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pinterest_board_pins_listList Pinterest board pinsA
Read-only
Inspect

List public pins on a Pinterest board by URL. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the Pinterest board.
trimNoWhen true, returns a smaller response with fewer fields.
cursorNoOpaque pagination cursor returned by a previous response.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the description does not need to establish safety. It adds context by specifying 'public pins' and stating the response is a list with cursor pagination. This is useful but does not go into rate limits, errors, or private-board behavior, so it is adequate but 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with purpose, then a brief note on response type and pagination. Every clause earns its place; there is no padding or repetition beyond the minimal useful detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, public-data list tool with fully documented schema parameters and readOnly annotations, the description is nearly complete: it states scope, input method, output shape, and pagination. It could add error behavior or private-board implications, but those are minor for this senc.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters are already documented structurally. The description's 'by URL' and 'use cursor when paginated' simply mirror what the url and cursor parameters already say; it adds no meaningful semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: 'List public pins on a Pinterest board by URL.' It also specifies the input mode (URL) and scope (public), which separates it from sibling tools like pinterest_pin_get, pinterest_search_pins_list, and pinterest_profile_boards_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied clearly by 'List public pins on a Pinterest board' — an agent will know this is the board-pins tool. However, it does not explicitly state when not to use it or point to alternatives such as pinterest_search_pins_list or pinterest_pin_get, so the guidance 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.

pinterest_pin_getGet Pinterest pinA
Read-only
Inspect

Fetch a public Pinterest pin by URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the Pinterest pin.
trimNoWhen true, returns a smaller response with fewer fields.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, and the description's 'Fetch' is consistent with those. It adds the useful scope that only public pins are accessible, but says nothing about failure modes, response shape, or behavior around unavailable/private pins. This is modest added context over 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single eight-word sentence with the verb and object front-loaded; there is no filler or redundant phrasing. Every word earns its place, and it is easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only getter, the annotations and 100% schema coverage handle safety and parameter meaning, and the trim parameter even notes it returns fewer fields. However, with no output schema, the description does not describe what the returned pin data contains or likely failure conditions, and it does not point to sibling search tools when no URL is available.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 and the schema already documents all parameters. The description adds no extra meaning beyond pointing at URL, and trim/context/llm_model/conversation_id semantics are fully covered by the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Fetch') and resource ('public Pinterest pin'), and 'by URL' clarifies the input mode, which helps distinguish it from list/search siblings in the Pinterest family. It does not explicitly name a sibling or contrast with pinterest_search_pins_list, so it falls just short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Fetch a public Pinterest pin by URL' implies the tool is for when the agent already has a pin URL, but it gives no explicit when-to-use or when-not-to-use guidance. It does not mention alternatives like pinterest_search_pins_list or pinterest_board_pins_list, leaving the routing decision mostly to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

pinterest_profile_boards_listList Pinterest profile boardsA
Read-only
Inspect

List public boards for a Pinterest profile. Accepts a handle. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
trimNoWhen true, returns a smaller response with fewer fields.
cursorNoOpaque pagination cursor returned by a previous response.
handleYesPinterest username whose boards should be listed.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.2/5.0
Behavior4/5

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 useful behavioral detail: it returns a list, accepts a handle, and requires cursor usage for pagination. This exceeds the baseline set by the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, all informative and free of filler. The core action is front-loaded, followed by the key input requirement and the pagination note. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 no output schema, the description covers the essential facts: target resource, input, return type, and pagination behavior. It does not describe result field details, but the schema and annotations carry enough context for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds minimal value beyond the schema, except for the pagination guidance ('use cursor when paginated'). That is helpful but does not substantively deepen understanding of handle, trim, context, or llm_model.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('List public boards for a Pinterest profile') and clarifies the input ('Accepts a handle'). It is clearly distinguishable from sibling tools like pinterest_board_pins_list and pinterest_search_pins_list, which operate on pins rather than profile boards.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: this tool lists public boards for a given Pinterest handle, and pagination is handled via cursor. It does not explicitly name alternatives or state when not to use it, 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.

pinterest_search_pins_listSearch Pinterest pinsA
Read-only
Inspect

Search public Pinterest pins by keyword. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
trimNoWhen true, returns a smaller response with fewer fields.
queryYesSearch query text for Pinterest pins.
cursorNoOpaque pagination cursor returned by a previous response.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag readOnlyHint=true and openWorldHint=true. The description adds behavioral context beyond those: the search is limited to public pins, the response is a list, and pagination should use a cursor. No contradction 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with the core action front-loaded. The pagination hint is the only additional fact and each word earns its place; there is no repetition of the title or schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 100% schema coverage and no output schema, the description covers the key invocation facts: public scope, keyword query, list output, and cursor pagination. It does not describe the shape of a result item, but that is a minor gap for selecting and invoking the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters (query, cursor, trim, context, llm_model, conversation_id) are already well documented. The description's cursor mention reinforces the schema but adds no substantively new parameter meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Search'), resource ('public Pinterest pins'), and method ('by keyword'), and clarifies the return form with 'Returns a list'. It does not explicitly name sibling tools like pinterest_board_pins_list or pinterest_pin_get, so differentiation must be inferred from naming 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The keyword qualifier implies this tool is for keyword-based pin search, which provides limited usage guidance. No explicit when-to-use or when-not-to-use guidance is given relative to Pinterest siblings that list board pins or fetch a single pin.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reddit_post_comments_listList Reddit post commentsB
Read-only
Inspect

List comments on a Reddit post by URL. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the Reddit post.
trimNoWhen true, requests a lighter response shape when available.
cursorNoOpaque cursor from a previous response to fetch another page of comments or replies.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, so the description does not need to restate safety. It adds the useful behavioral detail that the tool returns a paginated list and that the cursor parameter should be used for further pages. This is meaningful but not rich; no mention of rate limits, result shape, or whether replies are included.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences: the first states the core purpose, and the second adds the key pagination behavior. No filler words, front-loaded, and every phrase earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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, the description is minimally viable: it names the input, output type, and pagination. However, with no output schema, it does not describe the shape of the comment list (e.g., author, text, replies) nor any sorting or limit behavior, which would help an agent know what to expect from the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already documented. The description adds little beyond noting the URL as the primary input and cursor for pagination; it does not compensate with additional semantic detail beyond the schema, so the baseline 3 holds.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List'), the resource ('comments on a Reddit post'), and the identifying input ('by URL'). It is unambiguous among the many platform-specific comment list tools, though it does not explicitly differentiate itself from siblings like reddit_post_get or reddit_post_transcript_get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives such as reddit_post_get or reddit_post_transcript_get. The only usage hint is the pagination note ('use cursor when paginated'), which is about mechanics rather than tool selection. There are no exclusions or alternative conditions stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reddit_post_getGet Reddit postB
Read-only
Inspect

Get a Reddit post by URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the Reddit post.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. However, the description only says 'Get' without disclosing what data is returned (post content, author, metadata?), any rate limits, or what happens with invalid/malformed URLs. For a tool with 3 required parameters including context and llm_model, the description adds little 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that is front-loaded with the verb and resource. There is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the tool is simple and annotations cover the read-only safety profile, the absence of an output schema and the lack of any description about return content leaves gaps. An agent knows it fetches a Reddit post but not what fields or format to expect, which is important for downstream reasoning.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters including url, context, and llm_model. The description's mention of 'by URL' reinforces the url parameter's purpose but adds no new semantic detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get a Reddit post by URL' clearly identifies the verb (get), the resource (Reddit post), and the input (URL). It distinguishes from siblings like reddit_post_comments_list and reddit_post_transcript_get, though it doesn't explicitly name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when you have a Reddit post URL, which is understandable from context, but it does not explicitly state when to use this versus the sibling tools such as reddit_post_comments_list or reddit_search_list. No exclusions or alternative routing are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reddit_post_transcript_getGet Reddit post transcriptA
Read-only
Inspect

Get captions transcript for a Reddit video post. Accepts a post or video URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the Reddit post or hosted video.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
languageNoOptional ISO 639-1 language code (two letters) to prefer when multiple caption tracks exist.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already communicate read-only and open-world behavior, so the safey profile is covered. The description adds that the tool returns captions and accepts both post and video URLs, but it does not disclose failure modes like missing captions or non-video posts, nor the return shape. This is baseline but not especially rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with no wasted words. The core action comes first, and the URL flexibility is stated directly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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, this description combined with a richly documented input schema is mostly sufficient. It clearly identifies the resource and output kind; a minor gap is that with no output schema it does not describe transcript formatting or behavior for unsupported/tex-only posts.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already thoroughly documents url, context, language, llm_model, and conversation_id. The description adds no meaningful parameter informtion beyond what the url schema field already says.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action, resource, and scope: 'Get captions transcript for a Reddit video post. Accepts a post or video URL.' It clearly distinguishes itself from siblings like reddit_post_get and reddit_post_comments_list by targeting video captions only.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use case is implied: when an agent needs captions/transcript for a Reddit video. However, it never explicitly says when to choose this over reddit_post_get or the other platform transcript tools, nor does it mention exclusions such as text-only posts being unsupported.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reddit_search_listSearch Reddit postsA
Read-only
Inspect

Search Reddit posts site-wide by keyword (not scoped to one subreddit — use reddit.subreddit.search.list for that). Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
trimNoWhether to request a smaller response shape when available.
queryYesSearch query text for public Reddit posts.
cursorNoOpaque pagination cursor returned by a previous response.
sortByNoOptional sort order for search results.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
timeframeNoOptional time range filter for search results.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint. The description adds useful behavioral context: it is a site-wide search returning a list, and pagination should be handled via cursor. It does not mention rate limits or output shape, but for a read-only search tool this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, with the primary action and scope front-loaded and the pagination hint placed after the core purpose. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers scope, return type, pagination, and sibling differentiation. Parameters are fully documented in the schema. The main gap is the minor mismatch between the dotted alternative name referenced in the description and the actual sibling tool name in the tool list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 8 parameters are already documented. The description adds value by clarifying that query is a keyword search and specifically instructing to use the cursor parameter when paginating. That goes slightly beyond the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Search Reddit posts site-wide by keyword'. It explicitly contrasts itself with the subreddit-scoped variant, so an agent can distinguish it from reddit_subreddit_search_list 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit when-not-to-use signal ('not scoped to one subreddit') and points to a subreddit-specific alternative. However, the named alternative 'reddit.subreddit.search.list' does not match the sibling tool name 'reddit_subreddit_search_list', which weakens the routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reddit_subreddit_getGet Reddit subredditA
Read-only
Inspect

Get details for a Reddit community (subreddit).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoOptional subreddit URL for the request.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
subredditNoSubreddit name, optional `r/` prefix, or Reddit subreddit URL. Must match Reddit's exact casing.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds no behavioral context beyond that—no mention of what 'details' include, rate limits, or return characteristics—but 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. 'Get details for a Reddit community (subreddit).' is efficient and immediately comprehensible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool it is mostly adequate, but 'details' is vague: an agent cannot tell whether it returns sidebar description, subscriber counts, rules, or just basic metadata. With no output schema and no explicit contrast to reddit_subreddit_posts_list, there is a notceable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all five parameters individually documented. The description adds no additional parameter-level meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and names the resource ('details for a Reddit community'), making the core purpose clear. It does not explicitly compare against siblings like reddit_subreddit_posts_list or reddit_subreddit_search_list, so differentiation relies on the word 'details' rather than an explicit distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or alternative guidance is provided. The description implies that this is the tool to call when you want subreddit metadata rather than posts or search results, but it never says so explicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reddit_subreddit_posts_listList Reddit subreddit postsA
Read-only
Inspect

List a subreddit's post feed (hot/new/top, no keyword) — use reddit.subreddit.search.list to search within it by keyword. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoOptional sort order for the returned posts.
cursorNoOpaque pagination cursor from a previous response.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
subredditYesSubreddit name, optional `r/` prefix, or Reddit subreddit URL. Must match Reddit's exact casing. Lists posts for this subreddit.
timeframeNoOptional timeframe used only when `sort` is `top`. Ignored/rejected for other sorts.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.4/5.0
Behavior4/5

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 behavior beyond that: it clarifies the feed is hot/new/top with no keyword, that returns a list, and that cursor pagination is required. This gives more operational detail than a bare read-only declaration while not describing every edge case.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler: the first sentence states the core behavior and the key alternative, and the second covers return type and pagination. It is front-loaded, easily scannable, and every clause adds decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The definition covers the essential call decision: feed listing vs keyword search, and pagination via cursor. With 100% schema coverage on seven parameters, an agent can correctly supply subreddit, sort, timeframe, and required fields. It lacks a detailed return shape, but no output schema exists and 'Returns a list' plus cursor guidance is a reasonable minimum for this read-only list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter, including sort enum, timeframe nuance, cursor semantics, and the uniusual context and llm_model fields. The description adds only minor reinforcement like 'no keyword' and 'use cursor when paginated', which maps onto existing schema descriptions. Baseline 3 is appropriate because the schema carries the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb, resource, and scope: 'List a subreddit's post feed' with hot/new/top, and explicitly notes 'no keyword'. It also distinguishes itself from the keyword-search sibling by directing agents to 'use reddit.subreddit.search.list to search within it by keyword', making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use this tool versus the alternative: use this for feed listing without a keyword, and use 'reddit.subreddit.search.list' when searching within the subreddit by keyword. It additionally gives pagination guidance ('use cursor when paginated'), so an agent knows how to continue iterating across pages.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

reddit_subreddit_search_listSearch Reddit subredditA
Read-only
Inspect

Search posts within one subreddit (not site-wide — use reddit.search.list for that). Accepts a subreddit and query. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort order for search results. Default: `relevance`.
queryNoSearch text to match against public subreddit posts.
cursorNoOpaque pagination cursor returned by a previous response.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
subredditYesSubreddit name, optional `r/` prefix, or Reddit subreddit URL. Must match Reddit's exact casing. Searches posts within this subreddit.
timeframeNoTime range filter for search results. Default: `all`.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond readOnlyHint/openWorldHint annotations, the description discloses the return shape (a list) and the pagination mechanism (cursor), which are operational behaviors an agent needs. It doesn't cover rate limits or defaults, but the annotations already provide the safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core scoping fact, then a required-inputs summary and a return/pagination note. No filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only search list tool, the description covers scope, the main inputs, and the pagination behavior. It omits mention of the standard context/llm_model required parameters and doesn't describe list item fields, but the schema already documents all parameters and the annotations handle safety.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description is not required to restate parameter meanings. It highlights the two core parameters (subreddit, query) and the cursor for pagination, which adds a small amount of orientation but does not go beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Search posts within one subreddit,' and immediately distinguishes this from site-wide search by pointing to reddit.search.list. Even though the sibling name is written with dots rather than underscores, the scope boundary is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit when-not condition ('not site-wide') and names an alternative, plus pagination guidance ('use cursor when paginated'). The alternative's name is slightly mangled ('reddit.search.list' vs 'reddit_search_list'), and there is no mention of when to prefer this over reddit_subreddit_posts_list, so not a perfect 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rumble_channel_videos_listList Rumble channel videosA
Read-only
Inspect

List videos and Shorts from a Rumble channel. Accepts a channel URL. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the Rumble channel.
cursorNoPage number from a previous response.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior3/5

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 behavioral context by confirming the tool returns a list and supports cursor-based pagination, but it does not disclose details like rate limits, authentication requirements, or what fields appear in 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences with no filler. It front-loads the core purpose, then adds the most important usage details (channel URL input and cursor pagination). Every sentence contributes useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, the read-only annotations, and full schema coverage, the description is largely complete for selecting and invoking the tool. It covers the core action, input requirement, and pagination behavior; the main missing piece is a more explicit statement of what the returned list entries contain, but this is minor for a list operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented in the schema. The description only restates what the schema already says about the URL and cursor, adding no new parameter-level meaning beyond the structured definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List') and resource ('videos and Shorts from a Rumble channel'), which clearly distinguishes it from sibling tools like rumble_video_get, rumble_video_comments_list, and rumble_search_list. It also names the required input type (a channel URL), making the tool's scope immediately identifiable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use the tool: when the user wants the list of videos/Shorts from a specific Rumble channel. It provides practical context by noting it accepts a channel URL and that a cursor should be used when pagination occurs, but it does not explicitly name alternatives or state 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_search_listSearch RumbleA
Read-only
Inspect

Search Rumble for videos and Shorts by keyword. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query text for Rumble content.
cursorNoPage number from a previous response.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as readOnly and openWorld, so the description only needs to add operational context. It does so by stating that the tool returns a list and that a cursor should be used when paginating, which is useful beyond the annotations. It doesn't cover rate limits or sorting, but the readOnly annotation lowers the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that leads with the action and scope, followed by a compact pagination note. Every part earns its place; there is no redundant or vague filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward search-list tool, the description plus fully documented schema and readOnly annotation is sufficient for an agent to choose and invoke it correctly. It states what it searches, what it returns, and how to handle pagination. Since no output schema exists, a bit more detail about result item shape would be nice, but it is not essential for selection or invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema discription coverage is 100%, so the baseline is 3; the schema already documents query, cursor, context, llm_model, and conversation_id in detail. The description's pagination hint is helpful but largely mirrors the cursor parameter's schema text and adds nothing substantial about the required context or model parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action ('Search'), a specific resource ('Rumble'), and a precise scope ('videos and Shorts by keyword'). This makes it easy to distinguish from sibling tools like rumble_channel_videos_list, which lists by channel, and rumble_video_get, which fetches a single video.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly establishes the intended use case: keyword-based discovery of Rumble videos and Shorts. It does't explicitly name alternative Rumble tools or state when not to use it, but the search-vs-channel/list distinction is clearly implied by the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rumble_video_comments_listList Rumble video commentsA
Read-only
Inspect

List top-level comments on a Rumble video. Accepts a video URL. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the Rumble video.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.2/5.0
Behavior4/5

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 behavioral value by noting that it returns a list and that pagination uses a cursor. This is useful operational context beyond what the annotations or schema provide, though it does not elaborate on list item shape 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no fluff. Every sentence adds necessary information: the resource and scope, the accepted input, the return type, and pagination behavior. It is front-loaded and easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 fully documented input parameters, the description is adequate. It covers scope, input, return type, and pagination. The main gap is that no output schema exists and the description does not characterize the fields of returned comments, but this does not block correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already well documented. The description's mention of accepting a video URL simply restates the url parameter's schema description. No additional parameter-level insight is needed because the schema handles it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'List top-level comments on a Rumble video.' It clearly states the input (video URL) and output (a list), and the term 'top-level' distinguishes it from reply-fetching or transcript tools. This is immediately distinguishable from sibling tools like rumble_video_get and rumble_video_transcript_get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use case is clear: retrieve top-level comments for a given Rumble video. It does not explicitly name alternatives or provide exclusionary guidance, but the scope is specific enough that an agent will not mistake it for video metadata or transcript retrieval. A small missing piece is explicit guidance for when a deeper or different tool should be chosen.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rumble_video_getGet Rumble videoA
Read-only
Inspect

Get metadata for a Rumble video by URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the Rumble video.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe read operation that can access arbitrary URLs. The description adds little beyond the annotations: it states 'Get metadata' which aligns with readOnlyHint. It doesn't disclose any potential failure modes, rate limits, or what happens if the URL is invalid or the video is unavailable. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, short sentence: 'Get metadata for a Rumble video by URL.' It is concise and front-loads the action and resource. It earns its place with minimal waste, though it could add a bit more specificity about what metadata is returned.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only metadata retrieval tool with no output schema, the description is mostly sufficient. The main gap is not specifying what fields of metadata are returned (e.g., title, uploader, views, duration), but given the simplicity and read-only annotation, the tool is largely self-explanatory. It is complete enough for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, as all four parameters have descriptions in the schema. The description's phrase 'by URL' reinforces the url parameter but adds no meaning beyond the schema. Since the schema fully documents parameters and the description doesn't need to compensate, baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get metadata for a Rumble video by URL.' This is clear and differentiates from sibling tools like rumble_channel_videos_list, rumble_search_list, rumble_video_comments_list, and rumble_video_transcript_get because it targets metadata for a single video by URL. However, it doesn't explicitly name sibling tools or further elaborate on what metadata is included.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for fetching metadata when given a Rumble video URL. It does not explicitly state when to use this versus alternatives like rumble_video_transcript_get or rumble_channel_videos_list. The context is clear enough for a straightforward retrieval, but no explicit exclusions or alternative routing guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rumble_video_transcript_getGet Rumble video transcriptA
Read-only
Inspect

Get captions for a Rumble video when available. Accepts a video URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the Rumble video.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true and openWorldHint=true, so the safety profile is already covered. The description adds the behavior that captions are only returned 'when availble', which hints that agents should handle missing transcripts. It does not disclose behavior on failure, response format, or availability errors, but the annotation coverage lowers 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence (11 words) with no filler. It front-lodes the core function and then states the input requirement, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity read-only tool, the description is sufficient: it states the input (video URL) and outcomes (captions), and the 'when availble' caveat covers the main edge case. There is no output schema, but 'Get captions' gives a clear expectation of the return value, and the annotations plus full schema coverage handle the rest.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; every parameter (url, context, llm_model, conversation_id) is documented in the schema. The description's mention of 'Accepts a video URL' merely restates what the schema already says, adding no additional semantic value beyond the structured data.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Get captions for a Rumble video') and clearly scope it to the Rumble platform, distinguishing it from Rumble's other tools like rumble_video_get and rumble_video_comments_list as well as transcript tools for other platforms. It falls short of a 5 because it doesn't explicitly name sibling alternatives and uses 'captions' interchangeably with the title's 'transcript' without defining the relationship.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: an agent retrieves this tool when a Rumble video transcript is needed. The phrase 'when availble' communicates a key availability condition, but there is no explicit guidance about when not to use it or what alternative tools (e.g., rumble_video_get) might be preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

soundcloud_profile_getGet SoundCloud profileA
Read-only
Inspect

Get a SoundCloud profile by handle.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesSoundCloud handle to look up, with or without a leading @.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already disclose readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds little beyond 'by handle,' which is also in the schema; it does not describe return shape, error behavior, or network semantics, but for a simple read-only getter with high schema coverage this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short, front-loaded sentence with no filler. It states the verb, object, and lookup criterion efficiently, making it easy to scan. No word is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only getter with fully documented parameters and safety annotations, the description is nearly sufficient: it names the tool's purpose and identifier. The only gaps are lack of explicit mention of what the returned profile contains and no guidance about fallback behavior for unknown handles, but these are minor for a get-profile tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents handle, context, llm_model, and conversation_id with detailed usage notes. The description's mention of 'by handle' adds no new parameter meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the exact action ('Get'), the resource ('SoundCloud profile'), and the lookup identifier ('by handle'), which distinguishes it from related SoundCloud tools (track_get, profile_tracks_list) and other platforms' profile tools. The description is specific enough that an agent can map a user request for a SoundCloud profile to this tool without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for fetching a SoundCloud profile by handle, but gives no explicit context about when to choose it over alternatives (e.g., soundcloud_profile_tracks_list for tracks, or other platform profile gets) and no exclusions. It is the minimal viable guidance, leaving the agent to infer applicability from the tool's name and schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

soundcloud_profile_tracks_listList SoundCloud profile tracksA
Read-only
Inspect

List a SoundCloud profile's tracks, newest first. Accepts a handle. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoOpaque pagination cursor from a previous response.
handleYesSoundCloud handle whose tracks should be listed.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile with readOnlyHint=true and openWorldHint=true. The description adds useful behavioral context beyond annotations: tracks are returned newest first, the output is a list, and a cursor should be used when results are paginated. This is meaningful operational guidance for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences front-load the core action and scoping ('List a SoundCloud profile's tracks, newest first'), then add only the essential operational details: input as a handle, output as a list, and cursor-based pagination. There is no filler or repeated schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple listing tool with a well-documented 100%-covered schema and read-only annotations, the description provides the key operational facts: input handle, output list, ordering, and pagination behavior. It does not specify the shape of list items or pagination boundaries, but no output schema exists and the needed call surface is adequately described.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents handle, cursor, context, llm_model, and conversation_id. The description adds only a mild restatement of the handle requirement and briefly mentions cursor usage for pagination, but it does not need to compensate for missing parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('List'), a specific resource ('a SoundCloud profile's tracks'), and an ordering detail ('newest first'). It distinguishes the tool from sibling soundcloud_profile_get and soundcloud_track_get by making clear this is about a profile's track list rather than a profile or a single track.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied: use this tool when you need a list of a SoundCloud profile's tracks. However, it does not explicitly state when not to use it or mention alternatives such as soundcloud_track_get for individual track details or soundcloud_profile_get for profile metadata, 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.

soundcloud_track_getGet SoundCloud trackB
Read-only
Inspect

Get a SoundCloud track by URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the SoundCloud track.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description's one-line behavior is mostly consistent and acceptable. The description adds no context about what a SoundCloud track fetch entails, public availability constraints, or return structure. It does not contradict annotations, but adds minimal behavioral value beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single very short sentence that states the tool's function without waste. It is appropriately sized for the simplicity of the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple GET-by-URL tool with full parameter schema coverage and readOnly annotations, the description is mostly complete. The main gap is the lack of guidance about which URL formats are valid and what data is returned, but there is no output schema to specify that. Since sibling tools exist for related resources, a brief note distinguishing this from profile/list tools could improve completeness, but it's not a major gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description confirms the 'url' parameter is a direct link, which adds a small semantic cue. Required parameters context and llm_model are self-explanatory in the schema, and the description doesn't need to duplicate. Given full coverage, a 4 is appropriate for not needing more.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Get a SoundCloud track by URL.' This clearly distinguishes the tool as the singular-track retrieval operation. However, it doesn't explicitly differentiate from the sibling soundcloud_profile_tracks_list or other platform track_get tools (e.g., appleMusic_track_get, spotify_track_get), though the resource 'SoundCloud' in the name/title covers that distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. Given the many sibling tools, there is no mention of when to prefer soundcloud_track_get over soundcloud_profile_tracks_list or soundcloud_profile_get. The only implicit signal is the name itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

spotify_album_getGet Spotify albumA
Read-only
Inspect

Get a Spotify album by id or album URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoOptional Spotify album URL for the request.
albumIdNoOptional Spotify album id for the request.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only nature is established. The description adds the lookup-key behavior but does not disclose what the response contains or any selection or precedence behavior when both albumId and url are supplied; this is acceptable but 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one short sentence with no filler, and the key scope ('Spotify album') is front-loaded. Every word contributes to choosing and invoking the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only getter with no output schema, the description is largely sufficient: platform, resource, and identifier inputs are all stated. It could be more complete by noting that exactly one of the two identifiers should be supplied and outlining the response, but those are minor gaps for this low-complexity tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All parameters already have schema descriptions, so the baseline is 3. The tool description summarizes the two identifier parameters ('id or album URL') but adds no further constraint such as requiring exactly one of albumId/url or specifying precedence, which would be genuinely useful given both are marked optional in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the exact resource ('a Spotify album') and the two accepted lookup forms ('by id or album URL'), which distinguishes it from sibling tools like spotify_artist_get, spotify_track_get, and appleMusic_album_get. The verb 'Get' plus the resource is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the triggering context clear: call this when the user wants a Spotify album and supplies an album ID or URL. It does not explicitly state when not to use it or name alternatives, but the platform and resource specificity communicate the boundary well enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

spotify_artist_getGet Spotify artistA
Read-only
Inspect

Get a Spotify artist by id or profile URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoOptional Spotify artist URL for the request.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
artistIdNoOptional Spotify artist id for the request.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.7/5.0
Behavior3/5

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 and the description does not contradict them. The description adds no extra behavioral context such as response format, freshness, or error behavior, but for a simple read-only lookup the annotation burden is lower.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence with no filler; the key action and the two supported input modes are front-loaded. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a simple read-only getter, but there is no output schema and no mention of return values or failure cases. Also, both url and artistId are optional while only context and llm_model are required, creating ambiguity about how the artist is selected if neither identifier is provided.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description repeats the id/URL distinction already present in the schema and adds no extra meaning about how the two optional identifiers interact or whether at least one must be supplied.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get'), a clear resource ('Spotify artist'), and input mode ('by id or profile URL'). This immediately distinguishes it from siblings like spotify_album_get, spotify_track_get, and other platforms' artist tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage is implied: use this when you need a Spotify artist identified by an id or profile URL. However, it does not explicitly state when to prefer this over alternatives or when not to use it, leaving routing slightly to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

spotify_track_getGet Spotify trackA
Read-only
Inspect

Get a Spotify track by id or track URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoOptional Spotify track URL for the request.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
trackIdNoOptional Spotify track id for the request.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only behavior is covered. The description adds no behavioral context beyond saying the track is fetched by id or URL, and it does not describe response behavior, auth requirements, or what happens with invalid inputs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. It names the action, resource, and key input variants in nine words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only lookup, the description plus the annotated schema is sufficient to select and invoke the tool correctly. It does not describe the return shape, but no output schema exists and the operation is simple enough that this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are already documented. The description adds meaningful semantic value by clarifying that trackId and url are alternative means of identifying the same track, a relationship not explicit in the separate optional field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific verb ('Get'), resource ('Spotify track'), and identifier forms ('by id or track URL'). This clearly distinguishes it from spotify_album_get, spotify_artist_get, and track lookups from other providers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: when the user wants a Spotify track and has an id or URL. However, it does not explicitly name alternatives or state when not to use it, leaving the agent to infer selection 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.

telegram_channel_getGet Telegram channelA
Read-only
Inspect

Get metadata for a public Telegram channel or group by username.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesTelegram public username (channel or group), with or without leading @.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish a read-only and open-world profile, and the description adds a useful scope constraint by specifying 'public' channels or groups. However, it does not disclose behavior on edge cases like private channels, invalid usernames, rate limits, or exact return shape, though the annotations lower the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one focused sentence with no filler or redundancy. It front-loads the action and resource while including the essential scope qualifier 'public' and the lookup method.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 a fully documented schema, the description is mostly sufficient. However, there is no output schema and the description does not hint at what metadata fields are returned or how failures are handled, and it does not help the agent choose between this and the Telegram post-level siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters already have meaningful documentation. The description adds little beyond 'by username', which is consistent with the handle parameter but does not materially enrich the parameter-level understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get metadata'), names the resource ('public Telegram channel or group'), and specifies the key lookup method ('by username'). This clearly distinguishes it from sibling tools like telegram_channel_post_get and telegram_channel_posts_get, which target posts rather than the channel-level entity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to choose this tool over its Telegram siblings. While 'metadata' implies the channel profile lookup, it does not state exclusions or reference the sibling post/posts tools, leaving the routing decision to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

telegram_channel_post_getGet Telegram channel postA
Read-only
Inspect

Get a single public post from a Telegram channel by handle and post ID. Groups are not supported.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesTelegram public username (channel or group), with or without leading @.
postIdYesNumeric Telegram channel post ID from the public URL.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the burden on the description is lower. The description adds relevant scope context by specifying 'public post' and 'not groups,' but it doesn't mention authentication requirements, rate limits, or whether the response is full post content or metadata. That is acceptable given the annotations, but it does not go beyond a baseline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The core operation is stated first, and the important limitation ('Groups are not supported') is placed second. Every word contributes to the agent's understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only getter, the description plus the complete schema and safety annotations are largely sufficient. It clearly states the resource scope, the inputs needed, and the main exclusion. The only mild gap is the lack of any description of the return value, but this is not critical given the straightforward 'get post' semantics and the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters thoroughly. The description reiterates handle and post ID but adds no additional semantic detail beyond the parameter descriptions. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Get'), a specific resource ('single public post from a Telegram channel'), and the exact identifiers needed (handle and post ID). It also distinguishes itself from sibling list tools like telegram_channel_posts_get by emphasizing 'single,' and from telegram_channel_get by focusing on a specific post.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: use it for one public post identified by handle and post ID. It also gives an explicit negative constraint — 'Groups are not supported' — which prevents misuse. It does not name an alternative tool for group posts or for multiple posts, so it stops short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

telegram_channel_posts_getList Telegram channel postsA
Read-only
Inspect

List recent posts from a public Telegram channel. Groups are not supported. Accepts a handle. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoOpaque pagination cursor from a previous response. Omit for the first page.
handleYesTelegram public username (channel or group), with or without leading @.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint and openWorldHint already present in annotations, the description adds useful behavioral context by stating the scope ('public'), the exclusion ('Groups are not supported'), and the response pattern ('Returns a list (use cursor when paginated)'). It does not describe the shape of individual posts, but for a read-only list tool this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences front-load the core action and scope, then add the two most operationally important constraints: group exclusion and pagination behavior. 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with a 100%-covered simple schema and no output schema, the description provides the essentials: what to pass conceptually, what is not supported, and what to expect back ('list' plus cursor pagination). It would be slightly stronger if it described the fields of each returned post, but the minimal return expectation is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage of all five parameters with descriptive text for each, so the description does not need to repeat parameter meaning. 'Accepts a handle' and 'use cursor when paginated' are helpful but mostly echo what the schema already documents rather than adding new semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List'), a clear resource ('recent posts from a public Telegram channel'), and an explicit exclusion ('Groups are not supported'), which distinguishes it from group-oriented list tools among the siblings. This is immediately actionable and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use the tool: public Telegram channels, and explicitly says groups are not supported. However, it does not name a specific alternative tool or state a condition for choosing another platform's channel/list tool, so it stops short of full usage routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

threads_post_getGet Threads postA
Read-only
Inspect

Get a single Threads post by URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the Threads post.
trimNoWhen true, returns a smaller response with fewer fields.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior3/5

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 scoping detail ('single... by URL') but does not disclose output shape, error behavior, pagination, or any other behavioral traits. This matches the baseline where annotations carry much of the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence of eight words with no repetition or fluff. It front-loads the core function ('Get a single Threads post') and immediately states the required input form ('by URL').

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity read-only fetch with fully documented parameters and readOnly annotations, this is nearly complete. The main gap is not explicitly routing to sibling tools for cases where a URL is absent or multiple posts are needed, but the description provides enough for correct selection and invocation in the common case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter including url, trim, context, llm_model, and conversation_id is already documented. The description's mention of 'by URL' aligns with the url parameter but adds no meaning beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), a specific resource ('a single Threads post'), and the key selection mechanism ('by URL'). This clearly distinguishes it from sibling tools like threads_profile_posts_list or threads_search_list, which operate on lists rather than a single URL-identified post.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'by URL' gives clear invocation context: this tool is for fetching one post when a direct link is available. It does not explicitly name alternatives or exclusions, so it misses the top tier, but the context is clear enough for an agent to avoid choosing list or search tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

threads_profile_getGet Threads profileA
Read-only
Inspect

Get a Threads profile for a creator or account. Accepts a handle.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesThreads handle to look up, with or without a leading @.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the agent knows the operation is safe and non-mutating. The description adds minimal behavioral context: it says the tool accepts a handle, which is more of a parameter detail than a behavior. It doesn't disclose anything about authentication, rate limits, response format, or special behavior. With annotations covering the safety profile, this is an adequate but not rich contribution.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: one sentence with two clauses. It states the resource, the audience, and the key input requirement. No redundant phrases or filler. Information is front-loaded with the main verb and resource at the start.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only profile getter with no output schema, the description conveys the essential purpose. However, it doesn't mention that handles can have or omit the leading '@' (that's only in the schema), and it doesn't distinguish this profile endpoint from the users_search endpoint. The sibling set includes threads_users_search, which could plausibly also resolve a handle, so the description alone isn't fully complete for routing the agent to the correct tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters. The description mentions that a handle is accepted, which aligns with the 'handle' parameter but doesn't add new meaning beyond it. The baseline of 3 applies here because the schema carries the heavy lifting, and the description adds little to no additional semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb and resource: 'Get a Threads profile for a creator or account. Accepts a handle.' It identifies the tool as the profile-fetching tool within the Threads group, which is distinct from threads_post_get, threads_profile_posts_list, and threads_search_list. However, it doesn't explicitly differentiate itself from the sibling threads_users_search, which likely also retrieves profile information via search, so it's 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for looking up a Threads profile by handle, but it does not state when to prefer it over alternatives like threads_users_search or threads_search_list. No explicit when/when-not guidance or alternatives are mentioned. The context is clear enough for basic use, but the sibling differentiation is left entirely up to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

threads_profile_posts_listList Threads profile postsA
Read-only
Inspect

List posts from a Threads profile by handle. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
trimNoWhen true, returns a smaller response with fewer post fields when available.
handleYesThreads handle whose posts should be listed.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds a return-type disclosure ('Returns a list') and a pagination hint ('use cursor when paginated'), which is useful given there is no output schema. However, the pagination instruction references a 'cursor' that does not appear anywhere in the input schema, so the agent is told to do something without a documented way to do it. Annotations already declare readOnlyHint and openWorldHint, lowering the burden on the description, but the cursor ambiguity weakens the disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The primary action and input are front-loaded, and the return+pagination note is compact. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explains that a list is returned and mentions pagination, which is helpful. But the pagination reference is incomplete: how the cursor is obtained, how it is passed back (since no cursor parameter exists in the schema), and what fields are included are not specified. The read-only and open-world annotations cover safety, but the operational gap around pagination makes the description only minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with handle, trim, context, llm_model, and conversation_id all documented in the schema itself. The description only restates the handle concept ('by handle') and adds no additional meaning beyond what the schema provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific verb and resource: 'List posts from a Threads profile by handle.' This clearly distinguishes it from sibling tools like threads_post_get (single post) and threads_search_list (search), and the platform name disambiguates against similar profile_posts_list tools for other networks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it — when you have a Threads handle and want that profile's posts — and the 'by handle' qualifier hints at the entry point. However, there is no explicit when-not-to-use guidance or comparison with alternative sibling tools such as threads_profile_get or threads_search_list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

threads_search_listSearch Threads postsA
Read-only
Inspect

Search Threads posts by keyword. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
trimNoWhether to request a smaller response shape when available.
queryYesSearch query text for public Threads posts.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
endDateNoOptional end date filter in YYYY-MM-DD format.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
startDateNoOptional start date filter in YYYY-MM-DD format.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety and scope profile. The description adds value by disclosing the return shape ('Returns a list') and the cursor-based pagination trait. However, it doesn't mention result limits, ordering, or what happens when a conversation_id is absent on first call — though the schema partially covers the last point.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero filler. The purpose is front-loaded, and the pagination caveat is a single parenthetical. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 params, no output schema, and annotations covering read-only/open-world behavior, the description is adequate but thin. It states the purpose and return shape but omits result format details, sort order, and any guidance on how keyword search differs from the profile-posts and user-search siblings. The rich schema compensates partially, but the description alone wouldn't fully equip an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so with the baseline of 3, no additional parameter detail is strictly necessary. The description adds no parameter-level meaning beyond the schema, which already documents query, date filters, trim, context, llm_model, and conversation_id with decent descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: 'Search Threads posts by keyword.' This distinguishes it from sibling tools like threads_post_get (fetch a specific post) and threads_users_search (find users). However, it doesn't explicitly name the differentiation, so an agent must infer from the name which sibling it replaces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage context is implied by 'by keyword' — use this when searching public Threads content by text, not when retrieving a specific post or a profile's posts. The cursor note gives a how-to instruction for pagination. But there is no explicit when-to-use vs alternatives statement, no mention of date-range filtering availability, and no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_adLibrary_ad_getGet TikTok Ad Library adA
Read-only
Inspect

Get a single TikTok Ad Library or Top Ads creative by ad id or public ad URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoPublic TikTok Ad Library or Top Ads detail URL for the ad.
adIdNoTikTok Ad Library or Top Ads ad id.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety and non-exhaustive nature of the call. The description adds the dual-source scope (Ad Library vs. Top Ads) and the id/URL access paths, but it does not disclose rate limits, authentication needs, or the response shape. This is acceptable given the annotation coverage, but the added behavioral context 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One tight sentence that front-loads the verb and resource, then specifies the two input options. There is no filler, no repetition of schema descriptions, and every word contributes to operational clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only get-by-identifier tool with full schema coverage and read-only/open-world annotations, the description is largely sufficient. An agent knows what to provide and that this returns a single creative. Adding an explicit pointer to the search sibling for cases without an id/URL would make it complete, but that gap is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so url, adId, context, llm_model, and conversation_id are all individually documented. The description merely restates the two lookup identifiers without adding format details, precedence rules, or interaction constraints. The baseline of 3 applies because the schema carries the parameter burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a precise verb ('Get') and a specific resource ('a single TikTok Ad Library or Top Ads creative'), plus the two retrieval paths ('by ad id or public ad URL'). The word 'single' clearly distinguishes this from the sibling search tool tiktok_adLibrary_ads_search_get, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly communicates the context for use: when the agent already has an ad id or a public ad URL. It does not explicitly name the alternative search tool or state 'use search when you lack an id/URL,' but the prerequisite condition is clearly implied by the retrieval keys.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_adLibrary_ads_search_getSearch TikTok Ad Library adsA
Read-only
Inspect

Search TikTok Top Ads by keyword and filters, or search the public Ads Library by advertiser name. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
likesNoLikes percentile filter for Top Ads.
queryNoOptional keyword to search ad titles and content.
cursorNoOpaque pagination cursor from a previous response.
periodNoTime window in days for Top Ads.
regionNoCountry code for Top Ads results. Default: `US`.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
orderByNoSort metric for Top Ads. `cvr`: conversion rate. `ctr`: click-through rate. `play-2s-rate`/`play-6s-rate`: rate viewers played past the 2s/6s mark. Default: `for-you`.
adFormatNoAd format filter for Top Ads. `spark-ads`: ads boosted from an organic creator/brand TikTok post. `non-spark-ads`: ads uploaded directly as ad creative, not boosted from an existing post.
durationNoVideo duration filter for Top Ads.
industryNoIndustry filter for Top Ads.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
objectiveNoCampaign objective filter for Top Ads.
adLanguageNoAd language filter for Top Ads.
advertiserNameNoSearch the public TikTok Ads Library by advertiser name. When set, results come from the public Ads Library instead of Top Ads.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and openWorldHint=true, so the description needn't restate safety. It adds useful behavioral context: keyword search targets Top Ads, advertiserName targets the public Ads Library, and pagination is via cursor. However, it doesn't disclose details like default region/orderBy behavior (though those are in the schema) or rate limits/return format. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the primary action and ending with operational guidance about pagination. Every word earns its place. It does not repeat schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 15-param read-only search tool with full schema coverage and no output schema, the description clearly distinguishes its two modes and gives pagination guidance. It lacks explicit statement of what the returned list items contain, but the schema's rich enums and the absence of an output schema make this acceptable. A bit more on result scope would push it to 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and several enum params have inline semantic expansion (e.g., orderBy explains cvr/ctr/play-rates, adFormat explains spark-ads vs non-spark-ads). The description adds the key cross-parameter semantic: advertiserName switches the result source to the public Ads Library. With full schema coverage, this is strong.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 TikTok Top Ads by keyword and filters, or search the public Ads Library by advertiser name') and differentiates the two distinct modes. This distinguishes it from sibling tools like tiktok_adLibrary_ad_get and the facebook/google ad library search tools, which it explicitly contrasts via the advertiser-name mode.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly says when to use it (search TikTok ads by keyword/filters or by advertiser name) and, via the advertiserName parameter description, states that setting that parameter switches results to the public Ads Library. The 'Returns a list (use cursor when paginated)' line gives explicit handling guidance. Sibling context (tiktok_adLibrary_ad_get exists for ad lookups) makes the differentiation implicit but clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_collection_videos_listList TikTok collection videosA
Read-only
Inspect

List videos in a public TikTok collection by URL. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic TikTok collection URL.
cursorNoPagination cursor returned by a previous response.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile via readOnlyHint=true and openWorldHint=true. The description adds value by disclosing the return shape ('Returns a list') and the pagination behavior ('use cursor when paginated'), which are not present in the annotations. It also states the 'public' prerequisite, a useful behavioral constraint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single tight sentence with the core action front-loaded ('List videos...') and zero filler. The cursor note is a useful pagination hint that earns its place. Every word contributes meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with five well-documented parameters and no output schema, the description covers the essential invocation aspects: the URL input, the public requirement, the list return type, and pagination via cursor. A bit more detail on the record shape would help since there is no output schema, but that is not critical for correct invocation. The pagination and cursor mechanics are adequately conveyed via the schema and description together.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; every parameter, including context, llm_model, and conversation_id, already has a detailed description in the schema. The tool description merely repeats 'URL' and 'cursor' without adding new meaning. Thus the description does not compensate beyond the schema's documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List'), a distinct resource ('videos in a public TikTok collection'), and the input mechanism ('by URL'). This clearly differentiates it from sibling tools like tiktok_profile_videos_list or tiktok_music_videos_list, which target different resources. No ambiguity remains about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case: the user has a public TikTok collection URL. However, it never states when to prefer this tool over adjacent siblings such as tiktok_profile_videos_list, tiktok_music_videos_list, or tiktok_search_videos_list, nor does it provide exclusions or routing hints. The agent must infer the correct choice from the resource name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_music_videos_listList TikTok music videosA
Read-only
Inspect

List TikTok videos that use a specific music clip. Accepts a clip id. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
clipIdYesTikTok music clip id whose videos should be listed.
cursorNoPagination cursor returned by a previous response.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior4/5

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 value by disclosing the return shape ('Returns a list') and pagination behavior ('use cursor when paginated'), which are not visible in annotations. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences front-load the core purpose and then compactly convey input, output, and pagination behavior. Every phrase 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.

Completeness4/5

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 no output schema, the description covers the essential invocation inputs (clip id), output nature (list), and pagination. It doesn't explain how to obtain a clip id or list item fields, but those are minor given the low complexity and strong sibling context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description mostly restates what clipId and cursor are for, adding no deeper meaning about formatting, constraints, or how parameters interact. It is adequate but not enriching.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('List'), a clear resource ('TikTok videos'), and the unique selection criterion ('use a specific music clip'). This distinguishes it from sibling tools like tiktok_profile_videos_list or tiktok_search_videos_list, even without naming them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool by noting that it accepts a clip id, but it gives no explicit when/when-not guidance or mentions of alternatives. It is usable but leaves the agent to infer the right context from the resource type.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_product_getGet TikTok Shop productC
Read-only
Inspect

Get details for a TikTok Shop product by product id. Accepts a product page URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic TikTok Shop product detail page URL for the product to retrieve.
regionNoOptional country or region code for the product catalog. When omitted, the default catalog region applies.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnlyHint=true and openWorldHint=true, lowering the bar. The description adds only that a product page URL is accepted rather than a bare product id, but it does not disclose URL-to-id resolution, error behavior, or region handling. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the core verb and resource front-loaded. 'By product id' is somewhat redundant and slightly confusing alongside 'Accepts a product page URL,' but overall there is no meaningful waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only single-item lookup with a fully documented schema and readOnly/openWorld annotations, the description is nearly adequate. The main gap is that there is no output schema and no description of what 'details' contain, leaving return expectations vague.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description's mention of 'product id' and 'product page URL' loosely maps to the url parameter but adds no real meaning beyond the schema's own 'Public TikTok Shop product detail page URL' description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (TikTok Shop product) and clarifies the input is a product page URL, distinguishing it from list and search siblings like tiktok_shop_products_list and tiktok_shop_products_search. The phrase 'by product id' is slightly imprecise because the schema actually takes a URL, which deducts a point.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance about when to use this tool versus alternatives such as tiktok_shop_products_search or tiktok_product_reviews_list. 'Accepts a product page URL' implies the user needs an existing URL, but the description never explicitly states that prerequisite or rules out other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_product_reviews_listList TikTok Shop product reviewsB
Read-only
Inspect

List buyer reviews for a TikTok Shop product by product id. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoPublic TikTok Shop product detail page URL for the product whose reviews should be listed.
pageNo1-based review page number. Omit to request the first page.
regionNoOptional country or region code for the product review catalog. When omitted, the default catalog region applies.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
productIdNoTikTok Shop product identifier. Provide this instead of `url` when you already know the product id.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds that it returns a list and hints at pagination, which is useful context. However, the pagination hint ('use cursor') is inconsistent with the schema's `page` parameter and does not explain how pagination actually works.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the primary action front-loaded. There is no filler, but the 'use cursor when paginated' clause is vague and slightly misleading, which prevents a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With seven parameters, no output schema, and a dual-identifier plus pagination setup, the description is too thin. It omits when to use `url` vs `productId`, how paginatedlisting works (especially the `page` vs `conversation_id` interplay), and what the returned review entries look like. The schema fills parameter descriptiongaps but not decision/behavior gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the structured fields already carry the parameter meaning. The description adds little beyond 'product id' and does not clarify the relationship between `url`, `productId`, `page`, and `conversation_id`. A baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: listing buyer reviews for a TikTok Shop product. It is distinguishable from sibling list tools such as tiktok_video_comments_list or tiktok_profile_videos_list. However, it says 'by product id' while the schema also accepts a URL, so it is slightly narrower than the actual input options.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, or when to prefer `url` over `productId`. The agent is left to infer the intended use from the name and description alone, with no mention of related tools like tiktok_product_get or tiktok_shop_products_list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_profile_audience_getGet TikTok profile audienceA
Read-only
Inspect

Get audience location demographics for a TikTok profile by handle.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesTikTok handle to look up, with or without a leading @.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior3/5

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 known. The description adds that the result is audience location demographics, but it does not discuss data freshness, aggregation level, or potential missing data, which would add useful behavioral context 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single focused sentence with no filler. It states the action, the resource, and the key invocation detail (by handle) immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only getter with 100% schema coverage, the description provides enough context to select and invoke the tool. There is no output schema, so a brief note on the shape of the returned demographics would be marginally helpful, but it is not necessary for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents handle, context, llm_model, and conversation_id. The description only repeats that the lookup is by handle and adds no additional parameter-level meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Get audience location demographics for a TikTok profile by handle.' This clearly distinguishes it from broader tools like tiktok_profile_get and related region/profile tools. The handle-based lookup is also explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The purpose statement implies when to use the tool: whenever audience location demographics are needed for a TikTok handle. However, it does not explicitly contrast with sibling tools such as tiktok_profile_region_get or tiktok_profile_engagement_get, so an agent gets no direct routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_profile_engagement_getGet TikTok profile engagement auditC
Read-only
Inspect

Get TikTok profile engagement audit. Accepts a handle.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesTikTok handle to look up, with or without a leading @.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true and openWorldHint=true, but the description adds no behavioral context beyond that. It does not disclose what the audit contains, whether results are cached, rate-limit implications, or any output characteristics. The phrase 'Accepts a handle' describes input, not behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded, but the second sentence, 'Accepts a handle,' largely duplicates the schema's handle parameter description. It is not wrongly verbose, yet it does not productively use its space to add differentiating or behavioral detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 help an agent understand what an 'engagement audit' returns, such as engagement rate, like/comment counts, or time-window aggregates. It offers none of that. Sibling tools for the same profile would be hard to distinguish on content alone, making the description inadequate for effective tool selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description's mention of 'a handle' adds nothing beyond the schema's detailed handle property, which already notes the optional leading @. No parameter semantics are lost, but the description contributes no extra meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: 'Get TikTok profile engagement audit.' The 'engagement audit' phrasing distinguishes it from related siblings like tiktok_profile_get and tiktok_profile_audience_get, though it does not explicitly name them. It is clear enough for an agent to identify the tool's purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given for when to choose this tool over alternatives such as tiktok_profile_audience_get, tiktok_profile_followers_list, or tiktok_profile_get. The sole usage hint is 'Accepts a handle,' which is input-focused rather than situational. An agent must infer when an 'engagement audit' is the right call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_profile_followers_listList TikTok profile followersA
Read-only
Inspect

List followers of a TikTok profile by handle. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
trimNoOptional flag for a smaller response with fewer fields.
cursorNoPagination cursor returned by a previous response.
handleYesTikTok handle whose followers should be listed.
userIdNoOptional TikTok user id to speed up the request.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as read-only and open-world, so the safety profile is covered. The description adds useful behavioral context by stating that the response is a list and that cursor pagination is used, which is beyond what the annotations alone provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. The core action and key pagination behavior are front-loaded and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward read-only list tool with a fully documented seven-parameter schema, the description plus schema covers required inputs and pagination. The main gap is the absence of usage differentiation from sibling tools, but that does not prevent a competent agent from calling this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema documents all parameters thoroughly. The description's mention of 'handle' and 'cursor' simply restates schema information without adding new format, syntax, or interplay details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List followers of a TikTok profile by handle.' This clearly identifies the operation and distinguishes it from sibling tools like tiktok_profile_following_list, which lists profiles the account follows.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to choose this tool over alternatives such as tiktok_profile_following_list or tiktok_profile_get. It only mentions cursor pagination, which is operational advice 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.

tiktok_profile_following_listList TikTok profile followingA
Read-only
Inspect

List accounts followed by a TikTok profile by handle. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
trimNoOptional flag for a smaller response with fewer fields.
cursorNoPagination cursor returned by a previous response.
handleYesTikTok handle whose following list should be listed.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only safety profile (readOnlyHint=true, openWorldHint=true). The description adds useful behavioral context beyond that: it says the operation returns a list and that the cursor should be used when paginated. This is helpful without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The core purpose is front-loaded, and the pagination note is the only extra but meaningful addition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 fully documented parameters and no output schema, the description conveys the essential outcome ('Returns a list') and the main non-obvious behavior (cursor pagination). It could mention returned item fields, but the schema and annotations already cover most of what an agent needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description mentions 'handle' and 'cursor' in passing, but does not add semantic meaning beyond the schema's detailed parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List'), a specific resource ('accounts followed by a TikTok profile'), and the lookup method ('by handle'). It clearly distinguishes this from the sibling tiktok_profile_followers_list because it explicitly says 'followed by' rather than 'followers'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied by the phrasing 'List accounts followed by a TikTok profile', so an agent can infer that this is the tool for following lists. However, it does not explicitly state when to use this tool instead of the closely related tiktok_profile_followers_list or provide any exclusions/alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_profile_getGet TikTok profileA
Read-only
Inspect

Get a TikTok profile by handle. Returns lookupStatus plus profile metrics (followers, posts/videoCount, privateAccount, accountCreatedAt).

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesTikTok handle to look up, with or without a leading @.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.5/5.0
Behavior3/5

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 payload fields and lookupStatus. It does not disclose the semantics of lookupStatus (e.g., failure or private-account cases), but with annotations present the bar is lower.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with purpose and return fields; no filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A simple get-by-handle tool, but there is no output schema and the description does not explain possible lookupStatus values or behavior for missing profiles. It lists key returned fields, yet leaves enough ambiguity that an agent might not know how to interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%; handle, context, llm_model, and conversation_id all have descriptions. The tool description adds no parameter details beyond the schema, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the exact action ('Get a TikTok profile by handle') and enumerates the returned data (lookupStatus, followers, videoCount, privateAccount, accountCreatedAt), so an agent can distinguish it from sibling TikTok tools that target engagement, followers, or videos.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided for when to choose this tool over tiktok_profile_engagement_get, tiktok_profile_followers_list, or other profile_* siblings. It implies use for basic profile lookup but does not state exclusions or contexts where another tool should be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_profile_live_checkGet TikTok live streamA
Read-only
Inspect

Check whether a TikTok creator is currently live by handle.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesTikTok handle to look up, with or without a leading @.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe, potentially incomplete external check. The description adds no further behavioral detail such as what happens when the creator is offline, whether the response is a boolean or stream metadata, or whether the handle must be exact.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler or repetition. It states the core action and input in under ten words and earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only status check, the description is close to adequate, but there is no output schema and the description does not clarify whether the result is a yes/no status, live-stream metadata, or a stream URL. The title 'Get TikTok live stream' also introduces slight ambiguity about whether this tool returns live-stream content rather than a live status check.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the parameter descriptions already explain handle, context, llm_model, and conversation_id in detail. The tool description only reinforces 'by handle,' adding no meaningful semantic information beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('check') and resource ('whether a TikTok creator is currently live') with a clear input scope ('by handle'). This clearly distinguishes it from the many related TikTok profile/video tools in the sibling list, even though it does not explicitly name an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied by the purpose: when the user's goal is to know whether a TikTok creator is currently live. However, the description gives no explicit guidance about when not to use it or which sibling tools to prefer for profile details, videos, or other TikTok lookups.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_profile_region_getGet TikTok profile regionA
Read-only
Inspect

Get the region code reported for a TikTok profile by handle.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesTikTok handle to look up, with or without a leading @.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds a small nuance with 'reported', suggesting the value is whatever TikTok reports rather than a verified real-world location, but it does not disclose possible absence of the field or failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler: it names the resource, the operation, and the key input. Every word earns its place, and the title reinforces the meaning without being necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity read-only lookup with no output schema, stating that it returns the region code by handle is nearly sufficient. It does not describe the return envelope or error/unknown cases, but the operation is simple enough that these are minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters including handle, context, llm_model, and conversation_id are already documented in the schema. The description adds no extra parameter-level information beyond 'by handle', so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource ('Get the region code') and names the input scope ('by handle'), which clearly distinguishes it from sibling TikTok profile tools like tiktok_profile_get and tiktok_profile_engagement_get. An agent can immediately infer what data this tool returns and what input it takes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when a TikTok region code is needed, but it gives no explicit guidance about when not to use it or which sibling tools are alternatives. There is no exclusion or routing hint beyond the purpose statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_profile_showcaseProducts_listList TikTok profile showcase productsA
Read-only
Inspect

List products featured on a creator's TikTok showcase by handle. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoPagination cursor returned by a previous response.
handleYesTikTok handle whose profile showcase products should be listed.
regionNoOptional ISO 3166-1 country code for the request.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior4/5

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 value beyond those by stating the response is a list and that cursor-based pagination may be needed, which tells the agent the call pattern. It does not contradict the annotations and is honest about the operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence followed by a short behavioral note. Every clause earns its place: the first states the operation and scope, the second discloses the return shape and pagination behavior. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description covers the core contract — it returns a list and may be paginated. The standard params (context, llm_model, conversation_id) are self-explanatory in the schema, and the operation is simple. It does not mention edge cases or error behavior, but these are not essential for a straightforward list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters (handle, cursor, region, context, llm_model, conversation_id) are already described in the input schema. The description's mention of cursor-based pagination reinforces the cursor parameter's role but does not add substantive new meaning, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific operation — 'List products featured on a creator's TikTok showcase by handle' — identifying the exact resource (a creator's showcase products) and scope (by handle). This clearly distinguishes it from sibling tools like tiktok_shop_products_list or tiktok_product_get, so an agent can tell what it does 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it: whenever a user wants to see products a creator features on their TikTok showcase, addressed by handle. However, it does not explicitly state when not to use it nor name the natural alternatives (e.g., tiktok_shop_products_list for shop inventory, tiktok_product_get for a single product), leaving the agent to infer the distinction from the resource wording alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_profile_videos_listList TikTok profile videosA
Read-only
Inspect

List videos from a TikTok profile by handle. Credits: 1 base; hostMedia=true adds +2 per hosted asset (up to 24 / 49 max). Failed assets are not surcharged.

ParametersJSON Schema
NameRequiredDescriptionDefault
trimNoOptional flag for a smaller response with fewer fields.
cursorNoPagination cursor returned by a previous response.
handleYesTikTok handle whose videos should be listed.
regionNoOptional ISO 3166-1 country code for the request.
sortByNoOptional sort order for the returned TikTok videos.
userIdNoOptional TikTok user id to speed up the request.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
hostMediaNoWhen true, hosts source media for 90 days and returns delivery URLs in each video's `hostedMedia`.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior3/5

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 behavior about credit costs (1 base, +2 per hosted asset, up to 24/49 max) and that failed assets are not surcharged, which goes beyond annotations. It does not detail pagination behavior or whether the cursor is required for multiple pages, but the cost transparency 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each with a distinct purpose: what it does, cost model, and surcharge policy. No filler or repetition of schema details. Front-loads the core action before cost caveats.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a listing tool with full schema coverage and readOnly/openWorld annotations, the description covers the key extra concerns: cost, hostMedia implications, and credit limits. It doesn't mention pagination explicitly, but the cursor parameter documents that flow in the schema. Slight gap is not mentioning that results may be paginated and require multiple calls, but overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented in the schema. The description adds meaning primarily for hostMedia by explaining the credit cost model and the 90-day hosting context is in the schema description. It doesn't add additional semantics for handle, sortBy, or cursor beyond what the schema already provides. Baseline 3 is appropriate since schema carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the verb 'list' and resource 'TikTok profile videos by handle', which is clear and specific. It distinguishes from similar tiktok tools like tiktok_collection_videos_list and tiktok_feed_trending_list, though it doesn't explicitly name a sibling. The title reinforces the same information.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies it is for listing videos from a TikTok profile by handle, which differentiates it in context from search tools and video get tools. It doesn't explicitly state when NOT to use it or name alternatives, but the handle-based scoping is a clear usage signal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_search_hashtag_listSearch TikTok by hashtagA
Read-only
Inspect

Search TikTok videos by hashtag (not free-text keyword — use tiktok.search.videos.list for that). Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
trimNoWhether to request a smaller response with fewer fields.
cursorNoPagination cursor returned by a previous response.
regionNoOptional ISO 3166-1 country code for the request. This sets the proxy region and does not filter results to that country only.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
hashtagYesHashtag to search for. A leading # is optional.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.4/5.0
Behavior4/5

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 useful behavioral context beyond annotations: it requires an exact hashtag rather than free text, returns a list, and uses cursor-based pagination. This is meaningful 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The core scope and the key sibling alternative are front-loaded, and the pagination note is brief. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list-search tool with fully described parameters, the description covers the essential usage: what to search, what not to do, what the return shape is, and how pagination works. There is no output schema, but 'Returns a list' gives the critical shape, and the remaining parameters are well documented in the input schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 7 parameters thoroughly. The description reinforces the hashtag parameter's semantics by saying it is not free-text and mentions pagination via cursor, but it adds little beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource, 'Search TikTok videos by hashtag', and immediately distinguishes itself from free-text keyword search by naming the sibling tool tiktok.search.videos.list. This clearly separates it from the many other search tools 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when not to use this tool ('not free-text keyword') and names the exact alternative to use instead. It also notes the list return type and cursor pagination, giving an agent enough context to invoke it correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_search_suggestions_listGet TikTok search suggestionsA
Read-only
Inspect

Get TikTok search suggestions by query. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query text for TikTok suggestions.
regionNoOptional two-letter ISO 3166-1 country code for localized suggestions.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry the safety profile (readOnlyHint=true, openWorldHint=true), so the bar for the description is lower. The description adds genuinely useful behavior beyond the annotations: the return shape ('Returns a list') and pagination behavior ('use cursor when paginated'). It could additionally state what the list items are (suggestion strings), but the core behavioral traits are disclosed and nothing 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero filler. The core purpose is front-loaded, and the return/pagination note is a single compact parenthetical. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 5-parameter tool with 100% schema coverage and read-only annotations, the description is nearly sufficient: it covers purpose and the key runtime behavior. The main gap is that it never states what the returned list contains (suggestion strings), and the cursor mention is under-specified since no cursor parameter appears in the schema. These are minor given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so per the rubric the baseline is 3 even with no parameter detail in the description. The description adds nothing about parameter meaning; the pagination remark references a 'cursor' concept that does not correspond to any parameter in the schema, so it does not clarify the parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource — 'Get TikTok search suggestions by query' — which is clear and consistent with the title. It is distinguishable from siblings like tiktok_search_videos_list and tiktok_users_search by the word 'suggestions', but it never explicitly names or contrasts those alternatives, so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the description conveys that this tool serves query-based search suggestions, so an agent can infer when it applies. However, there is no explicit when-to-use or when-not-to-use guidance, and no mention of the nearby alternatives (tiktok_search_top_list, tiktok_search_videos_list, tiktok_users_search) that an agent might confuse it with.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_search_top_listSearch TikTok Top resultsA
Read-only
Inspect

Search TikTok Top results by keyword (not videos-only — use tiktok.search.videos.list for that). Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query text for TikTok Top results.
cursorNoOpaque pagination cursor returned by a previous response.
regionNoOptional two-letter ISO 3166-1 country code for localized search results.
sortByNoOptional sort order for search results.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
datePostedNoOptional upload date filter for video results.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.1/5.0
Behavior4/5

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 useful behavioral context beyond that: results are not videos-only, return a list, and require cursor handling when paginated. It does not go into rate limits or result content, but for a read-only search tool this is a strong addition.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The core purpose is front-loaded, the exclusion of videos-only results is in parentheses immediately after, and the pagination note is compact. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description only says 'Returns a list' without indicating what the returned items look like or what 'Top results' can contain beyond 'not videos-only'. All 8 parameters are documented in the schema, so invocation is covered, but a searcher with no output contract would benefit from a bit more detail about result types and fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline for this score is 3. The description adds only minimal semantics—'by keyword' maps to query and 'use cursor when paginated' reinforces the cursor parameter—but does not provide new parameter meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Search'), resource ('TikTok Top results'), and invocation mode ('by keyword'). It also differentiates from a clear sibling by explicitly excluding videos-only results, so an agent can see what this tool is for at a glance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit when-not with a named alternative for videos-only searches, which is exactly the main confusable sibling. However, the alternative is written as 'tiktok.search.videos.list' while the sibling list contains tiktok_search_videos_list, so an agent might not map the reference cleanly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_search_videos_listSearch TikTok videosA
Read-only
Inspect

Search TikTok videos by free-text keyword (not hashtag — use tiktok.search.hashtag.list for that). Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
trimNoWhen true, returns a smaller response with fewer fields.
queryYesSearch query text for TikTok videos.
cursorNoOpaque pagination cursor returned by a previous response.
regionNoOptional two-letter ISO 3166-1 country code for localized search results.
sortByNoOptional sort order for search results.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
datePostedNoOptional upload date filter for video results.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only and open-world behavior. The description adds meaningful context beyond that: it states the return shape ('Returns a list') and pagination handling ('use cursor when paginated'). 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two succinct sentences cover purpose, the key exclusion/alternative, and pagination behavior. There is no fluff and every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 high schema coverage and supporting annotations, the description is largely sufficient. The main gap is that it doesn't distinguish this tool from tiktok_search_top_list or tiktok_search_suggestions_list, nor describe return-field details, but the core invocation needs are covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds extra meaning by clarifying the query is free-text (not a hashtag) and by reinforcing cursor usage for pagination, which goes slightly beyond the schema's own parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action ('Search'), target ('TikTok videos'), and method ('free-text keyword'), and explicitly excludes hashtag search with a pointer to the correct sibling. This makes the tool easily distinguishable from other search variants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly provides a when-not case ('not hashtag') and names the alternative tool ('use tiktok.search.hashtag.list for that'). It also adds practical guidance on pagination ('use cursor when paginated').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_shop_products_listList TikTok Shop store productsB
Read-only
Inspect

List products in a TikTok Shop store by shop id or URL. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic TikTok Shop store URL whose products should be listed.
cursorNoPagination cursor from a previous response. Omit to request the first page.
regionNoOptional region code for the shop catalog. When omitted, the default catalog region is US.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety and world-state assumptions. The description adds that pagination uses a cursor and that the result is a list, which is mildly useful. It does not disclose specifics like rate limiting, data freshness, or whether the list is complete or may omit products. With annotations present, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the core action (list products) and scope (by shop id or URL), then adds a helpful pagination hint. It's appropriately sized and no words are wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 a fully documented schema and readOnlyHint/openWorldHint annotations, the description covers the basics: what it lists, how to identify the target, and pagination. It doesn't mention edge cases like invalid URLs, region handling beyond the schema enum, or what happens when a shop has no products, but those are minor for a list endpoint with no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema documents all parameters. The description adds the note about using a cursor when paginated, which aligns with the 'cursor' parameter, and says results are a list. It doesn't deeply explain region defaults or the context/llm_model parameters, but the schema covers those. Baseline 3 is fair.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: 'List products in a TikTok Shop store by shop id or URL.' It distinguishes itself from sibling tools like tiktok_shop_products_search by focusing on a specific store's product list rather than searching across shops. However, it doesn't explicitly name alternatives or contrast with tiktok_profile_showcaseProducts_list, which could also seem related.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description and schema imply usage: use this when you need to list a specific shop's products, provide a shop URL, and handle pagination via cursor. It doesn't explicitly state when not to use it or mention alternatives like tiktok_shop_products_search for searching across stores. No explicit exclusion guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_song_getGet TikTok songB
Read-only
Inspect

Get details for a TikTok song or sound by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTikTok song or sound id. Use the trailing id from a music page URL, or `music.id` from a video lookup.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true, so the description carries little safety burden. But it adds no behavioral context beyond the schema (e.g., what fields the details include, whether sounds and songs are unified, or any rate-limit/availability concerns). 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that names the action, resource, and input in under 10 words; no filler or repetition of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only get-by-id with no output schema, the description plus rich parameter docs cover the essentials. It leaves the exact shape of 'details' unspecified, but the readOnlyHint and documented id derivation make it safely callable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter (id, context, llm_model, conversation_id) already has a meaningful description, including where to source the id. The tool description adds no extra parameter semantics, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Get'), resource ('TikTok song or sound'), and lookup method ('by id'). It distinguishes this from sibling list/search tools such as tiktok_music_videos_list by focusing on single-item details, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage cue is 'by id,' which weakly implies this tool is for lookups when an ID is already known. There is no guidance on when to prefer this over tiktok_music_videos_list, search tools, or platform alternatives, and no when-not-to-use note.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_video_comments_listList TikTok video commentsB
Read-only
Inspect

List comments on a TikTok video by URL. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the TikTok video whose comments should be listed.
trimNoWhen true, returns a smaller response with fewer fields.
cursorNoOpaque cursor from a previous response to fetch the next page.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and openWorldHint=true, so the agent knows the operation is safe and may involve external changes. The description adds behavioral context by saying 'Returns a list' and advising to use cursor when paginated, which is useful. It doesn't disclose whether comments are sorted by a particular order, whether deleted/disabled comments are skipped, or whether the response can be truncated by rate limits, but it adds some value beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler. It front-loads the core action and resource, then adds the key pagination note. The parenthetical about cursor is slightly redundant with the cursor parameter's schema description, but the overall size is appropriately minimal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list operation with a fully documented schema, the description is mostly adequate: an agent can figure out the URL input, the list output, and the cursor pagination. However, there is no output schema, and the description doesn't explain what fields are in each comment object (e.g., author, text, like count), nor does it clarify that the returned list is paginated with an opaque cursor. Since there is no output schema and the parameter count is six, more context about the return shape and pagination behavior would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameter meaning is already fully documented in the input schema. The description's mention of 'by URL' reinforces the url parameter and the cursor note aligns with the cursor parameter, but it doesn't add extra semantics such as default pagination size or the effect of trim. Baseline 3 is appropriate because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List'), resource ('comments on a TikTok video'), and input ('by URL'), so an agent can understand the core function. It is clear enough on its own, though it doesn't explicitly distinguish itself from sibling tools like tiktok_video_comments_replies_list, which instead lists replies to a specific comment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'by URL' gives the primary input method, and the note about cursor and pagination implies usage for paginated fetching. However, the description doesn't specify when to choose this tool over tiktok_video_get, tiktok_video_comments_replies_list, or the analysis variants, nor does it state any prerequisites such as the video being public or the need for a valid TikTok URL.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_video_comments_replies_listList TikTok comment repliesB
Read-only
Inspect

List replies to a TikTok video comment. Accepts a comment id. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the TikTok video that contains the parent comment.
cursorNoOpaque cursor from a previous response to fetch the next page.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
commentIdYesParent comment id from List TikTok video comments (`data.comments[].id`).
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuine behavior beyond annotations: 'Returns a list (use cursor when paginated)' discloses the result shape and the pagination mechanism. This is useful but modest context — it doesn't cover what happens with absent or invalid comment ids, or the item structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the purpose and no filler — each sentence contributes (purpose, key input, output/pagination). Minor redundancy: 'Accepts a comment id' partially repeats the commentId schema entry, so it is concise but not perfectly maximized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 a 100%-covered schema and annotations handling safety, the description covers purpose, key input, and return shape with a pagination cue. Gaps remain: there is no output schema, so the replied-item structure is undisclosed, and the link to the prerequisite tiktok_video_comments_list lives only in the schema, not the description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description slightly reinforces meaning by foregrounding commentId and cursor as the operationally critical parameters, but it adds no detail beyond what the schema already provides for each parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List replies to a TikTok video comment.' The platform prefix and the parent-comment framing distinguish it from siblings like facebook_post_comments_replies_list, instagram_post_comments_replies_list, and youtube_video_comments_replies_list, as well as from tiktok_video_comments_list. However, it never explicitly names a sibling or states what it is not, so it falls just 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Accepts a comment id' implies the prerequisite that the caller must already have a parent comment id — reinforced by the schema's commentId description referencing 'Parent comment id from List TikTok video comments'. But the description gives no explicit when-to-use, when-not-to-use, or alternative-routing guidance; the usage context must be inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_video_download_getDownload TikTok video or photo post mediaA
Read-only
Inspect

Download TikTok video or photo post media. Accepts a video URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the video or photo post.
regionNoOptional ISO 3166-1 country code used to route the request when needed.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as readOnly and openWorld, so the safety profile is covered. The description adds minimal behavioral detail beyond 'download', and does not clarify what the response contains (e.g., a direct media file vs. a URL). 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler or redundant detail. It front-loads the core action and resource. It is concise enough, though it could tighten the relationship between 'photo post' and 'video URL'.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 does not explain the return format or behavior after download. It also leaves ambiguity about whether photo post URLs are accepted despite the title mentioning them. The description is sufficient for selection but not fully complete for a download tool whose response shape is unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All five parameters have descriptions in the schema, so the schema carries the semantic weight. The description only repeats the url input concept without adding new parameter-level meaning, which is acceptable given the 100% schema description coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Download') and a clear resource ('TikTok video or photo post media'). This clearly differentiates the tool from siblings like tiktok_video_get, which retrieves metadata or details rather than media content. The phrase 'Accepts a video URL' further clarifies the input type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied by the verb and resource: the user wants to download media from a TikTok post. However, the description does not explicitly mention when to prefer this over alternatives, such as tktok_video_get when only metadata is needed, nor does it state any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_video_getGet TikTok videoA
Read-only
Inspect

Get a single TikTok video by URL. Author is identity-only (no follower counts) — use tiktok_profile_get for metrics. Credits: 1 (+downloadMedia add-on).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the video or photo post.
trimNoWhen true, returns a smaller response with fewer fields.
regionNoOptional ISO 3166-1 country code used to route the request when needed.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
downloadMediaNoWhen true, includes hosted CDN URLs in `downloads` when available. Adds 10 credits (11 total with the base lookup) on successful lookups, even if `downloads` is empty.
getTranscriptNoWhen true, includes the video transcript (WEBVTT) in `transcript` when one is available.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as read-only, lowering the burden on the description. The description adds useful behavioral context: author data is identity-only with no follower counts, and the base lookup costs 1 credit with a downloadMedia add-on. It does not describe the full response shape, but schema annotations and the read-only hint cover the main safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, purposeful sentences: the core operation, the key scoping limitation with a sibling alternative, and the credit cost. No filler or redundant detail is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is sufficient for a read-only single-item fetch, especially with 100% schema coverage and readOnlyHint=true. It covers the URL lookup, the author limitation, the metric-focused alternative, and the credit cost. It does not explain the relationship to tiktok_video_download_get or tiktok_video_transcript_get, nor the general return shape, but those are partial gaps rather than blockers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds little beyond restating that downloadMedia is an add-on, which the schema already covers. This is the baseline 3 where schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get a single TikTok video by URL.' It also differentiates from tiktok_profile_get by clarifying that the author object is identity-only and contains no follower counts. Slight separation from tiktok_video_download_get and tiktok_video_transcript_get is absent, but the base purpose is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly tells the agent to use tiktok_profile_get when metrics are needed, providing a clear when-not. It also signals the credit cost, which helps with budgeting. It does not mention when dedicated download/transcript siblings would be preferable, but the tool's own add-on parameters partly cover those cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tiktok_video_transcript_getGet TikTok video transcriptA
Read-only
Inspect

Get the spoken transcript for a TikTok video by URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the TikTok video whose transcript should be returned.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
languageNoOptional two-letter language code to request a transcript in a specific language when available.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
useAiFallbackNoWhen true, uses Social Fetch's AI fallback when a transcript is not otherwise available. Adds 10 credits on completed lookups (11 total with the base lookup).
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and openWorldHint=true, which already communicate safety. The description adds the 'spoken transcript' qualifier, clarifying the output is audio-derived rather than captions. The useAiFallback parameter description adds behavior context (credit cost, fallback behavior) that compensates for the lack of output schema. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is a single concise sentence that conveys the core purpose without padding. It's appropriately sized for a simple retrieval tool, though it could have added a sentence about when to use it vs. alternatives without becoming bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only transcript retrieval with 100% schema coverage and readOnlyHint=true, the description plus schema covers the essentials. The fallback parameter description documents credit costs. No output schema exists but the name and description make the return type (transcript text) obvious. Slight gap: no mention of language availability or failure behavior, but these are minor for this tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all six parameters. The description's 'by URL' phrase marginally reinforces the url parameter but adds no new semantics beyond the schema. With high schema coverage, baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific verb ('Get'), resource ('spoken transcript'), and input ('TikTok video by URL'). It is clear and distinguishable from siblings like tiktok_video_get and tiktok_video_download_get, though it doesn't explicitly name a sibling alternative like facebook_post_transcript_get or youtube_video_transcript_get which have similar purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear that the tool is for retrieving transcripts from TikTok videos, but doesn't explicitly state when to use this vs alternatives (e.g., tiktok_video_get for metadata, tiktok_video_download_get for downloading). No exclusion conditions or when-not-to-use guidance. Implied usage is clear from the name and description, but no explicit routing to alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

truthsocial_post_getGet Truth Social postB
Read-only
Inspect

Get a Truth Social post by URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the Truth Social post.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the tool's safety profile is covered by structured data. The description adds no behavioral details beyond the retrieval action—no mention of return format, error behavior, or content scope. Nothing contradicts the annotations, but the description also adds no meaningful behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that states verb, resource, and input method in eight words. Every word is informative and there is no padding. The size is appropriate for a simple read-only retrieval tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and all parameters are documented in the schema, but with no output schema the description does not say what the returned post object contains (text, author, media, engagement). It also lacks usage routing that would distinguish it from profile-posting siblings. It is minimally adequate but leaves the agent to infer output shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so url, context, llm_model, and conversation_id are already documented in the schema. The description's 'by URL' only reinforces the url parameter without adding new semantics. Baseline 3 is appropriate because the schema carries the parameter-documentation burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get'), a specific resource ('Truth Social post'), and the access method ('by URL'). This distinguishes it from truthsocial_profile_get and truthsocial_profile_posts_list, which target profile-level data. It does not explicitly contrast with sibling post-get tools on other platforms, so it misses full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance about when to choose this tool over alternatives such as truthsocial_profile_posts_list or platform-specific post_get tools. The only implicit hint is 'by URL', which conveys the required input but not the decision context. There are no when-to-use, exclusions, or alternative recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

truthsocial_profile_getGet Truth Social profileB
Read-only
Inspect

Get a Truth Social profile by handle or account id.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesTruth Social handle or account id.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already provide readOnlyHint=true and openWorldHint=true, and the description adds no behavioral context beyond that: no mention of not-found behavior, returned fields, rate limits, or data freshness. It is consistent with the annotations, so there is no contradiction, but it contributes no extra transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence identifying the action, resource, and lookup key with no filler or repetition. It is appropriately sized for a simple read-only getter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward read-only profile getter with fully documented required parameters and safe annotations, the description is largely sufficient. There is no output schema, so a brief note on what profile fields are returned would have made it fully complete, but the operation is simple enough that the gap is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so handle, context, llm_model, and conversation_id are already fully documented in the schema. The description merely restates the handle-or-account-id flexibility already present in the schema, adding no new parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses a specific verb and resource ('Get a Truth Social profile') and states the lookup key ('by handle or account id'). It is clearly a single-profile lookup, but it does not explicitly distinguish itself from truthsocial_profile_posts_list or the many sibling profile_get tools, so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given for when to prefer this tool over truthsocial_post_get, truthsocial_profile_posts_list, or the other platform profile_get tools. The only implied use case is having a handle or account id and wanting a profile, which reads more as parameter semantics than as explicit usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

truthsocial_profile_posts_listList Truth Social profile postsA
Read-only
Inspect

List posts from a Truth Social profile by handle or account id. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum posts to return (1–20). Default: 20.
cursorNoOpaque pagination cursor from a previous response. Omit for the first page.
handleYesTruth Social handle or account id.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
includeRepliesNoWhen true, includes reply posts in the timeline. Adds 2 credits (4 total including the base lookup). Default: false (top-level posts only).
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already provide readOnlyHint and openWorldHint, lowering the burden on the description. The description adds that the response is a list and that pagination should be handled with a cursor, but it does not disclose additional behavioral details such as default reply filtering; these are mostly covered by 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, with no filler. 'Returns a list' is slightly redundant with 'List posts', but the pagination note is useful and the structure is easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich input schema and the readOnly annotation, the agent has enough information to invoke the tool correctly, including how to paginate. There is no output schema, but the description states the top-level return shape is a list; the item-level structure is not described, which is a minor gap for a simple read-only list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description mostly restates handle and cursor semantics already present in the schema ('handle or account id', 'use cursor when paginated') and adds no significant new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('List posts from a Truth Social profile') and identifies how the profile is addressed (handle or account id). It is clear about the tool's purpose, but it does not explicitly differentiate it from sibling tools such as truthsocial_post_get or truthsocial_profile_get; some disambiguation relies on 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives some practical guidance—'by handle or account id' and 'use cursor when paginated'—so an agent can infer the main use case. However, it does not name alternatives or exclusion conditions, so tool-selection guidance is only 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.

twitch_clip_getGet Twitch clipA
Read-only
Inspect

Get metadata and playback URLs for a Twitch clip by URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the Twitch clip.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, lowering the burden. The description adds that the result contains metadata and playback URLs but does not disclose behaviors like URL-format expectations, playback URL expiry, rate limits, or auth requirements. It provides modest extra context but no contradiction with 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single 11-word sentence front-loads the verb and resource and includes the essential qualifier 'by URL'. There is zero filler, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 a fully documented schema, the description adequately conveys the return scope ('metadata and playback URLs'). It does not enumerate the metadata fields or warn that playback URLs may be time-limited, but these are minor gaps given no output schema and the simplicity of the operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: all four parameters (url, context, llm_model, conversation_id) have detailed descriptions, including instructions to pass 'unknown' for llm_model and never invent a conversation_id. The tool description's 'by URL' matches the url parameter but adds no new semantic detail, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), a specific resource ('metadata and playback URLs for a Twitch clip'), and the lookup method ('by URL'). Among the Twitch siblings (twitch_profile_get, twitch_profile_schedule_get, twitch_profile_videos_list), none covers single-clip metadata, so an agent can unambiguously select this tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: when a user provides a Twitch clip URL and wants metadata or playback links, this is the tool. However, the description does not explicitly state when not to use it or name alternatives (e.g., twitch_profile_videos_list for a streamer's clip list), so the guidance 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.

twitch_profile_getGet Twitch profileA
Read-only
Inspect

Get a Twitch profile for a channel by handle.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesTwitch handle to look up, with or without a leading @.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark readOnlyHint and openWorldHint, and the verb 'Get' is consistent with a read-only operation. The description adds no further behavioral detail such as return shape, availability, or rate limits, but none are contradicted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero redundant words; the core verb-resource-key constraint is stated immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity getter with complete parameter documentation and safety annotations, the one-sentence description plus schema is sufficient to select and call it. It omits an explicit return description, but the resource name and absence of an output schema make this a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all 4 parameters at 100%, so the baseline applies; the description only confirms that handle is the lookup key. Meta-parameters context, llm_model, and conversation_id are already fully explained in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Get), resource (Twitch profile), and lookup key (channel handle), so an agent can identify the tool's purpose without opening the schema. It does not explicitly contrast with sibling Twitch tools like twitch_profile_videos_list or twitch_profile_schedule_get, but those are clearly different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies the right usage context: when you need a Twitch channel's profile and have a handle. It gives no explicit when-not-to-use or alternative routing, leaving the agent to infer boundaries from sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

twitch_profile_schedule_getGet Twitch profile scheduleA
Read-only
Inspect

Get the stream schedule for a Twitch channel by handle.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesTwitch handle to look up, with or without a leading @.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true and openWorldHint=true, and the description does not contradict them. But the description adds no behavioral context beyond that, such as whether the schedule covers upcoming/live/past segments, time zone handling, pagination, or invalid-handle behavior, so it does not carry much of the behavioral transparency burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence states the action, resource, and scope with no filler or repetition. The most important information is front-loaded and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only lookup with all parameters fully documented and annotations covering the safety profile, the description is largely sufficient. It could add a little more detail about what the schedule actually contains, but this is a minor gap rather than a blocking one.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents handle, context, llm_model, and conversation_id. The description only reiterates that the tool works by handle and adds no additional parameter semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and a specific resource ('stream schedule') with a clear target ('Twitch channel by handle'). This also distinguishes it from sibling tools such as twitch_profile_get and twitch_profile_videos_list, since no other Twitch sibling targets the schedule.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The appropriate use is implied: an agent should choose this tool when a user wants a Twitch channel's stream schedule. However, there is no explicit when-to-use vs alternatives guidance or any mention of sibling tools, so it stops at 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.

twitch_profile_videos_listList Twitch profile videosA
Read-only
Inspect

List videos from a Twitch channel by handle. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesTwitch handle to look up, with or without a leading @.
sortByNoOptional sort order.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
filterByNoOptional filter for the type of Twitch videos to return. `archive`: full unedited past broadcasts (VODs). `highlight`: shorter clips curated/edited by the streamer from past broadcasts. `upload`: videos uploaded directly, not recorded from a live stream.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the agent knows this is a safe read operation. The description goes beyond annotations by disclosing that it returns a list and that pagination may require a cursor, which is valuable behavioral context. It does not mention rate limits or error cases, but that is a reasonable gap for a list endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler: the core action is front-loaded ('List videos from a Twitch channel by handle') and the pagination caveat is captured compactly in the second sentence. Every sentence contributes useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with full schema coverage and readOnly annotations, the description is nearly sufficient: it identifies the resource, the return type (a list), and pagination behavior. The only real gap is the lack of an output schema describing list-item shape, and the 'cursor' reference is slightly ambiguous since no cursor parameter appears in the input schema, but these don't prevent an agent from calling the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so handle, sortBy, filterBy, context, llm_model, and conversation_id are all documented in the schema itself. The description only reaffirms 'by handle' without adding deeper parameter meaning (e.g., sortBy semantics or filterBy differences) beyond the schema. Baseline 3 is appopriate when the schema carries the paramater documentation burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (List), resource (videos from a Twitch channel), and identifier (handle). It clearly distinguishes from sibling tools like twitch_clip_get and twitch_profile_get by naming Twitch and videos, and from other platforms' listers (e.g., rumble_channel_videos_list, youttbe_channel_videos_list) via the explicit resource. No ambiguity about what it operates on.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it — when a Twitch channel's videos need to be listed by handle. It adds a pagination hint ('use cursor when paginated') but provides no explicit exclusions or alternatives, such as pointing to twitch_clip_get for individual clips or to twitch_profile_schedule_get for schedule data. Usage context is therefore implied, not fully outlined.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

twitter_community_getGet Twitter communityB
Read-only
Inspect

Get details for an X community by community id or URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesCommunity URL to look up.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only safety profile is covered. The description adds that lookup can be by community id or URL but does not disclose return format, pagination, error conditions, or any rate-limit/auth considerations; with annotations present, this is adequate but 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single clear sentence with no filler, and the key action and resource are front-loaded. Minor naming inconsistency between 'Twitter' and 'X' prevents a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity read tool with full schema coverage and safety annotations, this is minimally adequate: an agent can infer the purpose and required url input. However, with no output schema, the vague term 'details' does not tell the agent what fields to expect, and the id-vs-URL ambiguity is unresolved.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the tool description's 'by community id or URL' conflicts with the schema's url parameter description ('Community URL to look up'). This creates ambiguity about whether a bare community ID can be passed in url, which can mislead invocation. The description therefore detracts from, rather than adds to, the schema semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action ('Get') and resource ('X community') and mentions lookup by community id or URL, which distinguishes it from sibling twitter_community_tweets_list by focusing on details rather than tweets. Loses a point because the name says 'Twitter' while the description says 'X,' and the 'id or URL' claim is not reflected in the schema's single url parameter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 is provided. The description only states what the tool does, leaving the agent to infer that it is for community metadata rather than tweet listings or profile lookups. There are no exclusions or alternative tool pointers despite a large sibling set with related X/Twitter tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

twitter_community_tweets_listList Twitter community tweetsA
Read-only
Inspect

List tweets from an X community by community id or URL. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesCommunity URL to look up.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint and openWorldHint provided by annotations, the description mainly needs to add beyond those flags. It usefully notes 'Returns a list (use cursor when paginated)', but does not cover other behavioral details like empty results, ordering, or whether the URL form is required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and resource, followed by the key pagination note. No filler words or repeated schema information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 full schema coverage, the description covers the core behavior and pagination. It is slightly incomplete only on the id-vs-URL input ambiguity and on not describing what each list item contains, but no output schema is promised.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds no meaningful param detail beyond saying identification can be by id or URL, which actually conflicts with the schema's 'Community URL' parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('List') and resource ('tweets from an X community'), which differentiates it from siblings like twitter_profile_tweets_list and twitter_community_get. Minor confusion: it says 'by community id or URL' while the schema only accepts a Community URL, so the identification method is slightly ambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit statement of when to choose this tool over alternatives such as twitter_community_get or twitter_profile_tweets_list. The use case is only implied by the name and resource, so an agent must infer that this is the list-tweets-from-community endpoint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

twitter_hashtag_listSearch Twitter by hashtagA
Read-only
Inspect

Search X posts by hashtag (not free-text keyword — use twitter.search.list for that). Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoOptional page size. Maximum supported value is 20.
cursorNoOpaque pagination cursor returned by a previous response.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
hashtagYesHashtag to search for.
sectionNoOptional section filter for the hashtag feed. Omit to use the default `top` section.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.2/5.0
Behavior4/5

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 without restating it. The description adds behavioral value by disclosing that the tool only supports hashtag search rather than keyword expansion, and that the result is a list with cursor-based pagination. It does not detail the list item shape, but that is acceptable given the annotations carry the safety burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two sentences, with the main action front-loaded and the clarifying exclusions placed efficiently in a parenthetical. It avoids repeating the title or restating schema information. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with no output schema, the description tells the agent that the result is a list and that pagination is handled with a cursor, which are the critical operational details. Required parameters like context and llm_model are documented in the schema, so the description does not need to repeat them. It could say a bit more about what the list items contain, but the tool name and the phrase Search X posts make that inferrable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 because every parameter is already documented. The description adds the semantic distinction that the hashtag parameter must be a real hashtag rather than a free-text keyword, and links cursor to paginated responses. This is helpful but modest, since the schema already describes each paramter individually.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: Search X posts by hashtag, making the core function unmistakable. It explicitly contrasts hashtag search with free-text keyword search, which separates it from sibling search tools such as twitter_search_list. The title reinforces the same purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when not to use this tool by saying it is not for free-text keywords and directs the agent to twitter.search.list for that case. It also tells the agent to use a cursor for pagination, which is actionable invocation guidance. The only deduction is that the named alternative uses dots while the actual sibling tool is listed as twitter_search_list, creating minor identification friction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

twitter_profile_getGet Twitter profileA
Read-only
Inspect

Get an X (Twitter) profile by handle. Returns lookupStatus plus follower/tweet metrics and account age signals.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesX handle to look up, with or without a leading @.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this read-only; the description adds value by previewing the response shape (lookupStatus, follower/tweet metrics, account age signals), which conveys that the tool returns a status indicator and profile analytics. It does not add operational details such as rate limits, auth, or not-found behavior, but readOnlyHint lowers the bar and 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that opens with the core action and input, then lists the key return categories. No filler or repetition; every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Without an output schema, the description gives a useful preview of what the call returns (lookupStatus, metrics, account age signals) but omits details like profile name/bio and does not address the conversation_id sequencing rule, which is left to the schema. Still, for a simple read-only lookup with 100% parameter documentation, this is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all four parameters. The description only restates the handle input ('by handle') and adds no extra semantics for context, llm_model, or conversation_id. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action ('Get an X (Twitter) profile by handle') with the resource and key input, and previews the return contents (lookupStatus, metrics, account age signals). This clearly distinguishes it from tweet-level siblings like twitter_tweet_get and twitter_profile_tweets_list, even without naming them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: call when you need an X/Twitter profile by handle. However, it names no alternatives or exclusions (e.g., it does not say to use twitter_profile_tweets_list for a user's tweets), so an agent must infer selection from the tool name and sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

twitter_profile_tweets_listList Twitter profile tweetsA
Read-only
Inspect

List tweets from an X profile by handle. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoPage size (maximum 100). Default: 40.
cursorNoOpaque pagination cursor returned by a previous response.
handleYesX handle to look up, with or without a leading @.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
includePinnedNoInclude pinned tweets on the first page. Default: false.
includeRepliesNoInclude reply tweets in the returned list. Default: false.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.6/5.0
Behavior3/5

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 that this is a list endpoint and pagination should be handled via cursor, which is useful, but it does not disclose return item shape, default filters, or pagination limits beyond what the schema already documents.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core action and followed by the pagination note. Every word earns its place; there is no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich 100%-covered schema and the readOnly/openWorld annotations, the description is mostly sufficient. It could be slightly more complete by describing what each returned tweet entry contains, but for selection and invocation the core information is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 8 parameters. The description's 'by handle' wording maps to the handle parameter but adds little beyond the schema. Per the baseline for full schema coverage, a 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: 'List tweets from an X profile by handle.' This is sufficient to distinguish it from related siblings like twitter_tweet_get or twitter_search_list, though it does not explicitly name those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case: when the agent needs tweets from a given X profile handle. However, it provides no explicit guidance on when to prefer this over siblings such as twitter_community_tweets_list, twitter_tweet_replies_list, or twitter_search_list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

twitter_search_listSearch Twitter postsA
Read-only
Inspect

Search X posts by free-text keyword (not hashtag — use twitter.hashtag.list for that). Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoOptional page size. Maximum supported value is 20.
queryYesSearch query text to run against public posts on X.
cursorNoOpaque pagination cursor returned by a previous response.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
endDateNoOptional end date filter in YYYY-MM-DD format.
sectionNoOptional search section filter. Omit to use the default `top` section.
languageNoOptional language filter.
minLikesNoOptional minimum like count filter.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
startDateNoOptional start date filter in YYYY-MM-DD format.
minRepliesNoOptional minimum reply count filter.
minRetweetsNoOptional minimum retweet count filter.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.4/5.0
Behavior4/5

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 genuine behavioral context: 'Returns a list (use cursor when paginated)', disclosing the return shape and pagination mechanism that the agent must handle for large result sets. Minor gap is the lack of edge-case notes (e.g., empty results, default section behavior), but the schema's section description covers the 'top' default.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero wasted words: the core operation is front-loaded first, the exclusion/alternative second, and the return behavior third. Every element earns its place, and the brevity is appropriate because the schema already documents all parameter details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter tool with no output schema and no nested objects, the description covers the decision-critical facts: what it does, when not to use it, return shape, and pagination. The 100%-coverage schema handles parameter specifics. The only omission is per-item result fields, which would normally require an output schema; given the stated list return and readOnly annotations, an agent has enough to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — all 13 parameters, including context ('not the tool you are calling') and llm_model ('never guess'), are documented in the schema itself. With the schema carrying the full burden, the baseline of 3 applies; the description adds no parameter-level detail, which is acceptable given the schema's quality.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Search), resource (X posts), and mechanism (free-text keyword), naming the alternative tool for hashtag queries. This clearly distinguishes it from twitter_hashtag_list and other tweet-fetching siblings such as twitter_tweet_get and twitter_profile_tweets_list without requiring the agent to inspect schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when NOT to use it ('not hashtag — use twitter.hashtag.list for that'), naming the alternative and the condition that selects it. This gives an agent concrete routing guidance among the many search-related sibling tools — exactly what this dimension asks for.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

twitter_tweet_getGet Twitter tweetA
Read-only
Inspect

Get a single tweet by URL. Author includes profile metrics when not trimmed. Warning: trim=true omits author. Credits: 1.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesTweet permalink or identifier.
trimNoOptional: omit author profile and tweet `core` for a smaller response.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior4/5

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 behavioral detail beyond annotations: author profile metrics appear when not trimmed, trim=true omits the author, and the call costs 1 credit. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with no filler. The core operation is front-loaded, followed by the most impactful behavioral warning and credit cost. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only single-tweet fetch with fully documented parameters and a readOnlyHint annotation, this is nearly complete. It conveys scope, cost, and the key trim caveat. It does not describe the full return shape, but there is no output schema and the operation is straightforward enough that the gap is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters. The description adds some behavioral nuance about trim and author metrics, but it mostly restates or lightly elaborates what the schema already says. This matches the baseline of 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific verb and resource: 'Get a single tweet by URL.' This clearly distinguishes the tool from sibling list/transcript tools such as twitter_tweet_replies_list and twitter_tweet_transcript_get, which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage context is implied: use this when you have a tweet URL and want that single tweet, as opposed to replies or a transcript. However, it does not explicitly name alternatives or state when not to use the tool, so an agent must infer routing from the 'single tweet by URL' phrasing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

twitter_tweet_replies_listList Twitter tweet repliesA
Read-only
Inspect

List replies to a tweet by URL. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesTweet permalink or identifier.
cursorNoOpaque pagination cursor returned by a previous response.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only safety profile (readOnlyHint=true, no destructive hint). The description adds that the tool returns a list and supports cursor-based pagination, but does not disclose auth requirements, rate limits, errors, or output structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The main purpose is front-loaded in the first sentence, and the pagination note in the second is directly actionable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequete for a simple read-only list tool, but with no output schema, the description does not describe the shape of the reply items. Params are thoroughly documented in the schema, and safety is covered by annotations, so the main gap is return-structure detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description's 'by URL' and 'use cursor when paginated' loosely echo the url and cursor parameter descriptions without adding new semantic depth beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List'), a clear resource ('replies to a tweet'), and the input mode ('by URL'). This distinguishes it from sibling tools like twitter_tweet_get (which fetches a single tweet) and twitter_profile_tweets_list (which lists a user's tweets).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by naming the resource, but it contains no explicit alternatives, exclusions, or when-to-use guidance. The only directive is 'use cursor when paginated,' which is a pagination note 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.

twitter_tweet_transcript_getGet Twitter tweet transcriptB
Read-only
Inspect

Get the transcript for a video tweet by URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesTweet permalink or identifier.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the read-only safety profile is covered externally. The description adds one useful behavioral constraint — transcripts apply only to video tweets — but says nothing about failure modes (non-video tweets, missing captions) or the transcript's return format. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler; 'Get the transcript for a video tweet by URL' conveys verb, resource, and scope in nine words. Nothing is redundant given the schema already carries parameter detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 rich annotations and fully documented parameters, the definition is adequate, but with no output schema, the return format of the transcript is left implicit, and behavior on non-video tweets is unstated. Slightly more context about what the endpoint returns or fails on would make it complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters, including detailed instructions for llm_model ('never guess') and conversation_id ('never invent one'). The description adds no parameter-level detail, but the baseline of 3 applies since the schema carries the full burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Get'), resource ('transcript for a video tweet'), and input method ('by URL'). The noun 'transcript' and qualifier 'video tweet' let an agent distinguish it from twitter_tweet_get and twitter_tweet_replies_list without opening the schema, though it does not explicitly contrast with any sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to choose this over related transcript tools (youtube_video_transcript_get, tiktok_video_transcript_get) or when a tweet transcript would not exist (e.g., text-only tweets). Usage must be inferred entirely from the tool name and description; there are no exclusions, prerequisites, or alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

web_ask_runAsk a question about a web pageA
Read-only
Inspect

Ask a natural-language question about a specific web page and get an LLM-generated answer. Accepts a URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesNatural-language question to answer about the page content.
urlYesWeb page URL to fetch.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety and live-web profile. The description adds that the result is LLM-generated, which is useful and sets expectations versus raw extraction, but it mostly restates the tool's purpose. It does not disclose edge behavior such as failure on unreachable pages or answer formatting, so the added value over annotations 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero filler; the core action and outcome are front-loaded. Every word earns its place and the description is appropriately sized for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple question-answering tool, the fully-documented schema, the read-only/open-world annotations, and a description stating the LLM-generated answer outcome give the agent enough to choose and invoke it correctly. The only real gap is no explicit statement that the page is fetched live and may be inaccessible, but that is reasonably implied by the URL parameter and openWorldHint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – q, url, context, llm_model, and conversation_id all have meaningful descriptions, including important rules like 'never guess' for llm_model and the conversation_id handshake. The description adds no parameter-level detail beyond 'Accepts a URL', so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description pairs a specific verb ('Ask') with a specific resource ('a specific web page') and clarifies the output is an LLM-generated answer. This distinctly separates it from sibling web tools like web_extract_run, web_crawl_run, and web_search_run, which extract raw content, crawl, or search rather than answer questions about a page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys the core scenario — a natural-language question about one specific URL — but never names sibling alternatives (e.g., web_extract_run, web_search_run) or states when not to use it. With many sibling web_* tools plus an nl_ask_post sibling, selection guidance is only 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.

web_crawl_runCrawl web pagesB
Read-only
Inspect

Crawl a small set of web pages synchronously. Accepts a URLs. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURLs to crawl. Repeat the `url` query parameter for multiple pages (max 5).
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
waitForNoWait for a CSS selector before extraction. Must be prefixed with "css:" (e.g. css:main). JavaScript wait conditions are not supported.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
scanFullPageNoWhen true, scroll the page to load dynamically appended content (infinite scroll). Default false.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, covering the safety profile. The description adds that the operation is synchronous, returns a list, and that pagination requires a cursor, which is useful beyond annotations. However, it doesn't explain how to obtain the cursor or mention any rate limits or failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded, with the core action in the first sentence and no wasted words. The grammar issue in 'Accepts a URLs' is a minor detraction, but the structure is otherwise efficient and readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description only says 'Returns a list' without specifying the item structure. It also doesn't mention the important waitFor or scanFullPage options, though those are covered in the schema. The description is adequate to invoke the tool but leaves gaps around pagination mechanics and differentiation from sibling web_* tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all six parameters in detail. The description's mention of 'small set' and 'cursor' adds little beyond the schema's maxItems=5 and conversation_id description. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Crawl'), the resource ('web pages'), and key constraints ('small set', 'synchronously'). It uses a distinct verb that separates it from sibling tools like web_search_run or web_extract_run. The typo 'Accepts a URLs' is a minor flaw, but the overall purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 such as web_extract_run or web_search_run. The phrase 'small set' and 'synchronously' implies a use case, but there is no when-not-to-use or alternative mention. The schema provides parameter details, but the description itself lacks usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

web_extract_runExtract structured data from a web pageA
Read-only
Inspect

Extract structured fields from a web page using a CSS selector schema. Accepts a URL and CSS schema.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesWeb page URL to fetch.
schemaYesCrawl4AI JsonCssExtractionStrategy schema: baseSelector plus fields.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
waitForNoWait for a CSS selector before extraction. Must be prefixed with "css:" (e.g. css:main). JavaScript wait conditions are not supported.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
scanFullPageNoWhen true, scroll the page to load dynamically appended content.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.7/5.0
Behavior3/5

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 the CSS-schema extraction mechanism but does not describe fetching behavior, dynamic content handling, or result structure. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler; the verb and outcome are front-loaded, and the mechanism is stated immediately. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has a complex nested schema and no output schema, but the parameter descriptions are thorough. The description conveys the basic extraction purpose but leaves the return shape and behavioral edge cases implicit; annotations and rich schema partially compensate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description mentions 'a URL and CSS schema' but does not add semantic detail beyond what the parameter descriptions already provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Extract') and resource ('structured fields from a web page'), and pinpoints the mechanism ('CSS selector schema'). This distinguishes it from sibling tools like web_html_generate, web_markdown_generate, or web_search_run.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Extract structured fields from a web page using a CSS selector schema' implies when to use it, but there is no explicit when-not-to-use guidance or named alternatives. The agent must infer the boundary between this and sibling extraction/search tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

webhookDeliveries_redeliverManually redeliver a webhook deliveryAInspect

Queue a manual redelivery for one delivery attempt (async).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description usefully adds that the operation is queued and asynchronous, behavior not visible from the annotation (readOnlyHint=false only indicates mutation). However, it does not disclose the side effects on delivery state, whether redelivery can produce duplicates, or any permission/rate-limit considerations, so the behavioral disclosure is partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the action and the async qualifier, with no filler. Every word contributes to the operative meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating async tool with no output schema, the description covers the core operation but omits what the agent should expect after queueing (e.g., confirmation/status), possible error conditions, and whether redelivery is idempotent. These are understandable gaps for a small tool, but they leave the agent with less than full context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75%; context, llm_model, and conversation_id are already documented in the schema, so the description need not repeat them. The tool description adds no meaning beyond the schema, and id remains undocumented, though its purpose is inferable from 'one delivery attempt'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Queue a manual redelivery') on a clear resource ('one delivery attempt') and marks it asynchronous. The verb/resource combination distinguishes it from the sibling list/test/rotate/update webhook operations, so an agent can route to it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to choose redeliver over related webhook tools such as webhookEndpoints_deliveries_list or webhookEndpoints_test, and no prerequisites or failure conditions are stated. 'Manual redelivery' only faintly implies a retry context; it does not tell the agent when this tool is or isn't appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

webhookEndpoints_createCreate a webhook endpointAInspect

Create a delivery target for monitor events. kind=http requires a public HTTPS url; kind=sink is a hosted test inbox with no url. The signing secret is returned once — store it now.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo
kindYes
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
descriptionNo
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only provide readOnlyHint=false and openWorldHint=false, leaving the description to carry the behavioral burden. The description adds valuable non-obvious disclosures: the signing secret is returned only once and should be stored immediately, and http vs sink have different url requirements. This goes beyond the schema and annotations, though it does not mention idempotency or persistence details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core purpose, then the critical kind-specific constraints and the secret warning. Every clause earns its place with no filler or repetition of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the essential creation behavior, the two kind variants, and the most important output detail (one-time signing secret), which is especially useful given there is no output schema. It does not describe the full response shape, but for a create endpoint the critical return value is highlighted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%, so the description must compensate for undocumented parameters like kind and url. It does so clearly: kind=http requires a public HTTPS url, while kind=sink has no url. The description also reinforces the one-time signing secret behavior, which relates to the output rather than a parameter, but the key parameter semantics are well handled.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: "Create a delivery target for monitor events," and distinguishes the two kinds of endpoints (http vs sink). This clearly separates it from sibling tools like webhookEndpoints_update, webhookEndpoints_delete, and webhookEndpoints_test.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case: creating a webhook endpoint for monitor events, and gives concrete guidance for choosing kind=http vs kind=sink. However, it does not explicitly contrast with alternative activities like updating, testing, or deleting endpoints, so the routing 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.

webhookEndpoints_deleteDelete a webhook endpointA
Destructive
Inspect

Permanently delete a webhook endpoint. Cannot be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description reinforces the annotations by stating 'permanently delete' and 'cannot be undone,' which aligns with destructiveHint=true and readOnlyHint=false. It adds the behavioral nuance of irreversibility, which is not fully captured by the structured annotations alone. There is no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and ending with a clear warning. Every word earns its place, and the structure makes the destructive nature immediately visible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description plus schema and annotations are almost sufficient for a simple destructive delete, but it does not explain what happens to associated deliveries or what a successful response contains, and there is no output schema. The undocumented id parameter and lack of usage guidance leave minor gaps. This is a minimum-viable definition rather than a rich one.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description contains no parameter-level details, but the input schema already documents context, llm_model, and conversation_id, giving 75% schema coverage. The remaining id parameter has no schema description, though its meaning is strongly implied by the tool name. The tool description itself adds no extra parameter meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action and resource — 'permanently delete' a 'webhook endpoint' — which is unambiguous and clearly distinct from sibling tools like webhookEndpoints_create, webhookEndpoints_update, or webhookEndpoints_test. It also adds finality beyond the title, making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit statement of when to use this tool versus alternatives such as webhookEndpoints_update or webhookEndpoints_test. The 'cannot be undone' warning implies this should be used only for intentional permanent removal, but the description does not directly address alternative selection or when not to call it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

webhookEndpoints_deliveries_listList deliveries for a webhook endpointA
Read-only
Inspect

List delivery attempts for a webhook endpoint. Supports limit, opaque cursor continuation, and optional after (ISO timestamp) to enter oldest-first tail mode for listeners.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
afterNo
limitNo
cursorNo
statusNo
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a safe read operation (readOnlyHint=true), and the description adds useful behavioral detail: `cursor` is opaque, requiring continuation as provided, and `after` switches to oldest-first tail ordering. These are non-obvious behaviors not fully expressed by the schema alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first states the operation clearly, the second lists the pagination controls and the tail-mode use case. Every sentence adds distinct value, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers pagination and ordering behavior well, but gaps remain: the `id` parameter's role is implied rather than stated, the `status` filter is not mentioned, and with no output schema, the delivery-attempt response shape is not described. It is adequate for a straightforward paginated list call but incomplete for an 8-parameter tool with no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaning for `limit`, `cursor`, and `after`, clarifying pagination and the special tail mode. However, schema description coverage is low (38%), and the critical required `id` parameter is not explained (e.g., it is the webhook endpoint ID), and the `status` filter is undocumented in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List delivery attempts for a webhook endpoint.' This clearly differentiates the tool from siblings like webhookEndpoints_get, webhookEndpoints_list, and webhookDeliveries_redeliver, which concern endpoints or redelivery rather than listing delivery attempts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when the tool is appropriate: listing delivery attempts for a webhook endpoint, with special mention of using `after` for oldest-first tail mode aimed at listeners. It does not explicitly exclude alternatives, but there is no close sibling that performs the same listing function, so the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

webhookEndpoints_getGet a webhook endpointA
Read-only
Inspect

Get one webhook endpoint by id (secret material never included).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already declares this as a safe read operation, so the bar is lower. The description adds genuine value beyond annotations with 'secret material never included', disclosing that the response deliberately omits secrets — useful for the agent to know it cannot extract secret values from this endpoint. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single 10-word sentence that front-loads the action and scope, with a parenthetical caveat appended. Every word earns its place; there is no fluff, repetition of the tool name, or boilerplate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get-by-id read tool with safety annotations and no output schema, the description is largely complete: it states scope and a key response characteristic (no secrets). Minor gaps remain — no mention of not-found/error behavior or the general return shape — but these are low-risk for this operation and partially mitigated by the readOnlyHint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%, with id lacking any semantic description (only minLength: 1). The description compensates by clarifying that id is the lookup key for the specific endpoint to fetch. The other three parameters (context, llm_model, conversation_id) are already well-documented in the schema, so the description's marginal addition to id meaningfully closes the gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), a resource ('webhook endpoint'), and a precise scope ('one by id'), which clearly distinguishes it from siblings like webhookEndpoints_list (fetch all) and webhookEndpoints_deliveries_list. The parenthetical about secret material adds a meaningful qualifier without obscuring the core action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the phrase 'by id' — the agent can infer this tool is for fetching a single endpoint when an id is known. However, the description never explicitly names alternatives or when-not-to-use conditions, such as 'to fetch all endpoints use webhookEndpoints_list' or 'for updating use webhookEndpoints_update'. The guidance is adequate but left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

webhookEndpoints_listList webhook endpointsA
Read-only
Inspect

List the caller's webhook endpoints (secret material never included).

ParametersJSON Schema
NameRequiredDescriptionDefault
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description adds a useful behavioral guarantee beyond that: secret material is never included in responses. This helps set expectations about sensitive data and privacy. No contradictions 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tightly scoped sentence with no filler. It front-loads the primary action and resource, then appends the key privacy caveat. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list operation, the description, annotations, and fully documented schema are largely sufficient. It could be slightly more complete by noting pagination or output shape, but the core behavior and scope are clear enough for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are fully documented in the schema itself. The description adds no parameter-specific information, but none is needed because the schema already explains context, llm_model, and conversation_id clearly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and a specific resource ('the caller's webhook endpoints'), and the parenthetical adds a meaningful scope differentiator by noting that secret material is never included. This clearly distinguishes it from sibling tools like webhookEndpoints_get or webhookEndpoints_deliveries_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case: call this when you need to see the webhook endpoints belonging to the caller. However, it does not explicitly mention when not to use it or name alternatives such as webhookEndpoints_get for a single endpoint, leaving some routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

webhookEndpoints_rotateSecretRotate a webhook endpoint secretA
Destructive
Inspect

Rotate the signing secret with a 24h overlap window — the old secret keeps working until it expires. The new secret is returned once.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations mark this as destructive, and the description adds important behavioral context: the old secret remains valid for 24 hours and the new secret is returned only once. These operational consequences are not visible in the schema or annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence delivers the action, the overlap window, and the one-time return behavior without filler. The most decision-relevant facts are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive operation with no output schema, the description covers the crucial consequences an agent must know: the overlap period, old-secret expiry, and the one-time return. It could add an explicit save-the-secret warning or prerequisites, but the core operational contract is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema documents three of four parameters, leaving only id undocumented. The description does not directly explain parameters, but the phrase webhook endpoint secret makes id's role inferable. This is a minor gap rather than a failure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: rotating the webhook endpoint signing secret. It also adds the distinctive 24-hour overap behavior, clearly separating it from generic endpoint update or delete tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied by the tool name and description, but there is no explicit statement about when to prefer rotation over sibling tools such as webhookEndpoints_update. The agent has to infer that rotation is specifically for replacing the signing secret.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

webhookEndpoints_testSend a test webhook eventAInspect

Send a realistic per-source sample event to a webhook endpoint right now — a live, synchronous delivery test.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
sampleTypeNo
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as non-read-only, so mutation is expected. The description adds valuable behavioral context by specifying that this is a live, synchronous delivery test rather than a dry-run or queued operation. It does not discuss downstream side effects on the receiving endpoint, but the 'live delivery' wording communicates the central risk.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. It conveys the action, scope, realism, timing, and delivery mode in compact form. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 should clarify what a successful test returns or how the result is reported, but it does not. It also leaves two key parameters ('id', 'sampleType') semantically unexplained, making it insufficient for an agent to confidently invoke the tool without external assumptions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 60%, and the description does not compensate for the undocumented 'id' and 'sampleType' parameters. The phrase 'per-source sample event' weakly hints at 'sampleType', but it never explains what values are valid or that 'id' likely identifies the webhook endpoint. The description adds little meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Send'), a clear resource ('a webhook endpoint'), and a distinctive purpose ('realistic per-source sample event', 'live, synchronous delivery test'). It meaningfully distinguishes this from the other webhookEndpoints_* tools by emphasizing testing rather than CRUD or redelivery.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the usage context clear: use this when you want to immediately test a webhook endpoint with a realistic sample event. It does not explicitly name alternatives or exclusions, but the 'right now / live / test' framing is enough to signal when this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

webhookEndpoints_updateUpdate a webhook endpointAInspect

Update a webhook endpoint's description or enable/disable it.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
statusNo
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
descriptionNo
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is not read-only and not open-world, and the description adds the specific behavioral scope: description changes or enable/disable status. However, it does not disclose side effects (e.g., disabling stops future deliveries), permissions, or any response implications, so it adds only modest context 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence communicates the operation and the mutable fields with zero wasted words. There is no redundant restatement of the title or schema, and the structure is immediately scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a moderate-complexity mutation with no output schema, the description captures the core action but omits expectations about return values, prerequisites beyond the id, and consequences of disabling an endpoint. It is minimally viable but leaves several operational details for the agent to discover.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%, with id, status, and description lacking schema descriptions. The description compensates partially by clarifying that 'status' means enable/disable, but it leaves id's semantics implicit and does not discuss the meta-parameters beyond what the schema already explains.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource ('webhook endpoint'), the verb ('Update'), and exactly which aspects can change ('description or enable/disable it'), mapping cleanly to the description and status parameters. This clearly differentiates it from sibling tools like webhookEndpoints_create, webhookEndpoints_delete, and webhookEndpoints_rotateSecret.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool—when a user wants to change a webhook endpoint's description or status—but it provides no explicit guidance about when not to use it and does not mention alternatives such as webhookEndpoints_rotateSecret or webhookEndpoints_test. The agent must infer routing from the tool name and sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

web_html_generateGenerate web page HTMLB
Read-only
Inspect

Fetch cleaned HTML for a web page URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesWeb page URL to fetch.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
waitForNoWait for a CSS selector before extraction. Must be prefixed with "css:" (e.g. css:main). JavaScript wait conditions are not supported.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
scanFullPageNoWhen true, scroll the page to load dynamically appended content (infinite scroll). Default false.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety and external-access profile. The description adds 'cleaned HTML' as a behavior, which gives some transparency, but it does not explain what cleaning entails, whether JavaScript is executed, or any rate limits/caching behavior. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single clear sentence with zero waste. The core action, target, and output format are front-loaded, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with six parameters and no output schema, the description conveys the essential function but omits important operational context: no guidance on dynamic page handling, no explanation of 'cleaned', and no mention of when HTML output is preferable to markdown or text. The well-documented schema covers paramters but not the behavioral context an agent would benefit from.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all six parameters. The tool description adds no parameter-specific meaning beyond 'Fetch cleaned HTML', which is the baseline case where schema carries the burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Fetch cleaned HTML for a web page URL.' It clearly identifies the output format (HTML) and distinguishes it from the markdown-focused sibling tool. The title says 'Generate' rather than 'Fetch', which is slightly misleading, but the description 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus alternatives such as web_markdown_generate, web_extract_run, or web_screenshot_capture. The description provides no conditions, exclusions, or context that would help an agent choose among the many web_* sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

web_markdown_generateGenerate web page markdownA
Read-only
Inspect

Convert a web page URL into clean markdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesWeb page URL to fetch.
queryNoOptional query string used by the bm25 filter to rank relevant content.
filterNoMarkdown extraction filter. `fit`: strip boilerplate and extract the main readable content. `raw`: full unfiltered page markdown, no content pruning. `bm25`: rank and return only the content most relevant to `query`, using the BM25 keyword-relevance algorithm — requires `query` to be set.fit
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
waitForNoWait for a CSS selector before extraction. Must be prefixed with "css:" (e.g. css:main). JavaScript wait conditions are not supported.
cacheModeNoCache behavior. `enabled`: read from cache if present, else fetch and write to cache. `bypass`: always fetch fresh, ignoring and not updating the cache. `write_only`: always fetch fresh, but write the result to cache without reading from it first. Default: `enabled`.enabled
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
scanFullPageNoWhen true, scroll the page to load dynamically appended content (infinite scroll). Default false.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety with readOnlyHint=true and openWorldHint=true, so the bar for the description is lower. The word 'clean' hints at boilerplate stripping, but the description does not disclose what is removed or how dynamic content is handled. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence with no filler. The core action and output are front-loaded, and every word contributes meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich schema covering all parameters and annotations covering read-only/open-world behavior, the description is largely sufficient for an agent to understand the tool's purpose. The only gap is the lack of explicit differentiation from closely related web tools like web_extract_run and web_html_generate, but the output format and name largely resolve that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 9 parameters, including filter, waitFor, cacheMode, and scanFullPage. The description adds no parameter-level detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Convert'), a resource ('a web page URL'), and a precise output ('clean markdown'). The output format itself distinguishes it from sibling tools like web_screenshot_capture or web_html_generate, so an agent can select it for markdown needs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage—use when you need a web page as markdown—but does not explicitly state when to prefer it over alternatives like web_extract_run or web_html_generate. There is no when-not-to-use guidance, leaving selection partly to inference from the tool name and sibling context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

web_screenshot_captureCapture website screenshotB
Read-only
Inspect

Capture a screenshot of a public web page URL as a hosted image artifact.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesWeb page URL to fetch.
delayNoExtra settle delay in milliseconds after load (0–10000).
formatNoOutput image format. Default: png.png
regionNoOptional ISO 3166-1 alpha-2 country for geo-located rendering (+1 credit).
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
qualityNoJPEG/WebP quality 1–100. Invalid when format is png.
waitForNoCSS selector to wait for before capturing.
blockAdsNoBlock ads and trackers during render. Default: true.
cacheTtlNoOptional Redis artifact-cache TTL in seconds (60–604800). Must stay strictly below the 7-day object lifetime.
darkModeNoRequest prefers-color-scheme: dark. Default: false.
fullPageNoWhen true, capture the full scrollable page. Default: false (viewport).
responseNoDelivery mode. `url` (default) returns a hosted CDN URL valid for 7 days. `base64` returns the image bytes inline when small enough.url
selectorNoCSS selector to clip the screenshot to a single element. Cannot be combined with fullPage.
cacheModeNoCache behavior. `enabled`: read from cache if present, else fetch and write to cache. `bypass`: always fetch fresh, ignoring and not updating the cache. `write_only`: always fetch fresh, but write the result to cache without reading from it first. Default: `enabled`.enabled
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
waitUntilNoNavigation wait condition. `networkidle` is bounded and resolves on idle or a short cap, whichever comes first. Default: load.load
viewportWidthNoViewport width in CSS pixels. Default: 1280.
viewportHeightNoViewport height in CSS pixels. Default: 800.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.
deviceScaleFactorNoDevice scale factor (1–3). Default: 1.
blockCookieBannersNoDismiss/block cookie consent banners. Default: true.

TDQS

B3.3/5.0
Behavior3/5

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 structurally; the description adds a useful 'public web page' constraint (login-protected pages are out of scope) and frames the result as a hosted artifact. It does not surface other behavioral traits such as the 7-day artifact lifetime or credit costs, though the 7-day lifetime is documented in the response parameter schema. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single 14-word sentence leads with the verb and resource ('Capture a screenshot'), states the constraint ('public'), and names the delivery form ('hosted image artifact'). There is zero filler, and the front-loading lets an agent grasp the tool's core purpose in under a second — appropriate given the schema carries the 21-parameter detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 21 parameters, three required fields, and no output schema, the description is adequate but thin: the 100%-coverage schema self-documents parameters and the annotations carry the read-only/open-world profile, so nothing critical is broken. However, there is no orientation for a complex tool — no usage context vs web_* siblings, no note on cost behavior or delivery tradeoffs — leaving completeness dependent almost entirely on the schema rather than the definition itself.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 21 parameters carry their own descriptions and the baseline of 3 applies. The description adds minimal parameter-level meaning beyond the schema — mainly the 'public' scoping of url and the 'hosted image artifact' preview of the response parameter's behavior. It does not compensate for anything the schema already documents because nothing is missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Capture'), a precise resource ('screenshot of a public web page URL'), and the output form ('hosted image artifact'), which is clearly more than a tautology of the title. It functionally distinguishes from the nearest siblings (web_extract_run, web_markdown_generate, web_crawl_run) by virtue of 'screenshot' being a unique operation, but it does not explicitly name or contrast any 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to choose this tool over the sibling web_* tools (web_extract_run, web_markdown_generate, web_crawl_run, web_search_run). The qualifier 'public' implies auth-walled pages are out of scope, but there is no explicit when-to-use, when-not-to-use, or alternative-routing information, leaving the agent to infer the decision entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

web_search_runSearch the webA
Read-only
Inspect

Search the public web and return ranked organic results with snippets. Accepts a query. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-based). Default: 1.
queryYesSearch query text to run against the public web.
regionNoISO 3166-1 country code for localized results (e.g. US, GB, CA).
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
datePostedNoOptional filter by when results were posted.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare read-only and open-world hints, and the description adds useful behavior beyond them: it returns a list of ranked organic results with snippets and notes cursor-based pagination. The cursor guidance is not fully reconciled with the page parameter and no cursor argument exists in the schema, which is 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences front-load the purpose and then state the return shape and pagination note. Every sentence contributes meaningful information without repetition or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple search tool, the description covers the core behavior and return shape adequately, and the schema covers parameters. However, the cursor-pagination advice is not mirrored by a cursor input parameter, and a brief pointer to sibling tools would improve selection confidence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description only restates that the tool accepts a query and adds no additional meaning for context, llm_model, region, page, or other parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Search the public web') and resource, and defines the output as 'ranked organic results with snippets.' It distinguishes itself from platform-specific search siblings and from web_crawl_run/web_extract_run by emphasizing public web search and organic results.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is for general public web searches, but it does not explicitly say when to use it versus alternatives like web_ask_run, web_crawl_run, or domain-specific search tools. There is no when-not or alternative routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

youtube_channel_getGet YouTube channelB
Read-only
Inspect

Get YouTube channel details by channel id, handle, or URL. Returns channel metrics and identifiers for snapshot baselines.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoOptional YouTube channel URL for the request.
handleNoOptional YouTube channel handle for the request.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
channelIdNoOptional YouTube channel id for the request.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

annotations carry readOnlyHint=true and openWorldHint=true, so the description does not need to reassert read-only behavior. The description adds the notion of returning 'metrics and identifiers' and 'snapshot baselines', which conveys that this is a lightweight profile fetch rather than a content listing. It does not disclose what happens if multiple identifiers are supplied or none, and that burden falls on the schema's 'Optional' fields without explicit exclusivity constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence front-loads the resource and accessor modes, then adds the return-purpose context ('channel metrics and identifiers for snapshot baselines'). No wasted words. It could arguably be tightened, but it is efficient and all content earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only single-resource getter with a 100%-covered schema, this is mostly adequate: the agent knows what to fetch and why. The missing piece is disambiguation among the three optional identifier parameters — whether they are mutually exclusive or combined — and there is no output schema to clarify the return shape. Given the low complexity and strong annotations/schema, the gaps are minor, so a mid score is fair.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all six parameters including the exact semantics of each identifier field and the llm_model / conversation_id conventions. The description adds the useful insight that all of url/handle/channelId are lookup accessors for the same underlying 'channel details' operation, but it does not explain the interplay between them (e.g., priority, mutual exclusivity). Baseline 3 is appropriate when field-level descriptions are already thorough.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get YouTube channel details') and identifies three accessor types (channel id, handle, or URL). It doesn't explicitly distinguish itself from youtube_channel_videos_list or youtube_channel_shorts_list, but the 'returns channel metrics and identifiers' phrasing does clarify it's the core channel metadata fetch, not a listing of content.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for snapshot baselines' implies this tool is intended for capturing channel-level state over time, which gives some contextual guidance. However, it does not explicitly state when to use this vs youtube_channel_videos_list / shorts_list, nor mention that exactly one of channelId/handle/url should be provided. Sibling differentiation is left mostly to the name and schema, not the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

youtube_channel_shorts_listList YouTube channel shortsA
Read-only
Inspect

List Shorts from a YouTube channel (not long-form videos). Accepts a channel id or handle. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoOpaque pagination cursor returned by a previous response.
handleNoOptional YouTube channel handle for the request.
sortByNoOptional sort order for the returned YouTube Shorts.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
channelIdNoOptional YouTube channel id for the request.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.2/5.0
Behavior4/5

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 behavioral context: it returns a list and mentions cursor-based pagination ('use cursor when paginated'), which helps the agent know how to handle large results. It doesn't explain return fields or rate limits, but with annotations covering the safety profile, this is solid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler. The core purpose and the key exclusion ('not long-form videos') are front-loaded, followed by accepted inputs and cursor guidance. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 full schema parameter documentation and the safety profile covered by annotations, the description is nearly complete. It covers input identifiers, the list-return nature, and pagination. Minor gaps: it doesn't specify the return item shape or whether handle and channelId are mutually exclusive, but the schema already covers parameter details so the burden is low.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 7 parameters. The description adds the relationship between channel id/handle as alternative selectors and mentions cursor pagination, but doesn't add much beyond the schema. Baseline 3 is appropriate given full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List'), resource ('Shorts from a YouTube channel'), and explicit exclusion ('not long-form videos'), which clearly differentiates it from the sibling youtube_channel_videos_list. It also identifies the two accepted identifiers (channel id or handle), making the tool's purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly tells the agent when to use this tool: when Shorts are wanted rather than long-form videos, and when a channel id or handle is available. It doesn't explicitly name the alternative youtube_channel_videos_list, but 'not long-form videos' effectively distinguishes the use case. It could be stronger by naming the sibling and any prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

youtube_channel_videos_listList YouTube channel videosA
Read-only
Inspect

List long-form videos from a YouTube channel (not Shorts — use youtube.channel.shorts.list). Accepts a channel id or handle. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorNoOpaque pagination cursor returned by a previous response.
handleNoOptional YouTube channel handle for the request.
sortByNoOptional sort order for the returned YouTube videos.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
channelIdNoOptional YouTube channel id for the request.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
includeExtrasNoOptional flag to include richer per-video metadata when available.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint and openWorldHint annotations already cover the tool's non-mutating and open-world nature. The description adds useful behavioral context beyond those annotations: it returns a list, supports pagination via cursor, and restricts results to long-form videos. No side effects or hidden behaviors are omitted, so the safety profile is clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, each carrying meaningful information: scope, exclusion, identifiers, return type, and pagination. The 'not Shorts' clarification is front-loaded, which helps agent routing immediately. There is no filler or redundant restating of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core decision points: long-form vs Shorts, identifier selection, list return, and pagination. Since there is no output schema, it does not need to enumerate all return fields, and the schema descriptions handle the remaining parameters like sortBy and includeExtras. It could briefly note whether a channel identifier is required, but overall it is complete enough for correct use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3 because the schema already explains each parameter. The description adds value by clarifying that channel id or handle are accepted selectors and that cursor is used for pagination. It rings context to how those parameters relate to the tool's behavior, though it does not fully address whether both identifiers are mutually exclusive or what happens if neither is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'List long-form videos from a YouTube channel.' It explicitly distinguishes itself from Shorts and names the alternative tool, which sets it apart from youtube_channel_shorts_list and other channel-level siblings. The title and description align, making the tool's purpose immediately clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says this is not for Shorts and directs the agent to youtube.channel.shorts.list, which is strong exclusion guidance. It also states that a channel id or handle is accepted. However, it does not clarify that at least one of channelId or handle should be provided despite both schema properties being optional, and the referenced alternative uses a dot-separated name that does not exactly match the sibling name youtube_channel_shorts_list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

youtube_community_post_getGet YouTube community postB
Read-only
Inspect

Get a YouTube community post by URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic YouTube community post URL.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations declare readOnlyHint=true, so the safety profile is covered, but the description itself adds no behavioral context beyond the word 'Get'. It does not mention authentication needs, rate limits, response behavior, or anything about which posts are accessible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single clear sentence with no filler, redundant phrasing, or unnecessary detail. It is front-loaded and appropriately sized for a straightforward fetch-by-URL tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is minimally viable for a read-only get-by-URL tool, and the schema and annotations fill in parameter and safety details. However, there is no output schema and no guidance about the returned post shape, validity conditions, or when this tool is the right choice among many similar platform-get tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all parameters well, including the public-URL constraint, context, llm_model, and conversation_id semantics. The description merely echoes 'by URL' and adds no meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The descripton specifes a clear verb ('Get'), a concrete resource ('YouTube community post'), and the key input mechanism ('by URL'). It is not a tautology because it adds the URL input constraint, though it does not explicitly distinguish itself from sibling tools beyond the resource name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus alternatives, when not to use it, or what conditions apply. The agent must infer appropriate usage purely from the tool name and URL parameter, which is weak given the large sibling set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

youtube_playlist_getGet YouTube playlistA
Read-only
Inspect

Get a YouTube playlist by playlist id.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
playlistIdYesYouTube playlist id, or a YouTube playlist URL (the `list` query value is used when present).
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, and the description's 'Get' is consistent with those. The description adds no behavioral context beyond that—no mention of return shape, privacy limitations, or URL handling, all of which are left to the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short, front-loaded sentence with no filler. Every word earns its place, and the size is appropriate for a simple getter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For basic invocation, the schema and annotations cover the essentials. However, with no output schema, the description does not explain what the returned playlist contains or whether playlist items are included, and the openWorldHint's implications are not translated into practical guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all four parameters. The description only echoes the obvious 'by playlist id' and adds no additional meaning about context, llm_model, or conversation_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get a YouTube playlist by playlist id.' The phrase 'by playlist id' clearly distinguishes it from channel/video/search siblings, and it is not merely a tautology of the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended usage is implied: use this when you already have a playlist ID. However, the description does not explicitly name when to prefer it over search or channel-video listing siblings, nor does it mention any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

youtube_search_hashtag_listSearch YouTube by hashtagA
Read-only
Inspect

Search YouTube content by hashtag (not free-text keyword — use youtube.search.list for that). Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOptional content filter.
cursorNoOpaque pagination cursor returned by a previous response.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
hashtagYesHashtag to search for. A leading # is optional.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and openWorldHint=true, so the description does not need to restate safety. It adds value by disclosing that the result is a list and that pagination should be handled via cursor. This is useful behavioral context beyond the annotations, though it could mention rate limits or result ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with no filler. The core purpose, the exclusion criterion, the alternative tool, and pagination note are all conveyed efficiently, with the most important scoping constraint front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list search tool, the description covers the key operational points: what to search, how it differs from the sibling keyword search, and how to handle pagination. It does not detail response format, but there is no output schema and such details are arguably beyond the description's minimal required scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all six parameters, including the hashtag, cursor, type, context, llm_model, and conversation_id. The description contributes little parameter-level meaning beyond reinforcing the hashtag semantics and noting cursor usage, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific verb ('Search') and resource ('YouTube content by hashtag'), and explicitly distinguishes itself from the free-text keyword tool youtube.search.list. It also mentions returns a list and pagination, making the tool's purpose and scope immediately clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description gives an explicit when-to-use rule: use for hashtag search, not free-text keyword search, and names the alternative (youtube.search.list). This actionable routing guidance is exactly what an agent needs to choose correctly among sibling search tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

youtube_search_listSearch YouTubeB
Read-only
Inspect

Search YouTube videos, channels, and playlists by free-text keyword (not hashtag — use youtube.search.hashtag.list for that). Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOptional content type filter for search results.
queryYesSearch query text for YouTube content.
cursorNoOpaque pagination cursor returned by a previous response.
regionNoOptional ISO 3166-1 country code for localized search results.
sortByNoOptional sort order for search results.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
durationNoOptional duration filter for video results. Applies to videos, not shorts.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
uploadDateNoOptional upload date filter for video results.
includeExtrasNoWhen true, returns richer per-video metadata when available. May increase response time.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds that the result is a list and that a cursor should be used when paginated, which is useful but minimal. It does not describe output shape, open-world caveats, or what happens when no results are found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded with the core purpose, and avoids redundancy. The wrong sibling tool name is a clarity flaw, but the structure itself is efficient and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 11 parameters but full schema coverage, the description does not need to re-explain parameters. However, with no output schema, it should provide a bit more about the returned list shape or result semantics. It mentions pagination, which helps, but it omits shorts and references a non-existent tool name.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema fully documents all parameters. The description does not really add meaning beyond the schema, except loosely implying free-text search and cursor usage. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (search) and resource (YouTube videos, channels, playlists) and adds a useful free-text keyword qualifier. It does not explicitly mention shorts even though the schema's type enum includes them, and it relies partly on the tool name for full scope, so it is strong but not perfect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit exclusion: not hashtag, use youtube.search.hashtag.list. However, the named alternative does not match the actual sibling tool youtube_search_hashtag_list, which is misleading. No further guidance is given about when to prefer this over other YouTube search/list tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

youtube_video_comments_analysis_getAnalyze YouTube video commentsC
Read-only
Inspect

Analyze YouTube video comments. Accepts a video URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the YouTube video whose comments should be listed.
orderNoComment sort order to analyze. Defaults to `top` for the strongest signal.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true, so the safety profile is covered. The description adds no behavioral context beyond restating the action; it does not disclose what kind of analysis is performed, what the payload contains, or any processing caveats.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is short and front-loaded, but the first sentence simply repeats the title and name while the second adds only a minimal input hint. Both sentences are low-information relative to what an agent still needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 should clarify what the analysis returns; it does not. It also omits any distinction from the comment-list sibling and any operational details, leaving the tool under-specified for first-time selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline applies and the description does not need to redefine parameters. The description adds little beyond the schema, but the schema already documents each parameter, including the optional 'order' enum and the required 'context'/'llm_model'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a specific action ('Analyze') and resource ('YouTube video comments') and notes the input type ('video URL'). It is clear enough, though it does not distinguish itself from sibling youtube_video_comments_list, 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to choose analysis over listing or transcript tools. An agent must infer from the name that this is for analytical output rather than raw comments.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

youtube_video_comments_listList YouTube video commentsA
Read-only
Inspect

List comments on a YouTube video by URL. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the YouTube video whose comments should be listed.
orderNoComment sort order. `top` returns highest-ranked comments; `newest` returns the most recent comments.
cursorNoOpaque cursor from a previous response to fetch the next page.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true, so the agent knows it is a safe read. The description adds that it returns a list and uses a cursor when paginated, which is useful, but it does not disclose whether the returned comments are top-level only or include replies, nor how the agent detects that pagination is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with no filler. The core action and resource come first, and the cursor/pagination note is the only additional guidance, making it easy for an agent to process quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only listing tool with a fully documented schema, the description is nearly sufficient: it names the input and the return shape. However, no output schema exists, there are close sibling tools for replies and analysis, and the top-level-vs-replies scope and pagination-detection rules are left unexplained, leaving a real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers all six parameters at 100% coverage, including the URL, order enum, cursor semantics, and required context/model fields. The description only restates the URL input and cursor behavior, adding no new parameter-level information, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete operation: listing comments on a YouTube video identified by URL, with the result shape explicitly described. This distinguishes it from the many other platform-specific comments_list tools and from youtube_video_comments_analysis_get and youtube_video_comments_replies_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied by the name and first sentence, but the description gives no when-to-use vs when-not-to-use guidance and never names alternatives such as youtube_video_comments_replies_list or youtube_video_comments_analysis_get. The cursor note is about pagination, not tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

youtube_video_comments_replies_listList YouTube comment repliesB
Read-only
Inspect

List replies to a YouTube comment. Accepts a from video comments. Returns a list (use cursor when paginated).

ParametersJSON Schema
NameRequiredDescriptionDefault
cursorYesComment `repliesCursor` from Video Comments endpoint, or `page.nextCursor` to paginate replies.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds a useful behavioral detail by stating that the tool returns a list and that cursor pagination should be used for paginated responses. This is helpful but not particularly rich, and no additional behavioral constraints like rate limits or response size are mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately short and front-loaded with the core purpose. However, the phrase 'Accepts a from video comments' appears truncated or malformed, which prevents the otherwise concise text from being fully well-formed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity, complete schema coverage, and readOnly hint, the description is reasonably complete: it states the resource, the result type, and pagination behavior. The truncated input-source sentence and the absence of any guidance about the required context, llm_model, or conversation_id parameters leave a few gaps, though the schema covers those details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters in detail. The description's reference to accepting a cursor from video comments aligns with the schema's cursor description but adds no meaning beyond what the schema already provides. The baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List replies to a YouTube comment.' This makes the tool's purpose clear and distinguishes it at a high level from comment-listing tools. However, it does not explicitly differentiate itself from youtube_video_comments_list, and the truncated phrase 'Accepts a from video comments' introduces minor ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives some operational context by noting that the input comes from video comments and that pagination should use a cursor. However, it does not explicitly state when to use this tool versus alternatives such as youtube_video_comments_list or other platforms' reply-listing tools, leaving the when-to-use guidance mostly implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

youtube_video_getGet YouTube videoA
Read-only
Inspect

Get a single YouTube video by URL. Channel lives under channel (not author); publish time is publishedAt.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the YouTube video. Shorts URLs are also supported.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
languageNoOptional preferred language for returned text when the source supports localization.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds useful return-shape context with "Channel lives under channel (not author); publish time is publishedAt," which helps agents interpret the response correctly. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler: the first states the action, the second provides a high-value field-naming correction. The most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-video fetch tool, the combination of a clear purpose, 100% schema coverage, read-only annotations, and the field-maping clarification is largely sufficient. The lack of an output schema and any description of return contents is a minor gap, but not severe for this tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters in detail. The description adds no parameter-level guidance, but that is acceptable because the schema carries the full burden. The added field hints concern the response shape rather than parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: "Get a single YouTube video by URL." The words "single" and "by URL" distinguish this from sibling tools like youtube_channel_get, youtube_playlist_get, and youtube_video_comments_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage context is implied by "single YouTube video by URL," and the URL parameter reinforces when this tool is appropriate. However, there are no explicit when-to-use or when-not-to-use instructions, and no alternative tools are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

youtube_video_transcript_getGet YouTube video transcriptA
Read-only
Inspect

Get the transcript for a YouTube video by URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesLink to the YouTube video whose transcript should be returned.
contextYesDescribe the user's underlying goal in one sentence — not the tool you are calling.
languageNoOptional ISO 639-1 language code (two letters) to prefer when multiple transcripts exist.
llm_modelYesThe exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. "claude-opus-4-8", "gpt-5.2"). Used for analytics only. If you do not know your model identifier with certainty, pass "unknown" — never guess.
conversation_idNoEcho the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and openWorldHint=true, and the description does not contradict them. But the description adds no behavioral detail beyond that: it does not mention what happens when a video has no transcript, how the optional language preference affects selection, or what the returned transcript looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single nine-word sentence with no filler, and the core action ('Get the transcript') is front-loaded. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 annotations and full schema coverage already cover safety and parameters, and the description clearly names the returned resource. The only real gaps are edge-case behavior (no transcript available) and an explicit note about the language parameter, which are minor for such a straightforward tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all parameters. The description only re-states the URL-based input and adds no semantics for required fields like context or llm_model. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), a specific resource ('the transcript'), a specific platform ('YouTube'), and the input method ('by URL'). This makes it immediately distinguishable from youtube_video_get and from the many other *_transcript_get sibling tools on different platforms.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: if you need a YouTube video transcript, this is the tool. However, the description does not explicitly say when not to use it or point to alternatives such as youtube_video_get for video metadata. Given the large sibling list, an explicit routing note would be more helpful.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 208 tool updates
    • Changedamazon_shop_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • ChangedappleMusic_album_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • ChangedappleMusic_artist_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • ChangedappleMusic_search_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • ChangedappleMusic_track_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedauth_whoami5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedbilling_balance_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedbluesky_post_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedbluesky_profile_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedbluesky_profile_posts_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changeddocs_read4 fields changed
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "docsPathname"
        -]New value: +[
        +  "docsPathname",
        +  "context",
        +  "llm_model"
        +]
    • Changeddocs_search4 fields changed
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedfacebook_adLibrary_ad_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedfacebook_adLibrary_ads_search_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedfacebook_adLibrary_companies_search5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedfacebook_company_ads_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedfacebook_event_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedfacebook_events_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedfacebook_events_search_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedfacebook_group_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedfacebook_group_posts_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedfacebook_marketplace_item_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedfacebook_marketplace_locations_search5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedfacebook_marketplace_search_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedfacebook_post_comments_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedfacebook_post_comments_replies_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "cursor"
        -]New value: +[
        +  "cursor",
        +  "context",
        +  "llm_model"
        +]
    • Changedfacebook_post_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedfacebook_post_transcript_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedfacebook_profile_events_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedfacebook_profile_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedfacebook_profile_photos_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedfacebook_profile_posts_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedfacebook_profile_reels_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Addedget_more_tools
    • Changedgithub_profile_activity_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedgithub_profile_contributions_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedgithub_profile_followers_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedgithub_profile_following_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedgithub_profile_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedgithub_profile_pullRequests_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedgithub_profile_repositories_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedgithub_repositories_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedgithub_trending_developers_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedgithub_trending_repositories_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedgoogle_adLibrary_ad_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedgoogle_adLibrary_advertisers_search5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedgoogle_company_ads_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedhackernews_comment_context_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id"
        -]New value: +[
        +  "id",
        +  "context",
        +  "llm_model"
        +]
    • Changedhackernews_feed_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "feed"
        -]New value: +[
        +  "feed",
        +  "context",
        +  "llm_model"
        +]
    • Changedhackernews_item_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id"
        -]New value: +[
        +  "id",
        +  "context",
        +  "llm_model"
        +]
    • Changedhackernews_jobs_who_is_hiring_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedhackernews_maxitem_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedhackernews_search_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedhackernews_story_comments_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id"
        -]New value: +[
        +  "id",
        +  "context",
        +  "llm_model"
        +]
    • Changedhackernews_story_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id"
        -]New value: +[
        +  "id",
        +  "context",
        +  "llm_model"
        +]
    • Changedhackernews_updates_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedhackernews_user_comments_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "username"
        -]New value: +[
        +  "username",
        +  "context",
        +  "llm_model"
        +]
    • Changedhackernews_user_favorites_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "username"
        -]New value: +[
        +  "username",
        +  "context",
        +  "llm_model"
        +]
    • Changedhackernews_user_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "username"
        -]New value: +[
        +  "username",
        +  "context",
        +  "llm_model"
        +]
    • Changedhackernews_user_submissions_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "username"
        -]New value: +[
        +  "username",
        +  "context",
        +  "llm_model"
        +]
    • Changedinstagram_audio_reels_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "audioId"
        -]New value: +[
        +  "audioId",
        +  "context",
        +  "llm_model"
        +]
    • Changedinstagram_highlight_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "highlightId"
        -]New value: +[
        +  "highlightId",
        +  "context",
        +  "llm_model"
        +]
    • Changedinstagram_post_comments_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedinstagram_post_comments_replies_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "commentId",
        -  "url"
        -]New value: +[
        +  "commentId",
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedinstagram_post_download_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedinstagram_post_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedinstagram_post_transcript_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedinstagram_profile_basic_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "userId"
        -]New value: +[
        +  "userId",
        +  "context",
        +  "llm_model"
        +]
    • Changedinstagram_profile_engagement_get7 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • changedInput schema / properties / handle / description
        Previous value: -"Instagram handle to look up, with or without a leading @."New value: +"Instagram handle to look up, with or without a leading @. A profile URL is also accepted."
      • changedInput schema / properties / handle / maxLength
        Previous value: -64New value: +2048
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedinstagram_profile_get7 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • changedInput schema / properties / handle / description
        Previous value: -"Instagram handle to look up, with or without a leading @."New value: +"Instagram handle to look up, with or without a leading @. A profile URL is also accepted."
      • changedInput schema / properties / handle / maxLength
        Previous value: -64New value: +2048
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedinstagram_profile_highlights_list6 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • changedInput schema / properties / handle / maxLength
        Previous value: -64New value: +2048
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedinstagram_profile_posts_list6 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • changedInput schema / properties / handle / maxLength
        Previous value: -64New value: +2048
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedinstagram_profile_reels_list6 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • changedInput schema / properties / handle / maxLength
        Previous value: -64New value: +2048
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedinstagram_profile_taggedPosts_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "userId"
        -]New value: +[
        +  "userId",
        +  "context",
        +  "llm_model"
        +]
    • Changedinstagram_reels_trending_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedinstagram_search_hashtag_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "hashtag"
        -]New value: +[
        +  "hashtag",
        +  "context",
        +  "llm_model"
        +]
    • Changedinstagram_search_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedinstagram_search_popular_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedinstagram_search_profiles_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedinstagram_search_reels_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedlinkedin_adLibrary_ad_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedlinkedin_adLibrary_ads_search_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedlinkedin_company_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedlinkedin_company_posts_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedlinkedin_jobs_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedlinkedin_jobs_search_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "keyword",
        -  "location"
        -]New value: +[
        +  "keyword",
        +  "location",
        +  "context",
        +  "llm_model"
        +]
    • Changedlinkedin_organization_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedlinkedin_people_search_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedlinkedin_post_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedlinkedin_post_transcript_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedlinkedin_posts_search_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedlinkedin_profile_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedlinkedin_profiles_posts_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedlinktree_profile_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedmonitors_checks_list4 fields changed
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id"
        -]New value: +[
        +  "id",
        +  "context",
        +  "llm_model"
        +]
    • Changedmonitors_create4 fields changed
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "operationId",
        -  "params",
        -  "type"
        -]New value: +[
        +  "operationId",
        +  "params",
        +  "type",
        +  "context",
        +  "llm_model"
        +]
    • Changedmonitors_delete4 fields changed
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id"
        -]New value: +[
        +  "id",
        +  "context",
        +  "llm_model"
        +]
    • Changedmonitors_events_list4 fields changed
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id"
        -]New value: +[
        +  "id",
        +  "context",
        +  "llm_model"
        +]
    • Changedmonitors_get4 fields changed
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id"
        -]New value: +[
        +  "id",
        +  "context",
        +  "llm_model"
        +]
    • Changedmonitors_list4 fields changed
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedmonitors_sources_list4 fields changed
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedmonitors_trigger4 fields changed
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id"
        -]New value: +[
        +  "id",
        +  "context",
        +  "llm_model"
        +]
    • Changedmonitors_update4 fields changed
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id"
        -]New value: +[
        +  "id",
        +  "context",
        +  "llm_model"
        +]
    • Changednl_ask_post5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedpinterest_board_pins_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedpinterest_pin_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedpinterest_profile_boards_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedpinterest_search_pins_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedreddit_post_comments_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedreddit_post_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedreddit_post_transcript_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedreddit_search_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedreddit_subreddit_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedreddit_subreddit_posts_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "subreddit"
        -]New value: +[
        +  "subreddit",
        +  "context",
        +  "llm_model"
        +]
    • Changedreddit_subreddit_search_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "subreddit"
        -]New value: +[
        +  "subreddit",
        +  "context",
        +  "llm_model"
        +]
    • Changedrumble_channel_videos_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedrumble_search_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedrumble_video_comments_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedrumble_video_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedrumble_video_transcript_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedsoundcloud_profile_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedsoundcloud_profile_tracks_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedsoundcloud_track_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedspotify_album_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedspotify_artist_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedspotify_track_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedtelegram_channel_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedtelegram_channel_post_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle",
        -  "postId"
        -]New value: +[
        +  "handle",
        +  "postId",
        +  "context",
        +  "llm_model"
        +]
    • Changedtelegram_channel_posts_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedthreads_post_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedthreads_profile_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedthreads_profile_posts_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedthreads_search_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedthreads_users_search5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_adLibrary_ad_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_adLibrary_ads_search_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_collection_videos_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_feed_trending_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "region"
        -]New value: +[
        +  "region",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_music_videos_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "clipId"
        -]New value: +[
        +  "clipId",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_product_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_product_reviews_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_profile_audience_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_profile_engagement_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_profile_followers_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_profile_following_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_profile_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_profile_live_check5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_profile_region_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_profile_showcaseProducts_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_profile_videos_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_search_hashtag_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "hashtag"
        -]New value: +[
        +  "hashtag",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_search_suggestions_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_search_top_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_search_videos_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_shop_products_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_shop_products_search5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_song_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id"
        -]New value: +[
        +  "id",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_users_search5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_video_comments_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_video_comments_replies_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "commentId",
        -  "url"
        -]New value: +[
        +  "commentId",
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_video_download_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_video_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedtiktok_video_transcript_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedtruthsocial_post_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedtruthsocial_profile_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedtruthsocial_profile_posts_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedtwitch_clip_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedtwitch_profile_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedtwitch_profile_schedule_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedtwitch_profile_videos_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedtwitter_community_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedtwitter_community_tweets_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedtwitter_hashtag_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "hashtag"
        -]New value: +[
        +  "hashtag",
        +  "context",
        +  "llm_model"
        +]
    • Changedtwitter_profile_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedtwitter_profile_tweets_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "handle"
        -]New value: +[
        +  "handle",
        +  "context",
        +  "llm_model"
        +]
    • Changedtwitter_search_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedtwitter_tweet_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedtwitter_tweet_replies_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedtwitter_tweet_transcript_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedweb_ask_run5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url",
        -  "q"
        -]New value: +[
        +  "url",
        +  "q",
        +  "context",
        +  "llm_model"
        +]
    • Changedweb_crawl_run5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedweb_extract_run5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url",
        -  "schema"
        -]New value: +[
        +  "url",
        +  "schema",
        +  "context",
        +  "llm_model"
        +]
    • Changedweb_html_generate5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedweb_markdown_generate5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedweb_screenshot_capture5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedweb_search_run5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • ChangedwebhookDeliveries_redeliver4 fields changed
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id"
        -]New value: +[
        +  "id",
        +  "context",
        +  "llm_model"
        +]
    • ChangedwebhookEndpoints_create4 fields changed
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "kind"
        -]New value: +[
        +  "kind",
        +  "context",
        +  "llm_model"
        +]
    • ChangedwebhookEndpoints_delete4 fields changed
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id"
        -]New value: +[
        +  "id",
        +  "context",
        +  "llm_model"
        +]
    • ChangedwebhookEndpoints_deliveries_list4 fields changed
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id"
        -]New value: +[
        +  "id",
        +  "context",
        +  "llm_model"
        +]
    • ChangedwebhookEndpoints_get4 fields changed
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id"
        -]New value: +[
        +  "id",
        +  "context",
        +  "llm_model"
        +]
    • ChangedwebhookEndpoints_list4 fields changed
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • ChangedwebhookEndpoints_rotateSecret4 fields changed
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id"
        -]New value: +[
        +  "id",
        +  "context",
        +  "llm_model"
        +]
    • ChangedwebhookEndpoints_test4 fields changed
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id"
        -]New value: +[
        +  "id",
        +  "context",
        +  "llm_model"
        +]
    • ChangedwebhookEndpoints_update4 fields changed
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "id"
        -]New value: +[
        +  "id",
        +  "context",
        +  "llm_model"
        +]
    • Changedyoutube_channel_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedyoutube_channel_shorts_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedyoutube_channel_videos_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedyoutube_community_post_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedyoutube_playlist_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "playlistId"
        -]New value: +[
        +  "playlistId",
        +  "context",
        +  "llm_model"
        +]
    • Changedyoutube_search_hashtag_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "hashtag"
        -]New value: +[
        +  "hashtag",
        +  "context",
        +  "llm_model"
        +]
    • Changedyoutube_search_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "context",
        +  "llm_model"
        +]
    • Changedyoutube_shorts_trending_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "context",
        +  "llm_model"
        +]
    • Changedyoutube_video_comments_analysis_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedyoutube_video_comments_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedyoutube_video_comments_replies_list5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "cursor"
        -]New value: +[
        +  "cursor",
        +  "context",
        +  "llm_model"
        +]
    • Changedyoutube_video_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
    • Changedyoutube_video_transcript_get5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "Describe the user's underlying goal in one sentence — not the tool you are calling.",
        +  "type": "string"
        +}
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / llm_model
        Added value: +{
        +  "description": "The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "url",
        +  "context",
        +  "llm_model"
        +]
  2. 207 tool updates
    • Changedamazon_shop_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • ChangedappleMusic_album_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • ChangedappleMusic_artist_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • ChangedappleMusic_search_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • ChangedappleMusic_track_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedauth_whoami1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbilling_balance_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbluesky_post_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbluesky_profile_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedbluesky_profile_posts_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changeddocs_read1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changeddocs_search1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfacebook_adLibrary_ad_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfacebook_adLibrary_ads_search_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfacebook_adLibrary_companies_search1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfacebook_company_ads_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfacebook_event_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfacebook_events_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfacebook_events_search_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfacebook_group_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfacebook_group_posts_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfacebook_marketplace_item_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfacebook_marketplace_locations_search1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfacebook_marketplace_search_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfacebook_post_comments_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfacebook_post_comments_replies_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfacebook_post_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfacebook_post_transcript_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfacebook_profile_events_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfacebook_profile_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfacebook_profile_photos_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfacebook_profile_posts_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedfacebook_profile_reels_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgithub_profile_activity_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgithub_profile_contributions_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgithub_profile_followers_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgithub_profile_following_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgithub_profile_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgithub_profile_pullRequests_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgithub_profile_repositories_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgithub_repositories_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgithub_trending_developers_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgithub_trending_repositories_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgoogle_adLibrary_ad_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgoogle_adLibrary_advertisers_search1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedgoogle_company_ads_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedhackernews_comment_context_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedhackernews_feed_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedhackernews_item_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedhackernews_jobs_who_is_hiring_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedhackernews_maxitem_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedhackernews_search_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedhackernews_story_comments_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedhackernews_story_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedhackernews_updates_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedhackernews_user_comments_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedhackernews_user_favorites_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedhackernews_user_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedhackernews_user_submissions_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedinstagram_audio_reels_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedinstagram_highlight_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedinstagram_post_comments_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedinstagram_post_comments_replies_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedinstagram_post_download_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedinstagram_post_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedinstagram_post_transcript_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedinstagram_profile_basic_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedinstagram_profile_engagement_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedinstagram_profile_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedinstagram_profile_highlights_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedinstagram_profile_posts_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedinstagram_profile_reels_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedinstagram_profile_taggedPosts_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedinstagram_reels_trending_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedinstagram_search_hashtag_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedinstagram_search_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedinstagram_search_popular_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedinstagram_search_profiles_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedinstagram_search_reels_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlinkedin_adLibrary_ad_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlinkedin_adLibrary_ads_search_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlinkedin_company_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlinkedin_company_posts_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlinkedin_jobs_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlinkedin_jobs_search_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlinkedin_organization_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlinkedin_people_search_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlinkedin_post_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlinkedin_post_transcript_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlinkedin_posts_search_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlinkedin_profile_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlinkedin_profiles_posts_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedlinktree_profile_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmonitors_checks_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmonitors_create1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmonitors_delete1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmonitors_events_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmonitors_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmonitors_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmonitors_sources_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmonitors_trigger1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedmonitors_update1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changednl_ask_post1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedpinterest_board_pins_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedpinterest_pin_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedpinterest_profile_boards_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedpinterest_search_pins_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedreddit_post_comments_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedreddit_post_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedreddit_post_transcript_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedreddit_search_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedreddit_subreddit_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedreddit_subreddit_posts_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedreddit_subreddit_search_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrumble_channel_videos_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrumble_search_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrumble_video_comments_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrumble_video_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedrumble_video_transcript_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsoundcloud_profile_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsoundcloud_profile_tracks_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedsoundcloud_track_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedspotify_album_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedspotify_artist_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedspotify_track_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtelegram_channel_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtelegram_channel_post_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtelegram_channel_posts_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedthreads_post_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedthreads_profile_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedthreads_profile_posts_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedthreads_search_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedthreads_users_search1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_adLibrary_ad_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_adLibrary_ads_search_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_collection_videos_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_feed_trending_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_music_videos_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_product_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_product_reviews_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_profile_audience_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_profile_engagement_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_profile_followers_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_profile_following_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_profile_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_profile_live_check1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_profile_region_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_profile_showcaseProducts_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_profile_videos_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_search_hashtag_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_search_suggestions_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_search_top_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_search_videos_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_shop_products_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_shop_products_search1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_song_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_users_search1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_video_comments_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_video_comments_replies_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_video_download_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_video_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtiktok_video_transcript_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtruthsocial_post_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtruthsocial_profile_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtruthsocial_profile_posts_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtwitch_clip_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtwitch_profile_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtwitch_profile_schedule_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtwitch_profile_videos_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtwitter_community_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtwitter_community_tweets_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtwitter_hashtag_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtwitter_profile_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtwitter_profile_tweets_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtwitter_search_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtwitter_tweet_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtwitter_tweet_replies_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtwitter_tweet_transcript_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedweb_ask_run1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedweb_crawl_run1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedweb_extract_run1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedweb_html_generate1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedweb_markdown_generate1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedweb_screenshot_capture1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedweb_search_run1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • ChangedwebhookDeliveries_redeliver1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • ChangedwebhookEndpoints_create1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • ChangedwebhookEndpoints_delete1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • ChangedwebhookEndpoints_deliveries_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • ChangedwebhookEndpoints_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • ChangedwebhookEndpoints_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • ChangedwebhookEndpoints_rotateSecret1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • ChangedwebhookEndpoints_test1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • ChangedwebhookEndpoints_update1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedyoutube_channel_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedyoutube_channel_shorts_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedyoutube_channel_videos_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedyoutube_community_post_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedyoutube_playlist_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedyoutube_search_hashtag_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedyoutube_search_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedyoutube_shorts_trending_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedyoutube_video_comments_analysis_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedyoutube_video_comments_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedyoutube_video_comments_replies_list1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedyoutube_video_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedyoutube_video_transcript_get1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  3. 21 tool updates
    • Addedamazon_shop_get
    • AddedappleMusic_album_get
    • AddedappleMusic_artist_get
    • AddedappleMusic_search_list
    • AddedappleMusic_track_get
    • Addedfacebook_event_get
    • Addedfacebook_events_list
    • Addedfacebook_events_search_list
    • Addedfacebook_group_get
    • Addedfacebook_profile_events_list
    • Addedgithub_profile_pullRequests_list
    • Addedinstagram_audio_reels_list
    • Addedinstagram_profile_taggedPosts_list
    • Addedinstagram_search_list
    • Addedinstagram_search_popular_list
    • Changedreddit_post_comments_list1 field changed
      • changedInput schema / properties / url / description
        Previous value: -"Link to the Reddit post whose comments should be listed. Accepts post URLs (…/comments/…) or share URLs (…/s/…). Relative `/r/…` paths are rewritten to https://www.reddit.com."New value: +"Link to the Reddit post."
    • Addedreddit_post_get
    • Changedreddit_post_transcript_get1 field changed
      • changedInput schema / properties / url / description
        Previous value: -"Link to the Reddit post or direct hosted video URL whose transcript should be returned."New value: +"Link to the Reddit post or hosted video."
    • Addedtiktok_collection_videos_list
    • Addedtiktok_search_suggestions_list
    • Addedtiktok_search_top_list
  4. 7 tool updates
    • Changedfacebook_profile_photos_list1 field changed
      • addedInput schema / properties / hostMedia
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "enum": [
        +        "0",
        +        "1",
        +        "true",
        +        "false"
        +      ],
        +      "type": "string"
        +    }
        +  ],
        +  "description": "When true, hosts source media for 90 days and returns delivery URLs in each photo's `hostedMedia`."
        +}
    • Changedfacebook_profile_posts_list1 field changed
      • addedInput schema / properties / hostMedia
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "enum": [
        +        "0",
        +        "1",
        +        "true",
        +        "false"
        +      ],
        +      "type": "string"
        +    }
        +  ],
        +  "description": "When true, hosts source media for 90 days and returns delivery URLs in each post's `hostedMedia`."
        +}
    • Changedfacebook_profile_reels_list1 field changed
      • addedInput schema / properties / hostMedia
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "enum": [
        +        "0",
        +        "1",
        +        "true",
        +        "false"
        +      ],
        +      "type": "string"
        +    }
        +  ],
        +  "description": "When true, hosts source media for 90 days and returns delivery URLs in each reel's `hostedMedia`."
        +}
    • Changedinstagram_post_get1 field changed
      • changedInput schema / properties / downloadMedia / description
        Previous value: -"When true, returns permanent CDN URLs for media in `downloads`. Adds 10 credits (11 total including the base lookup)."New value: +"When true, asks the upstream provider to download media and return provider-hosted URLs in `downloads` (not SocialFetch-owned storage). Adds 10 credits when media is found (11 total including the base lookup); when no media is returned the base lookup credit still applies."
    • Changedinstagram_profile_posts_list1 field changed
      • addedInput schema / properties / hostMedia
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "enum": [
        +        "0",
        +        "1",
        +        "true",
        +        "false"
        +      ],
        +      "type": "string"
        +    }
        +  ],
        +  "description": "When true, hosts source media for 90 days and returns delivery URLs in each post's `hostedMedia`."
        +}
    • Changedinstagram_profile_reels_list1 field changed
      • addedInput schema / properties / hostMedia
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "enum": [
        +        "0",
        +        "1",
        +        "true",
        +        "false"
        +      ],
        +      "type": "string"
        +    }
        +  ],
        +  "description": "When true, hosts source media for 90 days and returns delivery URLs in each reel's `hostedMedia`."
        +}
    • Changedtiktok_profile_videos_list1 field changed
      • addedInput schema / properties / hostMedia
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "enum": [
        +        "0",
        +        "1",
        +        "true",
        +        "false"
        +      ],
        +      "type": "string"
        +    }
        +  ],
        +  "description": "When true, hosts source media for 90 days and returns delivery URLs in each video's `hostedMedia`."
        +}
  5. 11 tool updates
    • Changedfacebook_marketplace_search_list2 fields changed
      • changedInput schema / properties / count / description
        Previous value: -"Optional number of listings to return."New value: +"Deprecated alias for `limit`. When both are set, `limit` wins."
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Optional number of listings to return (1–100). Prefer this over `count`.",
        +  "maximum": 100,
        +  "minimum": 1,
        +  "type": "integer"
        +}
    • Changedhackernews_feed_list2 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Items to hydrate per page (1–50). Default: 30. Prefer this over `pageSize`.",
        +  "maximum": 50,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • changedInput schema / properties / pageSize / description
        Previous value: -"Items to hydrate per page (1–50). Default: 30."New value: +"Deprecated alias for `limit`. When both are set, `limit` wins."
    • Changedhackernews_jobs_who_is_hiring_list2 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Job rows per page (1–50). Default: 20. Prefer this over `pageSize`.",
        +  "maximum": 50,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • changedInput schema / properties / pageSize / description
        Previous value: -"Job rows per page (1–50). Default: 20."New value: +"Deprecated alias for `limit`. When both are set, `limit` wins."
    • Changedhackernews_search_list2 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "anyOf": [
        +    {
        +      "const": 10,
        +      "type": "number"
        +    },
        +    {
        +      "const": 20,
        +      "type": "number"
        +    },
        +    {
        +      "const": 30,
        +      "type": "number"
        +    },
        +    {
        +      "const": 50,
        +      "type": "number"
        +    }
        +  ],
        +  "description": "Hits per page. Must be one of 10, 20, 30, 50. Default: 20. Prefer this over `pageSize`."
        +}
      • changedInput schema / properties / pageSize / description
        Previous value: -"Hits per page. Must be one of 10, 20, 30, 50. Default: 20."New value: +"Deprecated alias for `limit`. When both are set, `limit` wins."
    • Changedhackernews_user_comments_list2 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Hits per page (1–50). Default: 20. Prefer this over `pageSize`.",
        +  "maximum": 50,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • changedInput schema / properties / pageSize / description
        Previous value: -"Hits per page (1–50). Default: 20."New value: +"Deprecated alias for `limit`. When both are set, `limit` wins."
    • Changedhackernews_user_submissions_list2 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Hits per page (1–50). Default: 20. Prefer this over `pageSize`.",
        +  "maximum": 50,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • changedInput schema / properties / pageSize / description
        Previous value: -"Hits per page (1–50). Default: 20."New value: +"Deprecated alias for `limit`. When both are set, `limit` wins."
    • Changedweb_crawl_run2 fields changed
      • addedInput schema / properties / scanFullPage
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "enum": [
        +        "0",
        +        "1",
        +        "true",
        +        "false"
        +      ],
        +      "type": "string"
        +    }
        +  ],
        +  "description": "When true, scroll the page to load dynamically appended content (infinite scroll). Default false."
        +}
      • addedInput schema / properties / waitFor
        Added value: +{
        +  "description": "Wait for a CSS selector before extraction. Must be prefixed with \"css:\" (e.g. css:main). JavaScript wait conditions are not supported.",
        +  "maxLength": 200,
        +  "type": "string"
        +}
    • Addedweb_extract_run
    • Changedweb_html_generate2 fields changed
      • addedInput schema / properties / scanFullPage
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "enum": [
        +        "0",
        +        "1",
        +        "true",
        +        "false"
        +      ],
        +      "type": "string"
        +    }
        +  ],
        +  "description": "When true, scroll the page to load dynamically appended content (infinite scroll). Default false."
        +}
      • addedInput schema / properties / waitFor
        Added value: +{
        +  "description": "Wait for a CSS selector before extraction. Must be prefixed with \"css:\" (e.g. css:main). JavaScript wait conditions are not supported.",
        +  "maxLength": 200,
        +  "type": "string"
        +}
    • Changedweb_markdown_generate2 fields changed
      • addedInput schema / properties / scanFullPage
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "boolean"
        +    },
        +    {
        +      "enum": [
        +        "0",
        +        "1",
        +        "true",
        +        "false"
        +      ],
        +      "type": "string"
        +    }
        +  ],
        +  "description": "When true, scroll the page to load dynamically appended content (infinite scroll). Default false."
        +}
      • addedInput schema / properties / waitFor
        Added value: +{
        +  "description": "Wait for a CSS selector before extraction. Must be prefixed with \"css:\" (e.g. css:main). JavaScript wait conditions are not supported.",
        +  "maxLength": 200,
        +  "type": "string"
        +}
    • ChangedwebhookEndpoints_deliveries_list2 fields changed
      • addedInput schema / properties / cursor
        Added value: +{
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "maximum": 100,
        +  "minimum": 1,
        +  "type": "integer"
        +}
  6. 1 tool update
    • Changedhackernews_feed_list4 fields changed
      • removedInput schema / properties / limit
        Removed value: -{
        -  "description": "Maximum items to hydrate (1–50). Default: 30.",
        -  "maximum": 50,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • removedInput schema / properties / offset
        Removed value: -{
        -  "description": "Zero-based offset into the official feed id list.",
        -  "maximum": 500,
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • addedInput schema / properties / page
        Added value: +{
        +  "description": "Zero-based page index (maximum 50 pages). Default: 0. Advance with `data.page.nextPage` when `hasMore` is true.",
        +  "maximum": 49,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / pageSize
        Added value: +{
        +  "description": "Items to hydrate per page (1–50). Default: 30.",
        +  "maximum": 50,
        +  "minimum": 1,
        +  "type": "integer"
        +}
  7. 2 tool updates
    • Changedreddit_post_comments_list1 field changed
      • changedInput schema / properties / url / description
        Previous value: -"Link to the Reddit post whose comments should be listed."New value: +"Link to the Reddit post whose comments should be listed. Accepts post URLs (…/comments/…) or share URLs (…/s/…). Relative `/r/…` paths are rewritten to https://www.reddit.com."
    • Changedreddit_subreddit_posts_list1 field changed
      • changedInput schema / properties / timeframe / description
        Previous value: -"Optional timeframe used with time-based sort orders."New value: +"Optional timeframe used only when `sort` is `top`. Ignored/rejected for other sorts."
  8. 1 tool update
    • Addedweb_screenshot_capture
  9. 1 tool update
    • Addedinstagram_post_comments_replies_list
  10. 28 tool updates
    • Changedfacebook_group_posts_list1 field changed
      • changedInput schema / properties / sortBy / description
        Previous value: -"Optional sort order for the returned posts."New value: +"Optional sort order for posts returned from the group feed. `top`: Facebook's default relevance ranking. `recentActivity`: sorted by most recent comment/reaction activity. `chronological`: regular posts sorted by post time, newest first. `chronologicalListings`: Facebook's separate feed of listing-style posts (e.g. items for sale) within the group, sorted by time."
    • Changedfacebook_marketplace_search_list1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "query",
        -  "lat",
        -  "lng"
        -]New value: +[
        +  "query"
        +]
    • Changedhackernews_search_list1 field changed
      • changedInput schema / properties / type / description
        Previous value: -"Content type filter. Default: `all`."New value: +"Restrict search results to a Hacker News content type. `ask_hn`: Ask HN posts (questions to the community). `show_hn`: Show HN posts (projects/work being shared). `launch_hn`: Launch HN posts (YC-affiliated company launches). Default: `all`."
    • Changedlinkedin_jobs_get1 field changed
      • removedInput schema / required
        Removed value: -[
        -  "url"
        -]
    • Changedlinkedin_organization_get1 field changed
      • removedInput schema / required
        Removed value: -[
        -  "url"
        -]
    • Changedlinkedin_profile_get1 field changed
      • removedInput schema / required
        Removed value: -[
        -  "url"
        -]
    • Addedmonitors_checks_list
    • Addedmonitors_create
    • Addedmonitors_delete
    • Addedmonitors_events_list
    • Addedmonitors_get
    • Addedmonitors_list
    • Addedmonitors_sources_list
    • Addedmonitors_trigger
    • Addedmonitors_update
    • Changedtiktok_search_hashtag_list1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "hashtag",
        -  "trim"
        -]New value: +[
        +  "hashtag"
        +]
    • Changedtwitch_profile_videos_list1 field changed
      • changedInput schema / properties / filterBy / description
        Previous value: -"Optional filter for video type."New value: +"Optional filter for the type of Twitch videos to return. `archive`: full unedited past broadcasts (VODs). `highlight`: shorter clips curated/edited by the streamer from past broadcasts. `upload`: videos uploaded directly, not recorded from a live stream."
    • Changedweb_crawl_run1 field changed
      • removedInput schema / required
        Removed value: -[
        -  "url"
        -]
    • Changedweb_markdown_generate1 field changed
      • changedInput schema / properties / filter / description
        Previous value: -"Content filter strategy for markdown extraction. Setting this to `bm25` requires `query` to also be set."New value: +"Markdown extraction filter. `fit`: strip boilerplate and extract the main readable content. `raw`: full unfiltered page markdown, no content pruning. `bm25`: rank and return only the content most relevant to `query`, using the BM25 keyword-relevance algorithm — requires `query` to be set."
    • AddedwebhookDeliveries_redeliver
    • AddedwebhookEndpoints_create
    • AddedwebhookEndpoints_delete
    • AddedwebhookEndpoints_deliveries_list
    • AddedwebhookEndpoints_get
    • AddedwebhookEndpoints_list
    • AddedwebhookEndpoints_rotateSecret
    • AddedwebhookEndpoints_test
    • AddedwebhookEndpoints_update
  11. 165 tool updates
    • Changedauth_whoami1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedbilling_balance_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedbluesky_post_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedbluesky_profile_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedbluesky_profile_posts_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedfacebook_adLibrary_ad_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedfacebook_adLibrary_ads_search_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedfacebook_adLibrary_companies_search1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedfacebook_company_ads_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedfacebook_group_posts_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedfacebook_marketplace_item_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedfacebook_marketplace_locations_search1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedfacebook_marketplace_search_list5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / dateListed / description
        Previous value: -"Optional date-listed filter for marketplace listings."New value: +"Optional date-listed filter for marketplace listings. `1`/`last24Hours` both mean the last 24 hours, `7`/`last7Days` both mean the last 7 days, and `30`/`last30Days` both mean the last 30 days — these are separate values Facebook accepts for the same window; prefer the named variants (`last24Hours`, `last7Days`, `last30Days`) for clarity. `all` applies no date filter."
      • changedInput schema / properties / maxPrice / description
        Previous value: -"Optional maximum listing price."New value: +"Optional maximum listing price. Must be greater than or equal to `minPrice` when both are set."
      • changedInput schema / properties / minPrice / description
        Previous value: -"Optional minimum listing price."New value: +"Optional minimum listing price. Must be less than or equal to `maxPrice` when both are set."
      • changedInput schema / properties / sortBy / description
        Previous value: -"Optional sort order for marketplace listings."New value: +"Optional sort order for marketplace listings. `suggested`: Facebook's default relevance ranking. `distanceAscend`: nearest first. `creationTimeDescend`: newest listings first. `priceAscend`/`priceDescend`: lowest/highest price first."
    • Changedfacebook_post_comments_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedfacebook_post_comments_replies_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedfacebook_post_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedfacebook_post_transcript_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedfacebook_profile_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedfacebook_profile_photos_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedfacebook_profile_posts_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedfacebook_profile_reels_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedgithub_profile_activity_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedgithub_profile_contributions_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedgithub_profile_followers_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedgithub_profile_following_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedgithub_profile_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedgithub_profile_repositories_list2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / type / description
        Previous value: -"Repository type filter. Default: `owner`."New value: +"Repository type filter. `owner`: repos owned by the user. `all`: owned repos plus repos from organizations the user belongs to. `member`: only repos the user belongs to via organization membership (not owned by the user). Default: `owner`."
    • Changedgithub_repositories_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedgithub_trending_developers_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedgithub_trending_repositories_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedgoogle_adLibrary_ad_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedgoogle_adLibrary_advertisers_search1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedgoogle_company_ads_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedhackernews_comment_context_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedhackernews_feed_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedhackernews_item_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedhackernews_jobs_who_is_hiring_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedhackernews_maxitem_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedhackernews_search_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedhackernews_story_comments_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedhackernews_story_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedhackernews_updates_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedhackernews_user_comments_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedhackernews_user_favorites_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedhackernews_user_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedhackernews_user_submissions_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedinstagram_highlight_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedinstagram_post_comments_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Addedinstagram_post_download_get
    • Changedinstagram_post_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedinstagram_post_transcript_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedinstagram_profile_basic_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Addedinstagram_profile_engagement_get
    • Changedinstagram_profile_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedinstagram_profile_highlights_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedinstagram_profile_posts_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedinstagram_profile_reels_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedinstagram_reels_trending_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedinstagram_search_hashtag_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedinstagram_search_profiles_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedinstagram_search_reels_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlinkedin_adLibrary_ad_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlinkedin_adLibrary_ads_search_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlinkedin_company_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlinkedin_company_posts_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlinkedin_jobs_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlinkedin_jobs_search_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlinkedin_organization_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlinkedin_people_search_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlinkedin_post_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlinkedin_post_transcript_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlinkedin_posts_search_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlinkedin_profile_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlinkedin_profiles_posts_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedlinktree_profile_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changednl_ask_post1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedpinterest_board_pins_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedpinterest_pin_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedpinterest_profile_boards_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedpinterest_search_pins_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedreddit_post_comments_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedreddit_post_transcript_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedreddit_search_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedreddit_subreddit_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedreddit_subreddit_posts_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedreddit_subreddit_search_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedrumble_channel_videos_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedrumble_search_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedrumble_video_comments_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedrumble_video_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedrumble_video_transcript_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedsoundcloud_profile_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedsoundcloud_profile_tracks_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedsoundcloud_track_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedspotify_album_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedspotify_artist_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedspotify_track_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtelegram_channel_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtelegram_channel_post_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtelegram_channel_posts_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedthreads_post_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedthreads_profile_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedthreads_profile_posts_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedthreads_search_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedthreads_users_search1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtiktok_adLibrary_ad_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtiktok_adLibrary_ads_search_get3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / adFormat / description
        Previous value: -"Ad format filter for Top Ads."New value: +"Ad format filter for Top Ads. `spark-ads`: ads boosted from an organic creator/brand TikTok post. `non-spark-ads`: ads uploaded directly as ad creative, not boosted from an existing post."
      • changedInput schema / properties / orderBy / description
        Previous value: -"Sort metric for Top Ads. Default: `for-you`."New value: +"Sort metric for Top Ads. `cvr`: conversion rate. `ctr`: click-through rate. `play-2s-rate`/`play-6s-rate`: rate viewers played past the 2s/6s mark. Default: `for-you`."
    • Changedtiktok_feed_trending_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtiktok_music_videos_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtiktok_product_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtiktok_product_reviews_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtiktok_profile_audience_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Addedtiktok_profile_engagement_get
    • Changedtiktok_profile_followers_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtiktok_profile_following_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtiktok_profile_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtiktok_profile_live_check1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtiktok_profile_region_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtiktok_profile_showcaseProducts_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtiktok_profile_videos_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtiktok_search_hashtag_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtiktok_search_videos_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtiktok_shop_products_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtiktok_shop_products_search1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtiktok_song_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtiktok_users_search1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtiktok_video_comments_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtiktok_video_comments_replies_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Addedtiktok_video_download_get
    • Changedtiktok_video_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtiktok_video_transcript_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtruthsocial_post_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtruthsocial_profile_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtruthsocial_profile_posts_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtwitch_clip_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtwitch_profile_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtwitch_profile_schedule_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtwitch_profile_videos_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtwitter_community_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtwitter_community_tweets_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtwitter_hashtag_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtwitter_profile_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtwitter_profile_tweets_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtwitter_search_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtwitter_tweet_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtwitter_tweet_replies_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedtwitter_tweet_transcript_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedweb_ask_run1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedweb_crawl_run1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedweb_html_generate1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedweb_markdown_generate3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / cacheMode / description
        Previous value: -"Cache behavior. Default: `enabled`."New value: +"Cache behavior. `enabled`: read from cache if present, else fetch and write to cache. `bypass`: always fetch fresh, ignoring and not updating the cache. `write_only`: always fetch fresh, but write the result to cache without reading from it first. Default: `enabled`."
      • changedInput schema / properties / filter / description
        Previous value: -"Content filter strategy for markdown extraction."New value: +"Content filter strategy for markdown extraction. Setting this to `bm25` requires `query` to also be set."
    • Changedweb_search_run1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedyoutube_channel_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedyoutube_channel_shorts_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedyoutube_channel_videos_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedyoutube_community_post_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedyoutube_playlist_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedyoutube_search_hashtag_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedyoutube_search_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedyoutube_shorts_trending_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Addedyoutube_video_comments_analysis_get
    • Changedyoutube_video_comments_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedyoutube_video_comments_replies_list1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedyoutube_video_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
    • Changedyoutube_video_transcript_get1 field changed
      • addedInput schema / additionalProperties
        Added value: +false
  12. 31 tool updates
    • Changedfacebook_adLibrary_ad_get2 fields changed
      • changedInput schema / properties / includeTranscript / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / trim / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
    • Changedfacebook_marketplace_search_list21 fields changed
      • removedInput schema / properties / count / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / count / maximum
        Added value: +100
      • addedInput schema / properties / count / minimum
        Added value: +1
      • addedInput schema / properties / count / type
        Added value: +"integer"
      • removedInput schema / properties / lat / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / lat / maximum
        Added value: +90
      • addedInput schema / properties / lat / minimum
        Added value: +-90
      • addedInput schema / properties / lat / type
        Added value: +"number"
      • removedInput schema / properties / lng / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / lng / maximum
        Added value: +180
      • addedInput schema / properties / lng / minimum
        Added value: +-180
      • addedInput schema / properties / lng / type
        Added value: +"number"
      • removedInput schema / properties / maxPrice / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / maxPrice / minimum
        Added value: +0
      • addedInput schema / properties / maxPrice / type
        Added value: +"number"
      • removedInput schema / properties / minPrice / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / minPrice / minimum
        Added value: +0
      • addedInput schema / properties / minPrice / type
        Added value: +"number"
      • removedInput schema / properties / radiusKm / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / radiusKm / exclusiveMinimum
        Added value: +0
      • addedInput schema / properties / radiusKm / type
        Added value: +"number"
    • Changedfacebook_post_get2 fields changed
      • changedInput schema / properties / includeComments / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / includeTranscript / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
    • Changedgithub_profile_activity_list4 fields changed
      • removedInput schema / properties / year / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / year / maximum
        Added value: +2100
      • addedInput schema / properties / year / minimum
        Added value: +2008
      • addedInput schema / properties / year / type
        Added value: +"integer"
    • Changedgithub_profile_contributions_get4 fields changed
      • removedInput schema / properties / year / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / year / maximum
        Added value: +2100
      • addedInput schema / properties / year / minimum
        Added value: +2007
      • addedInput schema / properties / year / type
        Added value: +"integer"
    • Changedhackernews_search_list10 fields changed
      • changedInput schema / properties / frontPageOnly / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
      • addedInput schema / properties / pageSize / anyOf
        Added value: +[
        +  {
        +    "const": 10,
        +    "type": "number"
        +  },
        +  {
        +    "const": 20,
        +    "type": "number"
        +  },
        +  {
        +    "const": 30,
        +    "type": "number"
        +  },
        +  {
        +    "const": 50,
        +    "type": "number"
        +  }
        +]
      • changedInput schema / properties / pageSize / description
        Previous value: -"Hits per page. Default: 20."New value: +"Hits per page. Must be one of 10, 20, 30, 50. Default: 20."
      • removedInput schema / properties / pageSize / maximum
        Removed value: -9007199254740991
      • removedInput schema / properties / pageSize / minimum
        Removed value: --9007199254740991
      • removedInput schema / properties / pageSize / type
        Removed value: -"integer"
      • changedInput schema / properties / prefix / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / searchAuthor / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / searchStoryText / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / typoTolerance / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
    • Changedinstagram_post_get2 fields changed
      • changedInput schema / properties / downloadMedia / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / trim / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
    • Changedinstagram_search_reels_list4 fields changed
      • removedInput schema / properties / page / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / page / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / page / minimum
        Added value: +1
      • addedInput schema / properties / page / type
        Added value: +"integer"
    • Changedlinkedin_company_posts_list4 fields changed
      • removedInput schema / properties / page / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / page / maximum
        Added value: +7
      • addedInput schema / properties / page / minimum
        Added value: +1
      • addedInput schema / properties / page / type
        Added value: +"integer"
    • Changedlinkedin_jobs_search_list4 fields changed
      • removedInput schema / properties / limit / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / limit / maximum
        Added value: +1000
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • addedInput schema / properties / limit / type
        Added value: +"integer"
    • Changedlinkedin_profiles_posts_list7 fields changed
      • changedInput schema / properties / endDate / description
        Previous value: -"Optional end of the date range for posts to include."New value: +"Optional end of the date range for posts to include. Must be a valid ISO-8601 date-time. For profile URLs, date filtering applies only to LinkedIn articles."
      • removedInput schema / properties / limit / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / limit / maximum
        Added value: +200
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • addedInput schema / properties / limit / type
        Added value: +"integer"
      • changedInput schema / properties / onlyAuthoredPosts / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / startDate / description
        Previous value: -"Optional start of the date range for posts to include."New value: +"Optional start of the date range for posts to include. Must be a valid ISO-8601 date-time. For profile URLs, date filtering applies only to LinkedIn articles."
    • Changedpinterest_board_pins_list1 field changed
      • changedInput schema / properties / trim / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
    • Changedpinterest_pin_get1 field changed
      • changedInput schema / properties / trim / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
    • Changedpinterest_profile_boards_list1 field changed
      • changedInput schema / properties / trim / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
    • Changedpinterest_search_pins_list1 field changed
      • changedInput schema / properties / trim / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
    • Changedreddit_post_comments_list1 field changed
      • changedInput schema / properties / trim / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
    • Changedreddit_search_list1 field changed
      • changedInput schema / properties / trim / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
    • Changedthreads_post_get1 field changed
      • changedInput schema / properties / trim / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
    • Changedthreads_search_list1 field changed
      • changedInput schema / properties / trim / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
    • Changedtiktok_feed_trending_list1 field changed
      • changedInput schema / properties / trim / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
    • Changedtiktok_product_reviews_list4 fields changed
      • removedInput schema / properties / page / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / page / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / page / minimum
        Added value: +1
      • addedInput schema / properties / page / type
        Added value: +"integer"
    • Changedtiktok_profile_followers_list1 field changed
      • changedInput schema / properties / trim / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
    • Changedtiktok_shop_products_search4 fields changed
      • removedInput schema / properties / page / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / page / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / page / minimum
        Added value: +1
      • addedInput schema / properties / page / type
        Added value: +"integer"
    • Changedtiktok_video_comments_list1 field changed
      • changedInput schema / properties / trim / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
    • Changedtiktok_video_get3 fields changed
      • changedInput schema / properties / downloadMedia / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / getTranscript / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / trim / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
    • Changedtiktok_video_transcript_get1 field changed
      • changedInput schema / properties / useAiFallback / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
    • Changedtruthsocial_profile_posts_list1 field changed
      • changedInput schema / properties / includeReplies / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
    • Changedtwitter_hashtag_list4 fields changed
      • removedInput schema / properties / limit / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / limit / maximum
        Added value: +20
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • addedInput schema / properties / limit / type
        Added value: +"integer"
    • Changedtwitter_profile_tweets_list6 fields changed
      • changedInput schema / properties / includePinned / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / includeReplies / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "boolean"
        -  }
        -]New value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "0",
        +      "1",
        +      "true",
        +      "false"
        +    ],
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / limit / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / limit / maximum
        Added value: +100
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • addedInput schema / properties / limit / type
        Added value: +"integer"
    • Changedtwitter_search_list16 fields changed
      • removedInput schema / properties / limit / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / limit / maximum
        Added value: +20
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • addedInput schema / properties / limit / type
        Added value: +"integer"
      • removedInput schema / properties / minLikes / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / minLikes / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / minLikes / minimum
        Added value: +0
      • addedInput schema / properties / minLikes / type
        Added value: +"integer"
      • removedInput schema / properties / minReplies / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / minReplies / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / minReplies / minimum
        Added value: +0
      • addedInput schema / properties / minReplies / type
        Added value: +"integer"
      • removedInput schema / properties / minRetweets / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / minRetweets / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / minRetweets / minimum
        Added value: +0
      • addedInput schema / properties / minRetweets / type
        Added value: +"integer"
    • Changedweb_search_run4 fields changed
      • removedInput schema / properties / page / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "number"
        -  }
        -]
      • addedInput schema / properties / page / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / page / minimum
        Added value: +1
      • addedInput schema / properties / page / type
        Added value: +"integer"
  13. 13 tool updates
    • Changedfacebook_company_ads_list1 field changed
      • changedInput schema / properties / cursor / description
        Previous value: -"Opaque pagination cursor from a previous response (`data.page.nextCursor`)."New value: +"Opaque pagination cursor from a previous response."
    • Changedfacebook_group_posts_list1 field changed
      • changedInput schema / properties / cursor / description
        Previous value: -"Opaque pagination cursor from a previous response (`data.page.nextCursor`)."New value: +"Opaque pagination cursor from a previous response."
    • Changedfacebook_profile_photos_list1 field changed
      • changedInput schema / properties / cursor / description
        Previous value: -"Opaque pagination cursor from a previous response (`data.page.nextCursor`)."New value: +"Opaque pagination cursor from a previous response."
    • Changedfacebook_profile_posts_list1 field changed
      • changedInput schema / properties / cursor / description
        Previous value: -"Opaque pagination cursor from a previous response (`data.page.nextCursor`)."New value: +"Opaque pagination cursor from a previous response."
    • Changedfacebook_profile_reels_list1 field changed
      • changedInput schema / properties / cursor / description
        Previous value: -"Opaque pagination cursor from a previous response (`data.page.nextCursor`)."New value: +"Opaque pagination cursor from a previous response."
    • Changedgoogle_company_ads_list1 field changed
      • changedInput schema / properties / cursor / description
        Previous value: -"Opaque pagination cursor from a previous response (`data.page.nextCursor`)."New value: +"Opaque pagination cursor from a previous response."
    • Changedinstagram_profile_posts_list1 field changed
      • changedInput schema / properties / cursor / description
        Previous value: -"Opaque pagination cursor from a previous response (`data.page.nextCursor`)."New value: +"Opaque pagination cursor from a previous response."
    • Changedinstagram_profile_reels_list1 field changed
      • changedInput schema / properties / cursor / description
        Previous value: -"Opaque pagination cursor from a previous response (`data.page.nextCursor`)."New value: +"Opaque pagination cursor from a previous response."
    • Changedlinkedin_jobs_search_list3 fields changed
      • changedInput schema / properties / country / description
        Previous value: -"Optional ISO 3166-1 country code."New value: +"Optional ISO 3166-1 alpha-2 country code, e.g. \"GB\" or \"US\". Narrows an ambiguous `location` label to one country; leave unset when `location` is already a country name."
      • changedInput schema / properties / keyword / description
        Previous value: -"Search keyword for LinkedIn job listings."New value: +"Required. Search keyword for LinkedIn job listings — a job title, skill, or company term, e.g. \"typescript engineer\" or \"growth marketer\"."
      • changedInput schema / properties / location / description
        Previous value: -"Location label for the search."New value: +"Required. Location label as you would type it into LinkedIn's location box — a city, region, or country name, e.g. \"London\", \"Greater Seattle Area\", or \"United Kingdom\"."
    • Changedreddit_subreddit_posts_list1 field changed
      • changedInput schema / properties / cursor / description
        Previous value: -"Opaque pagination cursor from a previous response (`data.page.nextCursor`)."New value: +"Opaque pagination cursor from a previous response."
    • Addedsoundcloud_profile_get
    • Addedsoundcloud_profile_tracks_list
    • Addedsoundcloud_track_get
  14. 29 tool updates
    • Changedgithub_profile_activity_list1 field changed
      • changedInput schema / properties / year / description
        Previous value: -"Calendar year to read activity for. Defaults to the current year when omitted."New value: +"Calendar year to read activity for. Default: current calendar year."
    • Changedgithub_profile_contributions_get1 field changed
      • changedInput schema / properties / year / description
        Previous value: -"Calendar year for the contribution graph. Defaults to the current year when omitted."New value: +"Calendar year for the contribution graph. Default: current calendar year."
    • Changedgithub_profile_repositories_list1 field changed
      • changedInput schema / properties / type / description
        Previous value: -"Repository type filter. Defaults to owner."New value: +"Repository type filter. Default: `owner`."
    • Changedgithub_trending_developers_list1 field changed
      • changedInput schema / properties / since / description
        Previous value: -"Trending time window. Defaults to daily when omitted."New value: +"Trending time window. Default: `daily`."
    • Changedgithub_trending_repositories_list1 field changed
      • changedInput schema / properties / since / description
        Previous value: -"Trending time window. Defaults to daily when omitted."New value: +"Trending time window. Default: `daily`."
    • Changedgoogle_adLibrary_advertisers_search1 field changed
      • changedInput schema / properties / region / description
        Previous value: -"Optional two-letter country code to search in. Defaults to US when omitted."New value: +"Two-letter country code to search in. Default: `US`."
    • Addedhackernews_comment_context_get
    • Addedhackernews_feed_list
    • Addedhackernews_item_get
    • Addedhackernews_jobs_who_is_hiring_list
    • Addedhackernews_maxitem_get
    • Addedhackernews_search_list
    • Addedhackernews_story_comments_list
    • Addedhackernews_story_get
    • Addedhackernews_updates_get
    • Addedhackernews_user_comments_list
    • Addedhackernews_user_favorites_list
    • Addedhackernews_user_get
    • Addedhackernews_user_submissions_list
    • Changedinstagram_search_hashtag_list1 field changed
      • changedInput schema / properties / mediaType / description
        Previous value: -"Content filter. Use all for posts and Reels, or reels for Reels only. Defaults to all."New value: +"Content filter. Use `all` for posts and Reels, or `reels` for Reels only. Default: `all`."
    • Addedlinktree_profile_get
    • Changedreddit_subreddit_search_list2 fields changed
      • changedInput schema / properties / sort / description
        Previous value: -"Optional sort order for search results. Defaults to relevance when omitted."New value: +"Sort order for search results. Default: `relevance`."
      • changedInput schema / properties / timeframe / description
        Previous value: -"Optional time range filter for search results. Defaults to all when omitted."New value: +"Time range filter for search results. Default: `all`."
    • Changedtiktok_adLibrary_ads_search_get2 fields changed
      • changedInput schema / properties / orderBy / description
        Previous value: -"Sort metric for Top Ads. Defaults to for-you when omitted."New value: +"Sort metric for Top Ads. Default: `for-you`."
      • changedInput schema / properties / region / description
        Previous value: -"Country code for Top Ads results. Defaults to US when omitted."New value: +"Country code for Top Ads results. Default: `US`."
    • Addedtruthsocial_post_get
    • Addedtruthsocial_profile_get
    • Addedtruthsocial_profile_posts_list
    • Changedtwitter_profile_tweets_list3 fields changed
      • changedInput schema / properties / includePinned / description
        Previous value: -"Optional: include pinned tweets on the first page. Defaults to false."New value: +"Include pinned tweets on the first page. Default: false."
      • changedInput schema / properties / includeReplies / description
        Previous value: -"Optional: include reply tweets in the returned list. Defaults to false."New value: +"Include reply tweets in the returned list. Default: false."
      • changedInput schema / properties / limit / description
        Previous value: -"Optional page size. Defaults to 40 when omitted. Maximum supported value is 100."New value: +"Page size (maximum 100). Default: 40."
    • Changedweb_markdown_generate1 field changed
      • changedInput schema / properties / cacheMode / description
        Previous value: -"Cache behavior. Defaults to enabled."New value: +"Cache behavior. Default: `enabled`."
    • Changedweb_search_run1 field changed
      • changedInput schema / properties / page / description
        Previous value: -"Page number (1-based). Defaults to 1 when omitted."New value: +"Page number (1-based). Default: 1."

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Real-time LinkedIn, X (Twitter) and Reddit data for AI agents: profiles, companies, people search, tweets, subreddits, and search. Free start: self-mint a key in one call, no signup, no card.
    17
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides AI agents with unified access to 21 social media platforms and 105 endpoints for retrieving profiles, posts, comments, search results, trending content, and analytics without per-platform authentication.
    4
    190
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

B3.4/5.0
Disambiguation5/5

Each tool is clearly scoped to a specific platform and action (e.g., facebook_post_get vs instagram_post_get). Descriptions explicitly differentiate similar tools across platforms, and within-a-platform tools like tiktok_search_videos_list vs tiktok_search_hashtag_list have clear disambiguation notes.

Naming Consistency5/5

All 167 tools follow a strict `platform_resource_action` pattern (e.g., youtube_video_comments_list). No mixing of styles—snake_case throughout, with consistent verb ordering (get, list, search, etc.).

Tool Count2/5

The server has 167 tools, which is far beyond the typical well-scoped range of 3-15. While the broad multi-platform scope justifies many tools, this extreme number makes the tool surface overwhelming and difficult for an agent to navigate efficiently.

Completeness4/5

The tool set covers a wide range of platforms and operations including profile retrieval, post/video fetching, comments, search, transcripts, and ad library access. Minor gaps exist (e.g., no Facebook events or LinkedIn messaging), but the surface is comprehensive for a read-only data aggregation use case.