AIsa Go-To-Market
Server Details
Your agent needs one go-to-market picture — the market, the companies in it, the people who decide, and what is being said about them — in a single set of tools.
What you can ask for • "Size this market: who ranks, who gets the traffic, who advertises." • "Find the companies that fit and the people to email inside them." • "What is being said about these brands on X, Reddit and Instagram?" • "Which of these prospects is hiring for roles that imply budget?" • "Give me a competitor's keywords, backlinks and traffic mix in one pass."
How to use it Point any MCP client at https://mcp.aisa.one/gtm/mcp and sign in with OAuth — there is no key to create or paste. 43 tools drawn from Apollo, Similarweb, Semrush, Ahrefs, X/Twitter, Instagram, Reddit and Pinterest — company enrichment and job postings, traffic and audience, keywords, backlinks and domain rating, and social search.
Why this rather than the source The cross-source questions that usually need four tabs, answered in one conversation.
It is also a door to the rest The same login reaches 26 sources and 580+ operations. Start anywhere here, then keep going — 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/sales/mcp for the pipeline side, https://mcp.aisa.one/seo/mcp for the search side, https://mcp.aisa.one/social/mcp for the conversation side.
- Status
- Healthy
- Uptime
- 90.3% over 23 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 48 tools
Most tools target a distinct provider plus action, and descriptions explicitly guide agents toward the right alternative in many cases. However, several SimilarWeb traffic endpoints (traffic_engagement, website_traffic_snapshot, website_traffic_trend) and the digest-versus-raw Instagram/Twitter variants overlap enough to risk misselection.
Names are predominantly consistent snake_case and often use provider and HTTP-method prefixes (get_/post_) that mirror upstream routes. Minor deviations exist: the digest tools drop the verb, and meta tools like search/use/batch_use do not follow the provider_resource_action pattern, but the overall scheme remains readable.
48 tools is heavy for a single MCP surface; even for a broad aggregator, many provider-specific endpoints could be discovered on demand through search/use rather than pinned directly. The count exceeds the 25+ threshold that indicates too many tools for the apparent scope.
The meta layer (search, get_details, use, batch_use, list_categories) gives a workaround to reach 950+ operations, so there are no absolute dead ends. Still, the pinned set omits several referenced companion tools such as get_twitter_user_tweet_timeline and get_instagram_user_posts, and core GTM actions like outreach or CRM updates are absent, making direct coverage notably incomplete.
Available Tools
48 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_ahrefs_domain_ratingDomain RatingARead-onlyIdempotentInspect
Return the Ahrefs Domain Rating (0-100 authority score) and Ahrefs Rank for a target domain on a given date. Billed $0.02 per successful call; 4xx/5xx are not charged.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Snapshot date in `YYYY-MM-DD` format. | |
| target | Yes | Target domain, e.g. `ahrefs.com`. |
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 readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds valuable non-obvious context by disclosing the $0.02 per-call billing and that 4xx/5xx responses are not charged.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences deliver the core behavior and the billing caveat with no filler. The main purpose is front-loaded and every clause adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with only two required parameters, an output schema, and rich annotations, the description is complete: it states the returned metrics, target/date scope, and cost behavior. Nothing essential is missing for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both 'target' and 'date' are already fully documented in the schema. The description restates these concepts without adding new format, default, or edge-case details, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Return'), a specific resource (Ahrefs Domain Rating and Ahrefs Rank), and the exact scope (target domain, given date). It clearly differentiates from siblings like get_semrush_domain_overview and get_similarweb_ranking by calling out the Ahrefs-specific metric.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 choose this tool over the many sibling SEO/metric tools, nor does it mention exclusions or alternatives. The use case is only implied by the Ahrefs-specific naming.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_apollo_organizations_enrichOrganization EnrichmentARead-onlyIdempotentInspect
Enrich one company by domain. domain is the only parameter and it must be the bare domain (apple.com), not a full URL. Returns an organization object with id, name, website_url, linkedin_url, twitter_url, facebook_url, angellist_url, phone, founded_year, alexa_ranking, publicly_traded_symbol, publicly_traded_exchange and languages. Use it as the entry point when all you have is a domain. For several domains at once use post_apollo_organizations_bulk_enrich; for the full record including funding and technology detail use get_apollo_organizations_id, which needs the Apollo organization id this call returns.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | The domain of the company that you want to enrich. Do not include www., the @ symbol, or similar. Example: apollo.io or microsoft.com |
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 beyond annotations: the domain must be bare (not a URL), and the returned organization object contains a specific set of fields. It also notes that the returned id is needed for a sibling tool, which is valuable operational context. It doesn't mention rate limits or error behavior, 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?
The description is compact and front-loaded: the core action and constraint appear in the first sentence, followed by the return shape and routing guidance. Every sentence earns its place, and the sibling references are concise without being 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?
For a single-parameter, read-only, idempotent tool with a full output schema, the description is complete. It covers the input constraint, the return object, the entry-point use case, and the 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?
Schema coverage is 100%, so the schema already documents the domain parameter well. The description adds value by reinforcing the bare-domain requirement and clarifying that the parameter is the only one, plus explaining what the return object contains. This goes slightly beyond the schema's example and format guidance, so it earns above 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?
The description states a specific verb ('Enrich'), a specific resource ('one company by domain'), and the exact input format ('bare domain, not a full URL'). It also distinguishes itself from sibling tools by naming the alternatives for bulk enrichment and full-record retrieval, so an agent can tell it 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 explicitly says to use this tool as the entry point when all you have is a domain, and names two alternatives with their conditions: post_apollo_organizations_bulk_enrich for several domains, and get_apollo_organizations_id for the full record including funding and technology detail. 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_apollo_organizations_organization_id_job_postingsOrganization Job PostingsARead-onlyIdempotentInspect
Live job postings for one company, by Apollo organization id. Each posting carries its title, location, posted date and source URL. Useful as a hiring signal — which functions a company is expanding, and where. Get the organization id from get_apollo_organizations_enrich first. This reads Apollo's job board data, not the company's own careers page, so absence of postings is not proof a company is not hiring.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | The page number of the Apollo data that you want to retrieve. Use this parameter in combination with the per_page parameter to make search results for navigable and improve the performance of the endpoint. Example: 4 | |
| per_page | No | The number of search results that should be returned for each page. Limiting the number of results per page improves the endpoint's performance. Use the page parameter to search the different pages of data. Example: 10 | |
| organization_id | Yes | The organization ID of the company for which you want to find job postings. Each company in the Apollo database is assigned a unique ID. To find IDs, call the Organization Search endpoint and identify the values for organization_id. Example: 5e66b6381e05b4008c8331b8 |
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. The description adds meaningful behavioral context: the data is live, sourced specifically from Apollo's job board, and absence of postings is not proof of no hiring. This supplements 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?
Four sentences, each carrying distinct value: what the tool returns, why it is useful, how to get the required ID, and a data-source caveat. No redundant words 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?
The description covers the prerequisite, the use case, and the key caveat, while the output schema handles return values. For a tool with three simple parameters and rich annotations, 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?
Schema description coverage is 100% — all three parameters (page, per_page, organization_id) are fully documented with examples. The description adds nothing beyond the schema for these parameters, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states the tool retrieves live job postings for a company by Apollo organization ID, specifying the exact resource (job postings) and the method (organization ID from Apollo). It also distinguishes the data source (Apollo's job board) from the company's career page, which differentiates it from other organization-related 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 a clear use case (hiring signal) and a prerequisite (get organization ID from get_apollo_organizations_enrich). It also provides an important caveat about interpreting missing postings. However, it does not explicitly name alternative tools or state when not to use this tool, so it stops just short of full guidance.
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_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_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_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_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_semrush_backlinks_overviewBacklinks OverviewARead-onlyIdempotentInspect
Return the backlink profile summary for a root domain: authority score (ascore), total backlinks, referring domains, referring URLs, and referring IPs. Billed $0.30 per successful call; 4xx/5xx are not charged. Response is semicolon-delimited text.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | Target root domain, e.g. `ahrefs.com`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations declaring the call safe/read-only, the description adds important behavioral context: the $0.30 billing per successful call, no charge for 4xx/5xx responses, and semicolon-delimited response format. This is exactly the kind of non-obvious behavior an agent needs before invoking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler: the core purpose and output fields come first, then cost/billing caveat, then response format. Every sentence earns its place and the most important operational detail (cost) is included without bloating.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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-argument read-only tool with rich annotations and an output schema, the description covers output contents, billing behavior, error-charge behavior, and response format. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter target is already clearly documented with format and an example. The description adds no deeper parameter semantics, but the schema carries the full burden adequately, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Return') and resource ('backlink profile summary for a root domain') and enumerates the exact fields returned. The description clearly distinguishes this from domain-overview or competitor tools in the sibling list, even without naming alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over alternatives such as get_semrush_domain_overview or get_ahrefs_domain_rating. The description defines what the tool does but does not state usage conditions, exclusions, or preferred alternative scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_semrush_domain_overviewDomain OverviewARead-onlyIdempotentInspect
Return the organic search overview for a domain in a given regional database: Rank, organic keyword count, organic traffic, organic traffic cost, and Adwords keyword count. Billed $0.09 per successful call; 4xx/5xx are not charged. Response is semicolon-delimited text.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Target domain, e.g. `ahrefs.com`. | |
| database | No | Regional database / country code. Defaults to `us`. Examples: `us`, `uk`, `cn`. | us |
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 readOnly, idempotent, and non-destructive, and the description adds genuinely useful behavioral context: it is billed $0.09 per successful call, 4xx/5xx responses are not charged, and the response is semicolon-delimited text. These are non-obvious facts an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no filler: the core purpose is front-loaded, followed by billing terms and response format. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a rich output schema, strong annotations, and an output schema present, the description covers the remaining operational context: cost, error billing behavior, and response format. Nothing required to safely call the tool 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%, with domain and database already documented with examples and a default. The description restates the regional-database idea but does not add parameter-level meaning or constraints beyond what the schema provides, 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 uses a specific verb ('Return'), a clear resource ('organic search overview for a domain'), and enumerates the exact metrics returned. This lets an agent distinguish it from sibling tools like get_semrush_backlinks_overview or get_semrush_keyword_overview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 intended use case is implied: retrieving domain-level organic search metrics for a given regional database. However, there is no explicit when-to-use guidance or exclusions compared to sibling SEMrush or Ahrefs tools, so the agent must infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_semrush_keyword_overviewKeyword OverviewARead-onlyIdempotentInspect
Return search metrics for a keyword phrase in a given regional database: search volume, CPC, competition, and number of results. Billed $0.09 per successful call; 4xx/5xx are not charged. Response is semicolon-delimited text.
| Name | Required | Description | Default |
|---|---|---|---|
| phrase | Yes | Keyword phrase. URL-encode spaces as `%20` or `+`. | |
| database | No | Regional database / country code. Defaults to `us`. | us |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/not-destructive, and the description adds valuable context beyond them: the per-call billing cost ($0.09, with 4xx/5xx not charged) and the semicolon-delimited response format. No contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler. Purpose is front-loaded first, followed by billing disclosure and response format — each sentence earns its place and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter read-only tool with a full output schema and comprehensive annotations, the description covers purpose, cost, and format. The only thing missing is routing guidance to related siblings, but the tool's simplicity and structured fields carry the rest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need 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 phrase and database parameters with examples. The description only reinforces this with 'keyword phrase in a given regional database', adding marginal value beyond the schema 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?
States a specific verb (Return) + resource (search metrics for a keyword phrase) + scope (regional database), and enumerates the exact metrics returned (volume, CPC, competition, results). This distinguishes it from siblings like get_semrush_backlinks_overview and get_semrush_domain_overview without needing to open their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides no guidance on when to choose this tool over alternatives. Siblings get_semrush_organic_competitors, get_similarweb_keywords, and get_similarweb_keyword_competitors overlap in keyword topics, yet the description never tells an agent which to prefer or under what conditions. This is a clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_semrush_organic_competitorsOrganic CompetitorsARead-onlyIdempotentInspect
Domains competing with a target in Google organic search. Billed per returned data row at $0.36 per row (up to 20 rows; header row excluded); 4xx/5xx are not charged. Response is semicolon-delimited text.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Target domain, e.g. `ahrefs.com`. | |
| database | Yes | Regional database / country code, e.g. `us`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond the annotations: per-row billing, a 20-row cap, no charges for 4xx/5xx responses, and semicolon-delimited text output. These details are not present in any structured field and are critical for cost-aware invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: purpose, cost/limits, and response format. It is front-loaded with the core purpose and contains 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 low-complexity tool with two primitive required parameters and an output schema, the description covers everything an agent needs: what it returns, cost constraints, row limits, and response formatting. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both `domain` and `database` having descriptions and examples. The description does not add parameter-level meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource ('domains competing with a target') and the context ('Google organic search'), which distinguishes it from SEMrush backlinks, domain overview, and Similarweb tools. However, it lacks an explicit verb like 'Returns' or 'Lists,' so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use case is implied: use this when you need domains competing with a target in Google organic search. But the description never explicitly states when to prefer this over sibling tools such as get_similarweb_keyword_competitors or get_semrush_domain_overview, and gives no exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_keyword_competitorsKeyword CompetitorsCRead-onlyIdempotentInspect
Keyword Competitors. Response follows the SimilarWeb v5 envelope (meta + data).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | Yes | Number of rows to return; max 20, billed as 20 if exceeded. | |
| domain | Yes | Target domain, e.g. example.com. | |
| offset | No | Row offset for pagination. | |
| country | No | Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan. | ww |
| end_date | Yes | End month, format YYYY-MM. | |
| start_date | Yes | Start month, format YYYY-MM. | |
| web_source | No | Web source. This endpoint accepts desktop only (the gateway rejects mobile_web and total with 400). | |
| granularity | No | Time granularity. Allowed: monthly. | |
| traffic_source | No | Traffic-source filter. | |
| main_domain_only | No | Restrict to the main domain only (true/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 declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered structurally. The description adds one useful behavioral detail: the response follows the SimilarWeb v5 envelope (meta + data). This is genuinely helpful context beyond the annotations, but nothing more is disclosed about pagination, error behavior, or data coverage limits. A 3 is appropriate given the moderate added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is efficient, but it is under-specification rather than helpful conciseness. It front-loads a label but provides almost no operational information. For a 10-parameter tool, the terseness leaves the agent with nearly nothing to act on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema and rich parameter descriptions, the tool is complex (10 parameters, 3 enums) and the description contributes almost nothing. An agent cannot tell what data this returns (beyond the generic envelope), what makes it distinct from sibling SimilarWeb and Semrush tools, or when it is the right choice. The description is inadequate for the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple 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 input schema already documents every parameter with descriptions (e.g., web_source noting the 400 rejection for mobile_web/total, limit being billed as 20 if exceeded). The description adds no parameter semantics beyond what the schema provides, which is acceptable given the high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is essentially a label ('Keyword Competitors') that restates the tool name without stating what the tool does with a verb and resource. It mentions the response envelope format, which is useful, but it does not explain what 'keyword competitors' means operationally nor how it differs from siblings like get_similarweb_organic_competitors or get_similarweb_similar_sites.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as get_similarweb_keywords, get_semrush_organic_competitors, or get_similarweb_similar_sites. No context is given about the use case for keyword competitor data, and no exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_keywordsWebsite KeywordsBRead-onlyIdempotentInspect
Website Keywords. Response follows the SimilarWeb v5 envelope (meta + data). Date constraint: the start_date-end_date span must cover between 1 and 3 monthly buckets. Note: data may arrive grouped as an array of arrays; billing counts rows across all groups.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | Yes | Number of rows to return; max 20, billed as 20 if exceeded. | |
| domain | Yes | Target domain, e.g. example.com. | |
| format | No | Response format. Allowed: json. | |
| country | No | Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan. | ww |
| end_date | Yes | End month, format YYYY-MM. | |
| start_date | Yes | Start month, format YYYY-MM. | |
| web_source | No | Traffic source device split. Allowed: total. | |
| granularity | Yes | Time granularity. Allowed: monthly. | |
| main_domain_only | No | Restrict to the main domain only (true/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 declare the operation read-only and idempotent, and the description adds a surprising array-of-arrays response grouping, a 1–3 monthly-bucket date restriction, and a billing rule that counts rows across all groups. These are exactly the kind of non-obvious behaviors an agent needs before invoking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The two substantive sentences are dense and valuable, but the opening 'Website Keywords' is a tautological filler that occupies the front-loaded position. It should have been replaced with an actual action statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 100% schema coverage, an output schema, and safety-focused annotations, the description covers the remaining non-obvious contract details: date-range span, response grouping, and billing. Nothing needed to call the tool correctly appears missing, though the absent purpose statement lowers the overall completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is met. The description goes beyond the schema by constraining the start_date/end_date span to 1–3 monthly buckets, which cannot be inferred from any individual parameter description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening phrase 'Website Keywords' simply restates the title and implies an action only through the tool name. The rest of the description covers response shape and date constraints, not what the tool actually retrieves. It also does not differentiate it from the sibling get_similarweb_keyword_competitors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to choose this tool over alternatives such as get_similarweb_keyword_competitors or other SimilarWeb siblings. The date constraint is a precondition for a valid call, not a usage rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_rankingWebsite RankingCRead-onlyIdempotentInspect
Website Ranking. Response follows the SimilarWeb v5 envelope (meta + data). Date constraint: the start_date-end_date span must cover between 1 and 120 monthly buckets.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Target domain, e.g. example.com. | |
| country | No | Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan. | ww |
| end_date | Yes | End month, format YYYY-MM. | |
| start_date | Yes | Start month, format YYYY-MM. | |
| web_source | No | Traffic source device split. Allowed: desktop, mobile_web, total. | |
| granularity | No | Time granularity. Allowed: monthly. Default: monthly. | monthly |
| main_domain_only | No | Restrict to the main domain only (true/false). Default: True. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the operation as read-only, idempotent, and non-destructive, so the description's extra notes are valuable rather than redundant. It adds a concrete behavioral contract: the response follows the SimilarWeb v5 envelope (meta + data) and the date span must cover 1 to 120 monthly buckets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loads the key constraint after a terse title-like opening. The first phrase 'Website Ranking' is redundant with the title, but the remaining two sentences are packed and free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the schema, annotations, and output schema are rich, the description itself fails to establish what the tool actually returns or when to prefer it over closely related SimilarWeb ranking tools. An agent gets the constraint details but not enough context to confidently select this tool among many similar siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds a useful constraint not present in the schema: start_date and end_date must span between 1 and 120 monthly buckets. This gives the agent actionable validation semantics beyond the individual field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Website Ranking,' which merely restates the tool title and name without a verb or a specific resource. It never states what the returned ranking means or what domain-related data is fetched, so an agent must infer the purpose from the name and 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?
There is no guidance about when to use this tool versus the many SimilarWeb siblings such as get_similarweb_website_traffic_trend or get_similarweb_traffic_engagement. The only stated constraints are the response envelope and a date-range rule, neither of which helps an agent decide between alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_similar_sitesSimilarSitesARead-onlyIdempotentInspect
SimilarSites. Response follows the SimilarWeb v5 envelope (meta + data). Date window (upstream SimilarWeb constraint): start_date and end_date must span EXACTLY 3 consecutive months — a 1- or 2-month span is rejected with upstream error 120 ('must span exactly 3 month(s)'). That span must also be SimilarWeb's most recent supported window, which advances forward each month; an older or out-of-range span is rejected with error 101 ('Dates not in range'). In practice, request the three most recent completed months (e.g. if the latest published month is 2026-07, use start_date=2026-05 and end_date=2026-07). To read the exact currently-supported range, call SimilarWeb's /describe endpoint for this API.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | Yes | Number of rows to return; max 20, billed as 20 if exceeded. | |
| domain | Yes | Target domain, e.g. example.com. | |
| offset | No | Row offset for pagination. | |
| country | No | Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan. | ww |
| end_date | Yes | End month, format YYYY-MM. Together with start_date must span exactly 3 consecutive months, and must be the most recent supported month (the window rolls forward monthly; see the endpoint description). | |
| start_date | Yes | Start month, format YYYY-MM. Must be exactly 2 months before end_date: the window has to span exactly 3 consecutive months within SimilarWeb's latest supported range (see the endpoint description). | |
| web_source | No | Traffic source device split. Allowed: desktop, mobile_web, total. | |
| granularity | No | Time granularity. Allowed: monthly. | |
| traffic_source | No | Traffic-source filter. | |
| main_domain_only | No | Restrict to the main domain only (true/false). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses the SimilarWeb v5 response envelope, the exact-3-month upstream constraint, the specific upstream errors (120 and 101), the rolling monthly window, and a practical example. This goes well beyond the readOnly/idempotent annotations and clarifies the main non-obvious behavior of the API.
Agents need to know what a tool does to the 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 focused; the date-window guidance, error codes, and /describe pointer all earn their place. The opening one-word fragment 'SimilarSites.' is somewhat redundant with the title, but overall the section is tight and information-rich.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 10-parameter tool with a strict rolling date constraint and an output schema, the description thoroughly covers the one truly non-obvious behavior, gives an actionable example, and points to /describe for state that changes monthly. The schema covers parameter defaults/enums and the output schema covers return values, so 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%, so the baseline is 3. The description adds real value for the date parameters—concrete example, exact error codes, and rolling-window semantics—rather than repeating schema text. Other parameters are left to the schema, which is complete.
Input schemas describe structure but not intent. Descriptions should explain 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 name and title ('get_similarweb_similar_sites' / 'SimilarSites') make the resource clear and distinguish it from sibling SimilarWeb tools. However, the description itself never explicitly states a verb+resource action like 'returns a list of similar sites for a domain'; it opens with the one-word title and moves straight to response envelope and date constraints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 concrete date-usage guidance: request the three most recent completed months, and call the /describe endpoint to discover the exact currently-supported range. It does not discuss when to prefer this tool over sibling SimilarWeb tools, but the context is clear enough to prevent obvious misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_traffic_engagementTraffic & EngagementCRead-onlyIdempotentInspect
Traffic & Engagement. Response follows the SimilarWeb v5 envelope (meta + data). Date constraint: the start_date-end_date span must cover between 1 and 120 monthly buckets.
| Name | Required | Description | Default |
|---|---|---|---|
| mtd | No | Month-to-date flag (true/false). | |
| domain | Yes | Target domain, e.g. example.com. | |
| country | No | Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan. | ww |
| metrics | Yes | Comma-separated metrics, e.g. visits,pages_per_visit. | |
| end_date | Yes | End month, format YYYY-MM. | |
| start_date | Yes | Start month, format YYYY-MM. | |
| web_source | No | Traffic source device split. Allowed: desktop, mobile_web, total. | |
| granularity | No | Time granularity. Allowed: monthly. Default: monthly. | monthly |
| main_domain_only | No | Restrict to the main domain only (true/false). Default: True. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish read-only, idempotent, non-destructive behavior, and the description adds useful behavioral context beyond that: the response follows the SimilarWeb v5 envelope and the date span must cover between 1 and 120 monthly buckets. These are concrete operational constraints an agent would need. It does not go into pagination or rate limits, but the output schema reduces the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded and avoids unnecessary prose, but the first sentence 'Traffic & Engagement.' adds no value because it just repeats the title. The envelope and date-constraint sentences are useful, so overall it is efficient but not every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter tool, the description provides one key operational constraint and the response envelope, and the input/output schemas cover parameter details and return structure. However, it does not differentiate this tool from closely related SimilarWeb siblings, leaving an agent to infer when this specific 'traffic & engagement' call is appropriate. It is minimally adequate but with clear contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema documentation covers 100% of parameters, so the baseline is 3, and the description adds meaningful semantic value to start_date and end_date by specifying the allowed 1–120 monthly-bucket span. This is beyond the schema's basic YYYY-MM format info, though no other parameters receive additional description-level clarification.
Input schemas describe structure but not intent. Descriptions should explain 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 begins with 'Traffic & Engagement.', which simply restates the title and does not use a verb to state what the tool does. The envelope and date constraint sentences add operational detail, but the core purpose—'retrieves traffic and engagement metrics for a domain'—is only implied by the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus sibling tools such as get_similarweb_website_traffic_snapshot or get_similarweb_website_traffic_trend. The date-range constraint is a validity condition, not a usage guideline, and there are no stated exclusions, prerequisites, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_website_top_geographiesWebsite Top GeographiesARead-onlyIdempotentInspect
Top countries by share of a domain's traffic for the latest available month (data.countries, up to 10 rows with country_code, country_name, share and visits). Geography coverage is worldwide (ww) and fixed: a country parameter is not accepted for this endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Target domain, e.g. example.com. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds valuable behavioral context beyond the annotations: latest available month, maximum 10 rows, field names, and fixed worldwide scope. No contradiction with annotations is present.
Agents need to know what a tool does to the 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 concise sentences with no filler. The core output and constraints are front-loaded, and every clause adds information: time period, row cap, fields, coverage, and parameter restriction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 single-parameter tool with a rich output schema and strong annotations, the description is fully sufficient. It covers the relevant behavioral constraints and return-shape details without requiring an agent to open the schema or infer hidden limitations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need 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 the single required `domain` parameter, so the baseline is already covered. The description adds extra semantic value by clarifying that a country parameter is not accepted and that the fixed worldwide scope is part of the endpoint's behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (a domain's traffic) and the specific metric (top countries by share for the latest available month), and specifies the returned fields and row limit. It also distinguishes this endpoint from alternatives by stating that geography coverage is worldwide and fixed, with no country parameter accepted.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for invocation: it returns country-level traffic share for the latest month and explicitly tells agents that a country parameter is not accepted, implying this tool is for worldwide breakdowns rather than country-filtered reports. It does not name a specific alternative tool, but the exclusion is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_website_traffic_snapshotWebsite Traffic SnapshotARead-onlyIdempotentInspect
Latest-month traffic snapshot for a domain: visits plus core engagement metrics (average visit duration, bounce rate, pages per visit) in a single object. The most recent available month is selected automatically and echoed in meta.start_date / meta.end_date.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Target domain, e.g. example.com. | |
| country | No | Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan. | ww |
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, so the description does not need to repeat safety. It adds useful behavioral context: the tool automatically selects the most recent available month and echoes the date range in meta.start_date/meta.end_date, which helps the agent interpret results. 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 two sentences with no filler. The first sentence front-loads the core purpose and metrics; the second explains the automatic month selection and meta fields. Every phrase 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 detail return fields. It covers the essential behavioral nuance (auto-selected month, meta echoing) and scope (domain + country). No missing information that an agent needs to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%: both domain and country have descriptions, including the enum and default for country. The description adds no parameter-specific detail beyond what the schema already provides (e.g., it doesn't explain domain format or country restrictions beyond the schema). Baseline 3 applies because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('website traffic snapshot') and enumerates the exact metrics returned: visits, average visit duration, bounce rate, pages per visit. It is clearly distinguishable from sibling tools like get_similarweb_website_traffic_trend (trend) or get_similarweb_traffic_engagement (broader engagement) by the 'latest-month' qualifier and the single-object format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving the most recent month's snapshot ('latest-month traffic snapshot') and notes that the month is auto-selected, but it does not explicitly contrast with alternatives or state when not to use it. The guidance is implicit rather than explicit, so a 3 is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_website_traffic_trendWebsite Traffic TrendARead-onlyIdempotentInspect
Monthly traffic time series for a domain over the recent available window (data.points, one entry per month). The window is selected automatically and echoed in meta.start_date / meta.end_date.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Target domain, e.g. example.com. | |
| country | No | Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan. | ww |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive). The description adds valuable context that the time window is selected automatically and echoed in meta.start_date/meta.end_date, which is beyond what annotations provide. It does not contradict any 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 a single, focused sentence that front-loads the core purpose (monthly traffic time series) and includes the key behavioral detail about the window. No wasted words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering safety, the description sufficiently explains the response structure and automatic window behavior. It could be more complete by noting when to prefer this tool over related Similarweb tools, but given the schema and annotations, it's adequate for 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?
Both parameters (domain and country) have full descriptions in the schema, covering their meaning and allowed values. The description text adds no additional semantic value beyond the schema, so the baseline of 3 for 100% schema coverage is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a monthly traffic time series for a domain, which is specific and unambiguous. It differentiates from snapshot-style tools by emphasizing the time-series nature, though it doesn't explicitly name sibling alternatives like get_similarweb_website_traffic_snapshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus the many similar Similarweb tools in the sibling list. There are no prerequisites, exclusions, or comparative use cases mentioned, leaving the agent to infer usage from the name alone.
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_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_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_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_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.
post_apollo_mixed_companies_searchOrganization SearchARead-onlyIdempotentInspect
Find companies matching criteria: name, domain, headcount, industry, location, funding stage and technologies in use. Returns organizations and accounts side by side — organizations are Apollo's global database, accounts are records that already exist in this Apollo workspace — plus pagination and breadcrumbs echoing the filters that were applied. Use it to build a target list. When you already know the domain, get_apollo_organizations_enrich answers directly and costs less.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | The page number of the Apollo data that you want to retrieve. Use this parameter in combination with the per_page parameter to make search results for navigable and improve the performance of the endpoint. Example: 4 | |
| per_page | No | The number of search results that should be returned for each page. Limiting the number of results per page improves the endpoint's performance. Use the page parameter to search the different pages of data. Example: 10 | |
| revenue_range | No | ||
| organization_ids | No | The Apollo IDs for the companies you want to include in your search results. Each company in the Apollo database is assigned a unique ID. To find IDs, identify the values for organization_id when you call this endpoint. Example: 5e66b6381e05b4008c8331b8 | |
| q_organization_name | No | Filter search results to include a specific company name. If the value you enter for this parameter does not match with a company's name, the company will not appear in search results, even if it matches other parameters. Partial matches are accepted. For example, if you filter by the value marketing, a company called NY Marketing Unlimited would still be eligible as a search result, but NY Market Analysis would not be eligible. Example: apollo or mining | |
| total_funding_range | No | ||
| organization_locations | No | The location of the company headquarters. You can search across cities, US states, and countries. If a company has several office locations, results are still based on the headquarters location. For example, if you search chicago but a company's HQ location is in boston, any Boston-based companies will not appearch in your search results, even if they match other parameters.. To exclude companies based on location, use the organization_not_locations parameter. Examples: texas; tokyo; spain | |
| latest_funding_date_range | No | ||
| q_organization_job_titles | No | The job titles that are listed in active job postings at the company. Examples: sales manager; research analyst | |
| organization_job_locations | No | The locations of the jobs being actively recruited by the company. Examples: atlanta; japan | |
| organization_not_locations | No | Exclude companies from search results based on the location of the company headquarters. You can use cities, US states, and countries as locations to exclude. This parameter is useful for ensuring you do not prospect in an undesirable territory. For example, if you use ireland as a value, no Ireland-based companies will appear in your search results. Examples: minnesota; ireland; seoul | |
| latest_funding_amount_range | No | ||
| organization_num_jobs_range | No | ||
| q_organization_domains_list | No | The domain name for the person's employer. This can be the current employer or a previous employer. Do not include www., the @ symbol, or similar. This parameter accepts up to 1,000 domains in a single request. Examples: apollo.io; microsoft.com | |
| q_organization_keyword_tags | No | Filter search results based on keywords associated with companies. For example, you can enter mining as a value to return only companies that have an association with the mining industry. Examples: mining; sales strategy; consulting | |
| organization_job_posted_at_range | No | ||
| organization_num_employees_ranges | No | The number range of employees working for the company. This enables you to find companies based on headcount. You can add multiple ranges to expand your search results. Each range you add needs to be a string, with the upper and lower numbers of the range separated only by a comma. Examples: 1,10; 250,500; 10000,20000 | |
| currently_using_any_of_technology_uids | No | Find organizations based on the technologies they currently use. Apollo supports filtering by 1,500+ technologies. Apollo calculates technologies data from multiple sources. This data is updated regularly. Check out the full list of supported technologies by downloading this CSV file . Use underscores (_) to replace spaces and periods for the technologies listed in the CSV file. Examples: salesforce; google_analytics; wordpress_org |
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 genuinely useful behavioral detail: the side-by-side organizations/accounts return structure, pagination, and breadcrumbs that echo applied filters. It does not discuss rate limits or data freshness, but the annotations carry most of the safety burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences deliver action, return format, and usage guidance with zero filler. The key behavior is front-loaded and the sibling routing comes last, making the description easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 18-parameter, 0-required-field search tool, the description covers what the tool does, what it returns, how results are scoped, and when to prefer a cheaper sibling. The output schema and rich input schema cover the remaining details, so nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides a high-level summary of filter categories ('name, domain, headcount, industry, location, funding stage and technologies'), which helps orient an agent but adds no syntax, formatting, or interaction details beyond what the input schema already documents. With 67% schema description coverage, the schema does most of the parameter-level heavy lifting, 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 ('Find companies matching criteria') and enumerates the filter dimensions, so an agent immediately knows what this tool does. It also clarifies the unusual 'mixed' behavior: results include both Apollo's global organizations and workspace-specific accounts, which distinguishes it from a simple company search. The explicit contrast with get_apollo_organizations_enrich further disambiguates it from a close 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 states the intended use case directly: 'Use it to build a target list.' It also names the alternative and gives the exact condition for choosing it: 'When you already know the domain, get_apollo_organizations_enrich answers directly and costs less.' This is clear when-to-use and when-to-use-something-else guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_mixed_people_api_searchPeople API SearchARead-onlyIdempotentInspect
Find people matching criteria rather than enriching someone you already identified. Filter by job title, seniority, location, company domain, headcount and industry, and page with page and per_page. Returns total_entries and a people array. Note what search deliberately withholds: entries carry last_name_obfuscated and boolean flags — has_email, has_direct_phone, has_city, has_state, has_country — instead of the values themselves. Search tells you a match exists; enrichment reveals the contact details. Feed the ids into post_apollo_people_match or post_apollo_people_bulk_match to get emails and phone numbers, which is also where the credits are spent.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | The page number of the Apollo data that you want to retrieve. Use this parameter in combination with the per_page parameter to make search results for navigable and improve the performance of the endpoint. Example: 4 | |
| per_page | No | The number of search results that should be returned for each page. Limiting the number of results per page improves the endpoint's performance. Use the page parameter to search the different pages of data. Example: 10 | |
| q_keywords | No | A string of words over which we want to filter the results. | |
| person_titles | No | Job titles held by the people you want to find. For a person to be included in search results, they only need to match 1 of the job titles you add. Adding more job titles expands your search results. Results also include job titles with the same terms, even if they are not exact matches. For example, searching for marketing manager might return people with the job title content marketing manager. Use this parameter in combination with the person_seniorities[] parameter to find people based on specific job functions and seniority levels. Examples: sales development representative; marketing manager; research analyst | |
| revenue_range | No | ||
| organization_ids | No | The Apollo IDs for the companies (employers) you want to include in your search results. Each company in the Apollo database is assigned a unique ID. To find IDs, call the Organization Search endpoint and identify the values for organization_id. Example: 5e66b6381e05b4008c8331b8 | |
| person_locations | No | The location where people live. You can search across cities, US states, and countries. To find people based on the headquarters locations of their current employer, use the organization_locations parameter. Examples: california; ireland; chicago | |
| person_seniorities | No | The job seniority that people hold within their current employer. This enables you to find people that currently hold positions at certain reporting levels, such as Director level or senior IC level. For a person to be included in search results, they only need to match 1 of the seniorities you add. Adding more seniorities expands your search results. Searches only return results based on their current job title, so searching for Director-level employees only returns people that currently hold a Director-level title. If someone was previously a Director, but is currently a VP, they would not be included in your search results. Use this parameter in combination with the person_titles[] parameter to find people based on specific job functions and seniority levels. The following options can be used for this parameter: owner founder c_suite partner vp head director manager senior entry intern | |
| contact_email_status | No | The email statuses for the people you want to find. You can add multiple statuses to expand your search. The statuses you can search include: verified unverified likely to engage unavailable | |
| include_similar_titles | No | This parameter determines whether people with job titles similar to the titles you define in the person_titles[] parameter are returned in the response. Set this parameter to false when using person_titles[] to return only strict matches for job titles. | |
| organization_locations | No | The location of the company headquarters for a person's current employer. You can search across cities, US states, and countries. If a company has several office locations, results are still based on the headquarters location. For example, if you search chicago but a company's HQ location is in boston, people that work for the Boston-based company will not appear in your results, even if they match other parameters. To find people based on their personal location, use the person_locations parameter. Examples: texas; tokyo; spain | |
| q_organization_job_titles | No | The job titles that are listed in active job postings at the person's current employer. Examples: sales manager; research analyst | |
| organization_job_locations | No | The locations of the jobs being actively recruited by the person's employer. Examples: atlanta; japan | |
| organization_num_jobs_range | No | ||
| q_organization_domains_list | No | The domain name for the person's employer. This can be the current employer or a previous employer. Do not include www., the @ symbol, or similar. This parameter accepts up to 1,000 domains in a single request. Examples: apollo.io; microsoft.com | |
| organization_job_posted_at_range | No | ||
| organization_num_employees_ranges | No | The number range of employees working for the person's current company. This enables you to find people based on the headcount of their employer. You can add multiple ranges to expand your search results. Each range you add needs to be a string, with the upper and lower numbers of the range separated only by a comma. Examples: 1,10; 250,500; 10000,20000 | |
| currently_using_all_of_technology_uids | No | Find people based on all of the technologies their current employer uses. Apollo supports filtering by 1,500+ technologies. Apollo calculates technologies data from multiple sources. This data is updated regularly. Check out the full list of supported technologies by downloading this CSV file . Use underscores (_) to replace spaces and periods for the technologies listed in the CSV file. Examples: salesforce; google_analytics; wordpress_org | |
| currently_using_any_of_technology_uids | No | Find people based on any of the technologies their current employer uses. Apollo supports filtering by 1,500+ technologies. Apollo calculates technologies data from multiple sources. This data is updated regularly. Check out the full list of supported technologies by downloading this CSV file . Use underscores (_) to replace spaces and periods for the technologies listed in the CSV file. Examples: salesforce; google_analytics; wordpress_org | |
| currently_not_using_any_of_technology_uids | No | Exclude people from your search based on any of the technologies their current employer uses. Apollo supports filtering by 1,500+ technologies. Apollo calculates technologies data from multiple sources. This data is updated regularly. Check out the full list of supported technologies by downloading this CSV file . Use underscores (_) to replace spaces and periods for the technologies listed in the CSV file. Examples: salesforce; google_analytics; wordpress_org |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations already declaring readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, the description adds non-obvious behavioral context: entries return 'last_name_obfuscated' and boolean flags ('has_email', 'has_direct_phone', etc.) instead of actual values, and 'Search tells you a match exists; enrichment reveals the contact details.' This shapes agent expectations about response content and cost in a way the annotations do not.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five sentences with no filler: purpose first, then filter categories, return shape, deliberate withholding, and routing to enrichment. Every sentence earns its place and the most important distinction (search vs. enrichment) 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?
The description is strong overall, covering purpose, filtering, return structure, obfuscation behavior, and downstream tool usage. Minor deduction: it mentions 'industry' as a filterable dimension, but the input schema contains no explicit industry parameter, which could briefly mislead an agent looking for that parameter in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high at 85%, so the input schema already provides detailed semantics for page, per_page, person_titles, person_seniorities, and the rest. The description only summarily lists filter categories and mentions pagination, adding little beyond what the schema says. This matches the baseline of 3 when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with 'Find people matching criteria rather than enriching someone you already identified,' using a specific verb and resource that separates it from the people_match and bulk_match siblings. It lists concrete filter dimensions (title, seniority, location, domain, headcount) and explicitly names the sibling tools for enrichment, so the agent can distinguish this search 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?
The description explicitly states when to use this tool ('Find people matching criteria') and when not to ('rather than enriching someone you already identified'). It goes further by routing to alternatives: 'Feed the ids into post_apollo_people_match or post_apollo_people_bulk_match to get emails and phone numbers,' and clarifies that credits are spent at enrichment, not search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_news_articles_searchNews Articles SearchARead-onlyIdempotentInspect
News coverage for specific companies. organization_ids[] is required — omitting it returns HTTP 422 with "organization_ids is required", so resolve the companies first with get_apollo_organizations_enrich or post_apollo_mixed_companies_search. Narrow further with categories[] (funding, hires, launches and similar), published_at[min], published_at[max], and page with page and per_page. Returns news_articles and pagination. Use it to catch a trigger event before reaching out.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | The page number of the Apollo data that you want to retrieve. Use this parameter in combination with the per_page parameter to make search results for navigable and improve the performance of the endpoint. Example: 4 | |
| per_page | No | The number of search results that should be returned for each page. Limiting the number of results per page improves the endpoint's performance. Use the page parameter to search the different pages of data. Example: 10 | |
| categories | No | Filter your search to include only certain categories or sub-categories of news. Use the News search filter for companies within Apollo to uncover all possible categories and sub-categories. Examples: hires; investment; contract | |
| published_at | No | ||
| organization_ids | Yes | The Apollo IDs for the companies you want to include in your search results. Each company in the Apollo database is assigned a unique ID. To find IDs, call the Organization Search endpoint and identify the values for organization_id. Example: 5e66b6381e05b4008c8331b8 |
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 a concrete behavioral detail beyond annotations: omitting organization_ids returns HTTP 422 with the exact error message. It also discloses the return contract (news_articles and pagination), which helps the agent predict the outcome.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five short sentences, each carrying a distinct piece of information: scope, required parameter and failure mode, filter options, return shape, and intended use case. There is no filler or unnecessary repetition of schema 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?
Given that a full output schema exists and the input schema is rich, the description still adds missing call context: prerequisite resolution, mandatory parameter behavior, filtering axes, pagination control, and the 422 failure condition. An agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80% and the input schema already provides detailed documentation for all five parameters. The description adds the required-status consequence for organization_ids and sample categories, but mostly restates what the schema already covers. This matches the baseline expected for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as news coverage for specific companies and scopes it by required organization_ids, distinguishing it from generic search siblings like get_reddit_search or get_twitter_tweet_advanced_search. However, the action verb 'search' is supplied by the tool name/title rather than explicitly in the description, so it misses a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells the agent to resolve companies first, naming get_apollo_organizations_enrich and post_apollo_mixed_companies_search as prerequisite alternatives. It also explains when to use the tool: to catch a trigger event before reaching out. This is strong, actionable routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_organizations_bulk_enrichBulk Organization EnrichmentARead-onlyIdempotentInspect
Enrich up to 10 companies in one call. Body takes domains, an array of bare domains. Returns the enriched organizations alongside status, total_requested_domains, unique_domains, unique_records and unique_enriched_records — compare the requested and enriched counts rather than assuming every domain resolved. For one domain get_apollo_organizations_enrich is a plain GET.
| Name | Required | Description | Default |
|---|---|---|---|
| domains | Yes | The domain of each company that you want to enrich. Do not include www., the @ symbol, or similar. Example: apollo.io and microsoft.com |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals that the call may not return a record for every domain and explicitly instructs comparing requested vs enriched counts. It also communicates a scale limit ('up to 10'). These behaviors go beyond the readOnly/idempotent annotations, giving the agent essential expectations about partial successes.
Agents need to know what a tool does to the 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 cover a distinct necessity: the core action, the input, the output/caveat, and the single-domain alternative. No fluff; the most important info 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 bulk read-only tool with an output schema, the description covers purpose, payload, count-obsessed output semantics, and sibling routing. It gives an agent everything needed to select and call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents `domains` as an array of bare domains with format guidance, so the description adds little on domain format. However, 'Enrich up to 10 companies' adds a max array-size hint not present in the schema, raising it above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete action ('Enrich up to 10 companies in one call'), ties it to the `domains` array, and explicitly contrasts with `get_apollo_organizations_enrich` for a single domain. This clearly distinguishes the bulk POST from its sibling GET.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It specifies the bulk use case ('up to 10 companies in one call') and directs single-domain needs to `get_apollo_organizations_enrich`. It also warns that not all input domains will resolve, which affects how the agent evaluates results.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_people_bulk_matchBulk People EnrichmentARead-onlyIdempotentInspect
Enrich up to 10 people in one call. Body takes details, an array of the same identifier objects post_apollo_people_match accepts. Returns matches alongside status, total_requested_enrichments, unique_enriched_records, missing_records and credits_consumed — read missing_records rather than assuming every input matched. Costs one credit per record enriched, not per call. Use this over a loop of single calls: same credits, one round trip. For a single person post_apollo_people_match is simpler.
| Name | Required | Description | Default |
|---|---|---|---|
| details | Yes | Provide info for each person you want to enrich as an object within this array. Add up to 10 people. | |
| webhook_url | No | If you set the reveal_phone_number parameter to true, this parameter becomes mandatory. Otherwise, do not use this parameter. Enter the webhook URL that specifies where Apollo should send a JSON response that includes the phone number you requested. Apollo suggests testing this flow to ensure you receive the separate response with the phone number. If phone numbers are not revealed delivered to the webhook URL, try applying UTF-8 encoding to the webhook URL. Example: https://webhook.site/cc4cf44e-e047-4774-8dac-473d28474e40; https%3A%2F%2Fwebhook.site%2Fcc4cf44e-e047-4774-8dac-473d28474e40 | |
| reveal_phone_number | No | Set to true if you want to enrich the data of all matched people with all available phone numbers, including mobile phone numbers. This potentially consumes credits as part of your Apollo pricing plan . The default value is false. If this parameter is set to true, you must enter a webhook URL for the webhook_url parameter. Apollo will asynchronously verify phone numbers for you, then send a JSON response that includes only details about the phone numbers to the webhook URL you provide. It can take several minutes for the phone numbers to be delivered. | |
| run_waterfall_email | No | Set to true to enable email waterfall enrichment | |
| run_waterfall_phone | No | Set to true to enable phone waterfall enrichment | |
| reveal_personal_emails | No | Set to true if you want to enrich all matched people with personal emails. This potentially consumes credits as part of your Apollo pricing plan . The default value is false. If a person resides in a GDPR -compliant region, Apollo will not reveal their personal email. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable non-obvious behavior: credit consumption per record rather than per call, and the instruction to read `missing_records` because not every input may match. 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?
Four tight sentences, each earning its place: purpose, request shape, response caveat, credit economics, and sibling comparison. The most important facts are front-loaded and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 6 params (1 required), full schema coverage, an output schema, and annotations covering safety, the description adds the remaining decision-relevant context: batch size, credit costing, partial-match handling, and when to prefer this over the single-match sibling. 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 fully documents all six parameters. The description adds light clarity by explaining that `details` accepts the same identifier objects as `post_apollo_people_match`, and it ties credit cost to enriched records rather than the call itself. This is helpful but not transformative, so a 3 at baseline 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 'Enrich up to 10 people in one call' – a specific verb, resource, and scope. It explicitly differentiates from the single-person sibling post_apollo_people_match by noting the same identifier objects and pointing to the simpler single call for one person, so an agent can distinguish tools without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear decision rule: 'Use this over a loop of single calls: same credits, one round trip,' and explicitly states the boundary case, 'For a single person post_apollo_people_match is simpler.' This is direct when-to-use 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.
post_apollo_people_matchPeople EnrichmentARead-onlyIdempotentInspect
Enrich one person: give whatever identifiers you have and get back Apollo's full record for them. Accepts email, first_name plus last_name, name, domain, organization_name, linkedin_url or hashed_email — the more you supply, the likelier the match. Returns a person object with id, name, title, headline, linkedin_url, twitter_url, github_url, photo_url, organization_id and an employment_history array, plus a request_id. Personal emails and phone numbers are withheld unless reveal_personal_emails or reveal_phone_number is set, and those cost extra credits. A 200 does not guarantee a match — check whether person actually came back. Use post_apollo_people_bulk_match for up to 10 people in one call; use post_apollo_mixed_people_api_search when you do not have an identifier and need to find candidates first.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | The Apollo ID for the person. Each person in the Apollo database is assigned a unique ID. To find IDs, call the People API Search endpoint and identify the values for person_id. Example: 587cf802f65125cad923a266 | |
| name | No | The full name of the person. This will typically be a first name and last name separated by a space. If you use this parameter, you do not need to use the first_name and last_name parameters. Example: tim zheng | |
| No | The email address of the person. Example: example@email.com | ||
| domain | No | The domain name for the person's employer. This can be the current employer or a previous employer. Do not include www., the @ symbol, or similar. Example: apollo.io or microsoft.com | |
| last_name | No | The last name of the person. This is typically used in combination with the first_name parameter. Example: zheng | |
| first_name | No | The first name of the person. This is typically used in combination with the last_name parameter. Example: tim | |
| webhook_url | No | If you set the reveal_phone_number parameter to true, this parameter becomes mandatory. Otherwise, do not use this parameter. Enter the webhook URL that specifies where Apollo should send a JSON response that includes the phone number you requested. Apollo suggests testing this flow to ensure you receive the separate response with the phone number. If phone numbers are not revealed delivered to the webhook URL, try applying UTF-8 encoding to the webhook URL. Example: https://webhook.site/cc4cf44e-e047-4774-8dac-473d28474e40; https%3A%2F%2Fwebhook.site%2Fcc4cf44e-e047-4774-8dac-473d28474e40 | |
| hashed_email | No | The hashed email of the person. The email should adhere to either the MD5 or SHA-256 hash format. Example: 8d935115b9ff4489f2d1f9249503cadf (MD5) or 97817c0c49994eb500ad0a5e7e2d8aed51977b26424d508f66e4e8887746a152 (SHA-256) | |
| linkedin_url | No | The URL for the person's LinkedIn profile. Example: http://www.linkedin.com/in/tim-zheng-677ba010 | |
| organization_name | No | The name of the person's employer. This can be the current employer or a previous employer. Example: apollo | |
| reveal_phone_number | No | Set to true if you want to enrich the person's data with all available phone numbers, including mobile phone numbers. This potentially consumes credits as part of your Apollo pricing plan . The default value is false. If this parameter is set to true, you must enter a webhook URL for the webhook_url parameter. Apollo will asynchronously verify phone numbers for you, then send a JSON response that includes only details about the person's phone numbers to the webhook URL you provide. It can take several minutes for the phone numbers to be delivered. | |
| run_waterfall_email | No | Set to true to enable email waterfall enrichment | |
| run_waterfall_phone | No | Set to true to enable phone waterfall enrichment | |
| reveal_personal_emails | No | Set to true if you want to enrich the person's data with personal emails. This potentially consumes credits as part of your Apollo pricing plan . The default value is false. If a person resides in a GDPR -compliant region, Apollo will not reveal their personal email. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond the annotations: personal emails and phone numbers are withheld unless reveal flags are set, those reveals cost extra credits, phone numbers are delivered asynchronously to a webhook, and HTTP 200 can still mean no match. These details meaningfully inform an agent's expectations without contradicting the readOnly, idempotent, and non-destructive 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 long but every sentence earns its place: the identifier list, the match-likelihood heuristic, the returned object shape, the hiding/credit behavior, the response caveat, and the sibling routing. It is front-loaded with the core action and uses the sibling distinction where it matters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 14 parameters, zero required parameters, and a rich input schema, the description covers all non-obvious behavior an agent needs to call it correctly: match probability, hidden data, costs, webhook delivery, match-failure semantics, and alternatives. The output schema exists, so return values do not need duplication in prose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since schema description coverage is 100%, the individual parameter documentation already carries the load. The description still adds value by grouping identifiers as a set, stating that supplying more identifiers increases match likelihood, and by explaining the credit/cost implication of reveal_personal_emails and reveal_phone_number.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Enrich one person' against Apollo's people records, and clearly states the input-to-output contract (identifiers in, full record back). It also explicitly names sibling tools, such as post_apollo_people_bulk_match and post_apollo_mixed_people_api_search, so an agent can distinguish this 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?
The description provides explicit when-to-use guidance: use this for single-person enrichment when you have at least one identifier, use post_apollo_people_bulk_match for up to 10 people, and use post_apollo_mixed_people_api_search when no identifier exists and candidates must be found first. It also warns that a 200 response does not guarantee a match, telling the agent to check the returned person object.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_dataforseo_serp_youtube_organic_liveLive YouTube Organic AdvancedBDestructiveInspect
Live SERP provides real-time data on the top 20 blocks of YouTube search engine results. These results are specific to the selected location (see the List of Locations) and language (see the List of Languages) settings.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations carry the safety profile (destructiveHint=true, readOnlyHint=false, idempotentHint=false, openWorldHint=true), so the description's smaller burden is partly met by adding 'real-time' and 'top 20 blocks' scope. However, a data-retrieval tool described as 'providing data' sits uneasily beside destructiveHint=true, and the description never reconciles this or notes that live calls incur cost. With annotations present, a 3 is warranted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the data scope and followed by the location/language dependency. The 'see the List of Locations/Languages' cross-references earn their place; nothing is redundant, though it could be one clause shorter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is not required, and the 'top 20 blocks' note adds useful scope. Still missing for a single-nested-param live tool are the request body structure and any signal about when this YouTube SERP pull is preferred over its many siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description gestures at the location and language settings covered by the body array, but does not explain the body-array-of-objects structure, that keyword is required, or that location_code/name and language_code/name are paired alternatives. With reported schema description coverage at 0%, it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and output shape: real-time YouTube search engine results, top 20 blocks. The YouTube qualifier implicitly separates it from the many Google/Bing SERP siblings, though it never names an alternative explicitly. A clear verb+resource, but not a deliberate sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no mention of alternatives among the large SERP family (google_organic, bing_organic, google_maps, etc.), and no cost/quota context for a live call. It only notes that results depend on location/language settings, which is a constraint rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_oxylabs_ai_searchQuery a Google AI answer engine (AI Overviews / AI Mode) for GEO/AEO visibility.ARead-onlyIdempotentInspect
Synchronous passthrough to the upstream Oxylabs Realtime endpoint (POST /v1/queries) for the Google answer engines — Google AI Overviews (source: google_search) and Google AI Mode (source: google_ai_mode). Send query with render: "html", parse: true, and a country-level geo_location; the request body is passed through unchanged. The response returns the AI-generated answer text and the cited source URLs. Billed a flat $0.001 per successful result; 400/429/5xx/6xx and upstream 4xx responses are not billed. Google-type sources take ~4–8s, so use a client timeout of at least 30s.
LLM sources (ChatGPT, Gemini, Perplexity) are no longer served here — Oxylabs moved them to an asynchronous Push-Pull flow. Use post_oxylabs_llm (POST /oxylabs/llm) plus get_oxylabs_llm_job for those sources; calling this endpoint with source: chatgpt|gemini|perplexity returns HTTP 422 "Realtime integration is not supported for LLM sources. Please use Push-Pull."
| Name | Required | Description | Default |
|---|---|---|---|
| parse | No | Return structured, parsed results instead of raw output. Recommended for every source. | |
| query | No | The search query. Required for `google_search` and `google_ai_mode`. | |
| render | No | For `google_search` and `google_ai_mode`, set to "html" to render the page before parsing. | |
| source | Yes | The Google AI answer engine to query. `google_search` returns Google AI Overviews; `google_ai_mode` returns Google AI Mode. For ChatGPT/Gemini/Perplexity use the async endpoint `post_oxylabs_llm` instead. | |
| geo_location | No | Country-level geo-location for the query, e.g. "United States". |
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, but the description adds significant behavioral context beyond these: cost per successful result ($0.001), non-billing on certain error codes, typical latency (4–8s), the passthrough nature of the request body, and the returned content (AI answer text and cited URLs). It also discloses the 422 error for unsupported sources, all of which materially affect how an agent should use the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact but information-dense: it opens with the core purpose and endpoint, then covers required fields, pricing, latency, error behavior, and explicit alternatives in a logical flow. Every sentence carries unique value, and the exclusion of LLM sources is front-loaded so the agent doesn't have to read far to avoid a wrong call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 this complexity—passthrough behavior, cost, latency, error handling, and a clear sibling alternative—the description covers all essential aspects an agent needs to call it correctly and safely. It also references the output (AI answer text and cited URLs), and with an output schema present, the agent has complete information to integrate it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds value by prescribing how to combine parameters ('Send query with render: "html", parse: true, and a country-level geo_location') and by explaining the meaning of the source values. While the schema already documents each parameter, the description gives practical usage guidance that clarifies expected values and their interplay.
Input schemas describe structure but not intent. Descriptions should explain 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 ('query'), a precise resource (Google AI answer engines: AI Overviews and AI Mode), and the exact upstream endpoint. It clearly distinguishes this tool from the related LLM tools by explicitly naming post_oxylabs_llm and get_oxylabs_llm_job as the correct alternatives, so an agent can immediately tell what this tool is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use and when-not-to-use guidance: it states that LLM sources are no longer served and instructs to use post_oxylabs_llm instead, including the exact HTTP 422 error that will be returned if misused. It also gives operational guidance on required fields (render, parse, geo_location) and a minimum client timeout of 30s based on expected latency, leaving no ambiguity about when and how to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_waveinflu_email_lookupEmail LookupARead-onlyIdempotentInspect
Looks up the contact email for one Instagram, TikTok, or YouTube creator from a profile URL. Pass profile_url; the response returns the parsed platform, the normalized profile_url, and an email object {status, value}. A not_found status (with value null) is a normal result, not an error, and is still billed as one valid lookup. Handles one creator per call. To assemble a creator list first, use Similar Creators or AI Search — each match already includes an email for most creators; use this endpoint for the ones that come back null.
| Name | Required | Description | Default |
|---|---|---|---|
| profile_url | Yes | Instagram, TikTok, or YouTube creator profile URL. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/idempotent safety profile, but the description adds genuinely non-structured behavior: not_found with null value is a normal result rather than an error, and it is still billed as one valid lookup. It also states the one-creator-per-call constraint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the core action, then parameter/response, then the billing caveat, then the sibling routing. 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 lookup with an output schema and full annotation coverage, the description supplies everything an agent needs: input, normal-vs-error semantics, billing implication, cardinality, and sibling routing.
Complex tools with many parameters or behaviors need more documentation. Simple 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 there is a single required parameter, so the schema already documents profile_url fully. The description only says 'Pass profile_url' and otherwise spends its words on output shape, adding little meaning beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (looks up), resource (contact email), scope (one creator), and the supported platforms (Instagram, TikTok, YouTube). An agent can distinguish this from the batch/search 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?
Explicitly routes the agent: assemble a creator list with Similar Creators or AI Search first, then call this endpoint for the ones that return null emails. Names the alternatives and the condition that selects this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_waveinflu_similar_creatorsSimilar CreatorsARead-onlyIdempotentInspect
Finds creators similar to a seed account on Instagram, TikTok, or YouTube. platform and target_account are required; add limit (1–100, default 40) and optional filters (regions, languages, follower and play-count ranges, gender, ethnicity, creator type, face visibility, workspace dedup). Each match returns a rich profile: biography, email, followerCount, averagePlayCount / medianPlayCount, averageEngagementRate / medianEngagementRate, plus AI-inferred gender, ageRange, ethnicity, faceVisibility, accountPositioning tags, and an aiDescription, with a relevance score. Results are sorted by score descending. Billing is per delivered creator (data.count).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of creators to return. Default 40, range 1–100. Caps the billed count. | |
| filters | No | Optional filters applied before matching. All fields are optional. | |
| platform | Yes | Target platform. | |
| target_account | Yes | Seed account: a creator handle (with or without @) or profile URL to find similar creators for. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, open-world). The description adds genuinely non-obvious behavior: results are sorted by relevance score descending, and billing is per delivered creator tied to data.count, which is important cost context. It does not mention rate limits or error behavior, but the additions go meaningfully beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then parameters, then return shape in three dense sentences with no filler. The enumerated field list is somewhat long and partly duplicates the output schema, which costs a bit of efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, required inputs, filter knobs, sorting, and billing, which is more than enough for a read-only search with a full output schema. The return-field enumeration is redundant given the output schema exists, but 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 baseline is 3. The description goes further by summarizing limit's default and range and by grouping the filter families (regions, languages, follower/play-count ranges, gender, ethnicity, creator type, face visibility, workspace dedup) into a scannable overview that helps the agent plan a call without reading the nested schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (finds creators similar to a seed account) and names all three supported platforms, so the agent immediately knows the scope. It is clearly distinguishable from the Apollo/Similarweb siblings and from the other waveinflu tools (ai_search, email_lookup).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the purpose statement (find lookalike creators given a seed), and required vs optional inputs are spelled out. However, it never says when to prefer this over the sibling post_waveinflu_ai_search, nor any when-not conditions, so the routing guidance is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
2 tool updates
- Changed
post_waveinflu_email_lookup3 fields changed- added
Input schema / properties / profile_urlAdded value: +{ + "description": "Instagram, TikTok, or YouTube creator profile URL.", + "example": "https://www.instagram.com/onkimia/", + "type": "string" +} - removed
Input schema / properties / urlRemoved value: -{ - "description": "TikTok, Instagram, or YouTube creator profile URL.", - "example": "https://www.instagram.com/onkimia/", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "url" -]New value: +[ + "profile_url" +]
- Changed
post_waveinflu_similar_creators21 fields changed- removed
Input schema / properties / contentDirectionRemoved value: -{ - "description": "Natural-language description of the creator type you are looking for. Max 800 characters.", - "example": "consumer tech creators covering AI apps, Android phones, productivity gadgets, and honest product reviews", - "maxLength": 800, - "type": "string" -} - added
Input schema / properties / filters / descriptionAdded value: +"Optional filters applied before matching. All fields are optional." - added
Input schema / properties / filters / properties / creatorTypesAdded value: +{ + "description": "Creator account types, e.g. [\"individual\", \"brand\"].", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / filters / properties / ethnicitiesAdded value: +{ + "description": "Inferred creator ethnicities.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / filters / properties / faceVisibilitiesAdded value: +{ + "description": "Face-visibility classifications, e.g. [\"clear_face\", \"mixed\", \"no_face\"].", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / filters / properties / gendersAdded value: +{ + "description": "Inferred creator genders, e.g. [\"female\", \"male\"].", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / filters / properties / maxPlayCountAdded value: +{ + "description": "Maximum play / view count, measured by `playCountMetric`.", + "type": "number" +} - removed
Input schema / properties / filters / properties / maxVideosAverageViewsRemoved value: -{ - "description": "Maximum average view / play count.", - "type": "number" -} - added
Input schema / properties / filters / properties / minPlayCountAdded value: +{ + "description": "Minimum play / view count, measured by `playCountMetric`.", + "type": "number" +} - removed
Input schema / properties / filters / properties / minVideosAverageViewsRemoved value: -{ - "description": "Minimum average view / play count.", - "type": "number" -} - added
Input schema / properties / filters / properties / playCountMetricAdded value: +{ + "description": "Whether `minPlayCount` / `maxPlayCount` are compared against the median or the average play count.", + "enum": [ + "median", + "average" + ], + "type": "string" +} - changed
Input schema / properties / filters / properties / regions / descriptionPrevious value: -"Creator regions, e.g. [\"US\", \"GB\", \"JP\"]."New value: +"Creator regions (ISO country codes), e.g. [\"US\", \"GB\", \"JP\"]." - added
Input schema / properties / filters / properties / workspaceDeduplicationEnabledAdded value: +{ + "description": "When true, creators already saved in your workspace are excluded from the results.", + "type": "boolean" +} - changed
Input schema / properties / limit / defaultPrevious value: -25New value: +40 - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum number of creators to return. Default 25, range 1–100."New value: +"Maximum number of creators to return. Default 40, range 1–100. Caps the billed count." - changed
Input schema / properties / platform / descriptionPrevious value: -"Target platform. Currently supports youtube and tiktok."New value: +"Target platform." - changed
Input schema / properties / platform / enumPrevious value: -[ - "youtube", - "tiktok" -]New value: +[ + "instagram", + "tiktok", + "youtube" +] - changed
Input schema / properties / platform / examplePrevious value: -"youtube"New value: +"instagram" - removed
Input schema / properties / seedProfileUrlRemoved value: -{ - "description": "YouTube or TikTok creator profile URL as the seed for matching.", - "example": "https://www.youtube.com/@mkbhd", - "type": "string" -} - added
Input schema / properties / target_accountAdded value: +{ + "description": "Seed account: a creator handle (with or without @) or profile URL to find similar creators for.", + "example": "@onkimia", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "platform" -]New value: +[ + "platform", + "target_account" +]
7 tool updates
- 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_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_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_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"
1 tool update
- Changed
post_oxylabs_ai_search5 fields changed- removed
Input schema / properties / promptRemoved value: -{ - "description": "The natural-language prompt. Used by `chatgpt` (max 4000 chars), `gemini` (max 8000 chars), and `perplexity`. Use `query` instead for the Google-type sources.", - "example": "best noise cancelling headphones 2026", - "type": "string" -} - changed
Input schema / properties / query / descriptionPrevious value: -"The search query. Used by `google_search` and `google_ai_mode`. Use `prompt` instead for chatgpt/gemini/perplexity."New value: +"The search query. Required for `google_search` and `google_ai_mode`." - removed
Input schema / properties / searchRemoved value: -{ - "description": "For `chatgpt`, set to true to have ChatGPT browse the web before answering.", - "example": true, - "type": "boolean" -} - changed
Input schema / properties / source / descriptionPrevious value: -"The AI answer engine to query. `google_search` returns Google AI Overviews. Each source expects a specific subset of the parameters below."New value: +"The Google AI answer engine to query. `google_search` returns Google AI Overviews; `google_ai_mode` returns Google AI Mode. For ChatGPT/Gemini/Perplexity use the async endpoint `post_oxylabs_llm` instead." - changed
Input schema / properties / source / enumPrevious value: -[ - "chatgpt", - "gemini", - "perplexity", - "google_search", - "google_ai_mode" -]New value: +[ + "google_search", + "google_ai_mode" +]
48 tool updates
- First observed
batch_use - First observed
get_ahrefs_domain_rating - First observed
get_apollo_organizations_enrich - First observed
get_apollo_organizations_organization_id_job_postings - First observed
get_details - First observed
get_instagram_search_hashtag - First observed
get_instagram_search_profiles - First observed
get_pinterest_board - First observed
get_pinterest_search - First observed
get_reddit_post_comments - First observed
get_reddit_search - First observed
get_reddit_subreddit - First observed
get_semrush_backlinks_overview - First observed
get_semrush_domain_overview - First observed
get_semrush_keyword_overview - First observed
get_semrush_organic_competitors - First observed
get_similarweb_keyword_competitors - First observed
get_similarweb_keywords - First observed
get_similarweb_ranking - First observed
get_similarweb_similar_sites - First observed
get_similarweb_traffic_engagement - First observed
get_similarweb_website_top_geographies - First observed
get_similarweb_website_traffic_snapshot - First observed
get_similarweb_website_traffic_trend - First observed
get_twitter_trends - First observed
get_twitter_tweet_advanced_search - First observed
get_twitter_tweet_replies - First observed
get_twitter_user_followers - 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_youtube_search - First observed
instagram_posts_digest - First observed
instagram_profile_digest - First observed
list_categories - First observed
post_apollo_mixed_companies_search - First observed
post_apollo_mixed_people_api_search - First observed
post_apollo_news_articles_search - First observed
post_apollo_organizations_bulk_enrich - First observed
post_apollo_people_bulk_match - First observed
post_apollo_people_match - First observed
post_dataforseo_serp_youtube_organic_live - First observed
post_oxylabs_ai_search - First observed
post_waveinflu_email_lookup - First observed
post_waveinflu_similar_creators - 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 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
Your agent needs a pipeline, not a list — the companies worth calling, the people who decide inside them, a way to reach those people, and the market evidence that the account is worth the call. **What you can ask for** • "Find Series-B fintech companies in Germany and the heads of marketing there, with emails." • "Enrich these 200 domains with headcount, funding and tech stack." • "Which of these accounts is hiring for roles that imply they need us?" • "How much traffic does this prospect get, and where does it come from?" • "Create the account and contact records and move this opportunity to the next stage." **How to use it** Point any MCP client at https://mcp.aisa.one/sales/mcp and sign in with OAuth — there is no key to create or paste. 79 tools: Apollo people and company search, enrichment, accounts, contacts, opportunities and stages, job postings, sequences and call activity; Similarweb traffic, audience, referrals, ad spend and competitors; plus creator discovery. **Why this rather than the source** Prospecting, enrichment, market sizing and the CRM writes behind one login instead of three. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Build the list here, then ask the same agent what those companies rank for or what is being said about them — 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/apollo/mcp or https://mcp.aisa.one/similarweb/mcp for one of them alone; https://mcp.aisa.one/gtm/mcp adds the social side.
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 the open web — searched by more than one engine, and read as clean markdown rather than raw HTML. **What you can ask for** • "Search this question with two providers and tell me where they disagree." • "Scrape these 40 URLs into markdown, in one batch." • "Crawl this documentation site and give me every page." • "Do deep research on this topic and cite the sources." • "Find the academic papers behind this claim." **How to use it** Point any MCP client at https://mcp.aisa.one/search/mcp and sign in with OAuth — there is no key to create or paste. 30 tools across several independent providers: Tavily and Exa search, answers, contents and agent runs; Firecrawl scrape, batch scrape, crawl, map and search; Perplexity Sonar, Sonar Pro, reasoning and deep research; Oxylabs AI search and LLM jobs; OpenAI and Anthropic web search; and scholarly search. **Why this rather than the source** Several independent indexes behind one account, because one engine's blind spot is not visible from inside it. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Find the page here, then ask the same agent who links to it or how much traffic it gets — 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/seo-serp/mcp for the Google results page itself, https://mcp.aisa.one/seo-serp-other-engines/mcp for Bing, Baidu and Naver.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceGrowth marketing, SEO and GEO as agent tools: 29 tools for AI answer visibility across ChatGPT, Gemini, Perplexity and Google AI Overviews, a ranked backlog of growth moves, drafted deliverables, and ship actions. Hosted remote server at https://afterlaunch.io/api/mcp.2MIT- AlicenseAqualityBmaintenanceEnables AI agents to perform go-to-market workflows such as company and contact enrichment, CRM querying, and controlled, audited writes to a CRM through MCP tools callable from any MCP client.1MIT
- FlicenseNot gradedqualityDmaintenanceHosted MCP server that gives AI agents read and write access to your full marketing & ecommerce stack — Google Analytics, Search Console, Google & Meta Ads, Shopify, WooCommerce, Shopware, Slack and LinkedIn. 100+ tools across 10 connectors. BYOK, OAuth 2.1.-
- FlicenseNot gradedqualityCmaintenanceArgorant MCP Server — give your AI agent direct access to 614M verified B2B contacts. Query by industry, role, geography, and 100+ filters, then export emails verified by a live SMTP probe at request time (catch-alls flagged, invalids free). OAuth-secured. Works with Claude, ChatGPT, Cursor, and any MCP client. Endpoint: https://mcp.argorant.com/mcp1-
Glama MCP Gateway
Add one secure layer between your agents and this server.