AIsa Social
Server Details
Your agent needs what people are posting — across X, Instagram, Reddit, Pinterest and YouTube at once, not five accounts and five rate limits.
What you can ask for • "What is being said about our brand this week on X and Reddit?" • "Find the creators posting about this category on Instagram and YouTube." • "Pull the replies and quotes on this tweet and the comments on that reel." • "What is trending in this country right now?" • "Which subreddits and hashtags keep coming up for this topic?"
How to use it Point any MCP client at https://mcp.aisa.one/social/mcp and sign in with OAuth — there is no key to create or paste. 56 read tools across five platforms: X/Twitter (users, tweets, communities, lists, Spaces, trends), Instagram (profiles, posts, reels, highlights, transcripts), Reddit (search, subreddits, comment trees), Pinterest (pins, boards, search) and YouTube search.
Why this rather than the source One login instead of five developer programmes, and no app review on any of them.
It is also a door to the rest The same login reaches 26 sources and 580+ operations. Measure the conversation here, then ask the same agent for the site traffic behind it or the people to contact — without adding a second server.
What it costs Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident.
Where else it reaches https://mcp.aisa.one/twitter-api/mcp · /instagram/mcp · /reddit/mcp · /pinterest/mcp · /youtube-search/mcp for one platform at a time; https://mcp.aisa.one/gtm/mcp adds Similarweb and Apollo.
- Status
- Healthy
- Uptime
- 93.4% over 41 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 62 tools
Most tools have clearly distinct platform/resource/action targets, and descriptions actively explain when to use one over another. There are still overlapping pairs, such as tweet replies v1 vs v2, user last tweets vs user tweet timeline, and raw Instagram posts vs digest, which can cause occasional misselection.
The dominant pattern is consistent snake_case with platform/resource prefixes, especially across Instagram, Pinterest, Reddit, Twitter, and YouTube tools. Deviations exist in meta tools like account, search, use, and digest tools like instagram_posts_digest, but the naming remains broadly predictable.
With 62 tools, the surface is far beyond a well-scoped agent toolset, even for a multi-platform social-data server. The many platform endpoints, near-duplicate variants, and a deprecated use tool make the set unwieldy and raise selection and maintenance costs.
The read-only social research surface is broad, covering profiles, posts, comments, reels, searches, boards, subreddits, communities, lists, trends, and YouTube search, plus discovery and billing flow. Minor gaps remain, such as expanding Instagram comment replies, YouTube video/channel detail beyond search, and pagination in some digest tools.
Available Tools
62 toolsaccountShow account and usageARead-onlyInspect
Who am I, what can I use, how much can I spend: the key, the account balance, the Go-to-Market wallet when one is active, and usage for today, 7 days and 30 days. Free; needs the Authorization header. Call it to verify a new connection or to explain a 402. ok is true only when the balance was read; otherwise each entry of errors says what to do in next_step.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the readOnlyHint/openWorldHint/destructiveHint annotations: the call is free, it requires the Authorization header, and it discloses result semantics ('ok is true only when the balance was read; otherwise each entry of errors says what to do in next_step'). That tells an agent how to interpret partial failure, which annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with what the agent gets, followed by cost/auth, then call triggers, then result interpretation. No sentence is redundant and none could be dropped without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with an output schema already present, the description covers the remaining gaps: cost, auth requirement, invocation triggers, and the ok/errors/next_step contract. Nothing an agent needs to call or interpret it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the description has nothing parameter-level to compensate for, and the schema is fully covered. A 4 rather than 5 reflects that it adds no input-syntax detail, though none is possible here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete resource set (identity/key, account balance, Go-to-Market wallet, usage over 1/7/30 days) rather than restating the name. It is clearly distinguishable from every sibling, which are all Reddit, batch, or search tools. An agent knows exactly what it will learn by calling it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit triggering conditions are given: 'Call it to verify a new connection or to explain a 402.' That is a strong when-to-use statement. It stops short of 5 because it names no alternative tool or a when-not condition, though the sibling list offers no obvious competing diagnostic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_get_schemaGet AIsa tool schemas in one batchARead-onlyIdempotentInspect
Retrieve schemas for 1 to 20 exact tool names from search. Build arguments from successful schemas, then call batch_quote. Do not call batch_use yet. Use tool names exactly as search returns them, without a client prefix such as mcp__aisa__. Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.
| Name | Required | Description | Default |
|---|---|---|---|
| tools | Yes | Exact tool names returned by search whose complete contracts are needed. Never invent tool names. | |
| session_id | No | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. | |
| include_documentation | No | Return the complete immutable public OpenAPI operation, referenced declarations, provenance and scoped completeness. Documentation does not change execution support. | |
| include_response_schema | No | Return the complete response_schema. Defaults to false. | |
| include_arguments_schema | No | Return the complete arguments_schema. Defaults to true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tools | Yes | |
| session_id | Yes | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
| error_count | Yes | |
| total_count | Yes | |
| success_count | Yes | |
| next_steps_guidance | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description is not required to restate it. It adds genuine operational context: the batch_use prohibition, exact-name/prefix requirements, and session reuse semantics. It does not cover failure handling when names are invalid, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and size limit, and every sentence carries workflow value. The session_id sentence duplicates the schema's own parameter description, which is minor redundancy rather than bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only batch retrieval tool with an output schema, the description supplies the orchestration context an agent needs (source of names, next steps, session handling) without needing to explain return values. Nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds real meaning beyond the schema by constraining names to those returned by search and warning against a client prefix such as mcp__aisa__, which is not encoded in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Retrieve schemas for 1 to 20 exact tool names') and pins the source of those names to search. This clearly separates it from siblings like search (finds tools), batch_quote, and batch_use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly sequences the workflow: build arguments from successful schemas, then call batch_quote, and 'Do not call batch_use yet.' This is an explicit when-to-use and when-not-to-use instruction naming the alternative siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_quoteQuote published AIsa tools without executing themARead-onlyIdempotentInspect
Obtain AIsaServices cost quotes for 1 to 20 published tools without executing them. Same input as batch_use: exact tool names and schema-valid arguments. Never falls back to execution. The response reports auto_execute_eligible and auto_execute_threshold_micros_usd. auto_execute_eligible waives only the extra cost-confirmation step and does not override a user prohibition on execution, a narrower scope, or a tighter budget limit. Quotes are price observations, not authorization grants. Use tool names exactly as search returns them, without a client prefix such as mcp__aisa__. Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.
| Name | Required | Description | Default |
|---|---|---|---|
| calls | Yes | ||
| search_id | No | Optional search correlation identifier returned by search. | |
| session_id | No | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | |
| batch_id | Yes | |
| session_id | Yes | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
| error_count | Yes | |
| total_count | Yes | |
| success_count | Yes | |
| next_steps_guidance | Yes | Deterministic next-step instructions derived from this result. Not an authorization grant. |
| auto_execute_eligible | No | True when the worst-known total of successful USD quotes is at or below auto_execute_threshold_micros_usd. A non-USD successful quote makes the batch ineligible. Present on quote responses. |
| auto_execute_threshold_micros_usd | No | Configured auto-execute threshold in micro-USD. 0 disables automatic execution. Present on quote responses. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the readOnly/idempotent annotations by explaining that quotes are price observations rather than authorization grants, and precisely delimiting what auto_execute_eligible does and does not waive (user prohibition, narrower scope, tighter budget). It also guarantees no execution fallback, which is the key behavioral risk for this tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and most sentences carry distinct rules (no fallback, eligibility limits, naming, session reuse). It is on the long side and the argument-shape constraint is stated twice in spirit, but little is truly wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation isn't required, yet the description still flags the two response fields that matter for a downstream decision. Combined with session and naming guidance, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 67% schema coverage the schema already documents each parameter, so the description earns credit only for added meaning: exact-name rules for 'tool', session_id reuse semantics, and the 1-to-20 argument-shape parallel with batch_use. It doesn't clarify search_id beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Obtain AIsaServices cost quotes for 1 to 20 published tools') plus the crucial scope qualifier 'without executing them.' It is immediately distinguishable from the sibling batch_use, which executes rather than quotes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the parallel sibling ('Same input as batch_use') and draws the boundary ('Never falls back to execution'). It also gives operational conditions: use names exactly as search returns them, strip any mcp__aisa__ prefix, and reuse session_id from Search for the task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_useExecute published AIsa toolsADestructiveInspect
Billable API calls can incur substantial charges. Never call before a successful batch_quote for the same tools and arguments. Execute only when that quote response reports auto_execute_eligible=true for these calls, or when explicit user authorization covers that cost and risk. auto_execute_eligible waives only the extra cost-confirmation step; it does not override a user prohibition on execution, a narrower scope, or a tighter budget limit. Re-quote if tools, arguments, or scope change. Execute 1 to 20 independent published-tool calls; never silently retry. A missing or failed quote is not free. Use tool names exactly as search returns them, without a client prefix such as mcp__aisa__. Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.
| Name | Required | Description | Default |
|---|---|---|---|
| calls | Yes | ||
| search_id | No | Optional search correlation identifier returned by search. | |
| session_id | No | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | |
| batch_id | Yes | |
| session_id | Yes | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
| error_count | Yes | |
| total_count | Yes | |
| success_count | Yes | |
| next_steps_guidance | Yes | Deterministic next-step instructions derived from this result. Not an authorization grant. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover mutability, destructiveness, and open-world behavior. The description adds critical business logic: billable calls, quote dependency, the meaning of auto_execute_eligible (waives only cost confirmation, not user prohibitions), and no silent retry. It doesn't detail rate limits or return format, but with an output schema present, that's acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loads the cost warning, but it packs many separate instructions into one block, making it less scannable. Some sentences like 'A missing or failed quote is not free' add value, but the overall flow could be better structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the destructive, open-world annotations and the presence of an output schema, the description covers the essential preconditions and behavioral constraints. It could mention error handling or partial failure behavior, but the core guidance is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the description adds important semantics: tool names must be exact without client prefix, session_id reuse guidance, and 1-20 call limit. It doesn't explain search_id, but the schema description for search_id is already clear enough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Execute 1 to 20 independent published-tool calls', and the title matches. It distinguishes itself from batch_quote by requiring a quote first, but doesn't explicitly contrast with the singular 'use' sibling, though that's implied by 'batch'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use and when-not-to-use conditions: only after a successful batch_quote with auto_execute_eligible=true or explicit user authorization. It also states re-quote conditions and prohibits silent retries, leaving little ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_basic_profilebasic-profileARead-onlyIdempotentInspect
Returns a compact public profile for a numeric Instagram user id, about 4 KB against the 380 KB of get_instagram_profile. Flat, already-normalised fields: username, full_name, biography, follower_count, following_count, is_verified, is_private, category, profile_pic_url, hd_profile_pic_url_info, bio_links, external_url and pk. Prefer this endpoint whenever the id is in hand; obtain it from data.user.id in get_instagram_profile, from id in get_instagram_search_profiles, or from the owner of any post. Use get_instagram_profile only when a handle is all that is available.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | Instagram user id | |
| cache_max_age | No | If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with "cached": true and a "cached_at" timestamp). Otherwise, scrape a live result (1 credit). [See the Caching page for details.](https://docs.scrapecreators.com/caching) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds genuinely new behavioral context — the ~4 KB footprint versus 380 KB, the flat/already-normalised shape, and the injected billing estimate. It doesn't discuss rate limiting or the credit-free cached path, which the schema covers but the description does not reinforce.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and size comparison, then the selection rule, then id sourcing — a sensible order with little filler. It runs long and the HTML-comment pricing block is noise, but that block appears to be machine-injected boilerplate rather than authorial padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no prose explanation, and the schema itself carries the cache_max_age semantics. Given that, the description covers everything an agent needs: what it returns, how big it is, when to prefer it, and where the id comes from.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 and the schema already documents cache_max_age and its enums. The description still adds value beyond the schema by specifying the id is 'numeric' and by telling the agent where to obtain it (data.user.id, id from search, post owner).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Returns a compact public profile for a numeric Instagram user id'), quantifies the payload (~4 KB vs 380 KB), and explicitly separates itself from the sibling get_instagram_profile. It also names a second sibling (get_instagram_search_profiles) as an id source, so an agent can route without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit decision rule: 'Prefer this endpoint whenever the id is in hand' and 'Use get_instagram_profile only when a handle is all that is available.' It even enumerates the three places the required id can be sourced from, so the prerequisites are fully closed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_media_transcripttranscriptARead-onlyIdempotentInspect
Transcribes the speech in a public Instagram video or reel and returns transcripts, each with id, shortcode and the transcribed text. The target must be a video under two minutes long: a photo post returns 400 bad_request, so when the URL's type is unknown check is_video with get_instagram_post first. Measured at 13 seconds, the slowest call in this API, for about 1 KB back. For the caption the author wrote rather than the words spoken in the video, read edge_media_to_caption from get_instagram_post.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Instagram post or reel URL | |
| cache_max_age | No | If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with "cached": true and a "cached_at" timestamp). Otherwise, scrape a live result (By default, successful AI up to 120 seconds costs a flat 1 credit per request; over 120 seconds requires allow_long_transcription=true, which bills ALL successful AI at 10 credits per started minute, including short videos; empty AI results and errors cost 0 credits). [See the Caching page for details.](https://docs.scrapecreators.com/caching) | |
| allow_long_transcription | No | Paid opt-in, enabled only by the literal query value 'true' (allow_long_transcription=true). Defaults to false when omitted; other values do not enable paid mode. By default, successful AI transcription of videos up to 120 seconds (two minutes, inclusive) costs a flat 1 credit per request. Over 120 seconds, videos cannot be AI-transcribed by default. Set allow_long_transcription=true to opt into paid AI with no fixed duration cap: ALL successful AI transcriptions in this mode cost 10 credits per started minute, including short videos: 10 * ceil(duration_seconds / 60). For example, 177 seconds costs 30 credits and an opted-in 60 seconds costs 10 credits. Empty AI results and errors cost 0 credits for AI transcription. This flag does not force AI and does not enable transcription or AI fallback by itself. Keep get_transcript=true or use_ai_as_fallback=true where required by the endpoint. Returned native captions still cost 1 credit on dedicated transcript routes, even for long videos with this flag; on detail routes they leave the base price unchanged. These routes remain synchronous. Allow at least 30 seconds on your client. Paid long transcription can exceed resource limits or timeouts, so successful transcription of long videos is not guaranteed. Provider reference (supplier schema): `{"default":false,"type":"boolean"}`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive), and the description adds behavioral facts the annotations cannot convey: the 400 error on photo posts, the ~13 second latency as the slowest call in the API, and the ~1 KB payload size. These are exactly the beyond-annotation details that change an agent's calling strategy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose, then constraints, then alternative routing, in four tight sentences. The appended pricing comment block is boilerplate rather than task-relevant guidance, which slightly dilutes an otherwise waste-free entry.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, yet the description still names the return shape (id, shortcode, transcribed text), and it covers the operational envelope: duration cap, error behavior on photo posts, latency, and payload size. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the two non-trivial parameters (cache_max_age, allow_long_transcription) carry extensive inline documentation including enum values, billing semantics and the 'true'-only opt-in rule. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (transcribes the speech) and resource (public Instagram video or reel), and explicitly distinguishes itself from get_instagram_post by contrasting spoken words with the author's caption. An agent can separate this from the transcript-adjacent siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a hard precondition (video under two minutes), the failure mode when violated (photo post returns 400 bad_request), the diagnostic step when URL type is unknown (check is_video with get_instagram_post first), and names an alternative tool for a different need (caption via edge_media_to_caption). When-to-use and when-to-use-something-else are both explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_postpostARead-onlyIdempotentInspect
Returns full metadata for one public post or reel identified by its URL, under data.xdt_shortcode_media: shortcode, is_video, video_url, video_duration, has_audio, display_url, dimensions, accessibility_caption, edge_media_to_caption for the caption text, and owner. Measured at about 197 KB. Setting download_media=true also mirrors the media to permanent storage and costs ten credits rather than one, so leave it off unless the files are needed. For the comment thread call get_instagram_post_comments with the same URL, and for the spoken words in a video call get_instagram_media_transcript.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Instagram post or reel URL | |
| trim | No | Set to true to get a trimmed response | |
| region | No | 2 letter country code to set the proxy in | |
| cache_max_age | No | If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with "cached": true and a "cached_at" timestamp). Otherwise, scrape a live result (1 credit). [See the Caching page for details.](https://docs.scrapecreators.com/caching) | |
| download_media | No | Set to true to download the video/images and get back permanent Supabase URLs. Costs 10 credits if media is found, 1 credit otherwise. | |
| include_play_count | No | Set to false to omit `video_play_count` and skip its additional fetch for a faster response. Defaults to true. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/idempotent/non-destructive profile, but the description goes further by disclosing response payload location (data.xdt_shortcode_media), approximate response size (~197 KB), and the side effect plus credit cost of download_media (mirrors media to permanent storage, 10 credits vs 1). It does not discuss rate limits or auth requirements, but the added operational cost/size context is genuinely useful beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and routing are front-loaded, and every sentence carries operational information. However, the long enumeration of output fields in the first sentence is largely redundant given the tool has an output schema, making it denser than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return structure, and it still supplies size, cost, caching-adjacent trade-offs, and sibling routing. An agent has everything needed to decide whether to call this tool and how to configure it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters (including cache_max_age semantics and download_media cost) are already documented in the schema. The description reinforces the download_media cost/default trade-off but adds no syntax or behavior that the schema does not already carry, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb (returns), resource (full metadata for one public post or reel), and identity mechanism (by URL). It is immediately distinguishable from siblings like get_instagram_post_comments and get_instagram_media_transcript, which the description itself names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing rules are provided: call get_instagram_post_comments for the comment thread and get_instagram_media_transcript for spoken words in a video. It also gives a clear when-not for a costly parameter ('leave it off unless the files are needed'), so the agent knows both alternatives and cost trade-offs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_post_commentscommentsARead-onlyIdempotentInspect
Returns the comments on a public post or reel by URL in an already-normalised shape: comments, each with id, text, comment_like_count, child_comment_count, created_at and a nested user, plus cursor to page. Measured at about 10 KB, one of the few small responses in this API. Only top-level comments are returned; child_comment_count reports how many replies a comment has but the replies themselves are not included, and there is no endpoint that expands them. For the post itself, its caption, view counts and video URL, call get_instagram_post with the same URL.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The URL of the post or reel to get comments from | |
| cursor | No | The cursor to get more comments. Get 'cursor' from previous response. | |
| include_replies | No | Set to true to include replies for every returned comment. This always costs 15 credits because each comment requires a separate Instagram replies request. You will still be charged 15 credits if no replies are returned. This is much slower and may time out at 29 seconds. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, yet the description adds substantial extra context: the normalised response shape, approximate ~10 KB payload size, cursor paging, and the key constraint that only top-level comments are returned while child_comment_count merely reports reply counts. This is behavioural detail far beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and shape, and each sentence carries information (shape, size, pagination, reply limitation). The pricing boilerplate and the 'one of the few small responses' remark are the only mild padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations plus an output schema present, the core safety and return-shape burdens are covered, and the description still enriches them. It is slightly incomplete/inconsistent regarding how include_replies reconciles with the claim that replies cannot be expanded.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents url, cursor and include_replies, and the description adds little parameter-specific meaning. There is a mild tension: the description says replies 'are not included, and there is no endpoint that expands them,' while the schema exposes include_replies to fetch replies, which could confuse an agent about whether replies are retrievable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns the comments on a public post or reel by URL'), and names the sibling it is not for post-level data ('call get_instagram_post'). An agent can distinguish this from the sibling without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent to get_instagram_post when the post's caption/view counts/video URL is wanted, giving a clear alternative selection rule. However it gives no guidance on when to prefer this over get_instagram_user_posts or the digest tools for broader comment needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_profileprofileARead-onlyIdempotentInspect
Returns the full public profile for an Instagram handle, forwarded from Instagram's own web API. Counts sit under data.user.edge_followed_by.count and data.user.edge_follow.count, alongside biography, bio_links, external_url, full_name, is_verified, is_private, highlight_reel_count, the numeric id, and the twelve most recent posts under data.user.edge_owner_to_timeline_media.edges. Measured at about 380 KB; trim=true saves under one percent, so do not rely on it to shrink the payload. When the numeric id is already known, get_instagram_basic_profile returns the same headline numbers in about 4 KB.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| trim | No | Set to true to get a trimmed response | |
| handle | No | Instagram handle | |
| cache_max_age | No | If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with "cached": true and a "cached_at" timestamp). Otherwise, scrape a live result (1 credit). [See the Caching page for details.](https://docs.scrapecreators.com/caching) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), yet the description adds substantive behavior: an approximate payload size (~380 KB), the counterintuitive finding that trim saves under 1% and shouldn't be relied on, and the exact response paths where counts and posts live. This is meaningful context an agent cannot get from the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core content is front-loaded and every sentence carries information: response shape, size, trim caveat, and the cheaper alternative. The trailing pricing boilerplate adds length but is a platform-injected block rather than author prose, so it only marginally detracts.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation is not strictly required, yet the description still maps the key fields to their JSON paths. Combined with the size estimate, trim caveat, and alternative-tool routing, an agent has everything needed to call this correctly and predict the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description goes beyond the schema by disclosing that the trim parameter is effectively useless for shrinking the payload — information that directly contradicts the optimistic schema text 'Set to true to get a trimmed response' — and by naming where the handle's data surfaces. cache_max_age is left entirely to the schema, which documents it well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns the full public profile for an Instagram handle') and identifies the upstream source. It explicitly distinguishes itself from the sibling get_instagram_basic_profile, so an agent can route correctly without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit alternative with its selecting condition: 'When the numeric id is already known, get_instagram_basic_profile returns the same headline numbers in about 4 KB.' It also warns that trim=true is not a viable way to reduce payload. It does not address other profile-adjacent siblings (instagram_profile_digest, get_instagram_user_posts), which keeps it 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.
get_instagram_reels_searchsearchARead-onlyIdempotentInspect
Searches reels by keyword through Google rather than Instagram's login-gated search, returning reels with shortcode, url, caption, video_url, video_duration, video_play_count, video_view_count, like_count, comment_count, owner, location and taken_at, plus next_page. Because the index is Google's, coverage is what Google has indexed publicly, not everything on Instagram, and date_posted narrows to a relative window. Measured at about 87 KB and 8 seconds, with all four engagement counts populated. Use get_instagram_search_hashtag to search a specific hashtag, and get_instagram_reels_trending for what is popular right now with no query at all.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | The page number to return. | |
| limit | No | ||
| query | No | The keyword to search for | |
| date_posted | No | Optional Google-search date filter. Runtime confirmed with `last-hour`; omit this parameter if a provider search window is unavailable. Provider reference (supplier schema): `{"enum":["last-hour","last-day","last-week","last-month","last-year"],"type":"string"}`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations (readOnly/openWorld/idempotent) by disclosing coverage limits ('what Google has indexed publicly, not everything on Instagram'), measured payload size (~87 KB) and latency (~8s), and that all four engagement counts are populated. It does not cover auth requirements or pagination depth behavior, so it stops short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: purpose and mechanism first, then caveats, then routing to siblings. The exhaustive enumeration of return fields partly duplicates the existing output schema and is the one sentence that does not fully earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a rich output schema and full annotations, the description fills the remaining gaps an agent needs: data-coverage caveat, latency/size expectations, and alternative tool routing. Only minor parameter-level detail (page/limit behavior) is left unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so the baseline is already anchored at 3. The description adds meaning by clarifying that date_posted 'narrows to a relative window' and by framing query as the keyword driver; page/limit still carry no description beyond their schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (searches reels by keyword) and immediately distinguishes itself from siblings by naming the mechanism ('through Google rather than Instagram's login-gated search'). An agent can identify this tool's niche without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes to alternatives with their selecting conditions: get_instagram_search_hashtag for a specific hashtag, get_instagram_reels_trending for what is popular with no query. This is exactly the when/when-not/alternative guidance the dimension asks for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_reels_trendingreels-trendingARead-onlyIdempotentInspect
Returns the reels Instagram publishes on its public instagram.com/reels page, in a normalised shape: reels, each with shortcode, url, caption, like_count, comment_count, video_url, image_url, media_type, taken_at and the owning user. Instagram serves a small batch at a time and successive batches overlap, so call repeatedly and de-duplicate on shortcode. Measured at 30 reels and about 411 KB, where play_count and ig_play_count came back null on every item, unlike get_instagram_reels_search which populates them. Takes no parameters and cannot be filtered; to search by topic use get_instagram_reels_search.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, openWorld), yet the description adds substantial behavior: batch pagination with overlapping successive batches requiring dedup on shortcode, measured payload size (~411 KB / 30 reels), and the caveat that play_count/ig_play_count come back null here unlike in get_instagram_reels_search. That is real, non-obvious operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what it returns, then pagination/dedup behavior, then routing to the sibling. Dense but every clause carries information; the embedded field enumeration and the injected pricing comment add bulk without adding invocation guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, output-schema-backed tool, everything an agent needs is present: scope, pagination/dedup requirement, known null fields, size expectations, and the correct alternative for filtered searches. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. The description reinforces this by stating it takes no parameters and cannot be filtered, which prevents an agent from inventing filter arguments, but there is no further parameter detail to add.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns the reels Instagram publishes on its public instagram.com/reels page') plus the normalized output shape. It explicitly distinguishes itself from get_instagram_reels_search and implicitly from get_instagram_user_reels by scope (public trending page vs topic search vs a user's reels).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit operational guidance: 'call repeatedly and de-duplicate on shortcode' because batches overlap, plus 'Takes no parameters and cannot be filtered; to search by topic use get_instagram_reels_search.' Both the when and the when-not (with a named alternative) are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_search_hashtagsearch-hashtagARead-onlyIdempotentInspect
Finds public posts carrying a hashtag through Google, returning hashtag, media_type, cursor and posts in the same normalised shape as get_instagram_reels_search: shortcode, url, caption, like_count, comment_count, video_play_count, video_view_count, owner, location and taken_at. The leading # is optional. Set media_type=reels to narrow to reels, or all for posts and reels together. Note that cursor here is the next Google results page number rather than an Instagram cursor. Measured at about 78 KB for ten posts. To search caption keywords rather than a hashtag, use get_instagram_reels_search.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | The cursor returned by the previous response. In this version, it is the next Google results page number. | |
| hashtag | No | The hashtag to search for. Include or omit the #. | |
| media_type | No | Use all to search public posts and reels, or reels to only return reels. Defaults to all. | |
| date_posted | No | Only return Google-indexed posts found in this relative window. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world and non-destructive, yet the description adds non-obvious behavior: results are Google-indexed rather than direct Instagram data, the cursor is a Google results page number rather than an Instagram cursor, and payload size is about 78 KB for ten posts. The cursor quirk in particular is exactly the kind of detail that prevents misuse.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose, return shape, enum behavior, the cursor caveat and the alternative are all front-loaded with no filler. It is densely packed into a single block rather than cleanly segmented, and the injected pricing block adds bulk, but every sentence of the authored text earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, full annotation coverage and 100% schema description coverage, the description already goes further by naming the normalized return fields and the size/cursor behavior. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents hashtag, cursor, media_type and date_posted; the description mostly restates them (optional '#', all vs reels). It adds little parameter meaning beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Finds public posts carrying a hashtag through Google') plus the exact scope of coverage. It names the sibling it is not (get_instagram_reels_search) and explains the shared normalized shape, so an agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear routing guidance: media_type=reels vs all, and an explicit alternative ('To search caption keywords rather than a hashtag, use get_instagram_reels_search'). It stops short of stating exclusions or prerequisites (e.g., hashtag is not required), so it is strong context rather than a full when/when-not matrix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_search_profilessearch-profilesARead-onlyIdempotentInspect
Searches Google for public Instagram profiles matching a keyword or bio phrase and returns profiles with username, full_name, biography, follower_count, following_count, media_count, is_verified, is_private, category_name, external_url, bio_links, url, the numeric id, and matched_from, which records whether the hit came from a profile page or from a post. google_title and google_description carry the underlying search result. Measured at about 18 KB and 13 seconds. The numeric id feeds get_instagram_basic_profile directly. To search posts rather than people, use get_instagram_search_hashtag or get_instagram_reels_search.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Bio or caption keyword/phrase to search for. | |
| cursor | No | The cursor returned by the previous response. In this version, it is the next Google results page number. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), yet the description still adds meaningful traits: the source is Google (open-world scraping, not the Instagram API), the measured payload/latency (~18 KB, ~13 s), and the matched_from field that explains why a profile appeared. Rate limits and failure behavior are not covered, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and routing are front-loaded and the performance metrics are compact, but the long enumeration of return fields is largely redundant with the existing output schema and consumes most of the description's length. It could be trimmed to keep only the fields that inform selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the description still supplies the source of the data, cost/latency expectation, sibling routing, and the chaining target for the returned id. Nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, and the description adds no syntax or format detail beyond restating 'keyword or bio phrase'. The cursor/pagination parameter is not addressed at all. Baseline 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Searches Google for public Instagram profiles matching a keyword or bio phrase') and enumerates the returned identity fields, so the agent knows exactly what it gets back. It also distinguishes itself from siblings by naming the post-search alternatives, so an agent can pick correctly without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit exclusion ('To search posts rather than people, use get_instagram_search_hashtag or get_instagram_reels_search') and a downstream chaining rule ('The numeric id feeds get_instagram_basic_profile directly'). Both when-to-use and when-not-to-use are stated rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_song_reelsreelsARead-onlyIdempotentInspect
Returns the reels that use one audio track, as raw Instagram media objects under reels, with cursor and has_more for paging. There are two confirmed ways to obtain audio_id: the number in an instagram.com/reels/audio// URL, and clips_metadata.original_sound_info.audio_asset_id on any reel returned by get_instagram_user_reels. Measured at about 177 KB for five reels, in the same raw shape as get_instagram_user_reels rather than the normalised shape of the search endpoints. To find reels by keyword instead of by sound, use get_instagram_reels_search.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Pagination cursor returned by Instagram from the previous response. | |
| audio_id | No | The audio id from the Instagram audio page URL. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, openWorld), and the description adds real behavior beyond them: raw Instagram media objects under a 'reels' key, cursor/has_more paging, and a measured payload size (~177 KB for five reels). It also discloses that the response shape matches get_instagram_user_reels rather than the normalised search-endpoint shape, which is non-obvious and useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then progressively more specific detail (shape, acquisition paths, size, alternative tool). It is dense but every content sentence carries information; the appended pricing block is boilerplate rather than authored prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be doc-dumped, yet the description still orients the agent on response shape and paging. The one residual gap is that audio_id is technically optional in the schema but effectively the tool's subject, and the description never says what happens if it is omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes beyond the schema by explaining how audio_id is obtained and where it lives on other responses. Cursor semantics are only echoed from the schema rather than extended.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+filter: 'Returns the reels that use one audio track.' It explicitly names the sibling it is not (get_instagram_reels_search for keyword-based discovery), so an agent can distinguish it without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete selection guidance: use this when you have an audio_id, use get_instagram_reels_search when you want keyword search. It also supplies two confirmed acquisition paths for audio_id (the /reels/audio/<id>/ URL number and clips_metadata.original_sound_info.audio_asset_id), which removes the main prerequisite uncertainty.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_user_embedembedARead-onlyIdempotentInspect
Returns Instagram's official profile embed widget for a handle as a single html string, ready to drop into a web page. Measured at about 206 KB, nearly all of it inlined markup and styling, so treat the result as something to store or render rather than something to read. It carries no structured profile data at all: for follower counts, biography or bio links use get_instagram_basic_profile when the numeric id is known, or get_instagram_profile when only the handle is.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | No | Instagram handle |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), yet the description adds genuinely new traits: the ~206 KB payload size, the fact that it is nearly all inlined markup and styling, and that it contains zero structured profile data. These are the details that change how an agent handles 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The author-written text is tight and front-loaded: purpose first, then handling advice, then the alternative tools. The injected pricing banner adds length the author does not control, which keeps this just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description goes further by characterizing the payload's size and composition. For a single-parameter read tool with full annotation coverage, nothing an agent needs is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'handle' parameter, so the schema already carries the semantics. The description mentions the handle only in passing and adds no format or validation detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns Instagram's official profile embed widget for a handle as a single html string') and immediately distinguishes itself from data-returning siblings by noting it carries no structured profile data. An agent can identify the tool's output shape without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent to alternatives: get_instagram_basic_profile when the numeric id is known, get_instagram_profile when only the handle is. It also gives a usage posture ('treat the result as something to store or render rather than something to read'), which is exactly the when/when-not guidance needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_user_highlight_detaildetailARead-onlyIdempotentInspect
Returns the stories inside one highlight album: reel_type, latest_reel_media, the owning user, and items, each a raw Instagram story media object. Pass the bare numeric id from get_instagram_user_highlights. The response echoes that id back in the prefixed form highlight:, and feeding the prefixed form to this endpoint returns 404 with a message blaming deletion or a private account, which points at the wrong cause; send the bare number. Measured at 630 KB for an album of 38 stories, so size scales with the album.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Highlight ID. Use `/instagram/user/highlights` to discover current highlight IDs for a public account. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive, but the description adds real behavioral context: the response echoes the id in prefixed form, the 404 misattribution gotcha, and measured payload size (~630 KB for 38 stories) that scales with the album. This is exactly the kind of beyond-annotations disclosure that earns a top score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then the parameter gotcha, then the failure mode, then the size note. Every sentence carries actionable information; nothing is padding despite the density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no elaboration, yet the description still names key fields. Combined with the ID-format warning and size scaling, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, yet the description adds the critical semantics the schema omits: the id must be the bare numeric form from get_instagram_user_highlights, and the prefixed highlight:<id> form yields a 404 whose message misleadingly blames deletion or a private account. This is meaningful parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns the stories inside one highlight album') and enumerates the returned fields, which cleanly separates it from the sibling list-level get_instagram_user_highlights. An agent can tell exactly what this tool does versus its siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes the agent to get_instagram_user_highlights as the source of valid IDs and implies this tool is the per-album follow-up. It does not state explicit exclusions or when not to use it, but the upstream/downstream relationship is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_user_highlightshighlightsARead-onlyIdempotentInspect
Lists the story highlight albums on a public profile. Returns highlights, each with the numeric id, title, cover_media.thumbnail_src, cover_media_cropped_thumbnail and owner. Small and quick at about 6 KB, which makes it a cheap way to see whether an account keeps highlights at all. This is the only source of a highlight id, and get_instagram_user_highlight_detail requires the bare numeric id exactly as returned here. Pass user_id rather than handle for a faster response.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | No | Instagram handle. Use user_id for faster response times. | |
| user_id | No | Instagram user id. Use for faster response times. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely non-structured context: approximate payload size (~6 KB), the fields returned, the chaining prerequisite for the detail tool, and a latency tradeoff between handle and user_id. It stops short of rate-limit or failure-mode detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads what it returns, then the routing rationale, then the parameter tip — a sensible order with no filler. The speed/parameter sentence duplicates the schema text rather than earning new space, and the embedded pricing block sits awkwardly in the middle of the tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the definition need not enumerate returns, yet it does so concisely alongside cost and chaining guidance. Nothing critical is missing for a two-optional-parameter read tool; only explicit pagination or empty-result behavior is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both properties already document themselves, including the 'use user_id for faster response times' hint, which the description largely repeats. The description confirms both params are optional by omission but adds no new syntax, format, or mutual-exclusion guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Lists the story highlight albums on a public profile') and immediately differentiates from sibling get_instagram_user_highlight_detail by declaring itself 'the only source of a highlight id.' An agent can pick between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit usage context ('a cheap way to see whether an account keeps highlights at all') and the routing condition to the sibling tool, noting the detail tool 'requires the bare numeric id exactly as returned here.' It also tells the agent which parameter to prefer and why, which is more than most definitions offer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_user_postspostsARead-onlyIdempotentInspect
Returns one page of a public account's timeline, reels and photos and carousels alike, as raw Instagram media objects under items. Page with next_max_id and stop on more_available; num_results reports the page size. Each item carries media_type, code, caption, like_count, comment_count, taken_at, image_versions2 and video_versions among roughly two hundred internal flags. Measured at 632 KB per page, the largest response in this API, and trim=true only reduces it to 523 KB. For reels alone use get_instagram_user_reels, and for one known post use get_instagram_post; both return the same raw shape, so neither is a way to get a smaller payload.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| trim | No | Set to true to get a trimmed response | |
| handle | No | Instagram handle | |
| next_max_id | No | Cursor to get next page of results. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), yet the description adds substantial context beyond them: measured payload size (632 KB), the limited effect of trim (only down to 523 KB), pagination loop mechanics, and the fields present in each item. This is exactly the value-add the dimension rewards.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then pagination, payload realities, and alternatives in a logical order; nearly every sentence earns its place. Slightly dense, and the appended pricing boilerplate is external noise not attributable to the tool author.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite an output schema existing, the description still conveys return shape and size, pagination termination, and sibling routing. For a large-payload, paginated list tool, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning: it clarifies that next_max_id is a cursor for paging and that trim=true barely reduces the already-large payload, tempering a user's expectation. It does not document the handle parameter's format, keeping it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource scope ('Returns one page of a public account's timeline, reels and photos and carousels alike') and explicitly distinguishes itself from get_instagram_user_reels and get_instagram_post. An agent can identify the tool's role without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the selection rule explicitly: use get_instagram_user_reels for reels alone and get_instagram_post for one known post. It also pre-empts a common wrong assumption by noting neither alternative yields a smaller payload.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_user_reelsreelsARead-onlyIdempotentInspect
Returns one page of a public account's reels as raw Instagram media objects under items[].media, with paging_info.max_id for the following page. Each reel carries code, caption, like_count, comment_count, video_versions, image_versions2 and clips_metadata, whose original_sound_info.audio_asset_id is exactly the id that get_instagram_song_reels expects. Pass user_id rather than handle for a faster response. Measured at 594 KB per page. Use get_instagram_user_posts for the whole timeline including photos and carousels.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| trim | No | Set to true for a trimmed down version of the response | |
| handle | No | Instagram handle. Use user_id for faster response times. | |
| max_id | No | Max id to get more reels. Get 'max_id' from previous response. | |
| user_id | No | Instagram user id. Use this for faster response times. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), yet the description adds behavior beyond them: one-page-at-a-time pagination via max_id, an expected payload size of 594 KB per page for context budgeting, and the exact fields returned per reel. That is real operational context not derivable from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Return shape and pagination are front-loaded, and the alternative-tool routing sits at the end where it belongs. The sentences are dense but each carries distinct information; the appended pricing boilerplate is noise but outside the author's prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, yet it still sketches the envelope and cross-references a sibling tool's input contract. Combined with annotations and 100% schema coverage, an agent has everything needed to call this correctly on the first try.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents handle, user_id, max_id, and trim, and the description largely restates the user_id-vs-handle preference and max_id chaining. The trim parameter is not addressed at all in the description. Baseline 3 is appropriate given the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Returns one page of a public account's reels'), names the response envelope (items[].media) and the pagination token (paging_info.max_id), and explicitly contrasts itself with get_instagram_user_posts for the full timeline. An agent can distinguish it from get_instagram_song_reels, get_instagram_user_posts, and reels_search without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names two concrete alternatives with selecting conditions: get_instagram_song_reels is invoked by piping clips_metadata.original_sound_info.audio_asset_id, and get_instagram_user_posts covers the whole timeline including photos and carousels. It also advises user_id over handle for speed, giving the agent actionable routing rather than inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pinterest_boardboardARead-onlyIdempotentInspect
Returns one page of pins from a board URL, with a cursor to page. Board pins carry a third field subset, different from both search results and pin detail: node_id, link, domain, rich_summary, seo_url, board and auto_alt_text among them. Measured at 104 KB for 16 pins; trim=true cuts it to 28 KB, keeping per pin id, title, description, link, domain, board, pinner, alt_text, rich_summary and reaction_counts. Board URLs come from board.url on search results — relative, like /agkelsey/the-apartment/, so prefix https://www.pinterest.com — or from get_pinterest_user_boards. For a user's board list rather than one board's pins, use get_pinterest_user_boards.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The URL of the board to get | |
| trim | No | Set to true for a trimmed down version of the response | |
| cursor | No | The cursor to get the next page of results |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/non-destructive, so the safety profile is covered elsewhere. The description adds substantial behavioral context beyond that: pagination via cursor, concrete payload sizes (104 KB for 16 pins; 28 KB trimmed) and the exact field subsets returned. It stops short of stating rate limits or error behavior, so a 4 rather than 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and paging behavior, and every sentence carries information. The two inline field enumerations ('node_id, link, domain...' and the trim field list) are dense and slightly bloat the text, and the injected pricing boilerplate sits outside the definition's control.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema already exists, so return values need no further explanation, and annotations cover the read-only/idempotent profile. Between the URL-source guidance, paging semantics and field-set/size notes, nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: url must be absolute, with relative board paths needing an https://www.pinterest.com prefix, and trim=true is quantified as cutting 104 KB to 28 KB while enumerating the retained fields. This goes well beyond the schema's one-line parameter docs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'returns one page of pins from a board URL' — and immediately differentiates from siblings by noting it also emits a paging cursor and that board pins use a distinct field subset from search results and pin detail. An agent can distinguish it from get_pinterest_search and get_pinterest_user_boards without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: 'For a user's board list rather than one board's pins, use get_pinterest_user_boards,' and explains where valid URLs originate (board.url on search results, or get_pinterest_user_boards). Both when-to-use and the alternative are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pinterest_pinpinARead-onlyIdempotentInspect
Fetches one pin by URL, of the form pinterest.com/pin/. The response is a different shape from search results: camelCase fields including entityId, description, category, totalReactionCount, aggregatedPinData, richMetadata, pinner, originPinner and genAiTopics. Measured at 12.5 KB, the smallest full response in this API; trim=true reduces it to 1.6 KB, keeping entityId, description, createdAt, pinner, originPinner, nativeCreator, shareCount, repinCount and totalReactionCount while dropping richMetadata and category. To find pins by keyword use get_pinterest_search; to page through the board a pin sits on use get_pinterest_board. Only standard numeric pin URLs resolve: of 12 search results fed straight back, the 3 whose URL ended in a shortcode (dwA0UYrl style) all answered 404 and one numeric id did too, so check for a numeric trailing id before calling and expect occasional 404s on deleted pins.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Pinterest pin URL | |
| trim | No | Set to true for a trimmed down version of the response | |
| cache_max_age | No | If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with "cached": true and a "cached_at" timestamp). Otherwise, scrape a live result (1 credit). [See the Caching page for details.](https://docs.scrapecreators.com/caching) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, non-destructive), and the description goes well beyond them: response size (12.5 KB), what trim actually changes (drops richMetadata and category, keeps a named field set), how shortcode URLs fail with 404, and the caching behavior's cost implications. This is unusually rich disclosure for a read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then alternatives, then output-shape detail — a sensible ordering. It is dense and the long field enumeration plus the embedded pricing note add bulk, but nearly every sentence carries decision-relevant information, so it stays efficient rather than padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, yet the description still quantifies size and the trim trade-off that the schema cannot express. Combined with the 404 and URL-format warnings, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: the exact URL shape pinterest.com/pin/<id> and a precise account of what trim trades away, which is more than the schema's vague 'trimmed down version'. cache_max_age semantics remain schema-only, keeping this just short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (fetches) and resource (one pin) scoped by URL form, and explicitly distinguishes itself from get_pinterest_search and get_pinterest_board. An agent can route between the three pin/board/search tools without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit alternatives and the condition selecting each: 'To find pins by keyword use get_pinterest_search; to page through the board a pin sits on use get_pinterest_board.' It also adds a pre-call check (ensure a numeric trailing id) and a caveat to expect occasional 404s, which is actionable when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pinterest_searchsearchARead-onlyIdempotentInspect
Searches Pinterest for pins matching a keyword and returns pins plus a cursor to page. Each pin carries id, url, title, description, grid_title, created_at, images in five sizes (170x, 236x, 474x, 736x, orig), link, domain, board (name, url, pin_count) and pinner (username). Measured at about 110 KB for 17 pins; trim=true cuts that to 28 KB and keeps six fields per pin — id, url, description, created_at, images and pinner — dropping title, link, board and domain, so only skip trim when you need those. The board.url on each result feeds get_pinterest_board; for one pin's engagement counts use get_pinterest_pin.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| trim | No | Set to true for a trimmed down version of the response | |
| limit | No | ||
| query | No | Search query | |
| cursor | No | Cursor |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint, destructiveHint=false), so the description is not obligated to restate that. It adds genuinely useful behavioral facts instead: measured payload size (~110 KB for 17 pins), the trimmed 28 KB size, and exactly which six fields survive trim. It stops short of documenting rate limits or cursor expiry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then return shape, then the size/trim tradeoff, then routing — a sensible priority order with no padding in the sentences themselves. The embedded pricing comment block is boilerplate noise that dilutes an otherwise tight entry.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the exhaustive per-pin field listing (images in five sizes, board, pinner sub-fields) is partly redundant with what the schema already exposes. The non-redundant parts — payload size, trim economics, and cross-tool field handoffs — are exactly what the agent needs before calling, making the description sufficient overall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% and the schema barely describes trim ("trimmed down version") and not at all limit. The description compensates by quantifying the trim tradeoff and enumerating the dropped fields (title, link, board, domain), which is meaning the schema does not carry. limit and cursor remain unelaborated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (searches Pinterest for pins by keyword) plus the return shape (pins plus a pagination cursor). It also explicitly distinguishes itself from the two closest siblings, get_pinterest_board and get_pinterest_pin, and from other platform search tools in the list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete when-to-use rule for trim ("only skip trim when you need those") and routes follow-up work to get_pinterest_board and get_pinterest_pin with the exact field that feeds each. It does not, however, state when a caller should prefer this over other search tools (e.g., get_reddit_search), so the routing is sibling-aware but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pinterest_user_boardsboardsARead-onlyIdempotentInspect
Lists a user's public boards by username, with a cursor to page. Each board carries id, name, url, description, pin_count, follower_count, section_count, collaborator_count, privacy, owner, created_at, cover_pin and cover_images. Measured at 59 KB for 10 boards; trim=true collapses it to 3.3 KB — the largest trim ratio in this API — keeping id, name, url, description, pin_count, follower_count, created_at and image_cover_hd_url. The handle is the bare username as it appears in a profile URL (agkelsey, not a full URL). Feed each board's url to get_pinterest_board to read its pins; to search across all of Pinterest use get_pinterest_search.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| trim | No | Set to true for a trimmed down version of the response | |
| handle | No | The username of the user to get boards for. (e.g. broadstbullycom from https://www.pinterest.com/broadstbullycom/) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive, so the bar is lower, yet the description adds real behavioral detail: response payload size (59 KB for 10 boards), the trim ratio and exactly which fields survive trimming. This is the kind of operational context an agent needs to avoid oversized responses.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then output fields, then the trim tradeoff, then routing. Dense but nearly every sentence earns its place; the trailing pricing boilerplate is injected and slightly dilutes the structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Pagination (cursor), input format, response shape, payload-size tradeoff, and sibling routing are all covered. With an output schema present, return values need not be explained, and the extra field listing is a bonus rather than a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so baseline is 3, but the description goes beyond the schema's terse 'trimmed down version' by naming the exact fields trim keeps, and reinforces that handle is a bare username rather than a profile URL.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource+scope: 'Lists a user's public boards by username, with a cursor to page.' It also names the sibling tools it is not (get_pinterest_board for pins, get_pinterest_search for cross-Pinterest search), so an agent can route correctly without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes to alternatives with conditions: feed each board's url to get_pinterest_board for pins, use get_pinterest_search for Pinterest-wide search. It also clarifies the expected handle input format. There are no explicit when-not-to-use statements, but the alternative routing is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reddit_post_commentscommentsARead-onlyIdempotentInspect
Returns one post and its discussion from a post URL: post with title, author, selftext, score, ups, upvote_ratio, num_comments, created_utc, permalink, archived and locked, then comments, each with author, body, score, ups, downs, created_utc, parent_id, permalink and a nested replies object holding items and more. Paging is a third shape again: the top level carries more.has_more and more.cursor rather than the after of get_reddit_search or the cursor of get_reddit_subreddit_search. Measured at about 21 KB for 19 top-level comments. To find posts worth opening, start from get_reddit_search or get_reddit_subreddit.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Reddit post URL | |
| trim | No | Set to true for a trimmed down version of the response | |
| cursor | No | Cursor to get more comments, or replies. | |
| trimmed | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), and the description adds genuinely new behavioral detail: the paging shape differs from both sibling search tools (more.has_more/more.cursor vs after vs cursor), and the payload cost is quantified ('about 21 KB for 19 top-level comments'). That size estimate and paging divergence are exactly the traits an agent cannot get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core content is a single run-on sentence that enumerates every post and comment field even though an output schema already exists, which is redundant rather than informative. Routing guidance that an agent most needs is buried at the end, and the appended pricing boilerplate further dilutes it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because an output schema exists, the field enumeration is unnecessary and the description would be complete without it; what remains (routing from search tools, paging semantics, response size) is the information an agent genuinely needs. It is slightly over-complete rather than under-complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so the baseline is already near 3. The description clarifies what cursor does ('more comments, or replies') and implies the url input, but it never explains trim or accounts for the undocumented 'trimmed' string parameter, so it adds only marginal meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource: 'Returns one post and its discussion from a post URL.' It also explicitly differentiates itself from the search siblings by positioning them as the discovery step, so an agent can distinguish this tool from get_reddit_search and get_reddit_subreddit without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear entry condition: 'To find posts worth opening, start from get_reddit_search or get_reddit_subreddit,' and describes the cursor path for continued paging. It stops short of stating any when-not-to-use case, so it is clear context rather than a full routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reddit_searchsearchARead-onlyIdempotentInspect
Searches every public subreddit for posts matching a query and returns posts plus an after token to page. Each post carries title, author, selftext, selftext_html, subreddit, score, ups, downs, upvote_ratio, num_comments, created_utc, created_at_iso, url, permalink, subreddit_subscribers, is_video, over_18 and spoiler. sort accepts relevance, new, top and comment_count, and timeframe narrows the window. Measured at 8 to 16 seconds and 8 to 26 KB, the slowest endpoint here. To stay inside one community use get_reddit_subreddit_search, which is faster and pages with cursor rather than after; to read one post's discussion use get_reddit_post_comments.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort by Provider reference (supplier schema): `{"enum":["relevance","new","top","comment_count"],"type":"string"}`. | |
| time | No | ||
| trim | No | Set to true for a trimmed down version of the response | |
| after | No | Used to paginate to next page | |
| count | No | ||
| limit | No | ||
| query | No | Search query | |
| filter | No | Search posts or comments | |
| trimmed | No | ||
| timeframe | No | Timeframe Provider reference (supplier schema): `{"enum":["all","day","week","month","year"],"type":"string"}`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/destructive=false, so safety is covered. The description adds substantial non-annotation behavior: latency (8-16s, slowest endpoint), payload size (8-26 KB), pagination via an after token, and the full returned field list. It stops short of documenting rate limits or failure behavior, but adds real 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then alternatives, then performance. The 19-field enumeration is verbose but informative for a search result. The pricing block is boilerplate appended by the platform rather than the author's prose, so it doesn't count against structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the field list is somewhat redundant, yet the description still supplies pagination, performance expectations, sorting semantics and routing to siblings. It omits auth/prerequisite notes and does not flag that 'query' is practically required despite required=[], a minor gap for a 10-param tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%, so the description must compensate for some gaps. It meaningfully enriches 'sort' (relevance, new, top, comment_count) and 'timeframe' (narrows the window) and explains 'after' for paging, but leaves limit, count, trim/trimmed, filter and query semantics to the schema. Adequate but partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Searches every public subreddit for posts matching a query') with scope ('every public subreddit') and names what it returns. It explicitly distinguishes itself from get_reddit_subreddit_search and get_reddit_post_comments, so an agent can tell them apart without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names two alternatives with the exact conditions that select them: use get_reddit_subreddit_search 'to stay inside one community' and get_reddit_post_comments 'to read one post's discussion'. This is explicit when-to-use-each guidance rather than implied context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reddit_subredditsubredditARead-onlyIdempotentInspect
Returns the post stream of one subreddit with an after token to page. Posts carry the same fields as get_reddit_search, including title, author, selftext, score, ups, upvote_ratio, num_comments, created_utc, created_at_iso, url, permalink and subreddit_subscribers. sort accepts best, hot, new, top and rising. Important: timeframe is only accepted together with sort=top, and any other combination returns 400 rather than ignoring the parameter. Subreddit names are case-sensitive. Measured at about 18 KB for 24 posts. To search inside the same subreddit use get_reddit_subreddit_search, and for its metadata use get_reddit_subreddit_details.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order Provider reference (supplier schema): `{"enum":["best","hot","new","top","rising"],"type":"string"}`. | |
| trim | No | Set to true for a trimmed down version of the response | |
| after | No | After to get more posts. Get 'after' from previous response. | |
| subreddit | No | Subreddit name | |
| timeframe | No | Timeframe to get posts from. Runtime requires `sort=top` when `timeframe` is provided. Provider reference (supplier schema): `{"enum":["all","day","week","month","year"],"type":"string"}`. | |
| cache_max_age | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the read-only, idempotent, non-destructive profile, so the description is free to add runtime behavior instead. It does: the timeframe/sort=top 400 error (rather than silent ignoring), case-sensitive subreddit names, pagination via the after token, and a concrete ~18 KB / 24 posts size figure. Auth and rate-limit behavior are still unstated, so it falls short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and scope, then constraints, then routing. Every sentence carries information, including the size estimate and error edge case. The appended pricing boilerplate adds length without helping tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-param, unpaginated-boundary tool with an output schema, this covers purpose, constraints, paging, alternatives and approximate payload size. Minor gaps remain: the trim payload reduction and cache_max_age are not clarified in narrative form. Nothing an agent needs to call it successfully is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so the schema already documents sort, timeframe, after and trim; the description largely restates the sort enum and the timeframe constraint. It adds the genuinely useful case-sensitivity note for subreddit, but leaves cache_max_age and the semantics of trim (what gets removed) unexplained. Baseline 3 is appropriate when the schema carries most of the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource and scope: the post stream of one subreddit. It explicitly distinguishes itself from the three nearest siblings (get_reddit_search, get_reddit_subreddit_search, get_reddit_subreddit_details), so an agent can route correctly without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternatives and the exact conditions that select them: use get_reddit_subreddit_search to search inside the same subreddit, get_reddit_subreddit_details for its metadata. It also states the sort=top pairing rule for timeframe, giving explicit when-to-use behavior rather than leaving it to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reddit_subreddit_detailsdetailsARead-onlyIdempotentInspect
Returns metadata about one subreddit, by name or by URL: subreddit_id, display_name, subscribers, weekly_active_users, weekly_contributions, description, rules, icon_img, header_img, advertiser_category, submit_text and created_at. Use it to size a community or read its rules before posting anything elsewhere. The name is case-sensitive, so AskReddit resolves and askreddit does not. Measured at about 5 KB, the smallest response here. It returns no posts at all: for those call get_reddit_subreddit, or get_reddit_subreddit_search to query within the community.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Subreddit URL | |
| subreddit | No | Subreddit name. MUST be case sensitive. So 'AskReddit' not 'askreddit'. | |
| cache_max_age | No | If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with "cached": true and a "cached_at" timestamp). Otherwise, scrape a live result (1 credit). [See the Caching page for details.](https://docs.scrapecreators.com/caching) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: approximate response size (~5 KB, smallest response here), the case-sensitivity gotcha, and the explicit scope exclusion (returns no posts). It doesn't discuss caching semantics, though the schema covers those.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and return fields, then usage, then the case-sensitivity caveat, then sibling routing. Every sentence carries information; the trailing billing block is platform metadata rather than authored prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return-value documentation is not required, and the annotations already carry the safety profile. The description nonetheless covers identity, scope, size, naming constraint, and sibling routing, which is everything an agent needs to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds only the framing that the target can be given 'by name or by URL' (clarifying that the two params are alternatives) and restates the case-sensitivity rule already documented on the subreddit field. The cache_max_age enum is left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('returns metadata about one subreddit') and enumerates the exact fields returned, so the agent knows precisely what it gets. It also explicitly distinguishes itself from siblings by noting it returns no posts and naming get_reddit_subreddit and get_reddit_subreddit_search as alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use guidance ('size a community or read its rules before posting anything elsewhere') and explicit when-not-to-use routing ('It returns no posts at all: for those call get_reddit_subreddit, or get_reddit_subreddit_search'). Alternatives are named with the condition that selects them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reddit_subreddit_searchsearchARead-onlyIdempotentInspect
Searches inside one subreddit and returns matching posts with a cursor token to page. Posts carry title, author, selftext, score, ups, upvote_ratio, num_comments, created_utc, created_at_iso, url, permalink and is_video. Despite what sort suggests, every sort value returns posts and only posts: comments and media were confirmed absent from all five. Measured at about 5 KB and 2 seconds, faster than get_reddit_search, which searches all of Reddit and pages with after instead of cursor. For the replies under a result, pass its url to get_reddit_post_comments.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order. For posts/media: relevance, hot, top, new, comments. For comments: relevance, top, new Provider reference (supplier schema): `{"enum":["relevance","hot","top","new","comments"],"type":"string"}`. | |
| query | No | Search query to find matching content | |
| cursor | No | Cursor to get more results. Get 'cursor' from previous response. | |
| subreddit | No | Subreddit name (e.g. 'Fitness', not 'r/Fitness' or a full URL) | |
| timeframe | No | Timeframe to filter results Provider reference (supplier schema): `{"enum":["all","year","month","week","day","hour"],"type":"string"}`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a read-only, idempotent, open-world, non-destructive call, so the safety profile is covered. The description goes well beyond that with measured cost/latency (~5 KB, ~2 seconds), the pagination model (cursor token, contrasted with get_reddit_search's 'after'), and the empirical constraint that only posts are ever returned. That is exactly the kind of operational context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and scope are front-loaded, and the comparison sentences each carry distinct routing value. It is a dense single paragraph, and the enumeration of return fields duplicates what the output schema already provides, which is the one clearly removable element (ignoring the injected pricing boilerplate).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter, zero-required search tool with an output schema present, the description supplies everything needed to call it correctly: scope, pagination, alternatives, latency/cost expectations, and the sort caveat. Nothing important is deferred to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description earns an extra point by resolving a genuine ambiguity: the supplier enum advertises a 'comments' sort value that the description reports as never producing comments, which the schema alone would mislead an agent about. Cursor usage is also clarified in prose; subreddit name format and timeframe are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with explicit scope: 'Searches inside one subreddit and returns matching posts with a cursor token to page.' It immediately distinguishes itself from the sibling get_reddit_search by contrast (one subreddit vs all of Reddit, cursor vs after), so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names two alternatives explicitly and the condition selecting each: get_reddit_search for site-wide search, and get_reddit_post_comments ('pass its url') for retrieving replies under a result. It also warns that the sort parameter should not be read as implying comment/media results, which preempts a likely misuse. This is close to a complete routing guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_articleGet ArticleARead-onlyIdempotentInspect
Get the full body of an X Article (long-form post) by its tweet ID. Use this when a tweet links to or is an Article and the 280-character preview is not enough — this returns the complete text rather than the truncated tweet. Returns the article under article. For ordinary tweets use get_twitter_tweets.
Published reference price: $0.001 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| tweet_id | No | The tweet ID of the article. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description still adds useful behavior: that it returns complete article text instead of the truncated tweet, where the payload lives (`article`), and a pricing note. The `article` key is semi-redundant given the output schema, keeping this from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences that front-load the capability, then the usage condition and alternative. The pricing block is boilerplate metadata rather than prose bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and the description nonetheless notes the `article` key. Purpose, trigger, alternative, and cost are all present for a simple one-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter with 100% schema description coverage, so the schema already documents `tweet_id`. The description only restates "by its tweet ID" with no added format or edge-case detail, which is the expected baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (full body of an X Article / long-form post) keyed by tweet ID, and immediately distinguishes it from the ordinary-tweet tool. An agent can tell exactly what this returns without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ("when a tweet links to or is an Article and the 280-character preview is not enough") and names the alternative for the other case ("For ordinary tweets use `get_twitter_tweets`"). When-to-use and when-not-to-use are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_community_infoGet Community InfoARead-onlyIdempotentInspect
Get metadata for an X Community by its numeric community ID — name, description, member count, and access rules. Use this to qualify a community before pulling its members or posts. Returns the object under community_info. To discover communities by topic, search their posts with get_twitter_community_tweets_all.
Published reference price: $0.0002 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| community_id | Yes | ID of the community |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld. The description adds where the payload lands ('Returns the object under community_info') and discloses the per-request cost, which the annotations do not cover. It stops short of noting rate limits or failure modes, so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences that lead with the purpose, then usage, then return shape; the pricing note is boilerplate appended after the substance and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A read-only, single-parameter lookup with an output schema in place needs only purpose, routing, and return location — all present. Annotations carry the safety profile and the output schema covers the payload fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage the baseline is 3, but the description adds format detail the schema lacks by specifying the ID is numeric, which helps an agent avoid passing a screen name or slug.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get metadata for an X Community by its numeric community ID') and enumerates the returned fields (name, description, member count, access rules). It also names the sibling route for a different goal (discovery via get_twitter_community_tweets_all), so an agent can distinguish it from get_twitter_community_members, get_twitter_community_tweets, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it ('qualify a community before pulling its members or posts') and provides the alternative for the adjacent task ('to discover communities by topic, search their posts with get_twitter_community_tweets_all'). This routes the agent correctly without schema inspection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_community_membersList Community MembersARead-onlyIdempotentInspect
List the members of an X Community, cursor-paginated. Use this to map who participates in a topic-specific group — usually a higher-signal audience than general followers, because membership is opt-in. Returns full user objects. For the subset who moderate it, use get_twitter_community_moderators.
Usage-based billing; Default request estimate: $0.0036 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for pagination | |
| community_id | Yes | ID of the community |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds genuinely useful behavioral context: cursor-based pagination and that full user objects are returned (the latter is partly redundant given the output schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first clause, and the alternative is deferred to the end where it belongs. The body is tight, though the injected pricing boilerplate is noise the definition author does not control.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering the safety profile, the description needn't explain return values or read-only status. It covers purpose, pagination, and the sibling alternative, leaving little an agent would need that isn't in structured fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (community_id, cursor) are already documented. The description only echoes the pagination concept via 'cursor-paginated' and adds no syntax, format, or constraint detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('List the members of an X Community') and explicitly distinguishes itself from the moderator-listing sibling. An agent can identify this 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context ('map who participates in a topic-specific group') and names the specific alternative for moderators with the selecting condition. It stops short of stating when NOT to use it versus the many other community siblings (info, tweets), so it is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_community_moderatorsGet Community ModeratorsARead-onlyIdempotentInspect
List the moderators of an X Community, cursor-paginated. Use this to identify the people who set the agenda in a community — the highest-leverage contacts for outreach or partnership. Returns full user objects. For the full membership use get_twitter_community_members.
Usage-based billing; Default request estimate: $0.0036 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for pagination | |
| community_id | Yes | ID of the community |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered structurally. The description adds only two behavioral facts beyond that: results are cursor-paginated and it 'Returns full user objects'. It says nothing about ordering, page size, or how a partial page should be interpreted, so the added 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The authored portion is three tight sentences with the core purpose front-loaded and the sibling routing at the end, so it reads well. It loses a point only because the injected pricing block roughly doubles the rendered length with billing boilerplate that competes with the substantive wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description is not obliged to explain the returned user objects, and it correctly avoids doing so. Purpose, scope, pagination, and the alternative tool are all covered; only secondary operational detail (page size, cursor exhaustion) is absent, which is minor for a read-only list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both `community_id` and `cursor` are already documented in the schema; the baseline is 3. The description's 'cursor-paginated' phrase only restates the cursor parameter's function rather than adding format or usage detail (e.g. passing back the returned cursor).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the moderators of an X Community') plus a scope qualifier ('cursor-paginated'), and explicitly contrasts itself with the closest sibling, `get_twitter_community_members`. An agent can distinguish this from the members/info/tweets family without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('identify the people who set the agenda... highest-leverage contacts for outreach or partnership') and names the alternative for a different need ('For the full membership use `get_twitter_community_members`'). Nothing about tool selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_community_tweetsGet Community TweetsARead-onlyIdempotentInspect
Get posts published inside one specific X Community, cursor-paginated. Use this to read what a known community is actually discussing. Returns full tweet objects with engagement counts. If you do not know which community to look at, search across all of them with get_twitter_community_tweets_all.
Usage-based billing; Default request estimate: $0.003 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for pagination | |
| community_id | Yes | ID of the community |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false. The description adds value beyond them by disclosing pagination behavior ('cursor-paginated'), the shape of the result ('full tweet objects with engagement counts'), and billing context, though it doesn't cover rate limits or result caps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences that are front-loaded with purpose, then usage, then return shape. The injected pricing block adds length but is boilerplate rather than authored content, so the core prose is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be detailed, and the description still gives a useful hint about the result shape. Annotations plus description fully equip an agent to invoke this tool correctly for its narrow, well-scoped purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both cursor and community_id are already documented in the schema. The description's mention of cursor pagination corroborates but does not add syntax, format, or ID-acquisition guidance beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (posts inside one specific X Community) with scope qualifiers (cursor-paginated). It explicitly names the sibling get_twitter_community_tweets_all as the alternative, so an agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the affirmative use case ('read what a known community is actually discussing') and the negative/alternative case ('If you do not know which community to look at, search across all of them with ..._all'), which routes the agent correctly between siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_community_tweets_allGet Community TweetsARead-onlyIdempotentInspect
Search posts across all X Communities by keyword, sorted by Latest (default) or Top, cursor-paginated. Use this to find topic-specific discussion happening inside communities rather than on the public timeline — signal density is usually higher and noise lower. Returns full tweet objects. Once you identify a community worth following, use get_twitter_community_tweets to read it directly, or get_twitter_community_info for its metadata. For public-timeline search use get_twitter_tweet_advanced_search.
Usage-based billing; Default request estimate: $0.003 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (e.g., keyword) | |
| cursor | No | Cursor for pagination | |
| queryType | Yes | Query type (Latest or Top) | Latest |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world behavior, so the bar is lower. The description adds useful context—cursor pagination, sort options, and that full tweet objects are returned—though it omits billing implications beyond the appended pricing note and rate-limit behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and scope, followed by a compact usage rationale and sibling routing. The appended pricing block adds tokens but is operational metadata rather than the description's own prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete enough for a 3-param search tool with full schema coverage, annotations, and an output schema. It covers scope, sorting, pagination, and siblings; only deeper behavioral details like error modes or limits are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema documents query, cursor, and queryType. The description mentions sorting by Latest/Top and cursor-paginated results but adds no syntax, format, or filter semantics beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search), resource (posts across all X Communities), and scope (by keyword, sorted, paginated). It explicitly distinguishes itself from the public-timeline sibling and names the narrower community tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use rationale (topic-specific community discussion, higher signal density) and routes to siblings: get_twitter_community_tweets for a single community, get_twitter_community_info for metadata, and get_twitter_tweet_advanced_search for public timeline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_list_followersList List FollowersARead-onlyIdempotentInspect
List the accounts that subscribe to an X List, 20 per page, cursor-paginated. Use this to gauge how much attention a curated list attracts and who cares about that topic. Returns full user objects under followers. For the accounts included in the List (not its subscribers) use get_twitter_list_members.
Published reference price: $0.0015 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor of the page | |
| list_id | Yes | ID of the list |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, open-world, non-destructive, so the safety profile is covered. The description adds non-obvious operational context: page size of 20, cursor pagination, and the response key `followers`. It stops short of noting rate limits or whether the cursor is opaque, but the added value over annotations is real.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences plus one routing sentence, all front-loaded: what it does, why to call it, and which sibling to use instead. No sentence is filler; the injected pricing comment is template noise rather than authored text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not strictly required, yet the description still points to the `followers` key, which helps. Combined with full schema coverage and rich annotations, an agent has everything needed to call it correctly; only minor operational details are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters (`list_id`, `cursor`) are documented in the schema, so the baseline is 3. The description only alludes to cursor pagination generically and adds no format or ID-sourcing detail beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb + resource ('List the accounts that subscribe to an X List') with pagination behavior stated up front. It explicitly distinguishes itself from the closest sibling by noting that `get_twitter_list_members` returns List members, not subscribers, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('gauge how much attention a curated list attracts and who cares about that topic') and names the alternative tool for the adjacent-but-different case (members vs. subscribers). Both the when-to-use and the when-to-use-something-else are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_list_membersGet List MembersARead-onlyIdempotentInspect
List the accounts included in an X List, 20 per page, cursor-paginated. Use this to extract a ready-made, human-curated cohort — someone else has already done the filtering. Returns full user objects under members. To read what those accounts are posting as one feed, use get_twitter_list_tweets_timeline. For the List's subscribers use get_twitter_list_followers.
Published reference price: $0.0015 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor of the page | |
| list_id | Yes | ID of the list |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld and non-destructive, so safety is covered. The description adds real behavioral context beyond that: page size (20), cursor pagination, and the return key (`members`). It stops short of rate-limit guidance, but pricing is supplied inline, making this a solid above-baseline disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, followed by usage framing, return shape, then explicit sibling routing. Every sentence earns its place; the pricing block is metadata, not prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be detailed, yet the description still points to the `members` key. Combined with pagination and sibling routing, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented and the baseline is 3. The description adds only that results are 'cursor-paginated, 20 per page', which lightly clarifies the cursor parameter's role but no format or ID-acquisition details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource ('List the accounts included in an X List') and immediately distinguishes itself from the two nearest siblings (list tweets vs. list followers). An agent can pick this tool without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names alternatives with the conditions that select them: get_twitter_list_tweets_timeline for reading the members as a feed, and get_twitter_list_followers for subscribers. It also frames the use case (extracting a human-curated cohort), leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_list_tweets_timelineGet List Tweet TimeLineARead-onlyIdempotentInspect
Get the tweet timeline of an X List by listId, up to 20 per page, cursor-paginated. Use this to monitor a hand-curated set of accounts as a single feed — Lists are the cheapest way to track a fixed cohort (competitors, analysts, a beat) without polling each account. Returns tweets with has_next_page and next_cursor. To see who is in the List use get_twitter_list_members.
Published reference price: $0.0015 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for paginating through results. Leave empty for the first page. | |
| listId | No | The list ID to get tweets from. e.g. 1846987139428634858 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), so the bar is lower. The description nonetheless adds real behavioral context: page size (up to 20), cursor pagination, and the return fields `has_next_page`/`next_cursor`. It doesn't mention rate limits or auth requirements, keeping it at a 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action, followed by use case and return-shape notes; each sentence is informative. The 'cheapest way to track a fixed cohort' phrasing leans slightly promotional and costs a bit of tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values needn't be explained, yet the description still notes pagination fields. Pagination behavior, scope, and sibling routing are all covered, so an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented and the baseline is 3. The description reinforces `listId` and cursor-pagination semantics but adds no syntax or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get), resource (tweet timeline of an X List), and scoping parameter (`listId`), which cleanly distinguishes it from the many sibling timeline tools like get_twitter_user_tweet_timeline. An agent can identify the target without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case (monitor a hand-curated set of accounts as a single feed) and routes to a related sibling (get_twitter_list_members) for a distinct need. It lacks an explicit when-not or a direct comparison to the user-level timeline sibling, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_trendsGet Trends By WoeidARead-onlyIdempotentInspect
Get the trending topics for a location, identified by its Yahoo WOEID (Where On Earth ID), with an optional count (default 30). Use this for a real-time read on what a specific market is talking about right now — useful for timing content or spotting emerging stories. Returns trend names and volumes under trends. Once you pick a trend, search its posts with get_twitter_tweet_advanced_search.
Usage-based billing; Default request estimate: $0.00015 USD (not a fixed price). Declared unit rate: $0.00001 USD per provider_credit. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | The number of trends to return. Default is 30. Provider reference (supplier schema): `{"default":30,"format":"int64","minimum":30,"type":"integer"}`. | |
| woeid | No | The WOEID of the location. Example: 2418046. Provider reference (supplier schema): `{"format":"int64","type":"integer"}`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety bar is pre-covered. The description adds useful context the annotations don't: the returned payload ('trend names and volumes under `trends`') and an account-specific pricing/usage note. It omits rate limits or freshness guarantees, but the additions are genuine.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and the two core sentences are dense with no waste. The injected pricing block adds length that isn't part of the tool's intrinsic description, slightly diluting the otherwise tight structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a rich output schema and full annotation coverage, the description supplies what the agent still needs: the location semantics, the returned field group, and the downstream search tool. It leaves only minor gaps like pagination/freshness, which the output schema may cover.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both params are already documented; the description largely restates WOEID and the default `count` of 30 rather than adding syntax or format meaning. Baseline 3 applies when the schema carries the parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the trending topics for a location') and pins the identifier (Yahoo WOEID), distinguishing it from the sibling tweet/user tools without ambiguity. It also names the natural next step tool, making its role in the workflow unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear scenario ('real-time read on what a specific market is talking about right now', 'timing content or spotting emerging stories') and routes the follow-up to `get_twitter_tweet_advanced_search`. However, it never states when NOT to use it or how it relates to other trend-adjacent siblings, so it stops short of full explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_tweet_advanced_searchAdvanced SearchARead-onlyIdempotentInspect
Search X posts by keyword or query with X's advanced search operators, sorted by Latest (default) or Top. This is the primary entry point for X content research when you do not yet have tweet IDs or handles. Supports operators in the query string such as from:, to:, since:, until:, min_faves:, and -filter:replies. Cursor-paginated; returns tweets with has_next_page and next_cursor. To search accounts rather than posts use get_twitter_user_search. To read one account's own posts use get_twitter_user_tweet_timeline.
Usage-based billing; Default request estimate: $0.003 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| query | No | The query to search for. | |
| cursor | No | The cursor to paginate through the results. First page is empty. | |
| queryType | No | The query type to search for. Provider reference (supplier schema): `{"default":"Latest","enum":["Latest","Top"],"type":"string"}`. | |
| start_time | No | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), so the lower bar applies. The description still adds real behavior: cursor pagination semantics, the has_next_page/next_cursor return fields, sort modes, and supported query operators. It omits auth requirements and rate limits, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then operators, pagination, and alternatives in a tight sequence where each sentence carries information. The injected pricing boilerplate is not authored content but does add noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be exhaustively explained, and annotations carry the safety profile. The description still covers usage context, alternatives, pagination flow, and query syntax, so nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, so the schema does part of the work. The description usefully explains the query-string operator syntax and the Latest/Top sort (mapping to queryType), but count, max_results, and start_time are undocumented in both places. It adds value over the schema without fully compensating for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (X posts) and immediately differentiates itself by naming the two sibling alternatives for account search and user timelines. An agent can distinguish this from any account-scoped tool without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly declares when to use it ('primary entry point for X content research when you do not yet have tweet IDs or handles') and routes to the correct alternatives ('to search accounts use get_twitter_user_search', 'to read one account's posts use get_twitter_user_tweet_timeline'). Nothing 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.
get_twitter_tweet_quotesGet Tweet QuotationsARead-onlyIdempotentInspect
Get quote tweets of a given tweet — posts that embedded it with added commentary — cursor-paginated. Use this to see how a post is being reframed or argued about, which is often more revealing than plain replies. Returns full tweet objects with engagement counts. For direct replies use get_twitter_tweet_replies_v2; for accounts that amplified it without comment use get_twitter_tweet_retweeters.
Usage-based billing; Default request estimate: $0.003 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for pagination. | |
| tweetId | No | The tweet ID to get quotes for. | |
| sinceTime | No | ||
| untilTime | No | ||
| includeReplies | No | Whether to include replies in the results. Default is True. Provider reference (supplier schema): `{"default":true,"type":"boolean"}`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds real context beyond them: cursor-based pagination, and the shape of the payload ('full tweet objects with engagement counts'). It also carries a usage-based billing note with a per-request estimate, which is material for an agent deciding whether to call it. It does not mention rate limits or result caps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core definition before the routing advice. The injected pricing block is boilerplate rather than tool guidance, but it is short and clearly delimited, so it does not disrupt the structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be detailed, yet the description still usefully summarizes the payload. Purpose, alternatives, and pagination are all covered. The only shortfall is the undocumented sinceTime/untilTime pair, which an agent may need to bound a large quote set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%, and the description only reinforces the cursor parameter via 'cursor-paginated'. The two time-window parameters (sinceTime, untilTime) have no description in the schema and no explanation here, so half-documented inputs remain opaque. Baseline 3 is appropriate since the schema does much of the work but the description does not compensate for the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get quote tweets of a given tweet') and immediately defines the concept ('posts that embedded it with added commentary'), which is genuinely useful because 'quote tweet' is jargon. It explicitly distinguishes itself from get_twitter_tweet_replies_v2 and get_twitter_tweet_retweeters, so an agent can route without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the when-to-use rationale ('to see how a post is being reframed or argued about, which is often more revealing than plain replies') and names both alternatives with the condition that selects each: direct replies -> get_twitter_tweet_replies_v2, silent amplification -> get_twitter_tweet_retweeters. Nothing 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.
get_twitter_tweet_repliesGet Tweet RepliesARead-onlyIdempotentInspect
Get the direct replies to a tweet, cursor-paginated. Use this to read the discussion under a post — sentiment, corrections, or follow-up questions. Returns full tweet objects with engagement counts. Prefer get_twitter_tweet_replies_v2 when you want to control ordering (Relevance, Latest, or Likes); this v1 endpoint returns the default order only. To follow a conversation upward to its root instead of downward, use get_twitter_tweet_thread_context.
Usage-based billing; Default request estimate: $0.01335 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for pagination. | |
| tweetId | No | The tweet ID to get replies for. | |
| queryType | No | Sort order for replies. Default is Relevance. Provider reference (supplier schema): `{"default":"Relevance","type":"string"}`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, open-world, so the safety profile is covered. The description adds real behavioral value beyond that: pagination behavior, the ordering limitation of the v1 endpoint, and the shape of returned objects. It stops short of describing rate limits or response envelope details, but is solid given 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core definition is three tight, front-loaded sentences that each carry routing or behavioral information. The appended pricing boilerplate is machine-generated and not part of the semantic definition, slightly diluting conciseness but not the author's fault.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value structure need not be spelled out, and annotations carry the safety profile. Combined with the sibling routing and pagination notes, an agent has everything needed to invoke this correctly. Complete for a read-only list endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents cursor, tweetId, and the queryType enum with its default. The description reinforces the cursor pagination and default-order behavior but adds no syntax or format detail beyond the schema. Note a mild tension: the schema exposes an ordering enum while the description says this v1 endpoint returns default order only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the direct replies to a tweet') and immediately scopes the shape of the result (cursor-paginated, full tweet objects). It explicitly distinguishes itself from two named siblings, get_twitter_tweet_replies_v2 and get_twitter_tweet_thread_context, so an agent can route correctly without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit use context ('read the discussion under a post — sentiment, corrections, or follow-up questions') plus two exclusion routes: use v2 for ordering control, use thread_context to walk upward to the root. This is a full when/when-not/alternatives treatment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_tweet_replies_v2Get Tweet Replies V2ARead-onlyIdempotentInspect
Get replies to a tweet with control over sort order — Relevance (default), Latest, or Likes — 20 per page, cursor-paginated. Use this instead of get_twitter_tweet_replies whenever ordering matters: Likes surfaces the community's top responses, Latest gives a live view of an unfolding thread. Returns full tweet objects with engagement counts.
Usage-based billing; Default request estimate: $0.01095 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for paginating through results. Leave empty for the first page. | |
| tweetId | No | The tweet ID to get replies for. e.g. 1846987139428634858 | |
| queryType | No | Sort order for replies. Default is Relevance. Provider reference (supplier schema): `{"default":"Relevance","enum":["Relevance","Latest","Likes"],"type":"string"}`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnly, idempotent, non-destructive), so the bar is lower. The description still adds useful behavior: page size (20 per page), cursor pagination, the Relevance default, and a usage-based billing note. It stops short of disclosing rate limits or quota behavior, but covers more than the annotations do.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The tool-relevant content is two tight, front-loaded sentences with zero waste. The injected pricing block is boilerplate that dilutes the payload slightly but is small relative to the whole.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation; the description correctly just notes they are full tweet objects with engagement counts. Pagination, defaults, sort semantics, the sibling relationship, and billing are all covered, so nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds semantic meaning beyond the schema by explaining what Relevance, Latest, and Likes actually surface. That is genuine interpretation, not restatement of the enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get replies to a tweet') and immediately distinguishes itself from the sibling get_twitter_tweet_replies by naming the ordering control. An agent can tell the two apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use this instead of `get_twitter_tweet_replies` 'whenever ordering matters' and explains what each ordering buys you ('Likes surfaces the community's top responses, Latest gives a live view'). The alternative and the selecting condition are both named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_tweet_retweetersGet Tweet RetweetersARead-onlyIdempotentInspect
List the accounts that retweeted a given tweet, cursor-paginated. Use this to map who amplified a message and how influential they are. Returns user objects (handle, name, bio, follower count, verification) — not tweets. For retweets that added commentary use get_twitter_tweet_quotes.
Usage-based billing; Default request estimate: $0.0036 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for pagination. | |
| tweetId | Yes | The tweet ID to get retweeters for. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world, non-destructive, so the description is freed to add what they don't: the return shape ('user objects — handle, name, bio, follower count, verification — not tweets') and cursor pagination. It adds no permission, rate-limit, or ordering detail, which is the only real gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Core content is three tight sentences with the scope statement front-loaded and the negative clarification ('not tweets') placed early. The injected pricing boilerplate adds bulk the author did not control, which keeps this just short of a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with full schema coverage, an output schema, and rich safety annotations, the description supplies the missing return-type context and the sibling disambiguation an agent needs. Only ordering/result-count behavior is unspecified, a minor omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (tweetId, cursor) are fully documented in the schema itself. The description echoes pagination via 'cursor-paginated' but adds no format, cursor-opacity, or max-page-size detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource ('List the accounts that retweeted a given tweet') plus the pagination model. It also distinguishes itself from a close sibling by naming `get_twitter_tweet_quotes` as the tool for retweets with commentary, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('map who amplified a message and how influential they are') and names the alternative tool for the adjacent case (quote tweets). It stops short of stating exclusions against the other retweet-adjacent siblings (replies, thread context), so it is clear context rather than complete routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_tweetsGet Tweets By IDsARead-onlyIdempotentInspect
Fetch the full content of specific tweets when you already know their numeric tweet IDs (accepts multiple IDs in one call). Use this to expand IDs surfaced by search, timelines, or replies into complete objects. Returns text, author, source client, language, creation time, and engagement counts (likes, retweets, replies, quotes, bookmarks, views). If you do not have IDs yet, start with get_twitter_tweet_advanced_search.
Usage-based billing; Default request estimate: $0.0075 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| tweet_ids | No | Comma-separated list of tweet IDs. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds real value beyond that: batch acceptance in one call and the exact fields returned (text, author, source client, language, creation time, engagement counts), which helps an agent judge sufficiency before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core is front-loaded and tight, with purpose, precondition, alternative and return fields in three economical sentences. The appended pricing boilerplate adds length that serves billing context rather than tool selection, a minor deduction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple ID-expansion lookup with full schema coverage, an output schema, and rich annotations, the description supplies everything an agent needs: precondition, batch behavior, alternative entry point, and field coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema coverage is 100%, so the schema already documents the comma-separated ID format. The description's note that multiple IDs are accepted in one call adds a small amount of batch semantics but nothing about limits or ordering; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Fetch) and resource (full content of specific tweets) plus the precondition (you already know their numeric IDs). It also names the sibling `get_twitter_tweet_advanced_search` as the contrasting entry point, so an agent can place it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use (you already have IDs) and when-not-to-use (if you do not have IDs yet), routing the agent to the correct alternative by name. The 'expand IDs surfaced by search, timelines, or replies' line clarifies its role in a workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_tweet_thread_contextGet Tweet Thread ContextARead-onlyIdempotentInspect
Reconstruct the conversation around a tweet. Accepts either a reply or an original tweet and returns the surrounding thread, cursor-paginated. Use this when a tweet lacks context on its own and you need the parent chain to interpret it correctly. Returns tweets under tweets with has_next_page and next_cursor. For only the replies below a post use get_twitter_tweet_replies_v2.
Usage-based billing; Default request estimate: $0.00555 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | The cursor to paginate through the results. First page is empty. | |
| tweetId | No | The tweet ID to get. Can be a reply tweet or an original tweet. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds valuable behavioral context: cursor-paginated output and the parent-chain reconstruction behavior. It stops short of noting auth requirements or rate limits, so a 4 is warranted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core description is front-loaded and efficient: purpose, trigger, return format, and alternative in four tight sentences. The appended billing note is clearly demarcated but does add non-behavioral length, keeping it just under a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering safety, a full schema, and an output schema present, the description needn't explain return values yet still summarizes them usefully. It covers the key distinctions and pagination behavior; only auth/permission details are absent, which is minor given the read-only annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are fully documented in the schema itself (cursor semantics and the reply/original tweet note for tweetId). The description's 'accepts either a reply or an original tweet' merely echoes the schema's tweetId description, adding no new parameter semantics. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Reconstruct the conversation around a tweet') and clarifies its scope by noting it accepts either a reply or an original tweet. It explicitly distinguishes itself from the sibling get_twitter_tweet_replies_v2, so an agent can tell them apart without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit trigger condition ('when a tweet lacks context on its own and you need the parent chain') and names the alternative with its selecting condition ('For only the replies below a post use get_twitter_tweet_replies_v2'). Nothing 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.
get_twitter_user_aboutGet User About InfoARead-onlyIdempotentInspect
Get the extended 'About this account' panel for an X user by @handle. Use this for provenance and trust checks — it surfaces signals the standard profile does not, such as the account's country, verification details, and username-change history. Returns a single profile object under data. For the standard profile (bio, follower counts, avatar), use get_twitter_user_info instead.
Published reference price: $0.00018 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| userName | Yes | The screen name of the user |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/non-destructive, so the safety profile is covered. The description still adds real value beyond that: what the panel surfaces (country, verification details, username-change history) and the shape of the return ('a single profile object under `data`'). It does not mention auth or rate limits, but the annotation bar is met with useful extra context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences with zero waste: purpose, use case, return shape, and sibling routing in order of importance. The appended pricing block is boilerplate, not part of the authored description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be enumerated, yet the description still notes the `data` wrapper. For a one-parameter read tool with rich annotations, everything an agent needs to select and call it correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the single userName parameter is fully documented by the schema; baseline is 3. The description's 'by @handle' offers a marginally different framing than the schema's 'screen name' but adds no syntax or format detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb + resource — fetch the extended 'About this account' panel for an X user by @handle — and explicitly contrasts it with the sibling get_twitter_user_info. An agent can distinguish this from the standard-profile tool without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('provenance and trust checks') and names the alternative with its selecting condition ('For the standard profile (bio, follower counts, avatar), use get_twitter_user_info instead'). Nothing 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.
get_twitter_user_batch_info_by_idsBatch Get User Info By UserIdsDRead-onlyIdempotentInspect
Usage-based billing; Default request estimate: $0.00018 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| userIds | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a read-only, idempotent, non-destructive, open-world operation. The description adds only a usage-based pricing estimate, which is useful cost context but does not explain batch size behavior, return format, rate limits, or any other operational trait. It does not contradict the annotations, but it adds very little 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short and structured as a comment block, so it is not bloated. However, it is almost entirely irrelevant to tool selection and invocation, with no front-loaded purpose statement. The resulting definition is under-specified rather than concise in any useful sense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a batch user-lookup tool with one undocumented parameter and an output schema, the description provides no operational, semantic, or usage information. Only a billing estimate is present, leaving the definition critically incomplete for correct tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single input parameter, userIds, has 0% description coverage in the schema, and the description does not mention it at all. It does not explain the comma-delimited format, the 100,000 ID maximum, the 1 ID minimum, or what kinds of user identifiers are accepted. With low schema coverage, the description was required to compensate and completely failed to do so.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description contains only a pricing boilerplate block and never states what the tool does. The name and title imply batch retrieval of Twitter users, but the description itself provides no verb, resource, or scope. This is a missing purpose, not merely a vague or tautological one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool, when not to, or how it relates to alternatives. In particular, it never mentions the single-user sibling get_twitter_user_info or explains when batch lookup is preferable. An agent is left to infer usage entirely 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.
get_twitter_user_check_follow_relationshipCheck Follow RelationshipARead-onlyIdempotentInspect
Check whether one X user follows another, in both directions, by @handle. Use this for a single targeted lookup instead of paging through get_twitter_user_followers or get_twitter_user_followings — it answers 'does A follow B, and does B follow A' in one request. Returns the relationship flags under data.
Published reference price: $0.001 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| source_user_name | Yes | Screen name of the source user. | |
| target_user_name | Yes | Screen name of the target user. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds genuinely new behavior: it answers both directions (A→B and B→A) in a single request and returns the flags under `data`. The pricing disclosure adds cost context. Minor gap: no note on what happens when a handle doesn't exist or when accounts are protected/private.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core behavior followed by the routing advice, with no redundant sentences. The injected pricing block inflates the text slightly but is boilerplate rather than author padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations, full schema coverage, and an output schema present, the description needn't explain return values, yet it usefully points to `data`. Routing to alternatives and bidirectional semantics are covered. Edge-case behavior (nonexistent/private accounts) is the only material omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both source_user_name and target_user_name documented as screen names, so the baseline is 3. The description only adds 'by @handle', a small hint on identifier format, but does not clarify directionality mapping (which param is the follower vs. the followed) beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (check), resource (follow relationship), and scope (one X user follows another, both directions, by @handle). It explicitly names the sibling tools it is not (get_twitter_user_followers / get_twitter_user_followings), so an agent can distinguish it without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use guidance: 'Use this for a single targeted lookup instead of paging through...'. Names the alternatives and the condition (single targeted lookup vs. paging), leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_user_followersList User FollowersARead-onlyIdempotentInspect
List the accounts that follow a given X user, identified by @handle, newest follower first. Returns up to 200 per page by default with has_next_page and next_cursor; each entry is a full user object (handle, name, bio, follower count, verification). Use this for audience analysis, mapping a competitor's follower base, or finding influential followers. For the reverse direction (who this user follows) use get_twitter_user_followings. For only the verified subset use get_twitter_user_verified_followers — note that one takes a numeric user_id, not a handle.
Usage-based billing; Default request estimate: $0.00326 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for pagination | |
| pageSize | No | Number of followers per page Provider reference (supplier schema): `{"default":200,"type":"integer"}`. | |
| userName | No | Screen name of the user |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), yet the description adds real behavioral context: 200 results per page by default, has_next_page/next_cursor pagination, and the shape of each entry. It stops short of stating rate limits or cursor lifetime, but the added pagination and page-payload detail is well beyond what the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then pagination, then use cases, then sibling routing — a logical order with no redundant sentences. The injected aisa-pricing boilerplate adds length that does not serve tool selection, which keeps it out of the top band.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite an output schema existing, the description goes further by summarizing the per-entry fields, and it covers pagination, the identifier format, use cases, and both alternatives. Given a three-parameter read-only tool with full annotation coverage, an agent has everything needed to call it correctly on the first try.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description earns a step up by clarifying that the user is addressed by @handle rather than the schema's vaguer "screen name," and by restating the 200-per-page default in prose. It does not add cursor format or sizing rules beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list), resource (accounts that follow a given X user), the identity key (@handle), and the ordering (newest follower first). It also names the two closest siblings and how they differ, so an agent can pick it apart from get_twitter_user_followings and get_twitter_user_verified_followers without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives when-to-use scenarios (audience analysis, mapping a competitor's follower base, finding influential followers) and names both alternatives with their selecting conditions — reverse direction for followings, verified subset for verified followers. It even flags that the verified sibling takes a numeric user_id rather than a handle, which is exactly the kind of routing detail that prevents a wrong call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_user_followingsList User FollowingsARead-onlyIdempotentInspect
List the accounts a given X user follows, identified by @handle. Returns 200 entries per page with has_next_page and next_cursor. Use this to infer a user's interests, information sources, or professional network — who someone follows is usually a stronger signal of intent than who follows them. For the opposite direction use get_twitter_user_followers. To test a single specific pair without paging through thousands of records, use get_twitter_user_check_follow_relationship.
Usage-based billing; Default request estimate: $0.0036 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | The cursor to paginate through the results. First page is empty. | |
| pageSize | No | The number of followings to return per page. Provider reference (supplier schema): `{"default":200,"type":"integer"}`. | |
| userName | No | Screen name of the user. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered structurally. The description adds genuine behavior beyond that: 200 entries per page, has_next_page/next_cursor paging, and a cost estimate (~$0.0036 per request, usage-based). It stops short of auth/permission requirements or rate-limit behavior, so it is strong but not complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is front-loaded and every clause about direction and alternatives earns its place. The auto-injected pricing block adds length that is not behavioral guidance, which dilutes an otherwise tight definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, yet the description still flags the two pagination fields an agent needs to iterate. Combined with direction, alternatives, page size and cost, nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so cursor, pageSize and userName are already documented in the schema, and the description adds no format or syntax detail for them. The phrase 'identified by @handle' loosely maps to userName but the schema lists no required parameters, so the description does not clarify whether the handle is mandatory. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the accounts a given X user follows'), and immediately pins the direction of the relationship with 'identified by @handle'. It explicitly names the sibling that does the opposite direction and the sibling that tests a single pair, so an agent can separate it from the ~30 other get_twitter_* tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives the analytical use case ('infer a user's interests, information sources, or professional network — who someone follows is usually a stronger signal of intent than who follows them') plus two explicit alternative routes: get_twitter_user_followers for the reverse direction and get_twitter_user_check_follow_relationship for a single pair without paging. When-to-use and when-to-use-something-else are both covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_user_infoGet User InfoARead-onlyIdempotentInspect
Look up one X (Twitter) user's public profile by @handle (screen name). Use this when you need to know who an account is — identity, reach, or credibility — before deciding whether to trust or analyze their content. Returns display name, bio, follower/following counts, verification status, account creation date, location, and profile images. If you only have a numeric user ID, use get_twitter_user_batch_info_by_ids instead. If you need extended profile metadata such as country or username-change history, use get_twitter_user_about. If you want their posts rather than their profile, use get_twitter_user_tweet_timeline.
Published reference price: $0.00018 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| userName | No | The screen name of the user |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds the meaningful scoping detail that this is a public-profile lookup keyed by handle, plus the returned field set; it does not mention auth or rate limits, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and each subsequent sentence earns its place by routing to a distinct sibling. The injected pricing block adds length that is not part of the tool's semantic content, keeping it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return-value explanation is optional, annotations carry the safety profile, and the single parameter is fully documented. An agent has everything needed to select and call this tool correctly, with sibling disambiguation included.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is only one parameter, so the schema already documents it (baseline 3). The description adds value by specifying the format is the @handle/screen name and by routing numeric-ID callers to a different tool, which the schema alone does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (look up) and resource (one X/Twitter user's public profile) with the exact input form (@handle). It is immediately distinguishable from the profile-adjacent siblings it names, so an agent can route without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use framing (to assess identity, reach, or credibility before trusting content) and then names three concrete alternatives with the condition that selects each: numeric ID → get_twitter_user_batch_info_by_ids, extended metadata → get_twitter_user_about, posts → get_twitter_user_tweet_timeline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_user_last_tweetsGet User TweetsARead-onlyIdempotentInspect
Get a user's most recent tweets, accepting either userName (@handle) or userId — useful when you have not resolved the handle to an ID yet. Optionally include replies. Cursor-paginated. Returns tweets under data with has_next_page and next_cursor. Use get_twitter_user_tweet_timeline instead when you already have the numeric ID and want the full profile-order timeline with parent-tweet expansion.
Usage-based billing; Default request estimate: $0.003 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| cursor | No | Cursor for pagination | |
| userId | No | User ID of the user | |
| userName | No | Screen name of the user | |
| includeReplies | No | Include replies in the results Provider reference (supplier schema): `{"default":false,"type":"boolean"}`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, open-world, non-destructive behavior, so the bar is lower; the description still adds real behavioral context — cursor pagination and the response shape (data, has_next_page, next_cursor). It does not discuss rate limits or the billing estimate's non-fixed nature beyond the injected pricing note.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then pagination, return shape, and the alternative — each sentence earns its place. The auto-injected pricing block adds length but is boilerplate rather than authored text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, yet the description still summarizes them; annotations carry the safety profile; and parameters, pagination, and alternatives are all addressed. An agent can call this correctly without further inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so the baseline is a 3, and the description adds genuine meaning: that userName is a @handle, that userId and userName are interchangeable entry points (useful before handle resolution), and that replies are optional. Only 'count' remains undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: retrieves a user's most recent tweets, with the scope (recent, cursor-paginated, optional replies) stated up front. It attempts differentiation by naming an alternative timeline tool, but that tool does not appear in the sibling list, so the contrast lands weakly against the actual siblings (get_twitter_user_mentions, get_twitter_tweet_replies, etc.).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear usage condition: use this when you have not resolved the handle to an ID (accepts either userName or userId). It also names an explicit alternative and the condition selecting it. The referenced alternative is not present among siblings, which slightly undercuts the routing value.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_user_mentionsGet User MentionsARead-onlyIdempotentInspect
Get tweets that mention a given @handle, 20 per page. This is the only user-scoped X endpoint that supports a time window: pass sinceTime and/or untilTime as Unix timestamps in seconds to bound the range. Use this for monitoring — brand mentions, inbound replies, reputation tracking, or 'what happened to this account in the last 24 hours'. Returns tweets with has_next_page and next_cursor. For the account's own posts rather than mentions of it, use get_twitter_user_tweet_timeline.
Usage-based billing; Default request estimate: $0.003 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | The cursor to paginate through the results. First page is empty. | |
| userName | No | The user screen name to get mentions for. | |
| sinceTime | No | ||
| untilTime | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive/open-world, so the burden is lower. The description still adds real behavioral context: page size (20 per page) and the unique time-window capability. The return-format note (has_next_page/next_cursor) is redundant against the output schema, so it isn't a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose then usage then return shape in a sensible order, with no filler sentences. The trailing auto-injected pricing comment is noise but boilerplate; the return-value sentence is mildly redundant given the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, paginated list endpoint with a full output schema and safety annotations, the description covers purpose, when-to-use, the time-window mechanics, and pagination size. An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% — sinceTime and untilTime have no schema description. The description compensates by telling the agent these are Unix timestamps in seconds and that they bound the range, which is exactly the missing semantic detail. cursor and userName are already schema-documented, so it doesn't need to repeat them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get tweets that mention a given @handle') and immediately differentiates itself from the sibling for own-posts content. An agent can tell it apart from get_twitter_user_last_tweets without reading either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit use cases (monitoring, brand mentions, inbound replies, reputation tracking, 'last 24 hours') and names the alternative ('For the account's own posts... use get_twitter_user_tweet_timeline'). It also declares a differentiating constraint — the only user-scoped X endpoint with a time window — which routes the agent decisively.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_user_searchSearch UsersARead-onlyIdempotentInspect
Search X user accounts by keyword and get back matching profiles. Use this when you know roughly who you are looking for — a company name, a topic, a partial handle — but not the exact @handle. Cursor-paginated; returns full user objects under users. This searches accounts, not posts; to search tweet content use get_twitter_tweet_advanced_search.
Usage-based billing; Default request estimate: $0.0036 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | The keyword to search. | |
| cursor | No | The cursor to paginate through the results. First page is empty. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, open-world and non-destructive, so the safety profile is covered structurally. The description adds value beyond them by disclosing pagination behavior ('cursor-paginated'), the top-level return key ('full user objects under `users`'), and the scope boundary (accounts, not posts). It omits rate limits or auth requirements, hence not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then the selection heuristic, then the pagination/return note, then the sibling disambiguation — every sentence earns its place. The trailing pricing block is boilerplate metadata rather than description prose and does not dilute the useful content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, open-world search with an output schema and full annotation coverage, the description supplies everything needed to call it correctly: what it searches, when to prefer it, how it pages, where results land, and which sibling to use instead for tweet content. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both 'query' and 'cursor'; the baseline is 3. The description reinforces the keyword-based search and pagination framing but adds no syntax or format detail beyond the schema, and does not address why 'query' is optional despite being the core input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Search X user accounts by keyword') and the return shape ('matching profiles'). It explicitly distinguishes itself from the nearest functional sibling, get_twitter_tweet_advanced_search, and implicitly from the exact-handle lookup tools, so an agent can pick it without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete selection condition ('when you know roughly who you are looking for — a company name, a topic, a partial handle — but not the exact @handle') and names the alternative for the adjacent case ('to search tweet content use get_twitter_tweet_advanced_search'). Both the when and the routing alternative are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_user_tweet_timelineGet User TimeLineARead-onlyIdempotentInspect
Retrieve a user's own tweets by numeric userId, newest first, matching the order shown on their profile in the X app. Up to 20 tweets per page; pass the returned cursor for more. Optionally include replies and the parent tweet of each reply. Use this to read what an account publishes over time. Time-range filtering is NOT supported here — if you need tweets within a specific time window, use get_twitter_user_mentions (which accepts sinceTime/untilTime) or get_twitter_tweet_advanced_search with date operators in the query. If you only have a @handle, get_twitter_user_last_tweets accepts either handle or ID.
Usage-based billing; Default request estimate: $0.0057 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for paginating through results. Leave empty for the first page. | |
| userId | No | User ID of the user whose timeline to retrieve. | |
| userName | No | ||
| includeReplies | No | Whether to include replies in the results. Defaults to false. Provider reference (supplier schema): `{"default":false,"type":"boolean"}`. | |
| includeParentTweet | No | Whether to include the parent tweet when a tweet is a reply. Defaults to false. Provider reference (supplier schema): `{"default":false,"type":"boolean"}`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, open-world behavior, so the description's job is to add context beyond that. It does: pagination ceiling ('Up to 20 tweets per page; pass the returned cursor for more'), result ordering, and the absence of time-range filtering. It stops short of permission/auth requirements, but the added operational detail is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and each sentence carries routing information rather than filler. It runs five sentences and is somewhat dense, but the alternative-routing and pagination content justify the length; only the injected pricing block is pure noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, and the description still covers pagination, ordering, reply handling, and the filtering limitation with concrete alternatives. Nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so baseline is 3, and the description adds real value: it clarifies cursor usage across pages, notes userId must be numeric, and explains includeParentTweet's meaning ('the parent tweet of each reply'). The one gap is the undocumented userName parameter, which the description never addresses.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Retrieve a user's own tweets by numeric userId') plus scope and ordering ('newest first, matching the order shown on their profile'). It also implicitly separates itself from siblings like get_twitter_user_last_tweets and get_twitter_user_mentions by naming them as alternatives, so an agent can pick correctly without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it ('read what an account publishes over time'), when not to ('Time-range filtering is NOT supported here'), and which alternatives to use instead (get_twitter_user_mentions for sinceTime/untilTime, get_twitter_tweet_advanced_search for date operators). It even handles the handle-vs-ID case by pointing to get_twitter_user_last_tweets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_user_verified_followersGet Verified FollowersARead-onlyIdempotentInspect
List only the verified accounts following a given X user, in reverse chronological order. Use this to gauge the quality rather than the size of an audience — verified followers are a better credibility signal than raw follower count. Cursor-paginated. Takes a numeric user_id, not a @handle; resolve the handle first with get_twitter_user_info. For the complete follower list use get_twitter_user_followers.
Usage-based billing; Default request estimate: $0.006 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | The cursor to paginate through the results. First page is empty. | |
| user_id | Yes | User ID of the user. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: cursor-based pagination and reverse-chronological ordering. It does not mention rate limits, result caps, or per-page sizes, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The substantive content is six tight clauses, front-loaded with what/why before the disambiguation and prerequisite. The injected pricing block adds non-behavioral noise, but the author's own prose is efficient and well ordered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation. Between the description (scope, ordering, pagination, ID format, prerequisites) and the annotations (read-only, idempotent, open-world), nothing an agent needs in order to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning the schema lacks: user_id must be numeric and not an @handle, plus a named resolution path. Pagination via cursor is also called out, aligning with the schema's cursor field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource+scope ('List only the verified accounts following a given X user') and adds ordering semantics ('reverse chronological order'). It explicitly distinguishes itself from the sibling get_twitter_user_followers, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('gauge the quality rather than the size of an audience'), names the alternative for the full list (get_twitter_user_followers), and states a prerequisite (resolve the handle with get_twitter_user_info). All three when/how/what-before questions are answered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_youtube_searchSearch VideosARead-onlyIdempotentInspect
Search YouTube and get back matching videos, channels, and playlists. Set engine=youtube and pass the query in q; both are required. Optionally narrow by country (gl) and interface language (hl), or pass a YouTube filter token in sp for pagination and advanced filters such as upload date, duration, or result type. Use this to find video content on a topic, track a channel's recent uploads, or gauge how much video coverage a subject has. Note: this is served through the AIsa mapped path /apis/v1/youtube/search; the upstream provider's canonical path is not mounted directly.
Published reference price: $0.0029 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Search query. Required by runtime and upstream SearchApi. | |
| gl | No | Country code (e.g. us, jp) | |
| hl | No | Interface language | |
| sp | No | YouTube filter token (pagination or advanced filters) | |
| engine | Yes | SearchApi engine identifier. Use `youtube` for this YouTube endpoint. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description usefully adds pricing ($0.0029 per successful request) and a routing note about the mapped path versus the upstream canonical path, which is real operational 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core capability and required-parameter guidance are front-loaded, and the optional-parameter detail follows logically. The pricing comment block and path-mapping note add length that is only marginally actionable, slightly diluting an otherwise tight description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, rich annotations, and full schema description coverage, the description supplies exactly the missing pieces: required params, filter-token semantics, cost, and endpoint routing. Nothing an agent needs to invoke this correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description goes further by clarifying that engine and q are both required, that sp carries pagination and advanced filter tokens (upload date, duration, result type), and that gl/hl narrow by country and interface language.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Search YouTube') and enumerates the returned entities (videos, channels, playlists), which an agent can act on immediately. It does not explicitly contrast itself with the sibling 'search' tool, so the distinction is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives three concrete use cases (topic discovery, tracking a channel's uploads, gauging coverage) plus the mandatory engine/q pairing. There are no when-not-to-use conditions or named alternatives among the siblings, which keeps it out of 5 territory.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_posts_digestInstagram posts digest: a timeline page at ~3% of the sizeARead-onlyInspect
One page of a public account's timeline, projected down to what fits a context window.
Calls the same upstream as get_instagram_user_posts and keeps, per post: code,
full caption text, taken_at, media_type, like/comment/play counts, owner, ONE
image URL and ONE video URL (the largest variant of each), video_duration, and
the carousel slide count. Measured: 632 KB raw becomes about 20 KB; nothing is
summarised and no post is dropped — every post and every caption byte survives,
in upstream order.
What does NOT survive: the other 9 resolution variants per image, dash manifests,
and ~100 internal flag fields per post. If you need any of those — downloading
every resolution, building a player, forensic detail — call
get_instagram_user_posts instead; it returns the upstream response untouched.
Returns the first page. The response keeps next_max_id and more_available
as provider metadata; the current API contract does not accept a pagination
cursor, so this tool cannot request subsequent pages.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent=false, openWorld), it discloses concrete behavior: 632 KB → ~20 KB, nothing summarised, no post dropped, upstream order preserved, which 9 variants and ~100 flags are dropped, and a pagination limitation the API cannot work around. This is unusually rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and routing, then the survival/removal detail. Slightly long, but nearly every sentence carries decision-relevant information; the byte-savings figures and field list earn their space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-param read tool with an output schema, the description covers projection semantics, dropped fields, ordering, and the pagination constraint. An agent has everything needed to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One required parameter with 0% schema description coverage. The description implies the handle identifies a public account whose timeline is fetched, but never explicitly defines the parameter or its format. With a single trivial param and an output schema present, this is adequate but not compensating for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('one page of a public account's timeline, projected down') and explicitly contrasts with `get_instagram_user_posts`, so an agent can distinguish it from the sibling without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use (need compact captions/counts in a context window) and when-not (downloading every resolution, building a player, forensic detail), and routes to the exact alternative tool by name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_profile_digestInstagram profile digest: the profile card at ~1% of the sizeARead-onlyInspect
A public profile as a flat card, projected from the same upstream as get_instagram_profile.
Keeps: username, full_name, numeric id, biography, external_url, bio_links (title + url), follower/following/posts counts, verification and privacy flags, category, one profile picture URL, and the recent posts Instagram embeds in the profile (shortcode, full caption, like/comment counts, taken_at, one display URL each). Measured: 380 KB raw becomes about 15 KB — the recent posts and their display URLs are most of it.
Counts are flattened from their upstream wrappers: followers here is
data.user.edge_followed_by.count there. The numeric id feeds
get_instagram_basic_profile, which is the cheap (4.5 KB) per-id lookup for
enriching many accounts.
For the untouched upstream response — every field, every wrapper — call
get_instagram_profile instead.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive, and the description adds meaningful behavior beyond that: field flattening with a concrete path mapping (`edge_followed_by.count` → `followers`), measured size reduction from 380 KB to 15 KB, what is retained vs. dropped, and the one-display-URL-per-post rule. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences, front-loaded with the core purpose, followed by the field list, measured size, flattening detail, and alternative routing. Every sentence adds operational value with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description plus the existing output schema cover almost everything an agent needs: scope, field semantics, size characteristics, relation to siblings, and return shape. The only meaningful gap is the undocumented `handle` input and any format restrictions. For a one-parameter public read tool, this is very close to complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, `handle`, is never described in the definition. With 0% schema-description coverage, the description should at least state that `handle` is the Instagram username and whether a leading `@` is accepted, but it only mentions `username` as an output field. The input contract is left to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Defines the resource (a public Instagram profile) and the transformation (a compact flat-card projection), then enumerates exactly which fields are kept. It explicitly contrasts itself with `get_instagram_profile`, so an agent can distinguish it from that upstream tool and from `instagram_posts_digest`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-not signal: if the agent needs the untouched upstream response with every field and wrapper, call `get_instagram_profile` instead. It also explains that the returned numeric `id` feeds `get_instagram_basic_profile`, enabling intentional chaining for bulk enrichment. The size framing tells the agent when the compact digest 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.
list_categoriesBrowse the AIsa catalogueRead-onlyInspect
The AIsa catalogue at a glance: categories, the servers in each, tool counts, and the dedicated endpoint to connect if you only need one category. Free. (AIsa-only: tool-router has no equivalent.) Use mcp.aisa.one/mcp?modules=<category> (or mcp.aisa.one/<category>/mcp) to have that category's tools listed directly instead of via search.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
searchSearch AIsa tools and agent-ready plansARead-onlyInspect
Discover AIsa tools and Plans for external data or actions. Skip tasks that only need supplied content or general knowledge. For multi-step tasks, search the full goal before decomposing it. Use English; put identifiers in known_fields. If has_full_schema=false, call batch_get_schema. Next call batch_quote, not batch_use. Do not search for standalone rewriting, translation, summarization, formatting, or calculations on supplied content. For one capability, use an atomic query. Select a matching capability, date window, and metric. A Plan may cover only part of the task; assess its purpose and follow next_steps_guidance.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of additional direct tool candidates. | |
| query | Yes | Natural-language capability or task to discover. | |
| category | No | Restrict retrieval to one category. Omit to search everything. (AIsa-only: tool-router has no equivalent.) | |
| session_id | No | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. | |
| known_fields | No | Known values such as ticker, URL, provider, or identifier that improve retrieval. | |
| provider_filters | No | Optional exact catalog provider keys used to narrow retrieval (for example similarweb). Do not use display brands. Omit this field if the exact key is unknown. |
Output Schema
| Name | Required | Description |
|---|---|---|
| plan | No | |
| tools | Yes | |
| search_id | Yes | |
| session_id | Yes | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
| retrieval_mode | No | |
| next_steps_guidance | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds workflow behavior the annotations cannot: the has_full_schema flag gates a required batch_get_schema call, and the next step after search is batch_quote, not batch_use. It stops short of disclosing retrieval limits or catalog breadth that would push it to a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a dense run of imperatives rather than flowing prose, but each sentence carries a distinct rule (scope, language, workflow branch, negative cases, result interpretation) and the most important scoping guidance is front-loaded. Slightly more compression would help.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and it correctly avoids doing so while still referencing the output fields that drive the workflow (has_full_schema, next_steps_guidance). A mutation-free, well-annotated search tool is adequately covered, though catalog scope ('AIsa-only', no external providers) could be stated more explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the structured baseline is 3. The description adds genuine meaning beyond the schema by telling the agent to write the query in English and to place tickers, URLs, providers, or identifiers in known_fields, which is non-obvious routing guidance for a nested free-form object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Discover AIsa tools and Plans for external data or actions.' It also separates this discovery step from the sibling execution tools by naming batch_get_schema, batch_quote, and batch_use and stating when each follows, so an agent can place it in the workflow without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use ('tasks needing external data or actions'), when-not ('tasks that only need supplied content or general knowledge'; no standalone rewriting, translation, summarization, formatting, or calculations), and named alternatives (batch_get_schema when has_full_schema=false, batch_quote rather than batch_use). It also specifies query language and atomic-query style, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
useRun an AIsa operationCDestructiveInspect
deprecated, use batch_use instead
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | Arguments matching input_schema / arguments_schema | |
| search_id | No | search_id from the search that found this operation | |
| operation_id | Yes | operation_id as returned by search | |
| max_price_usd | No | Refuse the call before any spend if its quoted price is above this many USD |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=true, so the agent knows this is a state-changing, open-world operation. The description adds only the deprecation status and says nothing about what gets mutated, spend behavior (despite a max_price_usd param), or authorization needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single clause with zero waste; the deprecation notice and the replacement are front-loaded. It is terse by design for a deprecated endpoint, though it is under-specified rather than optimally efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Has an output schema and annotations, which reduces the burden, but a 4-parameter operation tool with a deprecation notice gives no information about what it executes or whether it remains functional. For an agent deciding between this and batch_use, the description is thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (operation_id, arguments, search_id, max_price_usd) are already documented in the schema. The description adds no parameter meaning on top, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description never states what the tool does — no verb or resource. It only labels the tool as deprecated and points to a replacement, leaving the actual capability ('Run an AIsa operation' from the title) unexplained. An agent must infer the purpose from the title and schema alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes the agent to the alternative ('use batch_use instead'), which is exactly the guidance needed for a deprecated tool. It doesn't explain when, if ever, this tool should still be called (e.g., during a migration window), 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
instagram_posts_digest1 field changed- removed
Input schema / properties / next_max_idRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null -}
41 tool updates
- Added
account - Removed
get_details - Changed
get_instagram_basic_profile2 fields changed- added
Input schema / properties / cache_max_ageAdded value: +{ + "description": "If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with \"cached\": true and a \"cached_at\" timestamp). Otherwise, scrape a live result (1 credit). [See the Caching page for details.](https://docs.scrapecreators.com/caching)", + "enum": [ + "14d", + "1d", + "30d", + "3d", + "7d" + ], + "type": "string" +} - added
Input schema / properties / userId / descriptionAdded value: +"Instagram user id"
- Changed
get_instagram_media_transcript3 fields changed- added
Input schema / properties / allow_long_transcriptionAdded value: +{ + "description": "Paid opt-in, enabled only by the literal query value 'true' (allow_long_transcription=true). Defaults to false when omitted; other values do not enable paid mode. By default, successful AI transcription of videos up to 120 seconds (two minutes, inclusive) costs a flat 1 credit per request. Over 120 seconds, videos cannot be AI-transcribed by default. Set allow_long_transcription=true to opt into paid AI with no fixed duration cap: ALL successful AI transcriptions in this mode cost 10 credits per started minute, including short videos: 10 * ceil(duration_seconds / 60). For example, 177 seconds costs 30 credits and an opted-in 60 seconds costs 10 credits. Empty AI results and errors cost 0 credits for AI transcription. This flag does not force AI and does not enable transcription or AI fallback by itself. Keep get_transcript=true or use_ai_as_fallback=true where required by the endpoint. Returned native captions still cost 1 credit on dedicated transcript routes, even for long videos with this flag; on detail routes they leave the base price unchanged. These routes remain synchronous. Allow at least 30 seconds on your client. Paid long transcription can exceed resource limits or timeouts, so successful transcription of long videos is not guaranteed.\n\nProvider reference (supplier schema): `{\"default\":false,\"type\":\"boolean\"}`.", + "type": "boolean" +} - added
Input schema / properties / cache_max_ageAdded value: +{ + "description": "If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with \"cached\": true and a \"cached_at\" timestamp). Otherwise, scrape a live result (By default, successful AI up to 120 seconds costs a flat 1 credit per request; over 120 seconds requires allow_long_transcription=true, which bills ALL successful AI at 10 credits per started minute, including short videos; empty AI results and errors cost 0 credits). [See the Caching page for details.](https://docs.scrapecreators.com/caching)", + "enum": [ + "14d", + "1d", + "30d", + "3d", + "7d" + ], + "type": "string" +} - added
Input schema / properties / url / descriptionAdded value: +"Instagram post or reel URL"
- Changed
get_instagram_post6 fields changed- added
Input schema / properties / cache_max_ageAdded value: +{ + "description": "If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with \"cached\": true and a \"cached_at\" timestamp). Otherwise, scrape a live result (1 credit). [See the Caching page for details.](https://docs.scrapecreators.com/caching)", + "enum": [ + "14d", + "1d", + "30d", + "3d", + "7d" + ], + "type": "string" +} - added
Input schema / properties / download_mediaAdded value: +{ + "description": "Set to true to download the video/images and get back permanent Supabase URLs. Costs 10 credits if media is found, 1 credit otherwise.", + "type": "boolean" +} - added
Input schema / properties / include_play_countAdded value: +{ + "description": "Set to false to omit `video_play_count` and skip its additional fetch for a faster response. Defaults to true.", + "type": "boolean" +} - added
Input schema / properties / regionAdded value: +{ + "description": "2 letter country code to set the proxy in", + "type": "string" +} - added
Input schema / properties / trimAdded value: +{ + "description": "Set to true to get a trimmed response", + "type": "boolean" +} - added
Input schema / properties / url / descriptionAdded value: +"Instagram post or reel URL"
- Changed
get_instagram_post_comments3 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "The cursor to get more comments. Get 'cursor' from previous response.", + "type": "string" +} - added
Input schema / properties / include_repliesAdded value: +{ + "description": "Set to true to include replies for every returned comment. This always costs 15 credits because each comment requires a separate Instagram replies request. You will still be charged 15 credits if no replies are returned. This is much slower and may time out at 29 seconds.", + "type": "boolean" +} - added
Input schema / properties / url / descriptionAdded value: +"The URL of the post or reel to get comments from"
- Changed
get_instagram_profile3 fields changed- added
Input schema / properties / cache_max_ageAdded value: +{ + "description": "If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with \"cached\": true and a \"cached_at\" timestamp). Otherwise, scrape a live result (1 credit). [See the Caching page for details.](https://docs.scrapecreators.com/caching)", + "enum": [ + "14d", + "1d", + "30d", + "3d", + "7d" + ], + "type": "string" +} - added
Input schema / properties / handle / descriptionAdded value: +"Instagram handle" - added
Input schema / properties / trim / descriptionAdded value: +"Set to true to get a trimmed response"
- Changed
get_instagram_reels_search3 fields changed- added
Input schema / properties / date_posted / descriptionAdded value: +"Optional Google-search date filter. Runtime confirmed with `last-hour`; omit this parameter if a provider search window is unavailable.\n\nProvider reference (supplier schema): `{\"enum\":[\"last-hour\",\"last-day\",\"last-week\",\"last-month\",\"last-year\"],\"type\":\"string\"}`." - added
Input schema / properties / page / descriptionAdded value: +"The page number to return." - added
Input schema / properties / query / descriptionAdded value: +"The keyword to search for"
- Changed
get_instagram_search_hashtag4 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "The cursor returned by the previous response. In this version, it is the next Google results page number.", + "type": "string" +} - added
Input schema / properties / date_postedAdded value: +{ + "description": "Only return Google-indexed posts found in this relative window.", + "enum": [ + "last-day", + "last-hour", + "last-month", + "last-week", + "last-year" + ], + "type": "string" +} - added
Input schema / properties / hashtag / descriptionAdded value: +"The hashtag to search for. Include or omit the #." - added
Input schema / properties / media_typeAdded value: +{ + "description": "Use all to search public posts and reels, or reels to only return reels. Defaults to all.", + "enum": [ + "all", + "reels" + ], + "type": "string" +}
- Changed
get_instagram_search_profiles2 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "The cursor returned by the previous response. In this version, it is the next Google results page number.", + "type": "string" +} - added
Input schema / properties / query / descriptionAdded value: +"Bio or caption keyword/phrase to search for."
- Changed
get_instagram_song_reels2 fields changed- added
Input schema / properties / audio_id / descriptionAdded value: +"The audio id from the Instagram audio page URL." - added
Input schema / properties / cursorAdded value: +{ + "description": "Pagination cursor returned by Instagram from the previous response.", + "type": "string" +}
- Changed
get_instagram_user_embed1 field changed- added
Input schema / properties / handle / descriptionAdded value: +"Instagram handle"
- Changed
get_instagram_user_highlight_detail1 field changed- added
Input schema / properties / id / descriptionAdded value: +"Highlight ID. Use `/instagram/user/highlights` to discover current highlight IDs for a public account."
- Changed
get_instagram_user_highlights2 fields changed- added
Input schema / properties / handle / descriptionAdded value: +"Instagram handle. Use user_id for faster response times." - added
Input schema / properties / user_idAdded value: +{ + "description": "Instagram user id. Use for faster response times.", + "type": "string" +}
- Changed
get_instagram_user_posts3 fields changed- added
Input schema / properties / handle / descriptionAdded value: +"Instagram handle" - added
Input schema / properties / next_max_idAdded value: +{ + "description": "Cursor to get next page of results.", + "type": "string" +} - added
Input schema / properties / trim / descriptionAdded value: +"Set to true to get a trimmed response"
- Changed
get_instagram_user_reels4 fields changed- added
Input schema / properties / handle / descriptionAdded value: +"Instagram handle. Use user_id for faster response times." - added
Input schema / properties / max_idAdded value: +{ + "description": "Max id to get more reels. Get 'max_id' from previous response.", + "type": "string" +} - added
Input schema / properties / trimAdded value: +{ + "description": "Set to true for a trimmed down version of the response", + "type": "boolean" +} - added
Input schema / properties / user_idAdded value: +{ + "description": "Instagram user id. Use this for faster response times.", + "type": "string" +}
- Changed
get_pinterest_board3 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "The cursor to get the next page of results", + "type": "string" +} - added
Input schema / properties / trim / descriptionAdded value: +"Set to true for a trimmed down version of the response" - added
Input schema / properties / url / descriptionAdded value: +"The URL of the board to get"
- Changed
get_pinterest_pin3 fields changed- added
Input schema / properties / cache_max_ageAdded value: +{ + "description": "If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with \"cached\": true and a \"cached_at\" timestamp). Otherwise, scrape a live result (1 credit). [See the Caching page for details.](https://docs.scrapecreators.com/caching)", + "enum": [ + "14d", + "1d", + "30d", + "3d", + "7d" + ], + "type": "string" +} - added
Input schema / properties / trim / descriptionAdded value: +"Set to true for a trimmed down version of the response" - added
Input schema / properties / url / descriptionAdded value: +"Pinterest pin URL"
- Changed
get_pinterest_search3 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "Cursor", + "type": "string" +} - added
Input schema / properties / query / descriptionAdded value: +"Search query" - added
Input schema / properties / trim / descriptionAdded value: +"Set to true for a trimmed down version of the response"
- Changed
get_pinterest_user_boards2 fields changed- added
Input schema / properties / handle / descriptionAdded value: +"The username of the user to get boards for. (e.g. broadstbullycom from https://www.pinterest.com/broadstbullycom/)" - added
Input schema / properties / trim / descriptionAdded value: +"Set to true for a trimmed down version of the response"
- Changed
get_reddit_post_comments3 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Cursor to get more comments, or replies." - added
Input schema / properties / trimAdded value: +{ + "description": "Set to true for a trimmed down version of the response", + "type": "boolean" +} - added
Input schema / properties / url / descriptionAdded value: +"Reddit post URL"
- Changed
get_reddit_search6 fields changed- added
Input schema / properties / afterAdded value: +{ + "description": "Used to paginate to next page", + "type": "string" +} - added
Input schema / properties / filterAdded value: +{ + "description": "Search posts or comments", + "enum": [ + "comments", + "posts" + ], + "type": "string" +} - added
Input schema / properties / query / descriptionAdded value: +"Search query" - added
Input schema / properties / sort / descriptionAdded value: +"Sort by\n\nProvider reference (supplier schema): `{\"enum\":[\"relevance\",\"new\",\"top\",\"comment_count\"],\"type\":\"string\"}`." - added
Input schema / properties / timeframe / descriptionAdded value: +"Timeframe\n\nProvider reference (supplier schema): `{\"enum\":[\"all\",\"day\",\"week\",\"month\",\"year\"],\"type\":\"string\"}`." - added
Input schema / properties / trim / descriptionAdded value: +"Set to true for a trimmed down version of the response"
- Changed
get_reddit_subreddit5 fields changed- added
Input schema / properties / after / descriptionAdded value: +"After to get more posts. Get 'after' from previous response." - added
Input schema / properties / sort / descriptionAdded value: +"Sort order\n\nProvider reference (supplier schema): `{\"enum\":[\"best\",\"hot\",\"new\",\"top\",\"rising\"],\"type\":\"string\"}`." - added
Input schema / properties / subreddit / descriptionAdded value: +"Subreddit name" - added
Input schema / properties / timeframe / descriptionAdded value: +"Timeframe to get posts from. Runtime requires `sort=top` when `timeframe` is provided.\n\nProvider reference (supplier schema): `{\"enum\":[\"all\",\"day\",\"week\",\"month\",\"year\"],\"type\":\"string\"}`." - added
Input schema / properties / trim / descriptionAdded value: +"Set to true for a trimmed down version of the response"
- Changed
get_reddit_subreddit_details3 fields changed- added
Input schema / properties / cache_max_ageAdded value: +{ + "description": "If we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with \"cached\": true and a \"cached_at\" timestamp). Otherwise, scrape a live result (1 credit). [See the Caching page for details.](https://docs.scrapecreators.com/caching)", + "enum": [ + "14d", + "1d", + "30d", + "3d", + "7d" + ], + "type": "string" +} - added
Input schema / properties / subreddit / descriptionAdded value: +"Subreddit name. MUST be case sensitive. So 'AskReddit' not 'askreddit'." - added
Input schema / properties / urlAdded value: +{ + "description": "Subreddit URL", + "type": "string" +}
- Changed
get_reddit_subreddit_search5 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "Cursor to get more results. Get 'cursor' from previous response.", + "type": "string" +} - added
Input schema / properties / query / descriptionAdded value: +"Search query to find matching content" - added
Input schema / properties / sort / descriptionAdded value: +"Sort order. For posts/media: relevance, hot, top, new, comments. For comments: relevance, top, new\n\nProvider reference (supplier schema): `{\"enum\":[\"relevance\",\"hot\",\"top\",\"new\",\"comments\"],\"type\":\"string\"}`." - added
Input schema / properties / subreddit / descriptionAdded value: +"Subreddit name (e.g. 'Fitness', not 'r/Fitness' or a full URL)" - added
Input schema / properties / timeframe / descriptionAdded value: +"Timeframe to filter results\n\nProvider reference (supplier schema): `{\"enum\":[\"all\",\"year\",\"month\",\"week\",\"day\",\"hour\"],\"type\":\"string\"}`."
- Changed
get_twitter_article1 field changed- added
Input schema / properties / tweet_id / descriptionAdded value: +"The tweet ID of the article."
- Changed
get_twitter_list_tweets_timeline2 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Cursor for paginating through results. Leave empty for the first page." - added
Input schema / properties / listId / descriptionAdded value: +"The list ID to get tweets from. e.g. 1846987139428634858"
- Changed
get_twitter_trends2 fields changed- added
Input schema / properties / count / descriptionAdded value: +"The number of trends to return. Default is 30.\n\nProvider reference (supplier schema): `{\"default\":30,\"format\":\"int64\",\"minimum\":30,\"type\":\"integer\"}`." - added
Input schema / properties / woeid / descriptionAdded value: +"The WOEID of the location. Example: 2418046.\n\nProvider reference (supplier schema): `{\"format\":\"int64\",\"type\":\"integer\"}`."
- Changed
get_twitter_tweet_advanced_search3 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"The cursor to paginate through the results. First page is empty." - added
Input schema / properties / query / descriptionAdded value: +"The query to search for." - added
Input schema / properties / queryType / descriptionAdded value: +"The query type to search for.\n\nProvider reference (supplier schema): `{\"default\":\"Latest\",\"enum\":[\"Latest\",\"Top\"],\"type\":\"string\"}`."
- Changed
get_twitter_tweet_quotes5 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "Cursor for pagination.", + "type": "string" +} - added
Input schema / properties / includeRepliesAdded value: +{ + "description": "Whether to include replies in the results. Default is True.\n\nProvider reference (supplier schema): `{\"default\":true,\"type\":\"boolean\"}`.", + "type": "boolean" +} - added
Input schema / properties / sinceTimeAdded value: +{ + "maximum": 9223372036854776000, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / tweetId / descriptionAdded value: +"The tweet ID to get quotes for." - added
Input schema / properties / untilTimeAdded value: +{ + "maximum": 9223372036854776000, + "minimum": 0, + "type": "integer" +}
- Changed
get_twitter_tweet_replies3 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Cursor for pagination." - added
Input schema / properties / queryTypeAdded value: +{ + "description": "Sort order for replies. Default is Relevance.\n\nProvider reference (supplier schema): `{\"default\":\"Relevance\",\"type\":\"string\"}`.", + "enum": [ + "Latest", + "Likes", + "Relevance" + ], + "type": "string" +} - added
Input schema / properties / tweetId / descriptionAdded value: +"The tweet ID to get replies for."
- Changed
get_twitter_tweet_replies_v23 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "Cursor for paginating through results. Leave empty for the first page.", + "type": "string" +} - added
Input schema / properties / queryType / descriptionAdded value: +"Sort order for replies. Default is Relevance.\n\nProvider reference (supplier schema): `{\"default\":\"Relevance\",\"enum\":[\"Relevance\",\"Latest\",\"Likes\"],\"type\":\"string\"}`." - added
Input schema / properties / tweetId / descriptionAdded value: +"The tweet ID to get replies for. e.g. 1846987139428634858"
- Changed
get_twitter_tweet_thread_context2 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"The cursor to paginate through the results. First page is empty." - added
Input schema / properties / tweetId / descriptionAdded value: +"The tweet ID to get. Can be a reply tweet or an original tweet."
- Changed
get_twitter_tweets1 field changed- added
Input schema / properties / tweet_ids / descriptionAdded value: +"Comma-separated list of tweet IDs."
- Changed
get_twitter_user_followers3 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Cursor for pagination" - added
Input schema / properties / pageSizeAdded value: +{ + "description": "Number of followers per page\n\nProvider reference (supplier schema): `{\"default\":200,\"type\":\"integer\"}`.", + "maximum": 200, + "minimum": 20, + "type": "integer" +} - added
Input schema / properties / userName / descriptionAdded value: +"Screen name of the user"
- Changed
get_twitter_user_followings3 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"The cursor to paginate through the results. First page is empty." - added
Input schema / properties / pageSizeAdded value: +{ + "description": "The number of followings to return per page.\n\nProvider reference (supplier schema): `{\"default\":200,\"type\":\"integer\"}`.", + "maximum": 200, + "minimum": 20, + "type": "integer" +} - added
Input schema / properties / userName / descriptionAdded value: +"Screen name of the user."
- Changed
get_twitter_user_info1 field changed- added
Input schema / properties / userName / descriptionAdded value: +"The screen name of the user"
- Changed
get_twitter_user_last_tweets4 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Cursor for pagination" - added
Input schema / properties / includeReplies / descriptionAdded value: +"Include replies in the results\n\nProvider reference (supplier schema): `{\"default\":false,\"type\":\"boolean\"}`." - added
Input schema / properties / userId / descriptionAdded value: +"User ID of the user" - added
Input schema / properties / userName / descriptionAdded value: +"Screen name of the user"
- Changed
get_twitter_user_mentions4 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "The cursor to paginate through the results. First page is empty.", + "type": "string" +} - added
Input schema / properties / sinceTimeAdded value: +{ + "maximum": 9223372036854776000, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / untilTimeAdded value: +{ + "maximum": 9223372036854776000, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / userName / descriptionAdded value: +"The user screen name to get mentions for."
- Changed
get_twitter_user_search2 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "The cursor to paginate through the results. First page is empty.", + "type": "string" +} - added
Input schema / properties / query / descriptionAdded value: +"The keyword to search."
- Changed
get_twitter_user_tweet_timeline4 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Cursor for paginating through results. Leave empty for the first page." - added
Input schema / properties / includeParentTweet / descriptionAdded value: +"Whether to include the parent tweet when a tweet is a reply. Defaults to false.\n\nProvider reference (supplier schema): `{\"default\":false,\"type\":\"boolean\"}`." - added
Input schema / properties / includeReplies / descriptionAdded value: +"Whether to include replies in the results. Defaults to false.\n\nProvider reference (supplier schema): `{\"default\":false,\"type\":\"boolean\"}`." - added
Input schema / properties / userId / descriptionAdded value: +"User ID of the user whose timeline to retrieve."
1 tool update
- Removed
get_twitter_spaces_detail
46 tool updates
- Added
batch_get_schema - Added
batch_quote - Changed
batch_use18 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / calls / descriptionRemoved value: -"Up to 20 items of {call_id, operation_id, arguments}; steps at the same execution_level of a plan go in one batch" - added
Input schema / properties / calls / items / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - changed
Input schema / properties / calls / items / additionalPropertiesPrevious value: -trueNew value: +false - added
Input schema / properties / calls / items / propertiesAdded value: +{ + "arguments": { + "additionalProperties": true, + "description": "Strictly schema-compliant arguments using the exact field names and types from this tool's arguments_schema.", + "type": "object" + }, + "call_id": { + "description": "Caller-chosen identifier unique within this batch.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "tool": { + "description": "Exact tool name returned by search or batch_get_schema. Never invent a name.", + "minLength": 1, + "type": "string" + } +} - added
Input schema / properties / calls / items / requiredAdded value: +[ + "call_id", + "tool", + "arguments" +] - added
Input schema / properties / calls / maxItemsAdded value: +20 - added
Input schema / properties / calls / minItemsAdded value: +1 - removed
Input schema / properties / max_price_usdRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Per-call price cap applied to every item" -} - removed
Input schema / properties / search_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / search_id / defaultRemoved value: -null - changed
Input schema / properties / search_id / descriptionPrevious value: -"search_id from the search that found these operations"New value: +"Optional search correlation identifier returned by search." - added
Input schema / properties / search_id / typeAdded value: +"string" - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Output schema / $defsAdded value: +{ + "jsonValue": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/jsonValue" + }, + "type": "object" + }, + { + "items": { + "$ref": "#/$defs/jsonValue" + }, + "type": "array" + }, + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "JSON value returned by the upstream tool." + } +} - added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / propertiesAdded value: +{ + "batch_id": { + "type": "string" + }, + "error_count": { + "minimum": 0, + "type": "integer" + }, + "next_steps_guidance": { + "description": "Deterministic next-step instructions derived from this result. Not an authorization grant.", + "items": { + "type": "string" + }, + "type": "array" + }, + "results": { + "items": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "call_id": { + "type": "string" + }, + "customer_cost_micros_usd": { + "description": "Actual customer charge settled by AIsaServices, in micro-USD. Omitted when the upstream response does not report it.", + "minimum": 0, + "type": "integer" + }, + "data": { + "$ref": "#/$defs/jsonValue" + }, + "error": { + "anyOf": [ + { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "status": { + "type": "integer" + }, + "type": { + "enum": [ + "validation", + "authentication", + "payment", + "permission", + "rate_limit", + "upstream", + "timeout", + "internal" + ], + "type": "string" + } + }, + "required": [ + "type", + "status", + "retryable" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "request_id": { + "type": "string" + }, + "successful": { + "type": "boolean" + }, + "tool": { + "type": "string" + }, + "upstream_status": { + "description": "HTTP status returned by AIsaServices when a request was dispatched.", + "type": "integer" + } + }, + "required": [ + "call_id", + "tool", + "successful", + "request_id" + ], + "type": "object" + }, + "type": "array" + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" + }, + "success_count": { + "minimum": 0, + "type": "integer" + }, + "total_count": { + "minimum": 1, + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "session_id", + "batch_id", + "total_count", + "success_count", + "error_count", + "results", + "next_steps_guidance" +]
- Changed
get_details13 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / argumentsRemoved value: -{ - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "The arguments the operation would be called with, for a price that reflects them. Keyed by operation_id for a batch, or passed flat for a single operation_id. Routes whose required parameters are validated before pricing have no price without them." -} - added
Input schema / properties / include_arguments_schemaAdded value: +{ + "default": true, + "description": "Return the complete arguments_schema. Defaults to true.", + "type": "boolean" +} - changed
Input schema / properties / include_documentation / descriptionPrevious value: -"Include the complete native public OpenAPI document, reference closure and scoped completeness. Existing execution schemas remain unchanged."New value: +"Return the complete immutable public OpenAPI operation, referenced declarations, provenance and scoped completeness. Documentation does not change execution support." - added
Input schema / properties / include_response_schemaAdded value: +{ + "default": false, + "description": "Return the complete response_schema. Defaults to false.", + "type": "boolean" +} - removed
Input schema / properties / operation_idRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "One operation_id from search" -} - removed
Input schema / properties / operation_idsRemoved value: -{ - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Up to 20 operation_ids, for a batch" -} - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Input schema / properties / toolsAdded value: +{ + "description": "Exact tool names returned by search whose complete contracts are needed. Never invent tool names.", + "items": { + "minLength": 1, + "pattern": "^\\S(?:.*\\S)?$", + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true +} - removed
Input schema / properties / with_quoteRemoved value: -{ - "default": true, - "description": "Whether each operation is priced for this account before the answer. One round trip per operation; spends nothing.", - "type": "boolean" -} - added
Input schema / requiredAdded value: +[ + "tools" +] - added
Output schema / propertiesAdded value: +{ + "error_count": { + "type": "integer" + }, + "next_steps_guidance": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]{1,128}$", + "type": "string" + }, + "success_count": { + "type": "integer" + }, + "tools": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "arguments_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "canonical_operation_id": { + "type": "string" + }, + "documentation": { + "additionalProperties": true, + "type": "object" + }, + "error": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ] + }, + "execution_supported": { + "description": "Whether this router can execute and quote the operation; false retains documentation and discovery only.", + "type": "boolean" + }, + "execution_unsupported_reason": { + "description": "Why execution and quoting remain unavailable through this router.", + "type": "string" + }, + "idempotent": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + } + ] + }, + "known_pitfalls": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "read_only": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + } + ] + }, + "response_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "side_effects": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "successful": { + "type": "boolean" + } + }, + "required": [ + "successful" + ], + "type": "object" + }, + "type": "object" + }, + "total_count": { + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "error_count", + "next_steps_guidance", + "session_id", + "success_count", + "tools", + "total_count" +]
- Changed
get_instagram_basic_profile2 fields changed- removed
Input schema / properties / userId / descriptionRemoved value: -"Instagram user id" - removed
Input schema / properties / userId / exampleRemoved value: -"314216"
- Changed
get_instagram_media_transcript2 fields changed- removed
Input schema / properties / url / descriptionRemoved value: -"Instagram post or reel URL" - changed
Input schema / requiredPrevious value: -[ - "url" -]New value: +[]
- Changed
get_instagram_post5 fields changed- removed
Input schema / properties / download_mediaRemoved value: -{ - "description": "Set to true to download the video/images and get back permanent Supabase URLs. Costs 10 credits if media is found, 1 credit otherwise.", - "type": "boolean" -} - removed
Input schema / properties / regionRemoved value: -{ - "description": "2 letter country code to set the proxy in", - "example": "US", - "type": "string" -} - removed
Input schema / properties / trimRemoved value: -{ - "description": "Set to true to get a trimmed response", - "type": "boolean" -} - removed
Input schema / properties / url / descriptionRemoved value: -"Instagram post or reel URL" - changed
Input schema / requiredPrevious value: -[ - "url" -]New value: +[]
- Changed
get_instagram_post_comments4 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "The cursor to get more comments. Get 'cursor' from previous response.", - "example": "eyJjYWNoZWRfY29tbWVud...", - "type": "string" -} - removed
Input schema / properties / url / descriptionRemoved value: -"The URL of the post or reel to get comments from" - removed
Input schema / properties / url / exampleRemoved value: -"https://www.instagram.com/reel/DOq6eV6iIgD" - changed
Input schema / requiredPrevious value: -[ - "url" -]New value: +[]
- Changed
get_instagram_profile5 fields changed- removed
Input schema / properties / handle / descriptionRemoved value: -"Instagram handle" - removed
Input schema / properties / handle / exampleRemoved value: -"jane" - removed
Input schema / properties / trim / descriptionRemoved value: -"Set to true to get a trimmed response" - changed
Input schema / properties / trim / typePrevious value: -"boolean"New value: +"string" - changed
Input schema / requiredPrevious value: -[ - "handle" -]New value: +[]
- Changed
get_instagram_reels_search10 fields changed- removed
Input schema / properties / date_posted / descriptionRemoved value: -"Optional Google-search date filter. Runtime confirmed with `last-hour`; omit this parameter if a provider search window is unavailable." - removed
Input schema / properties / date_posted / enumRemoved value: -[ - "last-hour", - "last-day", - "last-week", - "last-month", - "last-year" -] - removed
Input schema / properties / date_posted / exampleRemoved value: -"last-hour" - added
Input schema / properties / limitAdded value: +{ + "type": "string" +} - removed
Input schema / properties / page / descriptionRemoved value: -"The page number to return." - removed
Input schema / properties / page / exampleRemoved value: -1 - changed
Input schema / properties / page / typePrevious value: -"number"New value: +"string" - removed
Input schema / properties / query / descriptionRemoved value: -"The keyword to search for" - removed
Input schema / properties / query / exampleRemoved value: -"dogs" - changed
Input schema / requiredPrevious value: -[ - "query" -]New value: +[]
- Changed
get_instagram_search_hashtag6 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "The cursor returned by the previous response. In this version, it is the next Google results page number.", - "example": "2", - "type": "string" -} - removed
Input schema / properties / date_postedRemoved value: -{ - "description": "Only return Google-indexed posts found in this relative window.", - "enum": [ - "last-hour", - "last-day", - "last-week", - "last-month", - "last-year" - ], - "example": "last-week", - "type": "string" -} - removed
Input schema / properties / hashtag / descriptionRemoved value: -"The hashtag to search for. Include or omit the #." - removed
Input schema / properties / hashtag / exampleRemoved value: -"makeup" - removed
Input schema / properties / media_typeRemoved value: -{ - "description": "Use all to search public posts and reels, or reels to only return reels. Defaults to all.", - "enum": [ - "all", - "reels" - ], - "example": "all", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "hashtag" -]New value: +[]
- Changed
get_instagram_search_profiles4 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "The cursor returned by the previous response. In this version, it is the next Google results page number.", - "example": "2", - "type": "string" -} - removed
Input schema / properties / query / descriptionRemoved value: -"Bio or caption keyword/phrase to search for." - removed
Input schema / properties / query / exampleRemoved value: -"fitness coach" - changed
Input schema / requiredPrevious value: -[ - "query" -]New value: +[]
- Changed
get_instagram_song_reels4 fields changed- removed
Input schema / properties / audio_id / descriptionRemoved value: -"The audio id from the Instagram audio page URL." - removed
Input schema / properties / audio_id / exampleRemoved value: -"1392969992841787" - removed
Input schema / properties / cursorRemoved value: -{ - "description": "Pagination cursor returned by Instagram from the previous response.", - "example": "Gsbyq-aju4eF02y...", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "audio_id" -]New value: +[]
- Changed
get_instagram_user_embed3 fields changed- removed
Input schema / properties / handle / descriptionRemoved value: -"Instagram handle" - removed
Input schema / properties / handle / exampleRemoved value: -"jane" - changed
Input schema / requiredPrevious value: -[ - "handle" -]New value: +[]
- Changed
get_instagram_user_highlight_detail2 fields changed- removed
Input schema / properties / id / descriptionRemoved value: -"Highlight ID. Use `/instagram/user/highlights` to discover current highlight IDs for a public account." - removed
Input schema / properties / id / exampleRemoved value: -"18029499352961095"
- Changed
get_instagram_user_highlights3 fields changed- removed
Input schema / properties / handle / descriptionRemoved value: -"Instagram handle. Use user_id for faster response times." - removed
Input schema / properties / handle / exampleRemoved value: -"jane" - removed
Input schema / properties / user_idRemoved value: -{ - "description": "Instagram user id. Use for faster response times.", - "example": "2700692569", - "type": "string" -}
- Changed
get_instagram_user_posts5 fields changed- removed
Input schema / properties / handle / descriptionRemoved value: -"Instagram handle" - removed
Input schema / properties / next_max_idRemoved value: -{ - "description": "Cursor to get next page of results.", - "type": "string" -} - removed
Input schema / properties / trim / descriptionRemoved value: -"Set to true to get a trimmed response" - changed
Input schema / properties / trim / typePrevious value: -"boolean"New value: +"string" - changed
Input schema / requiredPrevious value: -[ - "handle" -]New value: +[]
- Changed
get_instagram_user_reels5 fields changed- removed
Input schema / properties / handle / descriptionRemoved value: -"Instagram handle. Use user_id for faster response times." - removed
Input schema / properties / handle / exampleRemoved value: -"jane" - removed
Input schema / properties / max_idRemoved value: -{ - "description": "Max id to get more reels. Get 'max_id' from previous response.", - "example": "QVFCVzNnS2lI...==", - "type": "string" -} - removed
Input schema / properties / trimRemoved value: -{ - "description": "Set to true for a trimmed down version of the response", - "example": "false", - "type": "boolean" -} - removed
Input schema / properties / user_idRemoved value: -{ - "description": "Instagram user id. Use this for faster response times.", - "example": "2700692569", - "type": "string" -}
- Changed
get_pinterest_board7 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "The cursor to get the next page of results", - "example": "Y2JURlEwTWsxNlp6Vk9SR2MwV....", - "type": "string" -} - removed
Input schema / properties / trim / descriptionRemoved value: -"Set to true for a trimmed down version of the response" - removed
Input schema / properties / trim / exampleRemoved value: -"false" - changed
Input schema / properties / trim / typePrevious value: -"boolean"New value: +"string" - removed
Input schema / properties / url / descriptionRemoved value: -"The URL of the board to get" - removed
Input schema / properties / url / exampleRemoved value: -"https://www.pinterest.com/lizmrodgers/moms-night/" - changed
Input schema / requiredPrevious value: -[ - "url" -]New value: +[]
- Changed
get_pinterest_pin6 fields changed- removed
Input schema / properties / trim / descriptionRemoved value: -"Set to true for a trimmed down version of the response" - removed
Input schema / properties / trim / exampleRemoved value: -"false" - changed
Input schema / properties / trim / typePrevious value: -"boolean"New value: +"string" - removed
Input schema / properties / url / descriptionRemoved value: -"Pinterest pin URL" - removed
Input schema / properties / url / exampleRemoved value: -"https://www.pinterest.com/pin/1124351863225567517/" - changed
Input schema / requiredPrevious value: -[ - "url" -]New value: +[]
- Changed
get_pinterest_search8 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "Cursor", - "example": "Y2JVSG81V2sxcmNHRlpWM1J...", - "type": "string" -} - added
Input schema / properties / limitAdded value: +{ + "type": "string" +} - removed
Input schema / properties / query / descriptionRemoved value: -"Search query" - removed
Input schema / properties / query / exampleRemoved value: -"Italian Pot Roast" - removed
Input schema / properties / trim / descriptionRemoved value: -"Set to true for a trimmed down version of the response" - removed
Input schema / properties / trim / exampleRemoved value: -"false" - changed
Input schema / properties / trim / typePrevious value: -"boolean"New value: +"string" - changed
Input schema / requiredPrevious value: -[ - "query" -]New value: +[]
- Changed
get_pinterest_user_boards6 fields changed- removed
Input schema / properties / handle / descriptionRemoved value: -"The username of the user to get boards for. (e.g. broadstbullycom from https://www.pinterest.com/broadstbullycom/)" - removed
Input schema / properties / handle / exampleRemoved value: -"broadstbullycom" - removed
Input schema / properties / trim / descriptionRemoved value: -"Set to true for a trimmed down version of the response" - removed
Input schema / properties / trim / exampleRemoved value: -"false" - changed
Input schema / properties / trim / typePrevious value: -"boolean"New value: +"string" - changed
Input schema / requiredPrevious value: -[ - "handle" -]New value: +[]
- Changed
get_reddit_post_comments7 fields changed- removed
Input schema / properties / cursor / descriptionRemoved value: -"Cursor to get more comments, or replies." - removed
Input schema / properties / cursor / exampleRemoved value: -"ed1lvsa,ed3fnpq,ed25l2w" - removed
Input schema / properties / trimRemoved value: -{ - "description": "Set to true for a trimmed down version of the response", - "example": "false", - "type": "boolean" -} - added
Input schema / properties / trimmedAdded value: +{ + "type": "string" +} - removed
Input schema / properties / url / descriptionRemoved value: -"Reddit post URL" - removed
Input schema / properties / url / exampleRemoved value: -"https://www.reddit.com/r/AskReddit/comments/ablzuq/people_who_havent_pooped_in_2019_yet_why_are_you/" - changed
Input schema / requiredPrevious value: -[ - "url" -]New value: +[]
- Changed
get_reddit_search16 fields changed- removed
Input schema / properties / afterRemoved value: -{ - "description": "Used to paginate to next page", - "example": "t3_1i8z28z", - "type": "string" -} - added
Input schema / properties / countAdded value: +{ + "type": "string" +} - added
Input schema / properties / limitAdded value: +{ + "type": "string" +} - removed
Input schema / properties / query / descriptionRemoved value: -"Search query" - removed
Input schema / properties / sort / descriptionRemoved value: -"Sort by" - removed
Input schema / properties / sort / enumRemoved value: -[ - "relevance", - "new", - "top", - "comment_count" -] - removed
Input schema / properties / sort / exampleRemoved value: -"relevance" - added
Input schema / properties / timeAdded value: +{ + "type": "string" +} - removed
Input schema / properties / timeframe / descriptionRemoved value: -"Timeframe" - removed
Input schema / properties / timeframe / enumRemoved value: -[ - "all", - "day", - "week", - "month", - "year" -] - removed
Input schema / properties / timeframe / exampleRemoved value: -"all" - removed
Input schema / properties / trim / descriptionRemoved value: -"Set to true for a trimmed down version of the response" - removed
Input schema / properties / trim / exampleRemoved value: -"false" - changed
Input schema / properties / trim / typePrevious value: -"boolean"New value: +"string" - added
Input schema / properties / trimmedAdded value: +{ + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "query" -]New value: +[]
- Changed
get_reddit_subreddit12 fields changed- removed
Input schema / properties / after / descriptionRemoved value: -"After to get more posts. Get 'after' from previous response." - removed
Input schema / properties / after / exampleRemoved value: -"t3_1234567890" - added
Input schema / properties / cache_max_ageAdded value: +{ + "type": "string" +} - removed
Input schema / properties / sort / descriptionRemoved value: -"Sort order" - removed
Input schema / properties / sort / enumRemoved value: -[ - "best", - "hot", - "new", - "top", - "rising" -] - removed
Input schema / properties / subreddit / descriptionRemoved value: -"Subreddit name" - removed
Input schema / properties / timeframe / descriptionRemoved value: -"Timeframe to get posts from. Runtime requires `sort=top` when `timeframe` is provided." - removed
Input schema / properties / timeframe / enumRemoved value: -[ - "all", - "day", - "week", - "month", - "year" -] - removed
Input schema / properties / trim / descriptionRemoved value: -"Set to true for a trimmed down version of the response" - removed
Input schema / properties / trim / exampleRemoved value: -"false" - changed
Input schema / properties / trim / typePrevious value: -"boolean"New value: +"string" - changed
Input schema / requiredPrevious value: -[ - "subreddit" -]New value: +[]
- Changed
get_reddit_subreddit_details3 fields changed- removed
Input schema / properties / subreddit / descriptionRemoved value: -"Subreddit name. MUST be case sensitive. So 'AskReddit' not 'askreddit'." - removed
Input schema / properties / subreddit / exampleRemoved value: -"AskReddit" - removed
Input schema / properties / urlRemoved value: -{ - "description": "Subreddit URL", - "example": "https://www.reddit.com/r/AbsoluteUnits/", - "type": "string" -}
- Changed
get_reddit_subreddit_search9 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "Cursor to get more results. Get 'cursor' from previous response.", - "example": "eyJjYW5kaWRhdGVzX3JldHVybmVkIjoi...", - "type": "string" -} - removed
Input schema / properties / query / descriptionRemoved value: -"Search query to find matching content" - removed
Input schema / properties / query / exampleRemoved value: -"push ups" - removed
Input schema / properties / sort / descriptionRemoved value: -"Sort order. For posts/media: relevance, hot, top, new, comments. For comments: relevance, top, new" - removed
Input schema / properties / sort / enumRemoved value: -[ - "relevance", - "hot", - "top", - "new", - "comments" -] - removed
Input schema / properties / subreddit / descriptionRemoved value: -"Subreddit name (e.g. 'Fitness', not 'r/Fitness' or a full URL)" - removed
Input schema / properties / timeframe / descriptionRemoved value: -"Timeframe to filter results" - removed
Input schema / properties / timeframe / enumRemoved value: -[ - "all", - "year", - "month", - "week", - "day", - "hour" -] - changed
Input schema / requiredPrevious value: -[ - "subreddit" -]New value: +[]
- Changed
get_twitter_article2 fields changed- removed
Input schema / properties / tweet_id / descriptionRemoved value: -"The tweet ID of the article." - changed
Input schema / requiredPrevious value: -[ - "tweet_id" -]New value: +[]
- Changed
get_twitter_list_tweets_timeline3 fields changed- removed
Input schema / properties / cursor / descriptionRemoved value: -"Cursor for paginating through results. Leave empty for the first page." - removed
Input schema / properties / listId / descriptionRemoved value: -"The list ID to get tweets from. e.g. 1846987139428634858" - changed
Input schema / requiredPrevious value: -[ - "listId" -]New value: +[]
- Changed
get_twitter_trends9 fields changed- removed
Input schema / properties / count / defaultRemoved value: -30 - removed
Input schema / properties / count / descriptionRemoved value: -"The number of trends to return. Default is 30." - removed
Input schema / properties / count / formatRemoved value: -"int64" - removed
Input schema / properties / count / minimumRemoved value: -30 - changed
Input schema / properties / count / typePrevious value: -"integer"New value: +"string" - removed
Input schema / properties / woeid / descriptionRemoved value: -"The WOEID of the location. Example: 2418046." - removed
Input schema / properties / woeid / formatRemoved value: -"int64" - changed
Input schema / properties / woeid / typePrevious value: -"integer"New value: +"string" - changed
Input schema / requiredPrevious value: -[ - "woeid" -]New value: +[]
- Changed
get_twitter_tweet_advanced_search9 fields changed- added
Input schema / properties / countAdded value: +{ + "type": "string" +} - removed
Input schema / properties / cursor / descriptionRemoved value: -"The cursor to paginate through the results. First page is empty." - added
Input schema / properties / max_resultsAdded value: +{ + "type": "string" +} - removed
Input schema / properties / query / descriptionRemoved value: -"The query to search for." - removed
Input schema / properties / queryType / defaultRemoved value: -"Latest" - removed
Input schema / properties / queryType / descriptionRemoved value: -"The query type to search for." - removed
Input schema / properties / queryType / enumRemoved value: -[ - "Latest", - "Top" -] - added
Input schema / properties / start_timeAdded value: +{ + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "query", - "queryType" -]New value: +[]
- Changed
get_twitter_tweet_quotes3 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "Cursor for pagination.", - "type": "string" -} - removed
Input schema / properties / tweetId / descriptionRemoved value: -"The tweet ID to get quotes for." - changed
Input schema / requiredPrevious value: -[ - "tweetId" -]New value: +[]
- Changed
get_twitter_tweet_replies3 fields changed- removed
Input schema / properties / cursor / descriptionRemoved value: -"Cursor for pagination." - removed
Input schema / properties / tweetId / descriptionRemoved value: -"The tweet ID to get replies for." - changed
Input schema / requiredPrevious value: -[ - "tweetId" -]New value: +[]
- Changed
get_twitter_tweet_replies_v26 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "Cursor for paginating through results. Leave empty for the first page.", - "type": "string" -} - removed
Input schema / properties / queryType / defaultRemoved value: -"Relevance" - removed
Input schema / properties / queryType / descriptionRemoved value: -"Sort order for replies. Default is Relevance." - removed
Input schema / properties / queryType / enumRemoved value: -[ - "Relevance", - "Latest", - "Likes" -] - removed
Input schema / properties / tweetId / descriptionRemoved value: -"The tweet ID to get replies for. e.g. 1846987139428634858" - changed
Input schema / requiredPrevious value: -[ - "tweetId" -]New value: +[]
- Changed
get_twitter_tweet_thread_context3 fields changed- removed
Input schema / properties / cursor / descriptionRemoved value: -"The cursor to paginate through the results. First page is empty." - removed
Input schema / properties / tweetId / descriptionRemoved value: -"The tweet ID to get. Can be a reply tweet or an original tweet." - changed
Input schema / requiredPrevious value: -[ - "tweetId" -]New value: +[]
- Changed
get_twitter_tweets4 fields changed- removed
Input schema / properties / tweet_ids / descriptionRemoved value: -"Comma-separated list of tweet IDs." - removed
Input schema / properties / tweet_ids / itemsRemoved value: -{ - "type": "string" -} - changed
Input schema / properties / tweet_ids / typePrevious value: -"array"New value: +"string" - changed
Input schema / requiredPrevious value: -[ - "tweet_ids" -]New value: +[]
- Changed
get_twitter_user_batch_info_by_ids4 fields changed- removed
Input schema / properties / userIds / descriptionRemoved value: -"Comma-separated user IDs" - added
Input schema / properties / userIds / x-aisa-delimiterAdded value: +"," - added
Input schema / properties / userIds / x-aisa-maxItemsAdded value: +100000 - added
Input schema / properties / userIds / x-aisa-minItemsAdded value: +1
- Changed
get_twitter_user_followers4 fields changed- removed
Input schema / properties / cursor / descriptionRemoved value: -"Cursor for pagination" - removed
Input schema / properties / pageSizeRemoved value: -{ - "default": 200, - "description": "Number of followers per page", - "maximum": 200, - "minimum": 20, - "type": "integer" -} - removed
Input schema / properties / userName / descriptionRemoved value: -"Screen name of the user" - changed
Input schema / requiredPrevious value: -[ - "userName" -]New value: +[]
- Changed
get_twitter_user_followings4 fields changed- removed
Input schema / properties / cursor / descriptionRemoved value: -"The cursor to paginate through the results. First page is empty." - removed
Input schema / properties / pageSizeRemoved value: -{ - "default": 200, - "description": "The number of followings to return per page.", - "maximum": 200, - "minimum": 20, - "type": "integer" -} - removed
Input schema / properties / userName / descriptionRemoved value: -"Screen name of the user." - changed
Input schema / requiredPrevious value: -[ - "userName" -]New value: +[]
- Changed
get_twitter_user_info2 fields changed- removed
Input schema / properties / userName / descriptionRemoved value: -"The screen name of the user" - changed
Input schema / requiredPrevious value: -[ - "userName" -]New value: +[]
- Changed
get_twitter_user_last_tweets7 fields changed- added
Input schema / properties / countAdded value: +{ + "type": "string" +} - removed
Input schema / properties / cursor / descriptionRemoved value: -"Cursor for pagination" - removed
Input schema / properties / includeReplies / defaultRemoved value: -false - removed
Input schema / properties / includeReplies / descriptionRemoved value: -"Include replies in the results" - changed
Input schema / properties / includeReplies / typePrevious value: -"boolean"New value: +"string" - removed
Input schema / properties / userId / descriptionRemoved value: -"User ID of the user" - removed
Input schema / properties / userName / descriptionRemoved value: -"Screen name of the user"
- Changed
get_twitter_user_mentions5 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "The cursor to paginate through the results. First page is empty.", - "type": "string" -} - removed
Input schema / properties / sinceTimeRemoved value: -{ - "description": "On or after a specified unix timestamp in seconds.", - "format": "int64", - "type": "integer" -} - removed
Input schema / properties / untilTimeRemoved value: -{ - "description": "Before a specified unix timestamp in seconds.", - "format": "int64", - "type": "integer" -} - removed
Input schema / properties / userName / descriptionRemoved value: -"The user screen name to get mentions for." - changed
Input schema / requiredPrevious value: -[ - "userName" -]New value: +[]
- Changed
get_twitter_user_search3 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "The cursor to paginate through the results. First page is empty.", - "type": "string" -} - removed
Input schema / properties / query / descriptionRemoved value: -"The keyword to search." - changed
Input schema / requiredPrevious value: -[ - "query" -]New value: +[]
- Changed
get_twitter_user_tweet_timeline9 fields changed- removed
Input schema / properties / cursor / descriptionRemoved value: -"Cursor for paginating through results. Leave empty for the first page." - removed
Input schema / properties / includeParentTweet / defaultRemoved value: -false - removed
Input schema / properties / includeParentTweet / descriptionRemoved value: -"Whether to include the parent tweet when a tweet is a reply. Defaults to false." - changed
Input schema / properties / includeParentTweet / typePrevious value: -"boolean"New value: +"string" - removed
Input schema / properties / includeReplies / defaultRemoved value: -false - removed
Input schema / properties / includeReplies / descriptionRemoved value: -"Whether to include replies in the results. Defaults to false." - changed
Input schema / properties / includeReplies / typePrevious value: -"boolean"New value: +"string" - removed
Input schema / properties / userId / descriptionRemoved value: -"User ID of the user whose timeline to retrieve." - added
Input schema / properties / userNameAdded value: +{ + "type": "string" +}
- Changed
search17 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / category / anyOfRemoved value: -[ - { - "enum": [ - "seo", - "finance", - "social", - "search", - "sales", - "mail" - ], - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / category / defaultRemoved value: -null - changed
Input schema / properties / category / descriptionPrevious value: -"Restrict to one category (seo, finance, social, search, sales, mail). Omit to search everything."New value: +"Restrict retrieval to one category. Omit to search everything. (AIsa-only: tool-router has no equivalent.)" - added
Input schema / properties / category / enumAdded value: +[ + "seo", + "finance", + "social", + "search", + "sales", + "mail" +] - added
Input schema / properties / category / typeAdded value: +"string" - added
Input schema / properties / known_fieldsAdded value: +{ + "additionalProperties": true, + "default": {}, + "description": "Known values such as ticker, URL, provider, or identifier that improve retrieval.", + "type": "object" +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum candidates, 1-10"New value: +"Maximum number of additional direct tool candidates." - added
Input schema / properties / limit / maximumAdded value: +20 - added
Input schema / properties / limit / minimumAdded value: +1 - added
Input schema / properties / provider_filtersAdded value: +{ + "default": [], + "description": "Optional exact catalog provider keys used to narrow retrieval (for example similarweb). Do not use display brands. Omit this field if the exact key is unknown.", + "items": { + "type": "string" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true +} - changed
Input schema / properties / query / descriptionPrevious value: -"What you need, in plain language, e.g. 'backlinks of a domain', 'recent tweets by a user', 'insider trades for AAPL'. English works best."New value: +"Natural-language capability or task to discover." - added
Input schema / properties / query / maxLengthAdded value: +2000 - added
Input schema / properties / query / minLengthAdded value: +1 - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Output schema / propertiesAdded value: +{ + "next_steps_guidance": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "plan": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "canonical_use_case": { + "type": "string" + }, + "description": { + "type": "string" + }, + "known_pitfalls": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "plan_ref": { + "type": "string" + }, + "primary_tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "recommended_steps": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "related_tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + } + }, + "required": [ + "canonical_use_case", + "description", + "known_pitfalls", + "plan_ref", + "primary_tools", + "recommended_steps", + "related_tools" + ] + }, + "retrieval_mode": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "search_id": { + "type": "string" + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]{1,128}$", + "type": "string" + }, + "tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "additionalProperties": false, + "properties": { + "arguments_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "description": { + "type": "string" + }, + "execution_supported": { + "description": "Whether this router can execute and quote the operation; false retains documentation and discovery only.", + "type": "boolean" + }, + "execution_unsupported_reason": { + "description": "Why execution and quoting remain unavailable through this router.", + "type": "string" + }, + "has_full_schema": { + "type": "boolean" + }, + "match_reasons": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "price": { + "additionalProperties": true, + "type": "object" + }, + "retrieval_debug": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "fused_rank": { + "type": "integer" + }, + "fused_score": { + "type": "number" + }, + "lexical_rank": { + "type": "integer" + }, + "lexical_score": { + "type": "number" + }, + "rerank_admission_rank": { + "type": "integer" + }, + "rerank_rank": { + "type": "integer" + }, + "rerank_score": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "number" + } + ] + }, + "runtime_availability": { + "type": "string" + }, + "vector_view_ranks": { + "additionalProperties": { + "type": "integer" + }, + "type": "object" + }, + "vector_view_scores": { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + }, + "required": [ + "fused_rank", + "fused_score", + "lexical_rank", + "lexical_score", + "rerank_admission_rank", + "rerank_rank", + "runtime_availability", + "vector_view_ranks", + "vector_view_scores" + ] + }, + "summary": { + "type": "string" + }, + "tool": { + "type": "string" + } + }, + "required": [ + "description", + "has_full_schema", + "price", + "summary", + "tool" + ], + "type": "object" + } + } +} - added
Output schema / requiredAdded value: +[ + "next_steps_guidance", + "search_id", + "session_id", + "tools" +]
- Changed
use1 field changed- changed
Input schema / properties / max_price_usd / descriptionPrevious value: -"Refuse the call before any spend if it would cost more than this many USD"New value: +"Refuse the call before any spend if its quoted price is above this many USD"
1 tool update
- Changed
get_details1 field changed- added
Input schema / properties / include_documentationAdded value: +{ + "default": false, + "description": "Include the complete native public OpenAPI document, reference closure and scoped completeness. Existing execution schemas remain unchanged.", + "type": "boolean" +}
21 tool updates
- Changed
get_instagram_basic_profile1 field changed- added
Input schema / properties / userId / exampleAdded value: +"314216"
- Changed
get_instagram_post1 field changed- added
Input schema / properties / region / exampleAdded value: +"US"
- Changed
get_instagram_post_comments2 fields changed- added
Input schema / properties / cursor / exampleAdded value: +"eyJjYWNoZWRfY29tbWVud..." - added
Input schema / properties / url / exampleAdded value: +"https://www.instagram.com/reel/DOq6eV6iIgD"
- Changed
get_instagram_profile1 field changed- added
Input schema / properties / handle / exampleAdded value: +"jane"
- Changed
get_instagram_reels_search3 fields changed- added
Input schema / properties / date_posted / exampleAdded value: +"last-hour" - added
Input schema / properties / page / exampleAdded value: +1 - added
Input schema / properties / query / exampleAdded value: +"dogs"
- Changed
get_instagram_search_hashtag4 fields changed- added
Input schema / properties / cursor / exampleAdded value: +"2" - added
Input schema / properties / date_posted / exampleAdded value: +"last-week" - added
Input schema / properties / hashtag / exampleAdded value: +"makeup" - added
Input schema / properties / media_type / exampleAdded value: +"all"
- Changed
get_instagram_search_profiles2 fields changed- added
Input schema / properties / cursor / exampleAdded value: +"2" - added
Input schema / properties / query / exampleAdded value: +"fitness coach"
- Changed
get_instagram_song_reels2 fields changed- added
Input schema / properties / audio_id / exampleAdded value: +"1392969992841787" - added
Input schema / properties / cursor / exampleAdded value: +"Gsbyq-aju4eF02y..."
- Changed
get_instagram_user_embed1 field changed- added
Input schema / properties / handle / exampleAdded value: +"jane"
- Changed
get_instagram_user_highlight_detail1 field changed- added
Input schema / properties / id / exampleAdded value: +"18029499352961095"
- Changed
get_instagram_user_highlights2 fields changed- added
Input schema / properties / handle / exampleAdded value: +"jane" - added
Input schema / properties / user_id / exampleAdded value: +"2700692569"
- Changed
get_instagram_user_reels4 fields changed- added
Input schema / properties / handle / exampleAdded value: +"jane" - added
Input schema / properties / max_id / exampleAdded value: +"QVFCVzNnS2lI...==" - added
Input schema / properties / trim / exampleAdded value: +"false" - added
Input schema / properties / user_id / exampleAdded value: +"2700692569"
- Changed
get_pinterest_board3 fields changed- added
Input schema / properties / cursor / exampleAdded value: +"Y2JURlEwTWsxNlp6Vk9SR2MwV...." - added
Input schema / properties / trim / exampleAdded value: +"false" - added
Input schema / properties / url / exampleAdded value: +"https://www.pinterest.com/lizmrodgers/moms-night/"
- Changed
get_pinterest_pin2 fields changed- added
Input schema / properties / trim / exampleAdded value: +"false" - added
Input schema / properties / url / exampleAdded value: +"https://www.pinterest.com/pin/1124351863225567517/"
- Changed
get_pinterest_search3 fields changed- added
Input schema / properties / cursor / exampleAdded value: +"Y2JVSG81V2sxcmNHRlpWM1J..." - added
Input schema / properties / query / exampleAdded value: +"Italian Pot Roast" - added
Input schema / properties / trim / exampleAdded value: +"false"
- Changed
get_pinterest_user_boards2 fields changed- added
Input schema / properties / handle / exampleAdded value: +"broadstbullycom" - added
Input schema / properties / trim / exampleAdded value: +"false"
- Changed
get_reddit_post_comments3 fields changed- added
Input schema / properties / cursor / exampleAdded value: +"ed1lvsa,ed3fnpq,ed25l2w" - added
Input schema / properties / trim / exampleAdded value: +"false" - added
Input schema / properties / url / exampleAdded value: +"https://www.reddit.com/r/AskReddit/comments/ablzuq/people_who_havent_pooped_in_2019_yet_why_are_you/"
- Changed
get_reddit_search4 fields changed- added
Input schema / properties / after / exampleAdded value: +"t3_1i8z28z" - added
Input schema / properties / sort / exampleAdded value: +"relevance" - added
Input schema / properties / timeframe / exampleAdded value: +"all" - added
Input schema / properties / trim / exampleAdded value: +"false"
- Changed
get_reddit_subreddit2 fields changed- added
Input schema / properties / after / exampleAdded value: +"t3_1234567890" - added
Input schema / properties / trim / exampleAdded value: +"false"
- Changed
get_reddit_subreddit_details2 fields changed- added
Input schema / properties / subreddit / exampleAdded value: +"AskReddit" - added
Input schema / properties / url / exampleAdded value: +"https://www.reddit.com/r/AbsoluteUnits/"
- Changed
get_reddit_subreddit_search2 fields changed- added
Input schema / properties / cursor / exampleAdded value: +"eyJjYW5kaWRhdGVzX3JldHVybmVkIjoi..." - added
Input schema / properties / query / exampleAdded value: +"push ups"
61 tool updates
- First observed
batch_use - First observed
get_details - First observed
get_instagram_basic_profile - First observed
get_instagram_media_transcript - First observed
get_instagram_post - First observed
get_instagram_post_comments - First observed
get_instagram_profile - First observed
get_instagram_reels_search - First observed
get_instagram_reels_trending - First observed
get_instagram_search_hashtag - First observed
get_instagram_search_profiles - First observed
get_instagram_song_reels - First observed
get_instagram_user_embed - First observed
get_instagram_user_highlight_detail - First observed
get_instagram_user_highlights - First observed
get_instagram_user_posts - First observed
get_instagram_user_reels - First observed
get_pinterest_board - First observed
get_pinterest_pin - First observed
get_pinterest_search - First observed
get_pinterest_user_boards - First observed
get_reddit_post_comments - First observed
get_reddit_search - First observed
get_reddit_subreddit - First observed
get_reddit_subreddit_details - First observed
get_reddit_subreddit_search - First observed
get_twitter_article - First observed
get_twitter_community_info - First observed
get_twitter_community_members - First observed
get_twitter_community_moderators - First observed
get_twitter_community_tweets - First observed
get_twitter_community_tweets_all - First observed
get_twitter_list_followers - First observed
get_twitter_list_members - First observed
get_twitter_list_tweets_timeline - First observed
get_twitter_spaces_detail - First observed
get_twitter_trends - First observed
get_twitter_tweet_advanced_search - First observed
get_twitter_tweet_quotes - First observed
get_twitter_tweet_replies - First observed
get_twitter_tweet_replies_v2 - First observed
get_twitter_tweet_retweeters - First observed
get_twitter_tweet_thread_context - First observed
get_twitter_tweets - First observed
get_twitter_user_about - First observed
get_twitter_user_batch_info_by_ids - First observed
get_twitter_user_check_follow_relationship - First observed
get_twitter_user_followers - First observed
get_twitter_user_followings - First observed
get_twitter_user_info - First observed
get_twitter_user_last_tweets - First observed
get_twitter_user_mentions - First observed
get_twitter_user_search - First observed
get_twitter_user_tweet_timeline - First observed
get_twitter_user_verified_followers - First observed
get_youtube_search - First observed
instagram_posts_digest - First observed
instagram_profile_digest - First observed
list_categories - First observed
search - First observed
use
Publisher details
- Operator
- AIsa · Publisher source
- Operator website
- https://aisa.one
- Vendor relationship
- Independent
- Documentation
- https://mcp.aisa.one/servers
- Trust center
- Not available
- Restrictions
- No paid plan, admin approval, regional limit or custom OAuth app is needed to connect. Sign-in is OAuth against auth.aisa.one with dynamic client registration (RFC 7591), or an Authorization: Bearer AIsa API key. search, get_details and list_categories are free. use and batch_use are billed per call to the caller's own AIsa key, and max_price_usd refuses anything above a cap before any spend. Some operations are subscription-only on the gateway and answer 402 without the Hive GTM Growth plan.
Related MCP Connectors
Your agent needs public Instagram data — a creator's posts and reels, what a hashtag is producing, what a video actually says. The official Graph API only sees accounts you already own, and needs app review to see those. **What you can ask for** • "Pull this creator's last 50 posts and reels with engagement counts." • "What is trending under #skincare this week, and which profiles keep appearing?" • "Transcribe this reel and tell me what the hook in the first three seconds is." • "Read the comments on this post and group the objections." • "Which reels use this song right now?" **How to use it** Point any MCP client at https://mcp.aisa.one/instagram/mcp and sign in with OAuth — there is no key to create or paste. 17 read tools: profiles (basic and full), a user's posts, reels and highlights, post and profile digests, post comments, reels search, trending reels, reels by song, hashtag and profile search, and media transcripts. **Why this rather than the source** Public profiles without owning the account, and no app review to sit through. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Size a creator's audience here, then ask the same agent what their brand's site traffic looks like or who to contact there — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/social/mcp for X plus Instagram, Reddit, Pinterest and YouTube; https://mcp.aisa.one/gtm/mcp for those plus Similarweb and Apollo.
Your agent needs X/Twitter data — who follows a competitor, what a community is posting, who quoted that tweet, what is trending in Japan. Normally that means applying for an X developer account, passing app review, and managing a quota per endpoint. **What you can ask for** • "Who follows @stripe, and which of them are verified?" • "Pull every reply and quote on this tweet and summarise what people object to." • "List this community's moderators and its posts this week." • "What is trending in Japan right now?" • "Give me the full thread context behind this link, including the long-form article." **How to use it** Point any MCP client at https://mcp.aisa.one/twitter-api/mcp and sign in with OAuth — there is no key to create or paste. 29 read tools: users (profile, about, batch lookup by id, search, followers, verified followers, followings, follow check), tweets (timeline, latest, mentions, advanced search, replies, quotes, retweeters, thread context, articles), communities, lists, Spaces and trends. **Why this rather than the source** No developer account to apply for, no app review, no per-endpoint quota to manage. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Ask for a handle's followers here, then ask the same agent for that brand's search traffic, its backlinks, or the people to contact — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/social/mcp for X plus Instagram, Reddit, Pinterest and YouTube; https://mcp.aisa.one/gtm/mcp for those plus Similarweb and Apollo.
Your agent needs to know what a community actually thinks — which subreddit is discussing your category, what the top posts argue, what the comment tree says underneath. **What you can ask for** • "Which subreddits discuss project-management tools, and how big are they?" • "Find posts complaining about Notion pricing in the last month." • "Read the full comment tree on this thread and summarise the disagreement." • "What is r/selfhosted posting about this week?" • "Search every community for mentions of our product name." **How to use it** Point any MCP client at https://mcp.aisa.one/reddit/mcp and sign in with OAuth — there is no key to create or paste. 5 read tools: search across all of Reddit or inside one subreddit, browse a subreddit's post stream, read a subreddit's details, and pull a post's comment tree. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Find the complaint here, then ask the same agent what the competitor's traffic or backlinks look like — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/social/mcp for X plus Instagram, Reddit, Pinterest and YouTube; https://mcp.aisa.one/gtm/mcp for those plus Similarweb and Apollo.
Your agent needs live data — a competitor's traffic, who to contact there, what people are saying, what Google and ChatGPT answer about you, a company's filings. Normally that is six vendor accounts, six sets of keys and six SDKs. This is one URL. **What you can ask for** • "How much traffic does stripe.com get, where does it come from, and who competes for the same keywords?" • "Find 20 Series-B fintech companies in Germany and the heads of marketing there, with emails." • "Does ChatGPT mention our brand when someone asks for the best CRM — and what does it cite?" • "What is X saying about $NVDA today, and what did the stock actually do?" • "Search the web for this, then scrape the three best pages into markdown." **How to use it** Point any MCP client at https://mcp.aisa.one/mcp and sign in with OAuth — there is no key to create or paste. Then just ask: the agent calls search to find the right operation and use to run it. **Why this rather than the source** 26 sources behind one account and one bill — DataForSEO, Semrush, Ahrefs, Similarweb, Apollo, X/Twitter, Instagram, Reddit, Pinterest, YouTube, Tavily, Exa, Perplexity, Firecrawl, CoinGecko, Kalshi, Polymarket, AgentMail and more, 580+ operations. tools/list returns five tools, not 580, so the introduction does not eat your context window. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** One slice at a time: https://mcp.aisa.one/seo/mcp · /finance/mcp · /social/mcp · /search/mcp · /sales/mcp · /mail/mcp · /gtm/mcp, or a single provider like /twitter-api/mcp. Same account, fewer tools listed, and search still reaches everything. Full list at https://mcp.aisa.one/servers
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceOne remote MCP endpoint giving agents live data from Twitter/X, Reddit, web, GitHub, Amazon, and YouTube, no API keys needed, pay per call.4MIT
- AlicenseAqualityCmaintenanceEnables AI agents to query public social media data across TikTok, Instagram, YouTube, X, Douyin and Xiaohongshu through ten unified business-level tools covering creator and post search, comments, trending topics, and comment insights. Ships one normalized schema over MCP, SSE, REST and stdio, with per-call pricing and cost/balance reported in every response.10MIT
- AlicenseNot gradedqualityCmaintenanceSocial media API and MCP server for AI agents that enables publishing to X, Instagram, LinkedIn, Reddit, Bluesky, and Threads from a single endpoint.100 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to post, schedule, thread, delete, and analyze social media posts across platforms like X, Bluesky, LinkedIn, and Instagram through a single MCP interface.241 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.