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
- 89.1% over 21 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 61 tools
Some overlap exists but descriptions help: get_instagram_profile, get_instagram_basic_profile, and instagram_profile_digest all return profile data, and get_twitter_tweet_replies vs get_twitter_tweet_replies_v2 are near-duplicates. The detailed cross-references and 'use X instead' guidance reduce ambiguity, but the sheer number of subtly differentiated variants still creates misselection risk.
The dominant pattern is clear and consistent: get_<platform>_<resource> in snake_case, such as get_reddit_post_comments and get_twitter_user_followers. Generic helpers like search, use, batch_use, and list_categories plus instagram_profile_digest/instagram_posts_digest break the pattern, but they are minor exceptions rather than a systemic inconsistency.
At 61 tools, the set is well beyond the comfortable range and feels heavy even for a multi-platform social data server. Several endpoints are variations of the same underlying operation (basic/full/digest profiles, v1/v2 replies, multiple reels search modes), which inflates the count without adding proportional conceptual surface.
Read-side coverage is strong across Instagram, Pinterest, Reddit, and Twitter, including profiles, posts, comments, search, communities, lists, and engagement data. YouTube is notably thin with only get_youtube_search, and write operations are absent, but the generic search/use tools provide an escape hatch to the wider AIsa catalogue, so most workflows do not hit a dead end.
Available Tools
61 toolsbatch_useRun up to 20 operationsADestructiveInspect
Execute up to 20 operations concurrently (tool-router's batch_use). Each item answers independently; one failure never cancels the others. Billed per call to your AIsa key.
| Name | Required | Description | Default |
|---|---|---|---|
| calls | Yes | Up to 20 items of {call_id, operation_id, arguments}; steps at the same execution_level of a plan go in one batch | |
| search_id | No | search_id from the search that found these operations | |
| max_price_usd | No | Per-call price cap applied to every item |
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 destructiveHint=true and openWorldHint=true, so safety is covered. The description adds valuable behavior: independence of items (one failure doesn't cancel others) and per-call billing. These are not derivable from annotations and help the agent set expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero filler. The action and limit are front-loaded. The phrase 'tool-router's batch_use' is redundant since it restates the tool name, but it's a minor flaw. Overall it is concise and well-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?
With annotations covering destructive behavior and an output schema presumably describing results, the description covers the key operational aspects: concurrency limit, independence, and billing. It doesn't mention error reporting formats, but those likely live in the output schema. It is sufficiently complete for a batch tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents each parameter. The description adds no parameter-specific details. The calls parameter's description already explains the structure and batching context, so the baseline of 3 applies; the description doesn't need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action (execute) and resource (operations) with a concrete limit (up to 20) and concurrency. It doesn't explicitly name the sibling 'use' for single operations, but the distinction is clear enough from the concurrency and limit. The redundancy of 'tool-router's batch_use' is minor.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus the sibling 'use' tool. The schema note about 'steps at the same execution_level of a plan go in one batch' is helpful, but it lives in the schema, not the description. The description only implies batching via concurrency but doesn't state when to choose it over the single-operation alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_detailsShow operation detailsARead-onlyInspect
Full contract of one or more operations: arguments_schema, response_schema, read_only, side_effects, availability, price, suggested_max_price_usd and known_pitfalls. Free — a quote authenticates like a call but stops before any spend.
price.model distinguishes the sources: quoted is what this
account would be charged now, list is the published price,
dynamic means the price varies with the request and only a quote
states it, composed means the operation runs several upstream
calls. suggested_max_price_usd is that estimate with headroom,
in the shape use and batch_use take as max_price_usd.
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | 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. | |
| with_quote | No | Whether each operation is priced for this account before the answer. One round trip per operation; spends nothing. | |
| operation_id | No | One operation_id from search | |
| operation_ids | No | Up to 20 operation_ids, for a batch |
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=true and destructiveHint=false. The description adds meaningful context: it is free, stops before any spend, and explains how price.model varies (quoted, list, dynamic, composed). It also clarifies that suggested_max_price_usd has headroom. This goes beyond the annotation flags and gives the agent a clear model of what happens.
Agents need to know what a tool does to the 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 moderately long but well structured: it opens with the core purpose, then explains the price model in a dedicated paragraph. No redundancy or filler. It front-loads the most critical information (contract fields) and then gives necessary detail about price semantics. Slightly dense but not overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 tool has an output schema, so return values need no description. The description covers the key behavioral aspects (no spend, pricing models, max_price headroom) and clarifies edge cases like routes without a price. For a read-only informational tool, this is complete enough for an agent to use 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 parameters are already documented. The description adds some nuance, such as how arguments affect pricing and that required parameters may be needed before a price can be quoted. It also clarifies with_quote's purpose (one round trip, spends nothing). These are useful but not essential given the schema's completeness.
Input schemas describe structure but not intent. Descriptions should explain 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 purpose: returning the full contract of one or more operations, including schemas, read_only, side_effects, price, and known_pitfalls. It clearly distinguishes this from executing operations (use, batch_use) and from discovery (search, list_categories). The verb 'get' and the noun 'details' align with the title, and the first sentence is explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to assess an operation before spending (e.g., 'A quote authenticates like a call but stops before any spend'), and the schema says 'One operation_id from search', hinting at a flow. However, it never explicitly states when to choose this over siblings like use or search, nor does it give exclusions. The guidance is implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | No | Instagram user id |
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, openWorldHint, idempotentHint, and destructiveHint=false, covering safety. The description adds useful behavioral context: the compact size (~4 KB), the normalized flat fields, and the explicit list of returned fields. It doesn't contradict annotations and goes beyond them by explaining what data shape to expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficient. It front-loads the core purpose, then provides size comparison, field list, and usage guidance. Each clause earns its place; while it's a single long sentence, splitting it would improve readability but not information 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 single-parameter, read-only tool with an output schema, this description is remarkably complete. It specifies the exact return fields, clarifies the input constraint, provides provenance for the id, and gives routing to alternatives. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema documents userId with a description and example, but the description adds crucial semantics: the id must be numeric, and it explains how to obtain it from other tools (data.user.id, search results, or post owners). This is meaningful beyond the schema's simple 'Instagram user id'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Returns a compact public profile for a numeric Instagram user id.' It immediately distinguishes itself from get_instagram_profile by contrasting size (4 KB vs 380 KB) and field list. An agent can tell exactly what this tool does and how it differs from siblings without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use and when-not-to-use guidance: 'Prefer this endpoint whenever the id is in hand' and 'Use get_instagram_profile only when a handle is all that is available.' It also explains how to obtain the id from three other tools, fully routing the agent to the correct alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_media_transcriptMedia TranscriptARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Instagram post or reel URL |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/non-destructive annotations, the description discloses the photo-error behavior, the two-minute duration limit, the measured 13-second latency, and an approximate 1 KB response size. These are the operational behaviors an agent needs to anticipate and they do not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences each carry distinct information: purpose and output, constraints and error, performance and payload size, and the caption alternative. The most important selection criteria are front-loaded before operational details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single parameter and an output schema present, the description covers everything an agent needs to decide and invoke correctly: input constraints, failure mode, fallback verification, and the sibling tool to use for captions. No critical gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only says the url is an Instagram post or reel URL, but the description adds substantive meaning: it must be public, a video or reel, under two minutes, and should be verified with is_video when the type is unknown. This materially improves correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it transcribes speech in a public Instagram video or reel and lists the returned transcript fields (id, shortcode, and transcribed text). This clearly differentiates it from caption-focused siblings like get_instagram_post.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit conditions for use: the target must be a video under two minutes, a photo returns 400 bad_request, and when the type is unknown the agent should check is_video with get_instagram_post first. It also directs the agent to use get_instagram_post's edge_media_to_caption when the written caption is needed.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | 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 | |
| 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. |
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=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context beyond annotations: the response size ('Measured at about 197 KB'), the credit cost difference (1 vs 10 credits), and the side effect of download_media=true ('mirrors the media to permanent storage'). This is useful behavioral disclosure that annotations don't 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?
The description is three sentences with no filler. It front-loads the core purpose and return data, then adds the cost warning, then routes to siblings. Every sentence earns its place and the structure is logical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a read-only metadata tool. It covers the return path, key fields, response size, cost implications, and sibling routing. The output schema exists, so return values don't need further explanation. An agent has everything needed 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 schema already documents all four parameters. The description adds context for download_media (credit cost and permanent storage) and implies the URL is the primary identifier, but it doesn't add much beyond the schema for trim or region. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Returns full metadata'), a specific resource ('one public post or reel identified by its URL'), and the exact data path ('data.xdt_shortcode_media'). It also lists the key fields returned, which distinguishes it from sibling tools like get_instagram_post_comments and get_instagram_media_transcript.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names sibling tools for related use cases: '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.' It also gives clear guidance on when to use the download_media parameter ('leave it off unless the files are needed'). This is explicit routing and usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_post_commentsPost CommentsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL of the post or reel to get comments from | |
| cursor | No | The cursor to get more comments. Get 'cursor' from previous response. |
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 (read-only, idempotent, non-destructive), the description adds valuable behavioral context: the response is normalized and small (~10 KB), only top-level comments are returned, child_comment_count is informational only, and replies cannot be expanded. This materially helps the agent set expectations about output size and limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the first defines the return shape, the second adds a size expectation, and the third clarifies scope limits and routes to a sibling tool. The core behavior is front-loaded and there is no redundant restating of the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple GET-like tool with two parameters sufficient descriptions in the schemached, an output schema, and strong annotations, the description is complete. It covers paging, top-level-only behavior, the unexpandable replies limitation, and the sibling tool for related data, so nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes both parameters fully (url and cursor), so the schema carries most of the burden. The description adds minor context by confirming the URL may point to a post or reel and mentioning the cursor is used for paging, but it does not substantially extend the schema's parameter explanations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (comments on a public Instagram post or reel by URL) and states the action (returns them in a normalized shape). It also lists the exact fields returned)Skip and distinguishes itself from get_instagram_post by directing that tool to post metadata, so an agent can tell it apart 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 states when to use the tool (when you need comments on a public post/reel), and explicitly says to call get_instagram_post instead for the post itself. It also discloses that only top-level comments are available and that no endpoint expands replies, preventing fruitless attempts to fetch child comments through this API.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| trim | No | Set to true to get a trimmed response | |
| handle | Yes | 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 mark the tool as read-only, idempotent, and non-destructive. The description adds valuable operational context beyond those hints: the data comes from Instagram's own web API, the payload is about 380 KB, trim barely reduces it, and the response contains specific fields under data.user. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: it states the purpose, lists the response contents, gives the payload size, warns about trim's inefficiency, and points to the lighter alternative. It is front-loaded with the core result and organized in a logical flow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only two-parameter tool with an output schema present, the description covers response shape, payload size, the trim caveat, and the sibling alternative thoroughly. It does not mention error cases or rate limits, but the annotations and output schema reduce the burden, making the description complete enough 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 100%, so the schema already documents both parameters. The description goes further by quantifying trim's actual effect (saves under one percent) and advising against relying on it, which is meaningfully useful semantics beyond the schema. The handle parameter is adequately covered by its example in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Returns the full public profile for an Instagram handle'. It also distinguishes itself from get_instagram_basic_profile by noting the basic variant returns the same headline numbers in 4 KB when the numeric id is known, so an agent can easily tell the two apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly names get_instagram_basic_profile as the alternative when the numeric id is already known, including the size trade-off. It also warns that trim=true saves under one percent and should not be relied on, giving clear when-to/when-not-to guidance for configuration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_reels_searchSearch ReelsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | The page number to return. | |
| query | Yes | 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. |
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, openWorldHint, idempotentHint, and destructiveHint falsecars. The description adds meaningful behavioral context beyond that: the source is Google's public index, coverage is incomplete, measured size/time are provided, and engagement counts are populated. This gives the agent concrete expectations about data scope and performance without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact yet information-dense, with the core purpose front-loaded, followed by coverage constraints, performance characteristics, and explicit routing to alternatives. Every sentence adds useful information, and nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexityaine, the presence of an output schema listing all return fields, annotations covering safety, and a thorough description of behavior, limitations, and alternatives, the definition is fully sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters with examples and descriptions. The description adds some interpretive value (e.g., date_posted narrows to a relative window) but does not materially expand parameter semantics beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Searches') and names the exact resource ('reels by keyword through Google'), while distinguishing it from the login-gated Instagram search. It also explicitly differentiates from sibling tools like get_instagram_search_hashtag and get_instagram_reels_trending, making the tool's unique role immediately clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool vs alternatives, naming get_instagram_search_hashtag for hashtag searches and get_instagram_reels_trending for trending reels with no query. It also clarifies coverage limitations and the behavior of date_posted, giving clear context for selecting and invoking the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_reels_trendingTrending ReelsARead-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.
| 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?
The description discloses that Instagram serves small overlapping batches, that the tool returns about 30 reels and 411 KB, and that play_count and ig_play_count came back null on every item. This goes well beyond the annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint) and gives the agent critical expectations about pagination, size, and null fields. 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?
The description is dense but every sentence earns its place: it states the source, the normalized shape, the batching/overlap behavior, the measured size and null fields, and the sibling alternative. It is front-loaded with the core purpose and then provides operational details. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, an output schema exists, and annotations cover safety/idempotency, the description is complete. It explains the return shape, the need for de-duplication, the null-field caveat, and the alternative for topic search. An agent has everything needed to invoke and process the result correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is 100% (empty properties). The description explicitly states 'Takes no parameters and cannot be filtered,' which adds clarity beyond the empty schema by ruling out any hidden filtering capability. Since there are no parameters to document, the description fully covers parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Returns'), a specific resource (the public instagram.com/reels page), and the normalized shape of the result. It also explicitly distinguishes itself from get_instagram_reels_search, which is a sibling tool, by noting the difference in play_count/ig_play_count population. This makes the tool's purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says the tool takes no parameters and cannot be filtered, and it directs the agent to use get_instagram_reels_search for topic-based search. It also provides operational guidance: call repeatedly and de-duplicate on shortcode because batches overlap. This is clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| 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 | Yes | 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?
Beyond the annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint false), the description discloses that it searches via Google, returns a normalized shape consistent with a sibling tool, notes that the cursor is a Google page number (not an Instagram cursor), and gives an approximate response size (~78 KB). This adds substantial behavioral context beyond what 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?
The description is a single paragraph that front-loads the core purpose, then adds critical usage details (media_type, cursor semantics, size) and a routing note. It is informative without being bloated, though it could be tightened by removing the size measurement which may be overly specific for an agent's selection decision.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 4-parameter schema with enums, an output schema, and rich annotations, the description covers the search method, parameter nuances, sibling differentiation, and performance expectation. An agent has all necessary information to select and invoke this tool correctly without missing context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so every parameter is documented in the schema. The description adds meaningful nuance for the cursor parameter (explaining it is a page number) and clarifies media_type options ('narrow to reels'), which go slightly beyond the schema's basic descriptions. This justifies a score above the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Finds') and resource ('public posts carrying a hashtag through Google'), and explicitly distinguishes it from the sibling get_instagram_reels_search by contrasting the search method. The purpose is unambiguous and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states when to use this tool versus the alternative: 'To search caption keywords rather than a hashtag, use get_instagram_reels_search.' It also explains the media_type option for narrowing results, providing explicit usage context without leaving anything to inference.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | 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 declare readOnlyHint=true, openWorldHint=true, and idempotentHint=true, so the safety profile is covered. The description adds measurable operational context ('Measured at about 18 KB and 13 seconds') and discloses that the tool relies on Google search results, which an agent can factor into cost and reliability decisions. 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?
The purpose, cost, downstream chaining, and sibling routing are each valuable and the description is front-loaded. However, the first sentence enumerates roughly fifteen output fields, which is largely redundant with the existing output schema and makes the description longer than needed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With the output schema documenting return fields and annotations covering safety and open-world semantics, the description fills the remaining gaps: cost, search mechanism, and downstream integration. An agent has everything needed to decide whether and how to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds little beyond it: 'keyword or bio phrase' restates the schema's 'Bio or caption keyword/phrase to search for,' and the cursor behavior is already documented ('next Google results page number'). Baseline 3 is appropriate when the schema carries the parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource scope: 'Searches Google for public Instagram profiles matching a keyword or bio phrase' and enumerates exactly what is returned. It differentiates from sibling search tools by naming get_instagram_search_hashtag and get_instagram_reels_search for post search, so an agent can distinguish profile-search from post-search without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-not guidance is given: 'To search posts rather than people, use get_instagram_search_hashtag or get_instagram_reels_search.' The description also gives a downstream chaining instruction ('The numeric id feeds get_instagram_basic_profile directly'), which helps an agent plan multi-step workflows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_song_reelsSong ReelsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Pagination cursor returned by Instagram from the previous response. | |
| audio_id | Yes | 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 declare the tool as read-only, idempotent, and non-destructive, so the description doesn't need to repeat those. It adds significant behavioral context by mentioning the raw response shape, the approximate payload size (177 KB), and the output fields (cursor and has_more for paging), which help set expectations about response characteristics beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively concise and front-loads the core function, then provides usage guidance, response details, and a sibling alternative in a logical flow. It is a bit longer than strictly necessary but every sentence adds value, so it earns a 4 rather than 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?
Given the presence of an output schema, the description doesn't need to detail return fields, but it still covers paging and the raw shape. The main gap is that it doesn't explain potential errors or edge cases (e.g., invalid audio_id), but the tool is relatively simple with only 2 parameters and good annotation coverage, so the description is nearly 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 input schema already comprehensively describes both parameters (audio_id and cursor) with examples and descriptions, so schema coverage is 100%. The description adds limited extra meaning by explaining how to derive audio_id from URLs or other API responses, but it doesn't elaborate on cursor usage beyond what the schema says. Thus, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns reels using a specific audio track, identifying the resource and the verb. It distinguishes itself from siblings by explicitly naming get_instagram_reels_search as the alternative for keyword-based search, making its unique purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit guidance on when to use this tool vs alternatives, stating to use get_instagram_reels_search for keyword-based queries instead. It also gives concrete instructions on how to obtain the required audio_id, including two specific methods, which is critical for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_user_embedUser EmbedARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | 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 declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds valuable behavioral context beyond those hints: result size (~206 KB), inlined markup/styling, and that it carries no structured data. This helps agents decide to store/render rather than parse. It does not mention rate limits or auth, but those are not required for this read-only embed tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: first states the core action/output, second adds critical size/usage caveat, third provides routing to alternatives. The most important information (what it returns and how to use it) is front-loaded. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with an output schema, the description is complete: it explains the return type (HTML string), the behavioral requirement (store/render, not read), the absence of structured data, and directs to alternatives. The output schema covers return details, so no further explanation is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the only parameter 'handle' is documented with an example, which meets the baseline. The description adds meaningful semantic distinction by noting that this tool takes a handle, unlike get_instagram_basic_profile which requires a numeric id, and by clarifying the tool's output is an HTML string derived from the handle. This helps agents select the correct identifier format.
Input schemas describe structure but not intent. Descriptions should explain 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 Instagram's official profile embed widget for a handle as a single html string') and explicitly contrasts it with siblings that return structured data (get_instagram_basic_profile, get_instagram_profile). An agent can immediately distinguish this tool's purpose from the rest of the family 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 guidance ('ready to drop into a web page') and explicit when-not-to-use with named alternatives and conditions: '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.' This routes agents to the correct sibling based on data needs and available identifier.
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_detailHighlight DetailARead-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.
| 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 cover the read-only, idempotent, and non-destructive profile, so the description adds value by disclosing concrete behavioral traits: the response echoes the id as highlight:<id>, the prefixed input causes a misleading 404, and the payload size is roughly 630 KB for 38 stories with size scaling. This is exactly the kind of context structured annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, each earning its place: the return payload, the source of the id, the critical prefixed-form pitfall, and size scaling. No fluff, no redundant restatement of schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, read-only tool with an output schema and safety annotations, the description provides everything an agent needs for correct invocation: how to obtain the id, how to format it, the failure mode to avoid, and an indication of response size. Nothing material appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents id and points to the highlights endpoint, giving a high baseline. The description adds essential semantics beyond the schema: the id must be a bare numeric value, not the prefixed highlight:<id> form, even though the response echoes the prefixed version. This prevents a real, observed failure mode and clarifies that the parameter should be supplied despite the empty required array.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Returns the stories inside one highlight album' and enumerates the payload fields (reel_type, latest_reel_media, owning user, items). It also references get_instagram_user_highlights for obtaining the id, which helps distinguish this detail endpoint from the album-list sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes a clear workflow by instructing the agent to 'Pass the bare numeric id from get_instagram_user_highlights.' It also warns against feeding the prefixed form and explains the resulting misleading 404. It doesn't explicitly enumerate when to choose this over unrelated siblings, but the dependency relationship is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_user_highlightsUser HighlightsARead-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.
| 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 readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds useful behavioral context beyond that: it notes the response is small (~6 KB), cheap, and reveals whether an account keeps highlights at all. It also clarifies the dependency on the numeric id, which helps the agent understand usage patterns. This is meaningful additional context, though 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?
The description is compact and front-loaded: the purpose is stated first, then key return details, then the critical dependency, then a parameter optimization tip. Every sentence adds value, and there is no filler. It is well-structured and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (two optional parameters, read-only, idempotent) and the existence of an output schema, the description covers everything an agent needs to invoke it correctly: what it returns, how it relates to the detail tool, performance characteristics, and a usage tip. No critical information 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% — both handle and user_id are fully described with examples and usage notes. The description repeats the tip about using user_id for faster responses, which is already in the schema. No additional semantic information about parameters is provided beyond the schema, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Lists the story highlight albums on a public profile.' It names the exact output fields and distinguishes itself from the sibling tool get_instagram_user_highlight_detail by explaining it is the source of the highlight id. This makes the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: it is 'the only source of a highlight id' and that the detail tool requires the id exactly as returned here. It also advises using user_id for faster response, which guides parameter choice. This is explicit when/why guidance with a clear alternative mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_user_postsUser PostsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| trim | No | Set to true to get a trimmed response | |
| handle | Yes | 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?
Beyond read-only annotations, it discloses pagination behavior (next_max_id, more_available, num_results), response size (~632 KB, trim only reduces to 523 KB), and mentions internal flags and large payload, which is critical for performance expectations. 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?
The description is dense and front-loaded with the primary purpose, then covers pagination and size. It includes a helpful comparison to siblings, though the size details (632 KB vs 523 KB) may be more than needed, making it slightly verbose but each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 clear output schema exists (though not shown in detail, it's told as 'has output schema: true'), the description covers pagination, size, and alternative routes, which is adequate for a complex tool. Missing details like error handling or rate limits are minor given the rest of the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all parameters (100%), and the description adds context around next_max_id and trim (trim doesn't reduce size much), but doesn't explain handle beyond the schema's 'Instagram handle' or next_max_id beyond 'Cursor to get next page'. Baseline 3 is appropriate as 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 ('Returns'), resource ('public account's timeline, reels and photos and carousels'), and result format ('raw Instagram media objects under items'), clearly distinguishing it from siblings like get_instagram_user_reels and get_instagram_post by scope and raw shape.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 tells when to use this versus alternatives for reels or single posts, and notes that alternatives return the same raw shape, guiding selection. It doesn't explicitly state when NOT to use this tool (e.g., for profiles), but the context and sibling names imply those use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_user_reelsUser ReelsARead-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.
| 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 declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, so the burden is lower. The description still adds valuable behavioral context: it returns only one page, exposes raw Instagram media objects under items[].media, provides paging_info.max_id for the next page, reports the approximate response size (594 KB), and reveals which media fields are included.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, each earning its place: the first defines the primary output and pagination, the second enumerates fields and cross-tool linkage, the third gives performance guidance, and the fourth names an alternative. No repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the annotations, complete schema coverage, and an output schema, the description covers everything an agent needs to call and interpret the tool correctly: pagination, response shape, performance tradeoff, returned field references, and the sibling to use for broader timelines.
Complex tools with many parameters or behaviors need more documentation. Simple 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, trim, and max_id. The description mostly restates the schema's advice to prefer user_id for faster responses and doesn't add substantial new meaning per parameter. It does add useful cross-tool output semantics, but that relates to return values rather than parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Returns one page of a public account's reels'. It clearly differentiates itself from the sibling get_instagram_user_posts by explicitly scoping this tool to reels only and noting that posts covers the whole timeline including photos and carousels.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 guidance: pass user_id instead of handle for faster responses, use max_id from the previous response for the next page, and use get_instagram_user_posts instead when the whole timeline including photos and carousels is needed. It also chains to get_instagram_song_reels via the audio_asset_id explanation.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | 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?
Beyond the readOnly/idempotent/non-destructive annotations, the description discloses pagination via cursor, page size semantics, payload sizes (104 KB vs 28 KB), exactly what trim=true keeps, and the relative-URL prefixing requirement. These are valuable behavioral details an agent needs to call the tool correctly and interpret results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence contributes: scope, pagination, field differences, size/trim tradeoff, URL provenance, and sibling routing. It is not overly long per the value it delivers, though the field list could arguably be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every 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, annotations already covering safety, and this description covering pagination, payload size, field trim behavior, and URL construction, the agent has everything needed to select and invoke the tool correctly. No important gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need 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 examples, so the baseline is 3. The description goes beyond the schema by explaining trim=true's effect on field subset and size, cursor-based pagination, and how to construct or validate the url parameter (relative board URLs need https://www.pinterest.com prefix). This adds meaningful context.
Input schemas describe structure but not intent. Descriptions should explain 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 action ('Returns one page of pins') on a specific resource ('from a board URL') and explicitly distinguishes the result field subset from search results and pin detail. It also names the sibling get_pinterest_user_boards as the different tool for board lists, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on when to use this tool; it explains that board URLs come from search results' board.url or from get_pinterest_user_boards, and it directly routes the agent to get_pinterest_user_boards when a board list rather than one board's pins is needed. This is clear when-to-use and alternatives guidance.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Pinterest pin URL | |
| trim | No | Set to true for a trimmed down version of the response |
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 non-destructive behavior, so the bar is to add context beyond that — and the description delivers richly: empirically measured response sizes (12.5 KB vs 1.6 KB trimmed), exact fields preserved/dropped by trim, shortcode URLs returning 404 at a measured rate (3 of 12), and expectation of 404s on deleted pins. These are behavioral realities the agent could not infer from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and logically ordered: purpose → response shape → size/trim tradeoff → sibling routing → failure modes. Every sentence earns its place and the most decision-critical fact (what it fetches, by what URL form) is front-loaded. It loses one point only because the two field enumerations make it longer than strictly necessary given an output schema exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read tool with a full output schema and safety annotations, this description covers every decision an agent needs to make: what the tool does, URL format validation, trim's exact effect, which sibling to use instead, and realistic failure expectations. 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 coverage is 100% for both parameters, so baseline is 3, but the description goes far beyond the schema's generic 'Pinterest pin URL' and 'trimmed down version'. It specifies the exact URL form expected, the numeric-id requirement and shortcode failure mode for url, and precisely what trim does — which fields survive and which are dropped, plus the size delta. This materially improves an agent's ability to set trim correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Fetches one pin by URL, of the form pinterest.com/pin/<id>.' It immediately distinguishes this from sibling search tools by emphasizing single-pin-by-URL lookup and explicitly noting the response shape differs from search results. An agent can tell exactly what this tool does and how it differs from get_pinterest_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?
Explicit routing guidance is provided: 'To find pins by keyword use get_pinterest_search; to page through the board a pin sits on use get_pinterest_board.' It also tells the agent when NOT to call (URLs ending in shortcodes) and what to check before calling (numeric trailing id). No other sibling in the list is left ambiguous relative to this tool.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| trim | No | Set to true for a trimmed down version of the response | |
| query | Yes | 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?
Beyond the readOnlyHint and idempotentHint annotations, the description reveals concrete behavioral details: approximate response size for 17 pins, the 28 KB trimmed size, exactly which fields trim retains and drops, and the fact that results include a paging cursor. This is additive and highly useful context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: a clear one-sentence purpose, a compact field enumeration, measurable size guidance, and sibling routing. It front-loads the core behavior before diving into payload details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with pagination, an optional trim mode, and a rich output shape, the description covers all essential operational context: result contents, size implications, field trade-offs, cursor usage, and related endpoints. The presence of an output schema further reduces any missing return-value ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema already documents all three parameters, the description adds meaning beyond the schema: trim's field-level impact, the cursor's role in pagination, and the keyword matching behavior. It also clarifies the response shape per pin, making parameter choices more informed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Searches Pinterest for pins matching a keyword and returns pins plus a cursor to page.' It clearly distinguishes the tool from sibling Pinterest tools by stating it is keyword-based and explicitly routes follow-ups to get_pinterest_board and get_pinterest_pin.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 provides explicit decision guidance: use trim only when full fields are needed, feed board.url to get_pinterest_board, and use get_pinterest_pin for engagement counts on a single pin. This tells an agent exactly when this tool and its alternatives are appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pinterest_user_boardsUser BoardsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| trim | No | Set to true for a trimmed down version of the response | |
| handle | Yes | 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 declare readOnlyHint, idempotentHint, and destructiveHint=false, covering safety. The description adds valuable behavioral context: it discloses response size and the effect of the trim parameter (trim ratio, what fields are kept), which goes beyond the schema. It doesn't contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is packed with useful information but is slightly longer than necessary. It front-loads the core purpose and then adds efficiency details. Every sentence contributes value, though the trim ratio could be considered a minor distraction; still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with only two parameters, one required, and an output schema present, the description covers purpose, usage, parameter semantics, and behavior. There are no gaps that would prevent an agent from calling this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents both parameters (trim and handle) with examples and descriptions, so baseline is 3. However, the description enhances meaning by explaining the trim impact (size reduction and field list), which is not in the schema, adding clear value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists a user's public boards by username, with a cursor for pagination. It identifies the specific resource (Pinterest user boards) and differentiates itself from siblings by naming get_pinterest_board for board pins and get_pinterest_search for Pinterest-wide search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to use get_pinterest_board for reading board pins and get_pinterest_search for searching across Pinterest, providing clear when-to-use guidance. It also specifies the handle format (bare username, not full URL), which is a key usage detail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reddit_post_commentsPost CommentsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent hints, it reveals the exact top-level paging shape ('more.has_more and more.cursor'), the nested replies structure, and an empirical size ('21 KB for 19 top-level comments'). This gives an agent concrete expectations for response shape and cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core behavior and paging warning are front-loaded, but the first sentence lists many fields that the output schema likely already specifies, making it longer than necessary. The size estimate and routing guidance earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only post-comments tool, it covers the URL input, response fields, paging mechanism, result size, and the relationship to search siblings. Given the annotations and output schema cover safety and structured return values, nothing critical 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?
Input schema coverage is 100%, with the url, trim, and cursor parameters already described. The description adds context around cursor/paging, but does not materially change how the parameters are invoked, 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?
Opens with 'Returns one post and its discussion from a post URL', naming the verb, resource, and input. It enumerates post and comment fields, and contrasts paging with get_reddit_search/get_reddit_subreddit_search, so an agent can tell it apart from sibling search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent to 'start from get_reddit_search or get_reddit_subreddit' to find posts worth opening, which frames when this tool is the follow-up. It also warns that paging differs from those siblings. It does not spell out exclusion cases such as when get_details would be preferred, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reddit_searchSearch RedditARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort by | |
| trim | No | Set to true for a trimmed down version of the response | |
| after | No | Used to paginate to next page | |
| query | Yes | Search query | |
| timeframe | No | Timeframe |
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=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds substantial behavioral context beyond that: it discloses performance characteristics ('Measured at 8 to 16 seconds and 8 to 26 KB, the slowest endpoint here'), the pagination mechanism (after token), and the full list of fields returned. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded: the core purpose and paging mechanism appear first, followed by output details and parameter behavior, then performance and alternatives. Each sentence contributes information without redundancy. It's longer than minimal but justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 output schema is provided, the description doesn't need to enumerate return types, but it still lists key fields. It covers scope (all public subreddits), pagination, sorting, timeframe, performance, and alternatives. An agent has everything needed to decide when and how to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning to sort ('accepts relevance, new, top and comment_count') and timeframe ('narrows the window'), and explains the after token's role in pagination. It does not explicitly describe trim, but the schema already documents it, and the description provides enough added value to warrant a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Searches every public subreddit for posts matching a query and returns posts plus an after token to page.' It clearly distinguishes itself from sibling tools by naming get_reddit_subreddit_search and get_reddit_post_comments, so an agent can immediately tell this is the global search endpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use alternatives: '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.' This gives direct routing guidance with clear conditions, 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_reddit_subredditSubreddit PostsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order | |
| 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 | Yes | Subreddit name | |
| timeframe | No | Timeframe to get posts from. Runtime requires `sort=top` when `timeframe` is provided. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, it discloses page size ('about 18 KB for 24 posts'), the constraint error behavior (400 rather than ignoring timeframe), case sensitivity of subreddit names, and that results use an after token for pagination. No statement contradicts the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads the purpose and then packs in field names, accepted sort values, a constraint, and sibling routing. It is largely efficient, though the sort value list and field list slightly overlap with schema/enum information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and rich annotations, the description covers the remaining essentials: pagination token, sort/timeframe constraint, case sensitivity, response size, and related tools. Nothing needed for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaningful parameter context beyond the schema: subreddit names are case-sensitive, timeframe only works with sort=top and the failure mode is a 400, and after is the pagination token.
Input schemas describe structure but not intent. Descriptions should explain 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 specifies a concrete action and resource: 'Returns the post stream of one subreddit with an after token to page.' It also names sibling tools for search and metadata, so an agent can distinguish it from get_reddit_subreddit_search and get_reddit_subreddit_details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit routing: use get_reddit_subreddit_search for searching inside the same subreddit and get_reddit_subreddit_details for metadata. It also warns that timeframe is only valid with sort=top and that other combinations return 400, so the agent knows when not to supply timeframe.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reddit_subreddit_detailsSubreddit DetailsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Subreddit URL | |
| subreddit | No | Subreddit name. MUST be case sensitive. So 'AskReddit' not 'askreddit'. |
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 behavior, so the bar is lower. The description adds meaningful behavioral details beyond those: case-sensitive name resolution, approximate response size (about 5 KB), and the guarantee that no posts are included in the response.
Agents need to know what a tool does to the 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 efficiently structured: what it returns, why to use it, a critical behavioral caveat, and sibling routing. The field list is long but directly useful, and no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only metadata tool with an output schema, the description covers selection, invocation, caveats, and alternatives. Nothing material is missing: the agent knows what to expect, how to avoid case-sensitivity pitfalls, and when to choose a sibling tool instead.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters, their examples, and the case-sensitivity requirement. The description adds that the tool works 'by name or by URL', which is useful context but largely reinforces what the schema already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Returns metadata') and a specific resource ('one subreddit'), and enumerates the exact fields returned. It also distinguishes itself from siblings by explicitly stating it returns no posts and pointing to get_reddit_subreddit and get_reddit_subreddit_search for those cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete use cases: 'size a community or read its rules before posting anything elsewhere.' It also states what the tool is not for ('returns no posts at all') and names the alternatives to use instead, giving an agent clear routing logic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reddit_subreddit_searchSearch Within SubredditARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order. For posts/media: relevance, hot, top, new, comments. For comments: relevance, top, new | |
| query | No | Search query to find matching content | |
| cursor | No | Cursor to get more results. Get 'cursor' from previous response. | |
| subreddit | Yes | Subreddit name (e.g. 'Fitness', not 'r/Fitness' or a full URL) | |
| timeframe | No | Timeframe to filter 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 mark this as read-only and non-destructive, but the description adds critical behavioral details: every sort value returns only posts and never comments or media, response size is about 5 KB with ~2 second latency, and it is faster than the global search. This goes well beyond what annotations provide and corrects a misleading implication of the sort parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence in the description earns its place: scope and pagination, return fields, the sort caveat, performance comparison, and the routing to a sibling tool. The most important distinguishing information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich schema, output schema, and annotations, the description fully covers what an agent needs to select and invoke the tool correctly. It includes return field details, pagination behavior, performance expectations, the surprising sort behavior, and when to use sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage, so parameters are already documented. The description adds extra semantic value by clarifying that the sort parameter's values all produce posts-only results and by explaining that cursor is the pagination token. This lifts it above the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches within one subreddit and returns matching posts, with a cursor token for pagination. It also distinguishes itself from get_reddit_search, which searches all of Reddit, so an agent can tell them apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names get_reddit_search as the alternative for all-of-Reddit searches and explains the difference in scope and pagination mechanism. It also points to get_reddit_post_comments for retrieving replies under a result, giving clear 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_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.
| Name | Required | Description | Default |
|---|---|---|---|
| tweet_id | Yes | 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 cover readOnly, openWorld, idempotent, and non-destructive behavior, so the bar is lower. The description adds useful behavioral context: it returns complete text rather than truncated preview and locates the result under 'article'. This enriches the annotation profile without contradicting it.
Agents need to know what a tool does to the 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 with zero filler. The core purpose, exact usage condition, return field, and sibling reference are all present and front-loaded. Every sentence contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter, a documented output schema, and annotations covering safety, the description is complete. It tells the agent when to use it, what it returns, and how it differs from the nearest sibling. No critical information 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 tweet_id, so the schema independently documents the parameter. The description only restates 'by its tweet ID', adding no new format, constraints, or examples beyond the schema. Baseline 3 is appropriate because the schema carries the semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (Get), resource (full body of an X Article), and identifier (tweet ID). It clearly differentiates from get_twitter_tweets by calling out ordinary tweets as a separate case, so an agent can distinguish the tool without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use guidance is given: 'when a tweet links to or is an Article and the 280-character preview is not enough.' It also names the alternative for ordinary tweets ('use get_twitter_tweets'), leaving no ambiguity about tool selection.
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 Info By IdARead-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.
| 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 cover readOnly, idempotent, openWorld, and non-destructive traits. The description adds context beyond those annotations by specifying that the result is returned under `community_info` and by framing the operation as qualifying a community before further retrieval.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all informative, with the core purpose and expected return value front-loaded and no filler. The alternative-usage sentence is efficient and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one parameter, complete annotations, a likely output schema, and a sibling routing instruction, the description covers every decision an agent needs to invoke this tool correctly. Nothing important appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value by clarifying the ID's format ('numeric community ID') and its role within X Community context, which is not made explicit in the schema's generic 'ID of the community'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get metadata') and identifies the exact resource ('an X Community by its numeric community ID') plus the fields returned (name, description, member count, access rules). It clearly distinguishes itself from sibling tools like get_twitter_community_members and get_twitter_community_tweets_all.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 states when to use the tool: 'Use this to qualify a community before pulling its members or posts.' It also names an alternative for discovering communities by topic: search their posts with get_twitter_community_tweets_all.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_community_membersGet 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.
| 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 convey readOnly, openWorld, idempotent, and non-destructive behavior. The description adds useful behavioral context beyond annotations: cursor-based pagination and a full-user-object return shape. It stops short of discussing limits or cursor lifecycle, but the annotations lower the bar for safety-related 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?
Three sentences with no wasted words: purpose is first, use case follows, return shape is stated, and the relevant alternative is named. Every sentence contributes actionable information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with a required ID, an optional cursor, a full output schema, and safety annotations, the description covers all essential decision points: what it lists, why to use it, what it returns, and which sibling handles the related moderator case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both `community_id` and `cursor` are already documented in the schema. The description adds only a minor nod to pagination via 'cursor-paginated' but no extra meaning beyond the schema, warranting the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') with a precise resource ('members of an X Community') and states it is cursor-paginated. It also distinguishes itself from the moderators tool, so an agent can tell them apart immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains when to use this tool: to map participants in a topic-specific group, noting that membership is opt-in and higher-signal than general followers. It explicitly points to `get_twitter_community_moderators` for the moderator subset, giving clear routing to an alternative.
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.
| 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, and destructiveHint=false. The description adds that it is cursor-paginated and returns full user objects, which are not in the annotations. This provides useful behavioral context beyond the structured metadata, with no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. The core function and pagination are stated first, then use case and alternative. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with 2 parameters (1 required), full output schema, and annotations covering safety, the description covers use case, pagination, return format, and alternative. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both cursor and community_id have descriptions). The description mentions cursor-paginated but does not add new parameter details beyond the schema. Since the schema already documents both parameters clearly, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' and resource 'moderators of an X Community', and specifies cursor-paginated. It clearly distinguishes from sibling get_twitter_community_members by naming it as the alternative for full membership, so an agent can differentiate 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 states an explicit use case: 'identify the people who set the agenda in a community — the highest-leverage contacts for outreach or partnership.' It also names the alternative get_twitter_community_members for full membership, giving clear guidance on when to use which tool.
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.
| 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, and destructiveHint=false, covering safety. The description adds valuable behavioral context beyond annotations: it mentions cursor-based pagination and specifies the return content ('full tweet objects with engagement counts'). This goes beyond the bare safety profile, though it doesn't detail rate limits or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. The first sentence states the core action and pagination, the second provides usage guidance and return information. The key differentiator (specific community vs. all) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with an output schema, the description is nearly complete. It covers the scope (specific community), pagination, and return contents (engagement counts). The only minor gap is that it doesn't explicitly state how to obtain the community_id, but that is likely obvious or covered by sibling tools like get_twitter_community_info. Overall, an agent has enough to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description's mention of 'cursor-paginated' reinforces the cursor parameter's purpose but adds no new syntax or format details. It doesn't clarify the community_id beyond what the schema already says. Baseline 3 is appropriate when the schema covers parameters fully.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Get') and resource ('posts published inside one specific X Community'), and immediately adds 'cursor-paginated' to convey the core behavior. It explicitly differentiates from the sibling tool get_twitter_community_tweets_all by noting the alternative is for searching across all communities when the target is unknown.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear guidance: use this tool to read what a known community is discussing, and explicitly says to use get_twitter_community_tweets_all when the community is not known. This directly addresses when to use this tool vs. the alternative.
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_allSearch Tweets From All CommunitiesARead-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.
| 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 declare the operation read-only, idempotent, and non-destructive. The description adds meaningful context beyond that: sorting behavior, cursor pagination, and that it returns full tweet objects. It does not mention rate limits or auth requirements, but those burdens are partially mitigated by the strong annotation profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and scoping, then usage rationale, return payload, and sibling alternatives. All sentences earn their place; there is no filler or irrelevant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 moderate-complexity search tool with an output schema and clear annotations, the description covers purpose, usage context, sorting, pagination, return payload, and alternative tools. An agent has enough information to call it correctly and avoid more specific sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already documents query, cursor, and queryType. The description adds value by explaining that queryType maps to sort order ('Latest (default) or Top') and that search is keyword-based across communities. This helps an agent connect the parameters to the intended behavior more naturally.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Search'), resource ('posts across all X Communities'), and key modifiers ('by keyword', 'sorted by Latest or Top', 'cursor-paginated'). It clearly distinguishes this tool from the sibling `get_twitter_community_tweets` by emphasizing that it covers all communities, not one specific community.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool ('find topic-specific discussion inside communities rather than on the public timeline') and names alternatives for related use cases: `get_twitter_community_tweets` to read a specific community and `get_twitter_tweet_advanced_search` for public-timeline search. This leaves no ambiguity about routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_list_followersGet 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.
| 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 readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: pagination behavior (20 per page, cursor-paginated) and the return shape (full user objects under `followers`). It does not mention rate limits or error cases, but the added pagination and response structure details go beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no wasted words. The core purpose and pagination detail are front-loaded, followed by use-case context and a clear pointer to the sibling tool. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a read-only, cursor-paginated list tool. It explains the return structure (full user objects under `followers`), pagination, and the distinction from the sibling tool. The output schema exists, so return values are further documented. Minor gaps like rate limits or error handling are not critical given the annotations and output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters (list_id and cursor). The description adds context about cursor-paginated usage but does not provide additional parameter-level detail beyond what the schema offers. Baseline 3 is appropriate since the schema carries the parameter documentation burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists accounts subscribing to an X List, with pagination details (20 per page, cursor-paginated). It explicitly distinguishes itself from get_twitter_list_members, which lists accounts included in the List, not subscribers. This makes the purpose unambiguous and differentiates it from the closest sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: use it to gauge attention a curated list attracts and who cares about the topic. It also names the alternative tool (get_twitter_list_members) and the condition for choosing it (when you need accounts included in the List, not subscribers). This is clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| 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 establish readOnly/openWorld/idempotent safety. The description adds valuable behavioral detail beyond that, such as '20 per page, cursor-paginated' and 'Returns full user objects under `members`.' This goes beyond what the annotations 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 well-organized sentences: the first states the operation and pagination, the second gives the use case, and the third routes to alternatives. There is no filler, and the most decision-relevant information comes first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 output schema exists and annotations cover safety, this description is complete: it specifies pagination size, cursor mechanism, return field location, and sibling alternatives. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both `list_id` and `cursor` are already documented. The description adds only mild contextual meaning for `cursor` via 'cursor-paginated' but does not explain parameter formats or defaults beyond the schema. A baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'List the accounts included in an X List.' It also distinguishes itself from nearby siblings like get_twitter_list_followers and get_twitter_list_tweets_timeline, so an agent can immediately tell what this tool uniquely does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use this tool: 'Use this to extract a ready-made, human-curated cohort — someone else has already done the filtering.' It also names two alternatives with their distinct purposes, giving clear 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_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.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for paginating through results. Leave empty for the first page. | |
| listId | Yes | 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 establish read-only, idempotent, non-destructive behavior. The description adds meaningful behavioral detail beyond that: page size limit, cursor pagination, and the returning fields `has_next_page` and `next_cursor`. It does not discuss rate limits or auth, but the annotation coverage lowers the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences with no wasted words: purpose and pagination, use case and rationale, return fields, and related sibling tool. Information is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, annotations cover the safety profile, and the description covers pagination, return fields, and a related tool, nothing essential is missing for an agent 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 coverage is 100%, so the schema already documents both parameters. The description still adds value by explaining pagination behavior tied to the `cursor` parameter and clarifying that results are limited to 20 per page. It does not fully describe cursor format, but it supplements the schema meaningfully.
Input schemas describe structure but not intent. Descriptions should explain 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 action and resource: 'Get the tweet timeline of an X List by listId'. It also adds concrete characteristics such as 'up to 20 per page, cursor-paginated', which makes the tool's scope clear and distinguishes it from related timeline/list tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear when-to-use context: monitor a hand-curated set of accounts as a single feed, framing Lists as the cheapest way to track a fixed cohort. It names one alternative explicitly ('To see who is in the List use get_twitter_list_members'), though it does not explicitly contrast with alternatives like the single-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_spaces_detailGet Space DetailARead-onlyIdempotentInspect
Get details of an X Space (live audio room) by its space ID — title, state, host, participants, and scheduling. Use this to check whether a Space is scheduled, live, or ended, and who is hosting, before deciding to reference or attend it. Returns the object under data.
| Name | Required | Description | Default |
|---|---|---|---|
| space_id | Yes | The ID of the space. |
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=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by stating the return shape ('Returns the object under `data`') and the kind of state information provided (scheduled/live/ended). This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no fluff. The core purpose is front-loaded, the use case is stated, and the return location is given. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only tool with a rich output schema, the description is nearly complete. It covers what the tool does, when to use it, and where the result appears. It doesn't describe pagination or rate limits, but those are less critical for a single-ID detail lookup with an output schema present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single parameter (space_id). The description adds context about what the ID is used for ('by its space ID') but doesn't add format or source details beyond the schema. Baseline 3 is appropriate when the schema fully covers the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves details of an X Space by ID, listing the specific fields (title, state, host, participants, scheduling) and the use case (checking whether a Space is scheduled, live, or ended). It distinguishes itself from sibling tools by focusing on Space detail rather than tweets, users, or communities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use it: 'Use this to check whether a Space is scheduled, live, or ended, and who is hosting, before deciding to reference or attend it.' This provides clear context and a decision-oriented purpose, though it doesn't name a specific alternative tool to use instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_trendsGet TrendsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | The number of trends to return. Default is 30. | |
| woeid | Yes | The WOEID of the location. Example: 2418046. |
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=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds the return structure ('trend names and volumes under `trends`') and a usage flow, which goes beyond what annotations state. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, each carrying relevant information: the core action, the use case, the return structure, and the next-step pointer. It is efficient and front-loaded, with no wasted words, though slightly longer than strictly 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?
For a simple read-only tool with an output schema, the description covers the essential usage, return format, and follow-up action. It doesn't mention pagination or rate limits, but those are not critical for a read-only, idempotent tool and are not expected given the 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 the schema already documents both `woeid` and `count` with descriptions and defaults. The description repeats the default count and WOEID reference but adds no new meaning beyond the schema, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Get the trending topics for a location' and specifies the output under `trends`. It distinguishes itself from siblings by naming the follow-up tool `get_twitter_tweet_advanced_search` for searching posts, so an agent can tell this is about trends, not tweets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an explicit use case ('real-time read on what a specific market is talking about... useful for timing content or spotting emerging stories') and directs the agent to a specific alternative tool for the next step. This clearly routes the agent to the right tool for the job.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The query to search for. | |
| cursor | No | The cursor to paginate through the results. First page is empty. | |
| queryType | Yes | The query type to search for. | 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 declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable functional behavior: cursor-paginated with has_next_page and next_cursor, and sorting by Latest or Top. It does not contradict annotations. It could have mentioned rate limits or error behavior, but those are not essential given the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core purpose, then provides operator support, pagination behavior, and sibling routing. Every sentence earns its place, and the structure is logical and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema and rich annotations, the description covers all necessary context: purpose, usage, operators, pagination, and alternatives. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with descriptions, so the baseline is 3. The description enhances the query parameter by listing supported advanced operators (`from:`, `to:`, `since:`, `until:`, `min_faves:`, `-filter:replies`), and explains cursor pagination. This adds meaning beyond the generic schema description 'The query to search for.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search X posts by keyword or query with X's advanced search operators'. It explicitly identifies itself as the primary entry point for content research when no tweet IDs or handles exist, and differentiates from sibling tools like get_twitter_user_search and get_twitter_user_tweet_timeline by naming them directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 provides explicit when-to-use guidance: 'This is the primary entry point for X content research when you do not yet have tweet IDs or handles.' It also gives clear alternatives: 'To search accounts rather than posts use get_twitter_user_search. To read one account's own posts use get_twitter_user_tweet_timeline.' No ambiguity remains.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for pagination. | |
| tweetId | Yes | The tweet ID to get quotes 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 declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds useful behavioral details beyond that: cursor-paginated results and return of full tweet objects with engagement counts. It does not contradict any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler. It front-loads the core action and pagination, then gives use case, return content, and alternatives. Each sentence contributes necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only two-parameter tool with an output schema and strong annotations, the description is complete: it explains purpose, when to use it, pagination, return contents, and sibling alternatives. Nothing needed for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters have clear descriptions (tweetId and cursor). The description adds no additional parameter semantics beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Get quote tweets of a given tweet', and defines them as 'posts that embedded it with added commentary'. It clearly distinguishes from sibling tools by naming direct replies and retweeters as different interaction types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 says when to use this tool ('to see how a post is being reframed or argued about') and names alternatives for other cases: direct replies via get_twitter_tweet_replies_v2 and retweets without comment via get_twitter_tweet_retweeters. This is strong 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_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.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for pagination. | |
| tweetId | Yes | The tweet ID to get replies for. |
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 that already mark it read-only, idempotent, and non-destructive, the description discloses cursor-based pagination, the default-only ordering constraint, and the return shape of full tweet objects with engagement counts. This gives the agent a clear behavioral model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: core action first, then use case, return behavior, and sibling routing. Every sentence contributes and none are redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and rich annotations covering safety, the description supplies everything else an agent needs: purpose, alternatives, pagination, ordering behavior, and return contents. Nothing important 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 input schema already covers both parameters fully at 100% coverage, so the baseline is 3. The description mentions cursor-paginated behavior and the default ordering but does not add deeper parameter-level detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Get the direct replies to a tweet'. It also distinguishes this tool from get_twitter_tweet_replies_v2 and get_twitter_tweet_thread_context, making its scope 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?
The description explicitly says when to use this tool ('read the discussion under a post'), when to prefer a sibling instead ('Prefer get_twitter_tweet_replies_v2 when you want to control ordering'), and when to use another tool for the opposite direction ('To follow a conversation upward... use get_twitter_tweet_thread_context').
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for paginating through results. Leave empty for the first page. | |
| tweetId | Yes | The tweet ID to get replies for. e.g. 1846987139428634858 | |
| queryType | No | Sort order for replies. Default is Relevance. | Relevance |
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=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: 20 per page, cursor-paginated, and returns full tweet objects with engagement counts. However, it doesn't disclose details like rate limits or what happens with deleted/protected tweets, but the annotations carry the main safety burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no wasted words. The core purpose and key differentiator (sort order) are front-loaded, followed by pagination details and return value summary. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for a read-only, cursor-paginated list tool. It covers the key behavioral details (page size, pagination, sort options, return type) and the output schema exists to explain return values. An agent has everything needed 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 schema already documents all three parameters. The description adds context about the default sort (Relevance) and the meaning of each sort option, but doesn't add significant meaning beyond the schema's own descriptions. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets replies to a tweet with sort order control, and explicitly distinguishes it from the sibling get_twitter_tweet_replies. The verb 'Get' plus the resource 'replies to a tweet' and the specific sort options make the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this instead of get_twitter_tweet_replies whenever ordering matters, and explains when each sort option is appropriate (Likes for top responses, Latest for live threads). This is clear when-to-use guidance with a named alternative.
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.
| 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 declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by specifying cursor-paginated behavior and clarifying the return type (user objects, not tweets). It also differentiates retweets from quotes, which is behavioral context not in the annotations. It doesn't cover rate limits or auth, but given the read-only nature and rich annotations, a 4 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The primary action and key distinction are front-loaded, and the alternative tool is mentioned concisely. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with an output schema, rich annotations, and a clear description that covers purpose, usage, and sibling differentiation, nothing critical is missing. The agent can call this correctly without further clarification.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both tweetId and cursor have descriptions. The description mentions cursor-paginated but does not add syntax or format details beyond the schema. Since the schema already documents both parameters adequately, the baseline of 3 is correct—the description adds marginal semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb and resource: 'List the accounts that retweeted a given tweet.' It clearly states the output (user objects) and explicitly distinguishes from a sibling tool (get_twitter_tweet_quotes) by saying it returns retweeters, not quoted tweets. This makes the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear when-to-use context: 'Use this to map who amplified a message and how influential they are.' It also gives an explicit alternative for a different use case: 'For retweets that added commentary use get_twitter_tweet_quotes.' This tells the agent exactly when to choose this tool over a closely related one.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tweet_ids | Yes | 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 readOnlyHint, idempotentHint, and destructiveHint=false, so the read-only nature is covered structurally. The description adds useful behavioral context by enumerating the returned fields and noting that multiple IDs are accepted per call. It does not discuss edge cases like invalid IDs or rate limits, but those are minor for a read-only fetch with an output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler: the first states the core function, the second adds contextual use case, the third names the fallback tool. Every sentence earns its place and the purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one required parameter and an output schema, the description covers input, return content, use case, and the alternative when not to use it. An agent has everything needed to decide whether to call it or choose the search sibling instead.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only defines tweet_ids as an array of strings, with a terse property comment. The description adds that the IDs must be numeric and that multiple IDs can be supplied in one call, which clarifies how to construct the parameter. The lone schema wrinkle is 'comma-separated' vs the array type, but the description itself does not introduce that ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Fetch the full content of specific tweets when you already know their numeric tweet IDs.' It also clearly distinguishes itself from get_twitter_tweet_advanced_search by framing this as the ID-based lookup versus search. No ambiguity about what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states exactly when to use it: when IDs are already known and you want to expand IDs from search, timelines, or replies into complete objects. It also gives an explicit alternative: 'If you do not have IDs yet, start with get_twitter_tweet_advanced_search.' This is clear when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | The cursor to paginate through the results. First page is empty. | |
| tweetId | Yes | 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 the tool read-only, idempotent, and non-destructive, so the description does not need to restate those. It adds useful behavioral detail by mentioning cursor-based pagination and the return fields `tweets`, `has_next_page`, and `next_cursor`, which goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose. Every sentence earns its place: what it does, when to use it, what it returns, and how it differs from a sibling tool. No fluff or repetition exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with only two parameters, a read-only/idempotent annotation set, and an output schema, the description covers everything needed to invoke it correctly: purpose, input type flexibility, usage context, pagination behavior, and the relevant alternative. No critical gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple 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 parameters are already well documented. The tool description confirms that `tweetId` can be a reply or original tweetable, but this mostly mirrors the schema's own description and adds little new semantic detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Reconstruct the conversation around a tweet.' It clarifies that the tool accepts either a reply or an original tweet and returns the 'surrounding thread,' which clearly differentiates it from sibling tools like get_twitter_tweet_replies_v2.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 states when to use the tool: 'Use this when a tweet lacks context on its own and you need the parent chain to interpret it correctly.' It also names the exact alternative for a different need, get_twitter_tweet_replies_v2, and distinguishes 'surrounding thread' from 'replies below a post.'
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 Profile AboutARead-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.
| 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 readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, covering the safety profile. The description adds value by specifying the return structure (single profile object under data) and the types of signals it surfaces (country, verification details, username-change history), which goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The purpose is front-loaded, followed by usage context and a clear alternative. Efficient and well-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?
For a single-parameter read-only tool with a defined output schema (even if not shown here) and comprehensive annotations, the description covers everything needed: what it does, when to use it, what it returns, and how it differs from the sibling. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the userName parameter is described as 'The screen name of the user'). The description adds a minor clarification with '@handle' implying format, but this is a small enhancement over the schema. Since the schema already covers the parameter adequately, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the extended 'About this account' panel for an X user by handle, and explicitly distinguishes it from the standard profile tool get_twitter_user_info. This provides a specific verb, resource, and scope that uniquely identifies this tool among its many Twitter siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance: use for provenance and trust checks, and names the alternative (get_twitter_user_info) for standard profile data. It clearly states when to use this tool versus when not to, leaving no ambiguity for an agent.
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 UserIdsARead-onlyIdempotentInspect
Resolve many X users at once from their numeric user IDs, passed as a comma-separated userIds string. Use this when a previous call (timeline, retweeters, followers) gave you IDs and you need to turn them into full profiles in one request instead of looping. Returns an array of user objects under users. Note this endpoint takes numeric IDs, not @handles — to look up by handle use get_twitter_user_info.
| Name | Required | Description | Default |
|---|---|---|---|
| userIds | Yes | Comma-separated user 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 readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds value by specifying the return format (array of user objects under `users`) and the input format distinction (numeric IDs vs handles), which are not in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with purpose, then usage context, then a critical clarification. Every sentence earns its place with zero redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with an output schema and annotations covering safety, the description fully covers what an agent needs: how to format the input, what the output looks like, and when to choose this tool over its sibling. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes the parameter as 'Comma-separated user IDs', but the description adds critical semantic detail: it clarifies these are numeric IDs, not @handles, which is a common point of confusion. This goes beyond the schema description and justifies a higher score than the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Resolve) and resource (many X users at once from numeric IDs), clearly distinguishing from get_twitter_user_info which looks up by handle. The purpose is unambiguous and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use: when a previous call gave IDs and you need full profiles in one request instead of looping. Also names the alternative (get_twitter_user_info) for handle lookups, providing a clear routing decision.
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.
| 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 readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond that: it checks both directions in one request, operates by @handle, and returns relationship flags under 'data', which helps the agent understand what the tool will do and what the response will contain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no wasted words. The core purpose is front-loaded, the usage guidance names alternatives explicitly, and the return location is given succinctly. Every sentence contributes distinct value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read-only tool with annotations, fully documented parameters, an output schema, and sibling differentiation, the description covers everything an agent needs: what it does, when to use it, what it avoids, and where the result appears. Nothing important 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%, with each parameter described as a screen name. The description adds meaning by clarifying that source and target are X users identified by @handle and that the tool checks the relationship in both directions, which clarifies the roles of source_user_name and target_user_name beyond the raw 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?
The description states a specific verb and resource: 'Check whether one X user follows another, in both directions, by @handle.' It clearly distinguishes itself from siblings by stating that it is a single targeted lookup rather than paging through follower/following lists, and it names the exact question it answers: 'does A follow B, and does B follow A'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to use this tool: 'Use this for a single targeted lookup instead of paging through get_twitter_user_followers or get_twitter_user_followings.' This directly names the alternatives and gives the condition for choosing this tool over them, leaving no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_user_followersGet 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.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for pagination | |
| pageSize | No | Number of followers per page | |
| userName | Yes | 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, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: pagination via has_next_page and next_cursor, default page size of 200, and the full user object fields returned. It does not mention rate limits or error handling, but that is not required given the annotation coverage and the read-only nature.
Agents need to know what a tool does to the 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 well-structured: it starts with the core action and ordering, then the return format and pagination, then use cases, and finally alternatives. Every sentence adds value, with no fluff. The key information is front-loaded, and the alternative references are concise yet complete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, output schema present), the description covers purpose, usage, alternatives, return structure, and pagination. It even highlights a subtle trap (verified followers tool uses user_id, not handle). Nothing an agent needs to correctly call this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (cursor, pageSize, userName) have descriptions. The tool description reiterates that userName is a @handle and mentions the pageSize default and max, which are already in the schema. It does not add significant new meaning beyond the schema, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists followers of a given X user identified by @handle, with ordering ('newest follower first') and pagination details. It explicitly differentiates from siblings by naming get_twitter_user_followings for the reverse direction and get_twitter_user_verified_followers for the verified subset, noting the latter's user_id requirement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit use cases ('audience analysis, mapping a competitor's follower base, or finding influential followers') and directs to alternatives with conditions (reverse direction → get_twitter_user_followings; verified subset → get_twitter_user_verified_followers, with a crucial caveat about handle vs. user_id). This leaves no ambiguity about when to use this tool versus siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_user_followingsGet 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.
| 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. | |
| userName | Yes | 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, openWorldHint, idempotentHint, and destructiveHint=false, covering safety and idempotency. The description adds valuable behavioral context: pagination details (200 entries per page, has_next_page, next_cursor) and the conceptual rationale for using followings over followers. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, each earning its place: purpose, pagination, use-case rationale, and alternatives. It front-loads the core function and keeps the alternative routing at the end, with zero redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering the tool's safety profile, the description needn't detail every return field. It covers the main use case, pagination, and alternative tools. Missing details like error handling or rate limits are minor given the existing structured context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description adds minor context like '@handle' and '200 entries per page', which reinforces the schema but does not significantly go beyond it. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('accounts a given X user follows'), with clear identification via '@handle'. It also explicitly distinguishes itself from sibling tools (followers and check relationship), making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly explains when to use this tool ('infer a user's interests, information sources, or professional network') and contrasts it with followers ('who someone follows is usually a stronger signal of intent'). It also points to the alternative for testing a single pair, giving clear 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_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.
| 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 readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false, covering safety. The description adds value by listing the specific returned fields (display name, bio, counts, verification, dates, etc.), which is useful context not in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: it leads with the core purpose, gives usage context, lists returns, and then routes alternatives. Every sentence earns its place with no filler; the length is justified by the need to differentiate among siblings.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read-only lookup with an output schema present, the description fully covers the call context, return fields, and alternatives. Nothing an agent needs to correctly invoke it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (the only parameter 'userName' is described as 'The screen name of the user'). The description reinforces this with '@handle (screen name)' but adds no substantive new meaning 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 ('Look up') and resource ('one X (Twitter) user's public profile by @handle'). It explicitly differentiates from three sibling tools by naming them and the conditions that select each, making its scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use ('when you need to know who an account is — identity, reach, or credibility') and when-not-to-use conditions with named alternatives for numeric IDs, extended metadata, and posts. This fully routes the agent.
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 Last 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.
| Name | Required | Description | Default |
|---|---|---|---|
| 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 |
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=true, idempotentHint=true, and destructiveHint=false. The description adds valuable behavioral context beyond those: it discloses that the endpoint is cursor-paginated and specifies the response shape under `data` with `has_next_page` and `next_cursor`. This is useful for an agent deciding how to call and consume the tool, even though it does not mention rate limits or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. It front-loads the core purpose, immediately mentions the primary input choices, and ends with the valuable alternative guidance. Every sentence contributes to the agent's decision-making.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's modest complexity (4 optional parameters), strong annotations, and full schema coverage, plus an output schema that documents the return structure, the description covers all needed context: usage trigger, alternative tool, pagination, and where the data lands. There is no missing information an agent would need to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameter names and types are already documented. The description adds meaning by explaining the relationship between `userName` and `userId` (accepting either), and by framing `includeReplies` as optional in context. This goes beyond the raw schema, clarifying the intended usage of the parameters.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Get') and resource ('a user's most recent tweets'), and clearly distinguishes this tool from the sibling `get_twitter_user_tweet_timeline` by naming the exact alternative. It also clarifies the input types (userName or userId), leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: use this tool when you have not resolved the handle to an ID, and use `get_twitter_user_tweet_timeline` when you already have the numeric ID and want the full profile-order timeline with parent-tweet expansion. This gives clear when-to-use and when-not-to-use instructions, naming the alternative directly.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | The cursor to paginate through the results. First page is empty. | |
| userName | Yes | The user screen name to get mentions for. | |
| sinceTime | No | On or after a specified unix timestamp in seconds. | |
| untilTime | No | Before a specified unix timestamp in 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 cover read-only and idempotent safety. The description adds pagination details (20 per page, has_next_page, next_cursor) and the unique time-window capability, which are valuable beyond the annotations. It doesn't mention rate limits or auth, but annotations cover the safety profile, so a 4 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences with zero waste. The core purpose is front-loaded, followed by a unique feature, usage guidance, return format, and an alternative — all in a tight, logical 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 an output schema present and annotations covering safety, the description provides all necessary operational context: pagination behavior, time window, usage scenarios, and a clear alternative. Nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds minor context (e.g., that sinceTime/untilTime bound the range and are Unix timestamps), but it doesn't go beyond the schema's own descriptions. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States precisely what it does: 'Get tweets that mention a given @handle' with a specific verb and resource. It also distinguishes from the sibling by naming get_twitter_user_tweet_timeline as the alternative for own posts, so an agent can tell them apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: 'Use this for monitoring — brand mentions, inbound replies, reputation tracking' and gives the when-not with the alternative tool name. This is clear 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_user_searchSearch User by KeywordARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | 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 signal read-only, idempotent, non-destructive behavior. The description adds meaningful behavioral context beyond that: it is cursor-paginated, returns full user objects under `users`, and searches accounts rather than posts. This enriches the agent's mental model without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core action, then adds only high-value details: usage scenario, pagination/return format, and the sibling alternative. Every sentence earns its place with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, read-only tool with full schema coverage, an output schema, and rich annotations, the description covers everything needed to invoke it correctly: when to use it, what to pass, how pagination works, and what comes back. No critical information 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` clearly. The description reinforces the meaning of `query` with examples like 'a company name, a topic, a partial handle', which adds slight context, but it does not substantially elevate understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Search X user accounts by keyword') and a clear resource, and explicitly distinguishes itself from tweet search by saying 'This searches accounts, not posts'. It also names the sibling `get_twitter_tweet_advanced_search` as the alternative, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit use conditions: 'Use this when you know roughly who you are looking for... but not the exact @handle.' It also directly states when not to use it by pointing to `get_twitter_tweet_advanced_search` for tweet content searches, providing both positive and negative guidance.
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 Tweet 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.
| 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. | |
| includeReplies | No | Whether to include replies in the results. Defaults to false. | |
| includeParentTweet | No | Whether to include the parent tweet when a tweet is a reply. Defaults to false. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal read-only, idempotent, non-destructive behavior, so the description adds meaningful behavioral detail beyond them: page size (up to 20), cursor-based pagination, ordering matching the X profile, optional inclusion of replies/parent tweets, and the absence of time-range filtering. This gives the agent a strong model of runtime behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose twice in the first sentence, then efficiently covers pagination, optional parameters, usage context, and alternatives without redundancy. Every sentence earns its place, and the structure guides the agent from main behavior to edge cases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 output schema exists and annotations cover safety, the description provides everything needed to select and invoke the tool correctly: parameter format, ordering, pagination, filtering limitations, and sibling routing. No critical operational context 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 schema already documents all 4 parameters with 100% coverage, establishing a baseline of 3. The description adds value by emphasizing that userId must be numeric, explaining cursor semantics ('pass the returned cursor for more'), and mapping the include flags to behavior. It doesn't deeply redefine each parameter, but the extra context justifies a score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: retrieve a user's own tweets by numeric userId, with explicit ordering (newest first) and scope. It also distinguishes itself from siblings by naming alternatives like get_twitter_user_mentions and get_twitter_user_last_tweets, so an agent can tell them apart immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use this tool ('Use this to read what an account publishes over time') and when not to, noting that time-range filtering is NOT supported and pointing to get_twitter_user_mentions and get_twitter_tweet_advanced_search for date-window queries. It also covers the handle-only case by referencing get_twitter_user_last_tweets, leaving no ambiguity about alternatives.
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 User 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.
| 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=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context beyond the annotations: it is cursor-paginated, returns results in reverse chronological order, and requires a numeric user_id rather than a handle. It does not describe the output shape, but an output schema exists, so that burden is lifted.
Agents need to know what a tool does to the 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 sentences, each earning its place: the core behavior, the use case, the pagination/parameter caveat, and the sibling alternative. The most important scoping information is front-loaded, and there is no filler or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, cursor-paginated list tool with a full output schema and 100% schema parameter coverage, the description is complete. It covers what the tool returns, how to paginate, what input format is required, and how to resolve the prerequisite handle. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds meaning by clarifying that `user_id` must be a numeric ID, not a @handle, and that the first page of `cursor` is empty. This goes beyond the schema's generic 'User ID of the user' and 'The cursor to paginate through the results'.
Input schemas describe structure but not intent. Descriptions should explain 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 ('List'), a precise resource ('verified accounts following a given X user'), and a clear ordering ('reverse chronological order'). It also distinguishes itself from the sibling tool `get_twitter_user_followers` by explicitly noting it returns only verified followers, 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?
The description gives explicit when-to-use guidance: 'Use this to gauge the quality rather than the size of an audience — verified followers are a better credibility signal than raw follower count.' It also names the alternative for the complete list (`get_twitter_user_followers`) and instructs the agent to resolve a @handle first with `get_twitter_user_info`, covering both selection and prerequisite behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_youtube_searchYouTube SearchARead-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.
| 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 mark this as read-only, idempotent, non-destructive, and open-worldchers. The description adds value by clarifying the required `engine` and `q` parameters)Skip; wait, that's parameter info. More importantly, it discloses the mapped path and that the upstream canonical path is not mounted, which is a useful behavioral caveat. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences and stays on-topic. It front-loads the main purpose)Skip; then provides required parameters, optional parameters, use cases, and a path note. It is slightly redundant with the schema's required fields and `engine` enum, but overall each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values. It adequately covers input requirements, optional parameters, practical use cases, and the mapped-path caveat. It could additionally mention pagination limits or token freshness, but for a read-only YouTube search tool this is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description mostly paraphrases the schema by restating that `engine` and `q` are required and that `gl`, `hl`, and `sp` are optional. It adds a small amount of extra meaning by giving examples of advanced filters for `sp` (upload date, duration, result type), but not enough to raise the score significantly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence identifies a specific action and resource: 'Search YouTube and get back matching videos, channels, and playlists.' This clearly distinguishes it from sibling tools for Instagram, Reddit, Pinterest, and Twitter search. The tool name and title reinforce the same purpose without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists three use cases: find video content on a topic, track a channel's recent uploads, and gauge video coverage. It does not name an alternative tool or explicitly say when not to use it, but the given contexts are clear enough for an agent to select it appropriately among sibling search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
Page with next_max_id from the previous response; more_available says whether
another page exists.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | ||
| next_max_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations (readOnlyHint=true, openWorldHint=true). It discloses exactly what is kept per post (code, caption, counts, etc.), what is dropped (resolution variants, dash manifests, internal flags), the measured size reduction (632 KB to 20 KB), and confirms nothing is summarised or dropped. It also details pagination behavior with `next_max_id` and `more_available`. This is rich behavioral context that significantly aids an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and every sentence adds value. It opens with the core purpose, then details the content and size reduction, then clarifies exclusions and the alternative, and ends with pagination. It is front-loaded and free of fluff, making it efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the presence of an output schema, the description is complete. It covers the returned fields, exclusions, size reduction, pagination, and the alternative tool. An agent would have all necessary information to call it correctly and interpret the response without missing context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% coverage (no descriptions). The description explicitly explains the `next_max_id` parameter: 'Page with `next_max_id` from the previous response; `more_available` says whether another page exists.' However, the `handle` parameter is not explicitly described, though it is implicitly clear from 'public account' and the tool's name. Since coverage is low, the description compensates for one parameter but not the other, warranting a 4 rather than a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'One page of a public account's timeline, projected down to what fits a context window.' It explicitly contrasts itself with `get_instagram_user_posts`, making the purpose unambiguous and distinguishing it from siblings. The verb 'projected down' and the resource 'timeline' are specific and clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool versus the alternative: 'If you need any of those — downloading every resolution, building a player, forensic detail — call `get_instagram_user_posts` instead.' It also implies the appropriate use case (a compact digest for context windows) and explains pagination with `next_max_id`, leaving no ambiguity about selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_profile_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 catalogueARead-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; no key needed. (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 | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds meaningful behavioral context beyond annotations: the tool is free, requires no key, and can direct users to a category-specific endpoint that lists tools directly rather than through search.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately detailed but every sentence adds useful information: output scope, cost/auth, sibling differentiation, and endpoint usage. It is slightly longer than strictly necessary but remains well-structured and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only tool with an output schema and safety annotations, the description is complete. It covers what the tool returns, the free/no-key access model, and provides the category endpoint for specialized use, leaving no essential gap for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description includes a <category> placeholder only in the endpoint examples, not as a tool parameter, which is appropriate supplementary guidance rather than a parameter-semantics gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: it presents the AIsa catalogue at a glance, including categories, servers, tool counts, and a dedicated category endpoint. It also distinguishes itself from search by explaining that the endpoint lists tools directly instead of via search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: use list_categories for a catalogue overview, and use the provided endpoint when you only need one category. It explicitly contrasts with search ('instead of via search') and notes tool-router has no equivalent, although it does not exhaustively cover all sibling alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchFind AIsa operationsARead-onlyInspect
Find AIsa data operations across SEO & AI visibility, finance, social, web search & research, sales and agent mail — 950+ APIs — by describing the task. Free; no key needed.
Returns tool-router's SearchResponse: retrieval_mode (plan |
endpoint | clarification), an optional plan, and candidates with
operation_id, provider, method, path, summary, required_inputs,
price, match_reasons and details_ref — plus input_schema, so a
candidate can be passed to use without calling get_details, and
modules, the entry points that pin it.
Search spans the full AIsa catalogue, not only the category pinned
on this endpoint, so an operation is discoverable here even when it
is not in the current tools/list; a candidate whose modules does
not include the current one still runs. When more than one provider
offers the same metric, the candidates make that visible.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum candidates, 1-10 | |
| query | Yes | What you need, in plain language, e.g. 'backlinks of a domain', 'recent tweets by a user', 'insider trades for AAPL'. English works best. | |
| category | No | Restrict to one category (seo, finance, social, search, sales, mail). Omit to search everything. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses meaningful behavior beyond annotations: search spans the entire AIsa catalogue, candidates may belong to modules other than the current one, multiple providers for the same metric are surfaced, and no API key is required. This gives the agent a clear picture of scope and output behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and is dense with useful information: scope, no-auth requirement, response shape, and relationship to the catalogue. Each sentence adds operational value, and the structure makes the tool's behavior predictable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 complex discovery tool with output schema, the description is unusually complete: it explains the response modalities, candidate fields, direct pass-through to `use`, full-catalogue search behavior, and cross-provider visibility. An agent has enough context to invoke and interpret the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description adds value by explaining that the category parameter is not a hard boundary—search spans the full catalogue—and that queries are plain-language task descriptions, which clarifies how to use the tool effectively.
Input schemas describe structure but not intent. Descriptions should explain 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 tool finds AIsa data operations across many categories via a plain-language query. It distinguishes itself from siblings like get_details and use by emphasizing that search covers the full catalogue, not just the pinned category.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 conveys when to use search: when you need to discover operations across the full catalogue, even those not in the current tools/list. It also implicitly contrasts with get_details by noting that returned candidates already include input_schema, so they can be passed directly to `use` without an extra call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
useRun an AIsa operationADestructiveInspect
Execute one AIsa operation. Billed per call to your AIsa key.
Answers in tool-router's BatchCallResult shape: successful, data or error {type, status, message, retryable}. Pinned tools in tools/list can also be called directly; this is the way to call anything found through search.
| 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 it would cost more than 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 provide readOnly=false, openWorldHint=true, and destructiveHint=true. The description adds valuable behavior beyond that: billing per call, the BatchCallResult response shape, and the error structure with retryable status. It does not spell out side effects, but the destructive flag is already carried by annotations, so the additional context is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: purpose, cost, response shape, and routing guidance. Key behavioral facts are front-loaded, and nothing is redundant with the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists and all parameters have descriptions, the tool description is complete enough for correct invocation. It covers cost, return/error contracts, and how routing to this tool differs from calling pinned tools directly, leaving no practical gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter is already clearly documented: operation_id as returned by search, search_id provenance, arguments matching input_schema, and max_price_usd as a spend guard. The description does not need to add parameter detail, 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?
The description opens with 'Execute one AIsa operation,' a specific verb+resource statement. The word 'one' distinguishes it from the sibling batch_use, and the closing note distinguishes it from calling pinned tools directly. An agent can tell what this tool is for immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool: 'this is the way to call anything found through search.' It also gives the alternative: 'Pinned tools in tools/list can also be called directly.' This is clear when-versus-alternative guidance with no ambiguity.
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.
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
- 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.13 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.1,814 npmMIT
- FlicenseAqualityCmaintenanceMCP server providing X/Twitter and Reddit search tools for AI agents, returning raw social media data with cleaning and re-ranking, including full Reddit comment tree reading for cost-effective synthesis.42-
Glama MCP Gateway
Add one secure layer between your agents and this server.