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
- 94.2% over 44 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 49 tools
Several tools are functionally indistinguishable from names alone: the entire semrush_* and similarweb_* families ship with descriptions stripped down to pricing boilerplate, so get_similarweb_keywords vs get_similarweb_keyword_competitors, and traffic_snapshot vs traffic_trend vs traffic_engagement give no way to choose. On top of that, batch_use/batch_quote/batch_get_schema/search/use form a meta-layer where `use` is an explicit deprecated duplicate of batch_use, and instagram_*_digest tools shadow undifferentiated 'raw' counterparts named only in prose. The well-described Twitter/Reddit/Pinterest/Apollo tools save it from a 1, but the empty-description clusters cause real misselection risk.
A dominant provider-prefixed verb_noun pattern exists (get_twitter_*, post_apollo_*, batch_*), but conventions are mixed: bare nouns like `account`, `search`, `use`, adjective-less `instagram_posts_digest`, and upstream-mirrored names like get_apollo_organizations_organization_id_job_postings that embed a foreign ID path. Verb choice is also inconsistent for the same intent (get_apollo_organizations_enrich vs post_apollo_organizations_bulk_enrich). Readable, but not a predictable pattern.
49 tools is well above the practical ceiling for a single server surface, and much of the count comes from parallel provider families (10 similarweb, 4 semrush, ~9 Twitter, ~8 Apollo) rather than clearly distinct tasks. The meta-tools (search, batch_get_schema, batch_quote, batch_use) are the intended discovery path, which makes the bulk of static tools arguably redundant bulk rather than earned surface.
The search → batch_get_schema → batch_quote → batch_use pipeline plus `account` and `list_categories` means there is a theoretical escape hatch for any missing capability, so no hard dead ends. However the statically exposed provider coverage is lopsided (Instagram exposes only read/digest, semrush and similarweb are thin and undocumented), and a deprecated `use` tool lingers as cruft, leaving notable gaps for common GTM workflows like outreach writes or list export.
Available Tools
49 toolsaccountShow account and usageARead-onlyInspect
Who am I, what can I use, how much can I spend: the key, the account balance, the Go-to-Market wallet when one is active, and usage for today, 7 days and 30 days. Free; needs the Authorization header. Call it to verify a new connection or to explain a 402. ok is true only when the balance was read; otherwise each entry of errors says what to do in next_step.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the readOnlyHint/openWorldHint/destructiveHint annotations: the call is free, it requires the Authorization header, and it discloses result semantics ('ok is true only when the balance was read; otherwise each entry of errors says what to do in next_step'). That tells an agent how to interpret partial failure, which annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with what the agent gets, followed by cost/auth, then call triggers, then result interpretation. No sentence is redundant and none could be dropped without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with an output schema already present, the description covers the remaining gaps: cost, auth requirement, invocation triggers, and the ok/errors/next_step contract. Nothing an agent needs to call or interpret it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the description has nothing parameter-level to compensate for, and the schema is fully covered. A 4 rather than 5 reflects that it adds no input-syntax detail, though none is possible here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete resource set (identity/key, account balance, Go-to-Market wallet, usage over 1/7/30 days) rather than restating the name. It is clearly distinguishable from every sibling, which are all Reddit, batch, or search tools. An agent knows exactly what it will learn by calling it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit triggering conditions are given: 'Call it to verify a new connection or to explain a 402.' That is a strong when-to-use statement. It stops short of 5 because it names no alternative tool or a when-not condition, though the sibling list offers no obvious competing diagnostic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_get_schemaGet AIsa tool schemas in one batchARead-onlyIdempotentInspect
Retrieve schemas for 1 to 20 exact tool names from search. Build arguments from successful schemas, then call batch_quote. Do not call batch_use yet. Use tool names exactly as search returns them, without a client prefix such as mcp__aisa__. Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.
| Name | Required | Description | Default |
|---|---|---|---|
| tools | Yes | Exact tool names returned by search whose complete contracts are needed. Never invent tool names. | |
| session_id | No | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. | |
| include_documentation | No | Return the complete immutable public OpenAPI operation, referenced declarations, provenance and scoped completeness. Documentation does not change execution support. | |
| include_response_schema | No | Return the complete response_schema. Defaults to false. | |
| include_arguments_schema | No | Return the complete arguments_schema. Defaults to true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tools | Yes | |
| session_id | Yes | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
| error_count | Yes | |
| total_count | Yes | |
| success_count | Yes | |
| next_steps_guidance | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description is not required to restate it. It adds genuine operational context: the batch_use prohibition, exact-name/prefix requirements, and session reuse semantics. It does not cover failure handling when names are invalid, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and size limit, and every sentence carries workflow value. The session_id sentence duplicates the schema's own parameter description, which is minor redundancy rather than bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only batch retrieval tool with an output schema, the description supplies the orchestration context an agent needs (source of names, next steps, session handling) without needing to explain return values. Nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds real meaning beyond the schema by constraining names to those returned by search and warning against a client prefix such as mcp__aisa__, which is not encoded in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Retrieve schemas for 1 to 20 exact tool names') and pins the source of those names to search. This clearly separates it from siblings like search (finds tools), batch_quote, and batch_use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly sequences the workflow: build arguments from successful schemas, then call batch_quote, and 'Do not call batch_use yet.' This is an explicit when-to-use and when-not-to-use instruction naming the alternative siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_quoteQuote published AIsa tools without executing themARead-onlyIdempotentInspect
Obtain AIsaServices cost quotes for 1 to 20 published tools without executing them. Same input as batch_use: exact tool names and schema-valid arguments. Never falls back to execution. The response reports auto_execute_eligible and auto_execute_threshold_micros_usd. auto_execute_eligible waives only the extra cost-confirmation step and does not override a user prohibition on execution, a narrower scope, or a tighter budget limit. Quotes are price observations, not authorization grants. Use tool names exactly as search returns them, without a client prefix such as mcp__aisa__. Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.
| Name | Required | Description | Default |
|---|---|---|---|
| calls | Yes | ||
| search_id | No | Optional search correlation identifier returned by search. | |
| session_id | No | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | |
| batch_id | Yes | |
| session_id | Yes | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
| error_count | Yes | |
| total_count | Yes | |
| success_count | Yes | |
| next_steps_guidance | Yes | Deterministic next-step instructions derived from this result. Not an authorization grant. |
| auto_execute_eligible | No | True when the worst-known total of successful USD quotes is at or below auto_execute_threshold_micros_usd. A non-USD successful quote makes the batch ineligible. Present on quote responses. |
| auto_execute_threshold_micros_usd | No | Configured auto-execute threshold in micro-USD. 0 disables automatic execution. Present on quote responses. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the readOnly/idempotent annotations by explaining that quotes are price observations rather than authorization grants, and precisely delimiting what auto_execute_eligible does and does not waive (user prohibition, narrower scope, tighter budget). It also guarantees no execution fallback, which is the key behavioral risk for this tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and most sentences carry distinct rules (no fallback, eligibility limits, naming, session reuse). It is on the long side and the argument-shape constraint is stated twice in spirit, but little is truly wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation isn't required, yet the description still flags the two response fields that matter for a downstream decision. Combined with session and naming guidance, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 67% schema coverage the schema already documents each parameter, so the description earns credit only for added meaning: exact-name rules for 'tool', session_id reuse semantics, and the 1-to-20 argument-shape parallel with batch_use. It doesn't clarify search_id beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Obtain AIsaServices cost quotes for 1 to 20 published tools') plus the crucial scope qualifier 'without executing them.' It is immediately distinguishable from the sibling batch_use, which executes rather than quotes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the parallel sibling ('Same input as batch_use') and draws the boundary ('Never falls back to execution'). It also gives operational conditions: use names exactly as search returns them, strip any mcp__aisa__ prefix, and reuse session_id from Search for the task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_useExecute published AIsa toolsADestructiveInspect
Billable API calls can incur substantial charges. Never call before a successful batch_quote for the same tools and arguments. Execute only when that quote response reports auto_execute_eligible=true for these calls, or when explicit user authorization covers that cost and risk. auto_execute_eligible waives only the extra cost-confirmation step; it does not override a user prohibition on execution, a narrower scope, or a tighter budget limit. Re-quote if tools, arguments, or scope change. Execute 1 to 20 independent published-tool calls; never silently retry. A missing or failed quote is not free. Use tool names exactly as search returns them, without a client prefix such as mcp__aisa__. Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.
| Name | Required | Description | Default |
|---|---|---|---|
| calls | Yes | ||
| search_id | No | Optional search correlation identifier returned by search. | |
| session_id | No | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | |
| batch_id | Yes | |
| session_id | Yes | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
| error_count | Yes | |
| total_count | Yes | |
| success_count | Yes | |
| next_steps_guidance | Yes | Deterministic next-step instructions derived from this result. Not an authorization grant. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover mutability, destructiveness, and open-world behavior. The description adds critical business logic: billable calls, quote dependency, the meaning of auto_execute_eligible (waives only cost confirmation, not user prohibitions), and no silent retry. It doesn't detail rate limits or return format, but with an output schema present, that's acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loads the cost warning, but it packs many separate instructions into one block, making it less scannable. Some sentences like 'A missing or failed quote is not free' add value, but the overall flow could be better structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the destructive, open-world annotations and the presence of an output schema, the description covers the essential preconditions and behavioral constraints. It could mention error handling or partial failure behavior, but the core guidance is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the description adds important semantics: tool names must be exact without client prefix, session_id reuse guidance, and 1-20 call limit. It doesn't explain search_id, but the schema description for search_id is already clear enough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'Execute 1 to 20 independent published-tool calls', and the title matches. It distinguishes itself from batch_quote by requiring a quote first, but doesn't explicitly contrast with the singular 'use' sibling, though that's implied by 'batch'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use and when-not-to-use conditions: only after a successful batch_quote with auto_execute_eligible=true or explicit user authorization. It also states re-quote conditions and prohibits silent retries, leaving little ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ahrefs_domain_ratingAhrefs Domain RatingARead-onlyIdempotentInspect
Return the Ahrefs Domain Rating (0-100 authority score) and Ahrefs Rank for a target domain on a given date. 4xx/5xx are not charged.
Published reference price: $0.08 USD per successful request. Account-specific pricing and final settlement may differ.
| 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 declare readOnly/idempotent/non-destructive/open-world, so the safety profile is covered. The description adds genuinely new behavioral context not in the annotations: error responses (4xx/5xx) are not charged, which matters for an agent deciding whether to retry or validate inputs before spending money.
Agents need to know what a tool does to the 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 functional sentence is front-loaded, concise, and information-dense. The appended pricing block is boilerplate rather than definitional content, which slightly dilutes the structure but does not bury the core 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?
With an output schema present and rich annotations, the description only needs to cover purpose and cost behavior, both of which it does. Missing only a word on which related domain tool to choose when the agent wants broader metrics.
Complex tools with many parameters or behaviors need more documentation. Simple 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 date format and target example already documented in the schema, so baseline 3 applies. The description adds only the DR score range, which describes the return value rather than either parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Return) plus two named outputs (Domain Rating, Ahrefs Rank) and defines DR's 0-100 range, so the agent knows exactly what comes back. It does not distinguish itself from sibling tools like get_ahrefs_site_metrics or get_semrush_domain_overview, which is the only gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to prefer this over the adjacent Ahrefs/Semrush domain tools, and no prerequisites or alternative named. The only contextual statement is a billing note, which is not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
Usage-based billing; Default request estimate: $0.01975 USD (not a fixed price). Declared unit rate: $0 USD per provider_credit. Account-specific pricing and final settlement may differ.
| 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 read-only, idempotent, open-world, non-destructive behavior, so the safety profile is covered. The description adds real value beyond that: the chaining contract that get_apollo_organizations_id consumes the id this call returns, plus billing context. The return-field enumeration is largely redundant with the output schema, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then alternatives, then chaining guidance. Slightly padded by the long list of return fields that the output schema already defines, plus an injected pricing block, but overall tight and well-ordered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers what it does, when to use it, its two alternatives, and the id hand-off to the detail sibling. With an output schema present, return values need not be documented, and 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 coverage is 100%, so the baseline is 3. The description reinforces the single-parameter contract and adds a caveat beyond the schema ('must be the bare domain (apple.com), not a full URL'), which sharpens the format requirement rather than merely restating it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Enrich one company by domain'), and explicitly names the siblings it is not (post_apollo_organizations_bulk_enrich, get_apollo_organizations_id). An agent can select it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit routing: 'Use it as the entry point when all you have is a domain,' bulk for 'several domains at once,' and get_apollo_organizations_id for 'the full record including funding and technology detail.' Conditions for choosing alternatives are all spelled out.
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.
Usage-based billing; Default request estimate: $0.01975 USD (not a fixed price). Declared unit rate: $0 USD per provider_credit. Account-specific pricing and final settlement may differ.
| 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 cover the safety profile (readOnly, idempotent, non-destructive), so the description's added value is the data-source disclosure: it reads Apollo's job board, not the company's careers page, so absence of postings is not proof the company isn't hiring. That is a genuinely useful caveat beyond the annotations, though return format and pagination behavior are left to the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, followed by payload contents, the sourcing prerequisite, and the honesty caveat in a compact block. The appended pricing blockquote is boilerplate rather than tool guidance, but it is clearly demarcated and does not obscure the useful text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and it covers purpose, id source, and the interpretive limitation well. Remaining gaps are minor, e.g. no note on pagination limits or how many postings to expect.
Complex tools with many parameters or behaviors need more documentation. Simple 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 page, per_page and organization_id are already documented in the schema; baseline is 3. The description adds a hint about where to source organization_id, though it points at get_apollo_organizations_enrich while the schema's own organization_id description says to use the Organization Search endpoint, a minor inconsistency rather than added clarity.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Live job postings for one company, by Apollo organization id') and enumerates what each posting carries (title, location, posted date, source URL). An agent can distinguish this from sibling organization tools like get_apollo_organizations_id and get_apollo_organizations_enrich without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite ('Get the organization id from get_apollo_organizations_enrich first') and frames the use case as a hiring signal. It does not enumerate when-not-to-use or name a competing sibling, but the workflow 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_instagram_search_hashtagsearch-hashtagARead-onlyIdempotentInspect
Finds public posts carrying a hashtag through Google, returning hashtag, media_type, cursor and posts in the same normalised shape as get_instagram_reels_search: shortcode, url, caption, like_count, comment_count, video_play_count, video_view_count, owner, location and taken_at. The leading # is optional. Set media_type=reels to narrow to reels, or all for posts and reels together. Note that cursor here is the next Google results page number rather than an Instagram cursor. Measured at about 78 KB for ten posts. To search caption keywords rather than a hashtag, use get_instagram_reels_search.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | The cursor returned by the previous response. In this version, it is the next Google results page number. | |
| hashtag | No | The hashtag to search for. Include or omit the #. | |
| media_type | No | Use all to search public posts and reels, or reels to only return reels. Defaults to all. | |
| date_posted | No | Only return Google-indexed posts found in this relative window. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world and non-destructive, yet the description adds non-obvious behavior: results are Google-indexed rather than direct Instagram data, the cursor is a Google results page number rather than an Instagram cursor, and payload size is about 78 KB for ten posts. The cursor quirk in particular is exactly the kind of detail that prevents misuse.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose, return shape, enum behavior, the cursor caveat and the alternative are all front-loaded with no filler. It is densely packed into a single block rather than cleanly segmented, and the injected pricing block adds bulk, but every sentence of the authored text earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, full annotation coverage and 100% schema description coverage, the description already goes further by naming the normalized return fields and the size/cursor behavior. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents hashtag, cursor, media_type and date_posted; the description mostly restates them (optional '#', all vs reels). It adds little parameter meaning beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Finds public posts carrying a hashtag through Google') plus the exact scope of coverage. It names the sibling it is not (get_instagram_reels_search) and explains the shared normalized shape, so an agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear routing guidance: media_type=reels vs all, and an explicit alternative ('To search caption keywords rather than a hashtag, use get_instagram_reels_search'). It stops short of stating exclusions or prerequisites (e.g., hashtag is not required), so it is strong context rather than a full when/when-not matrix.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instagram_search_profilessearch-profilesARead-onlyIdempotentInspect
Searches Google for public Instagram profiles matching a keyword or bio phrase and returns profiles with username, full_name, biography, follower_count, following_count, media_count, is_verified, is_private, category_name, external_url, bio_links, url, the numeric id, and matched_from, which records whether the hit came from a profile page or from a post. google_title and google_description carry the underlying search result. Measured at about 18 KB and 13 seconds. The numeric id feeds get_instagram_basic_profile directly. To search posts rather than people, use get_instagram_search_hashtag or get_instagram_reels_search.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Bio or caption keyword/phrase to search for. | |
| cursor | No | The cursor returned by the previous response. In this version, it is the next Google results page number. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), yet the description still adds meaningful traits: the source is Google (open-world scraping, not the Instagram API), the measured payload/latency (~18 KB, ~13 s), and the matched_from field that explains why a profile appeared. Rate limits and failure behavior are not covered, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and routing are front-loaded and the performance metrics are compact, but the long enumeration of return fields is largely redundant with the existing output schema and consumes most of the description's length. It could be trimmed to keep only the fields that inform selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the description still supplies the source of the data, cost/latency expectation, sibling routing, and the chaining target for the returned id. Nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, and the description adds no syntax or format detail beyond restating 'keyword or bio phrase'. The cursor/pagination parameter is not addressed at all. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Searches Google for public Instagram profiles matching a keyword or bio phrase') and enumerates the returned identity fields, so the agent knows exactly what it gets back. It also distinguishes itself from siblings by naming the post-search alternatives, so an agent can pick correctly without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit exclusion ('To search posts rather than people, use get_instagram_search_hashtag or get_instagram_reels_search') and a downstream chaining rule ('The numeric id feeds get_instagram_basic_profile directly'). Both when-to-use and when-not-to-use are stated rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pinterest_boardboardARead-onlyIdempotentInspect
Returns one page of pins from a board URL, with a cursor to page. Board pins carry a third field subset, different from both search results and pin detail: node_id, link, domain, rich_summary, seo_url, board and auto_alt_text among them. Measured at 104 KB for 16 pins; trim=true cuts it to 28 KB, keeping per pin id, title, description, link, domain, board, pinner, alt_text, rich_summary and reaction_counts. Board URLs come from board.url on search results — relative, like /agkelsey/the-apartment/, so prefix https://www.pinterest.com — or from get_pinterest_user_boards. For a user's board list rather than one board's pins, use get_pinterest_user_boards.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The URL of the board to get | |
| trim | No | Set to true for a trimmed down version of the response | |
| cursor | No | The cursor to get the next page of results |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/non-destructive, so the safety profile is covered elsewhere. The description adds substantial behavioral context beyond that: pagination via cursor, concrete payload sizes (104 KB for 16 pins; 28 KB trimmed) and the exact field subsets returned. It stops short of stating rate limits or error behavior, so a 4 rather than 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and paging behavior, and every sentence carries information. The two inline field enumerations ('node_id, link, domain...' and the trim field list) are dense and slightly bloat the text, and the injected pricing boilerplate sits outside the definition's control.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema already exists, so return values need no further explanation, and annotations cover the read-only/idempotent profile. Between the URL-source guidance, paging semantics and field-set/size notes, nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: url must be absolute, with relative board paths needing an https://www.pinterest.com prefix, and trim=true is quantified as cutting 104 KB to 28 KB while enumerating the retained fields. This goes well beyond the schema's one-line parameter docs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'returns one page of pins from a board URL' — and immediately differentiates from siblings by noting it also emits a paging cursor and that board pins use a distinct field subset from search results and pin detail. An agent can distinguish it from get_pinterest_search and get_pinterest_user_boards without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: 'For a user's board list rather than one board's pins, use get_pinterest_user_boards,' and explains where valid URLs originate (board.url on search results, or get_pinterest_user_boards). Both when-to-use and the alternative are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pinterest_searchsearchARead-onlyIdempotentInspect
Searches Pinterest for pins matching a keyword and returns pins plus a cursor to page. Each pin carries id, url, title, description, grid_title, created_at, images in five sizes (170x, 236x, 474x, 736x, orig), link, domain, board (name, url, pin_count) and pinner (username). Measured at about 110 KB for 17 pins; trim=true cuts that to 28 KB and keeps six fields per pin — id, url, description, created_at, images and pinner — dropping title, link, board and domain, so only skip trim when you need those. The board.url on each result feeds get_pinterest_board; for one pin's engagement counts use get_pinterest_pin.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| trim | No | Set to true for a trimmed down version of the response | |
| limit | No | ||
| query | No | Search query | |
| cursor | No | Cursor |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint, destructiveHint=false), so the description is not obligated to restate that. It adds genuinely useful behavioral facts instead: measured payload size (~110 KB for 17 pins), the trimmed 28 KB size, and exactly which six fields survive trim. It stops short of documenting rate limits or cursor expiry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then return shape, then the size/trim tradeoff, then routing — a sensible priority order with no padding in the sentences themselves. The embedded pricing comment block is boilerplate noise that dilutes an otherwise tight entry.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the exhaustive per-pin field listing (images in five sizes, board, pinner sub-fields) is partly redundant with what the schema already exposes. The non-redundant parts — payload size, trim economics, and cross-tool field handoffs — are exactly what the agent needs before calling, making the description sufficient overall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75% and the schema barely describes trim ("trimmed down version") and not at all limit. The description compensates by quantifying the trim tradeoff and enumerating the dropped fields (title, link, board, domain), which is meaning the schema does not carry. limit and cursor remain unelaborated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (searches Pinterest for pins by keyword) plus the return shape (pins plus a pagination cursor). It also explicitly distinguishes itself from the two closest siblings, get_pinterest_board and get_pinterest_pin, and from other platform search tools in the list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete when-to-use rule for trim ("only skip trim when you need those") and routes follow-up work to get_pinterest_board and get_pinterest_pin with the exact field that feeds each. It does not, however, state when a caller should prefer this over other search tools (e.g., get_reddit_search), so the routing is sibling-aware but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reddit_post_commentscommentsARead-onlyIdempotentInspect
Returns one post and its discussion from a post URL: post with title, author, selftext, score, ups, upvote_ratio, num_comments, created_utc, permalink, archived and locked, then comments, each with author, body, score, ups, downs, created_utc, parent_id, permalink and a nested replies object holding items and more. Paging is a third shape again: the top level carries more.has_more and more.cursor rather than the after of get_reddit_search or the cursor of get_reddit_subreddit_search. Measured at about 21 KB for 19 top-level comments. To find posts worth opening, start from get_reddit_search or get_reddit_subreddit.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Reddit post URL | |
| trim | No | Set to true for a trimmed down version of the response | |
| cursor | No | Cursor to get more comments, or replies. | |
| trimmed | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), and the description adds genuinely new behavioral detail: the paging shape differs from both sibling search tools (more.has_more/more.cursor vs after vs cursor), and the payload cost is quantified ('about 21 KB for 19 top-level comments'). That size estimate and paging divergence are exactly the traits an agent cannot get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core content is a single run-on sentence that enumerates every post and comment field even though an output schema already exists, which is redundant rather than informative. Routing guidance that an agent most needs is buried at the end, and the appended pricing boilerplate further dilutes it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because an output schema exists, the field enumeration is unnecessary and the description would be complete without it; what remains (routing from search tools, paging semantics, response size) is the information an agent genuinely needs. It is slightly over-complete rather than under-complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, so the baseline is already near 3. The description clarifies what cursor does ('more comments, or replies') and implies the url input, but it never explains trim or accounts for the undocumented 'trimmed' string parameter, so it adds only marginal meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource: 'Returns one post and its discussion from a post URL.' It also explicitly differentiates itself from the search siblings by positioning them as the discovery step, so an agent can distinguish this tool from get_reddit_search and get_reddit_subreddit without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear entry condition: 'To find posts worth opening, start from get_reddit_search or get_reddit_subreddit,' and describes the cursor path for continued paging. It stops short of stating any when-not-to-use case, so it is clear context rather than a full routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reddit_searchsearchARead-onlyIdempotentInspect
Searches every public subreddit for posts matching a query and returns posts plus an after token to page. Each post carries title, author, selftext, selftext_html, subreddit, score, ups, downs, upvote_ratio, num_comments, created_utc, created_at_iso, url, permalink, subreddit_subscribers, is_video, over_18 and spoiler. sort accepts relevance, new, top and comment_count, and timeframe narrows the window. Measured at 8 to 16 seconds and 8 to 26 KB, the slowest endpoint here. To stay inside one community use get_reddit_subreddit_search, which is faster and pages with cursor rather than after; to read one post's discussion use get_reddit_post_comments.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort by Provider reference (supplier schema): `{"enum":["relevance","new","top","comment_count"],"type":"string"}`. | |
| time | No | ||
| trim | No | Set to true for a trimmed down version of the response | |
| after | No | Used to paginate to next page | |
| count | No | ||
| limit | No | ||
| query | No | Search query | |
| filter | No | Search posts or comments | |
| trimmed | No | ||
| timeframe | No | Timeframe Provider reference (supplier schema): `{"enum":["all","day","week","month","year"],"type":"string"}`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/destructive=false, so safety is covered. The description adds substantial non-annotation behavior: latency (8-16s, slowest endpoint), payload size (8-26 KB), pagination via an after token, and the full returned field list. It stops short of documenting rate limits or failure behavior, but adds real context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then alternatives, then performance. The 19-field enumeration is verbose but informative for a search result. The pricing block is boilerplate appended by the platform rather than the author's prose, so it doesn't count against structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the field list is somewhat redundant, yet the description still supplies pagination, performance expectations, sorting semantics and routing to siblings. It omits auth/prerequisite notes and does not flag that 'query' is practically required despite required=[], a minor gap for a 10-param tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%, so the description must compensate for some gaps. It meaningfully enriches 'sort' (relevance, new, top, comment_count) and 'timeframe' (narrows the window) and explains 'after' for paging, but leaves limit, count, trim/trimmed, filter and query semantics to the schema. Adequate but partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Searches every public subreddit for posts matching a query') with scope ('every public subreddit') and names what it returns. It explicitly distinguishes itself from get_reddit_subreddit_search and get_reddit_post_comments, so an agent can tell them apart without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names two alternatives with the exact conditions that select them: use get_reddit_subreddit_search 'to stay inside one community' and get_reddit_post_comments 'to read one post's discussion'. This is explicit when-to-use-each guidance rather than implied context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reddit_subredditsubredditARead-onlyIdempotentInspect
Returns the post stream of one subreddit with an after token to page. Posts carry the same fields as get_reddit_search, including title, author, selftext, score, ups, upvote_ratio, num_comments, created_utc, created_at_iso, url, permalink and subreddit_subscribers. sort accepts best, hot, new, top and rising. Important: timeframe is only accepted together with sort=top, and any other combination returns 400 rather than ignoring the parameter. Subreddit names are case-sensitive. Measured at about 18 KB for 24 posts. To search inside the same subreddit use get_reddit_subreddit_search, and for its metadata use get_reddit_subreddit_details.
Usage-based billing; Default request estimate: $0.00188 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order Provider reference (supplier schema): `{"enum":["best","hot","new","top","rising"],"type":"string"}`. | |
| trim | No | Set to true for a trimmed down version of the response | |
| after | No | After to get more posts. Get 'after' from previous response. | |
| subreddit | No | Subreddit name | |
| timeframe | No | Timeframe to get posts from. Runtime requires `sort=top` when `timeframe` is provided. Provider reference (supplier schema): `{"enum":["all","day","week","month","year"],"type":"string"}`. | |
| cache_max_age | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the read-only, idempotent, non-destructive profile, so the description is free to add runtime behavior instead. It does: the timeframe/sort=top 400 error (rather than silent ignoring), case-sensitive subreddit names, pagination via the after token, and a concrete ~18 KB / 24 posts size figure. Auth and rate-limit behavior are still unstated, so it falls short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and scope, then constraints, then routing. Every sentence carries information, including the size estimate and error edge case. The appended pricing boilerplate adds length without helping tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-param, unpaginated-boundary tool with an output schema, this covers purpose, constraints, paging, alternatives and approximate payload size. Minor gaps remain: the trim payload reduction and cache_max_age are not clarified in narrative form. Nothing an agent needs to call it successfully is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 83%, so the schema already documents sort, timeframe, after and trim; the description largely restates the sort enum and the timeframe constraint. It adds the genuinely useful case-sensitivity note for subreddit, but leaves cache_max_age and the semantics of trim (what gets removed) unexplained. Baseline 3 is appropriate when the schema carries most of the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource and scope: the post stream of one subreddit. It explicitly distinguishes itself from the three nearest siblings (get_reddit_search, get_reddit_subreddit_search, get_reddit_subreddit_details), so an agent can route correctly without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternatives and the exact conditions that select them: use get_reddit_subreddit_search to search inside the same subreddit, get_reddit_subreddit_details for its metadata. It also states the sort=top pairing rule for timeframe, giving explicit when-to-use behavior rather than leaving it to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_semrush_backlinks_overviewSemrush Backlinks OverviewDRead-onlyIdempotentInspect
Published reference price: $0.004 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| target | 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 declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The only real contribution is the pricing disclosure ($0.004 per successful request), which is genuinely useful cost context, but the description says nothing about what the call does, what it returns, or any limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short and cleanly formatted, but it is entirely off-topic relative to the tool's function; every sentence is about pricing rather than the operation. Brevity here reflects missing content, not efficient writing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required, yet the description omits purpose, usage context, and parameter meaning for a live external-API tool. It is not remotely complete for an agent to select and invoke 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 0% and the single required parameter 'target' has no description anywhere. The description does not clarify whether 'target' is a domain, URL, or path — the one piece of information that would most help an agent invoke this correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description contains no functional statement at all — it is purely a pricing notice. Nothing tells the agent that this tool returns a Semrush backlinks overview for a target, nor how it differs from siblings like get_semrush_backlinks or get_semrush_referring_domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisite information, and no reference to any alternative among the many sibling backlink tools. The agent has to infer applicability from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_semrush_domain_overviewSemrush Domain OverviewDRead-onlyIdempotentInspect
Published reference price: $0.001 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | ||
| database | No | 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 readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description does add one genuine behavioral fact not in the annotations – a per-request price of $0.001 USD – which is useful cost context, but it discloses nothing about auth requirements, rate limits, or response 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?
It is short, but the content is boilerplate HTML-comment pricing markup that does not help an agent select or invoke the tool. Length is minimal while relevance is near zero, so it is under-specified rather than concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 domain-overview tool with a required 'domain' parameter and an undocumented 'database' parameter, the description leaves the agent without the essential information needed to call it correctly. The presence of an output schema excuses explaining return values, but nothing else compensates for the missing purpose and parameter detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two parameters ('domain' and 'database'), and the description supplies no meaning, format, or defaults for either. It does not compensate for the schema gap at all, and notably omits that 'database' defaults to 'us'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description never states what the tool does; it contains only a pricing notice wrapped in HTML comments. An agent must infer the purpose entirely from the tool name 'get_semrush_domain_overview'. It provides no verb+resource statement and no differentiation from siblings like get_semrush_domain_organic_keywords or get_semrush_domain_vs_domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no mention of alternatives among the many semrush/ahrefs/dataforseo siblings. The text is solely about cost, not about selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_semrush_keyword_overviewSemrush Keyword OverviewDRead-onlyIdempotentInspect
Published reference price: $0.001 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| phrase | Yes | ||
| database | No | 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 readOnlyHint, idempotentHint, non-destructive and open-world behavior, so the safety profile is covered. The only added behavior is the per-request price ($0.001 USD per successful request), which is genuinely useful cost context beyond the annotations, but it is the sole non-template content.
Agents need to know what a tool does to the 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 blurb is short but consists entirely of an HTML-comment pricing artifact that does not earn its place for tool selection. It is not front-loaded with any purpose 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?
Although an output schema and annotations exist, the description supplies zero information on what the tool returns or when to call it. For a keyword-lookup tool surrounded by dozens of similar siblings, this is completely inadequate for correct selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both parameters, so the description must compensate and instead says nothing about the required 'phrase' or the 'database' default. There is no hint about accepted phrase format or database values such as 'us'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description contains only a pricing banner and never states what the tool does. Nothing indicates it returns Semrush keyword overview metrics for a phrase, nor distinguishes it from siblings like get_semrush_keyword_difficulty or post_dataforseo_labs_google_keyword_overview_live.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives, and no conditions for selecting this tool over the many keyword-data siblings. The agent is left to infer everything from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_semrush_organic_competitorsOrganic CompetitorsDRead-onlyIdempotentInspect
Usage-based billing; Default request estimate: $0.08 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | ||
| database | 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 declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The one genuine addition is cost disclosure (predicted ~$0.08 per request, usage-based, not fixed), which is real behavioral context an agent cannot get from annotations. However, the description says nothing about what the call returns, rate limits, or data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short, so length is not the problem; the problem is that every line is HTML-commented billing boilerplate rather than front-loaded tool purpose. Legitimate conciseness here would be a single sentence stating what the tool returns.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even granting that an output schema exists and return values need not be explained, the definition omits purpose, usage context, and the meaning of both required parameters. An agent cannot call this correctly from the description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and both parameters (domain, database) are required yet completely undocumented in the schema. The description does not mention either parameter or its expected format, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description never states what the tool does — it contains only a pricing/billing banner with no verb, resource, or scope. The title 'Organic Competitors' is the only hint, and the tool must be distinguished from many siblings like get_semrush_domain_overview and post_dataforseo_labs_google_serp_competitors_live with no help from the text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative-tool guidance at all. Given a large set of competing Semrush/DataForSEO competitor tools, an agent gets zero routing signal from this description.
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 CompetitorsDRead-onlyIdempotentInspect
Usage-based billing; Default request estimate: $0.075 USD (not a fixed price). Declared unit rate: $0.075 USD per similarweb_credit. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | Yes | ||
| domain | Yes | ||
| offset | No | ||
| country | No | Worldwide data only; values are case-insensitive. | ww |
| end_date | Yes | ||
| start_date | Yes | ||
| web_source | No | ||
| granularity | No | ||
| traffic_source | No | ||
| main_domain_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, covering the safety profile. The description's only added behavioral content is cost disclosure ($0.075 per similarweb_credit, estimate not fixed), which is genuinely useful but says nothing about what the operation returns or how it behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short, but it is entirely boilerplate pricing wrapped in HTML comment markers rather than a front-loaded purpose statement. Being brief here reflects omission of the essential content, not disciplined conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter tool with 4 required params and 10% schema coverage, the description is completely inadequate. Although an output schema exists (relieving the need to explain return values), nothing else an agent needs to call this correctly is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 10% across 10 parameters, so the schema leaves most parameters (domain, start_date, end_date, limit, offset, web_source, granularity, traffic_source, main_domain_only) undocumented. The description compensates for none of this, adding zero parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description never states what the tool does. It contains only a pricing boilerplate block ('Usage-based billing; Default request estimate: $0.075 USD...') with no verb, resource, or scope describing keyword competitor retrieval. An agent must rely entirely on the tool name to infer purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus siblings such as get_similarweb_keywords or get_similarweb_similar_sites. No context, prerequisites, or exclusions are offered anywhere in the text.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_keywordsWebsite KeywordsDRead-onlyIdempotentInspect
Usage-based billing; Default request estimate: $0.075 USD (not a fixed price). Declared unit rate: $0.075 USD per similarweb_credit. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | Yes | ||
| domain | Yes | ||
| format | No | ||
| country | No | Worldwide data only; values are case-insensitive. | ww |
| end_date | Yes | ||
| start_date | Yes | ||
| web_source | No | ||
| granularity | Yes | ||
| main_domain_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the operational profile (readOnly, idempotent, openWorld, non-destructive). The description's only additive behavioral content is the billing model — usage-based, ~$0.075 per similarweb_credit — which is genuinely useful cost context. However, it discloses nothing about data freshness, result size, or what the returned keyword records contain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but the brevity is under-specification rather than efficiency: the entire body is boilerplate pricing with zero functional content. The one useful sentence (per-credit rate) is buried in a compliance block rather than front-loaded as tool guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but for a 9-parameter, 5-required tool with 11% schema coverage and a crowded sibling namespace, the description supplies no purpose, no usage routing, and no parameter semantics — it is functionally empty.
Complex tools with many parameters or behaviors need more documentation. Simple 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 11% (only 'country' is documented), and there are 9 parameters including five required ones (domain, start_date, end_date, granularity, limit). The description explains none of them — no date format, no domain input convention, no meaning for granularity or web_source — leaving the agent to guess.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description contains no statement of what the tool does — it is entirely a pricing/billing notice. An agent must infer from the name and title alone that this retrieves SimilarWeb keyword data, and it cannot distinguish this from the many get_semrush_* and get_dataforseo_keywords_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative guidance is given. The pricing block states cost but not the conditions under which this tool should be chosen over the adjacent get_similarweb_landing_pages or the Semrush/DataForSEO keyword tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_rankingWebsite RankingDRead-onlyIdempotentInspect
Usage-based billing; Default request estimate: $0.15 USD (not a fixed price). Declared unit rate: $0.075 USD per similarweb_credit. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | ||
| country | No | Worldwide data only; values are case-insensitive. | ww |
| end_date | Yes | ||
| start_date | Yes | ||
| web_source | No | ||
| granularity | No | monthly | |
| main_domain_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description does add one genuinely useful behavioral fact not present in structured data: this call is billed (default estimate $0.15 USD, unit rate $0.075 per credit, account-specific pricing may differ). That cost disclosure is analogous to a rate-limit note and is worth credit, but nothing else about behavior is described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but the entire content is auto-generated billing boilerplate wrapped in HTML comment tags, which is off-topic for tool selection and invocation. Length is fine; the content does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter tool with three required inputs, 14% schema coverage and a large sibling set, this description is functionally empty. An output schema exists so return values need not be described, but the agent has no basis for choosing or parameterising the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 14% — just the 'country' parameter — while there are 7 parameters including required domain, start_date and end_date. The description supplies no parameter meaning at all, so the many undocumented fields (data format for dates, web_source, granularity, main_domain_only) get no compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description never states what the tool does. It contains only a usage-based pricing block (default estimate $0.15, $0.075 per similarweb_credit) with HTML comment markers. Nothing tells the agent that this returns website ranking data, for which domain, or over what period, so it cannot be distinguished from siblings like get_similarweb_top_sites_ranking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 zero guidance on when to call this versus the 30+ sibling tools (e.g. get_similarweb_top_sites_ranking, get_similarweb_website_traffic_trend, the website_analysis variants). No prerequisites, no exclusions, no alternative named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_similar_sitesSimilarSitesDRead-onlyIdempotentInspect
Usage-based billing; Default request estimate: $0.375 USD (not a fixed price). Declared unit rate: $0.075 USD per similarweb_credit. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | Yes | ||
| domain | Yes | ||
| offset | No | ||
| country | No | Worldwide data only; values are case-insensitive. | ww |
| end_date | Yes | ||
| start_date | Yes | ||
| web_source | No | ||
| granularity | No | ||
| traffic_source | No | ||
| main_domain_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered elsewhere. The one piece of added context is billing information (mentioned pricing, per-credit rate, account-specific settlement), which is genuinely useful for a paid external API and is not in the annotations. However, it says nothing about rate limits, latency, data freshness, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short and formally well-delimited by HTML comment markers, so it is not bloated. But it is entirely boilerplate that does not serve the tool-selection task; 'conciseness' by omission of all substance is under-specification, not 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?
Given 10 parameters, 4 of them required, near-zero schema coverage, and a crowded sibling namespace, the description is wholly inadequate. It offers no domain identification, no date-range semantics, no limit/offset behavior, and no indication of what the output contains — an agent cannot call this correctly on the basis of the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 10% (only 'country' is documented, and that is inside the schema, not the description). With 10 parameters — including non-obvious ones like main_domain_only, traffic_source, web_source, and required date-range bounds — the description supplies zero additional meaning, format hints (e.g. date format for start_date/end_date), or defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description contains no statement of purpose at all — it consists entirely of a pricing block ('Usage-based billing; Default request estimate: $0.375 USD...'). Nothing tells the agent what the tool returns, only that it returns similar sites if you infer that from the tool name. For a 10-parameter analytical tool this is a complete failure to identify verb+resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the many siblings (get_similarweb_ranking, get_similarweb_audience_overlap, get_similarweb_subdomains, etc.). The only 'condition' offered is cost per credit, which does not help the agent decide whether this is the right tool for a task.
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 & EngagementDRead-onlyIdempotentInspect
Usage-based billing; Default request estimate: $0.075 USD (not a fixed price). Declared unit rate: $0.075 USD per similarweb_credit. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| mtd | No | ||
| domain | Yes | ||
| country | No | Worldwide data only; values are case-insensitive. | ww |
| metrics | Yes | ||
| end_date | Yes | ||
| start_date | Yes | ||
| web_source | No | ||
| granularity | No | monthly | |
| main_domain_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so safety semantics are covered. The description does add genuinely useful non-annotation context: usage-based billing with a $0.075 USD per-request estimate and a similarweb_credit unit rate. However it says nothing about rate limits, auth, or what data is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short, but every word is billing boilerplate that does not help an agent select or invoke the tool. Conciseness without relevance is under-specification, not 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?
For a 9-parameter tool with only 11% schema coverage, an output schema, and a dense sibling set, the description omits purpose, usage, and all parameter semantics. Even granting that the output schema removes the need to explain return values, the definition is unusable 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 11% across 9 parameters (4 required: domain, start_date, end_date, metrics), and the description contributes no parameter meaning at all — no mention of domains, date ranges, metric names, or the enum-constrained country/web_source/granularity values. This is the worst case for a high-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description contains only an auto-generated pricing notice and never states what the tool does. Neither the verb nor the resource is defined beyond what the tool name and title ('Traffic & Engagement') imply, and no sibling is distinguished.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives among the ~30 SimilarWeb siblings (e.g., website_traffic_snapshot, traffic_trend, marketing_channel_sources_legacy). An agent gets zero routing information.
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 GeographiesDRead-onlyIdempotentInspect
Usage-based billing; Default request estimate: $2.25 USD (not a fixed price). Declared unit rate: $0.075 USD per similarweb_credit. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| month | No | Complete month in YYYY-MM. | |
| domain | Yes | Bare website hostname without scheme, path, port, or credentials. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description does add genuinely non-obvious cost context (estimated $2.25 per request, $0.075 per similarweb_credit, account-specific settlement), which an agent weighing whether to call a metered tool would value, but it says nothing about the operation's actual 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 text is short, but every line is pricing boilerplate wrapped in HTML comment markers, so the limited space is spent on something other than tool selection. It is front-loaded with billing rather than 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?
Output schema exists, so return values needn't be explained, but the description never says what "top geographies" means (country-level traffic distribution for a domain/month), leaving the core capability entirely undocumented for an agent scanning a large sibling list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are self-documenting: domain is specified as a bare hostname and month as YYYY-MM with a previous-complete-UTC-month default policy. The description adds nothing beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description contains no statement of what the tool does. It is entirely a pricing/billing banner ("Usage-based billing; Default request estimate: $2.25 USD...") with no verb, resource, or scope tied to retrieving top geographies for a website.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 the many sibling geographies/audience tools (get_similarweb_traffic_engagement, get_similarweb_demographics, etc.). No prerequisites, no exclusions, no alternative named.
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 SnapshotCRead-onlyIdempotentInspect
Usage-based billing; Default request estimate: $0.3 USD (not a fixed price). Declared unit rate: $0.075 USD per similarweb_credit. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| month | No | Complete month in YYYY-MM. | |
| domain | Yes | Bare website hostname without scheme, path, port, or credentials. | |
| country | No | Worldwide data only; values are case-insensitive. | 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, openWorldHint and destructiveHint=false, so the safety profile is covered. The description does add genuinely non-annotation behavior: usage-based billing with a stated unit rate and a default cost estimate, which is useful for cost-aware agents. It still omits any disclosure of response shape, latency, or credit consumption per call beyond the estimate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short and front-loaded, but every sentence is pricing metadata rather than tool guidance, so the brevity reflects missing content rather than disciplined concision. Nothing is wasted, but nothing about the operation is conveyed either.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and annotations cover safety, but the description supplies no functional framing at all for a tool that competes with a dozen overlapping similarweb traffic tools. An agent cannot tell what a 'traffic snapshot' includes (visits, pageviews, bounce rate, duration) versus its 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%, and the schema documents domain, month (YYYY-MM, defaulting to previous complete UTC month) and country (worldwide only). The description adds no parameter meaning whatsoever, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description contains only pricing boilerplate (usage-based billing, $0.3 estimate, $0.075 per credit) and says nothing about what the tool retrieves or returns. Only the tool name and title hint at 'website traffic snapshot', which is not sufficient to distinguish it from siblings like get_similarweb_traffic_engagement or get_similarweb_website_traffic_trend.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 prerequisites, and no mention of alternatives. With 30+ similarweb siblings, the absence of any routing guidance leaves the agent unable to choose this tool over the many adjacent traffic metrics tools.
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 TrendDRead-onlyIdempotentInspect
Usage-based billing; Default request estimate: $0.45 USD (not a fixed price). Declared unit rate: $0.075 USD per similarweb_credit. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Bare website hostname without scheme, path, port, or credentials. | |
| country | No | Worldwide data only; values are case-insensitive. | ww |
| metrics | No | One to four supported Traffic & Engagement metrics. | visits |
| end_date | No | Inclusive last complete UTC month in YYYY-MM. | |
| start_date | No | Inclusive first month in YYYY-MM; provide together with end_date. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, open-world, non-destructive, so the safety profile is covered. The description does add genuinely useful behavior beyond annotations: usage-based billing, a $0.45 default request estimate, and a $0.075 per similarweb_credit unit rate, which an agent should weigh before calling. However it discloses nothing about latency, time-window semantics, or result shape, so it is only partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short and contains no padding, but every sentence is pricing boilerplate wrapped in HTML comment markers rather than task description. It is concise in size yet misdirected in content, and there is no front-loaded statement of purpose to anchor the rest.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but the description still omits the trend/time-series semantics, default date behavior, and differentiation from the snapshot and traffic-engagement siblings. For a 5-parameter tool with three closely named siblings, this leaves the agent without the information 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 100%, so the schema already documents domain format, the country enum, the four-item metrics list, and the YYYY-MM date semantics; baseline 3 applies. The description adds no parameter meaning whatsoever beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description contains no statement of what the tool does; it is entirely a pricing banner. Only the tool name hints at retrieving a website traffic trend, and the description does nothing to confirm scope, distinguish trend from snapshot, or identify the resource beyond what the name already says.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no reference to alternatives such as get_similarweb_website_traffic_snapshot or get_similarweb_traffic_engagement, which are the most likely competing tools. An agent has no basis for choosing this tool over those siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_trendsGet Trends By WoeidARead-onlyIdempotentInspect
Get the trending topics for a location, identified by its Yahoo WOEID (Where On Earth ID), with an optional count (default 30). Use this for a real-time read on what a specific market is talking about right now — useful for timing content or spotting emerging stories. Returns trend names and volumes under trends. Once you pick a trend, search its posts with get_twitter_tweet_advanced_search.
Usage-based billing; Default request estimate: $0.00015 USD (not a fixed price). Declared unit rate: $0.00001 USD per provider_credit. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | The number of trends to return. Default is 30. Provider reference (supplier schema): `{"default":30,"format":"int64","minimum":30,"type":"integer"}`. | |
| woeid | No | The WOEID of the location. Example: 2418046. Provider reference (supplier schema): `{"format":"int64","type":"integer"}`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety bar is pre-covered. The description adds useful context the annotations don't: the returned payload ('trend names and volumes under `trends`') and an account-specific pricing/usage note. It omits rate limits or freshness guarantees, but the additions are genuine.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and the two core sentences are dense with no waste. The injected pricing block adds length that isn't part of the tool's intrinsic description, slightly diluting the otherwise tight structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a rich output schema and full annotation coverage, the description supplies what the agent still needs: the location semantics, the returned field group, and the downstream search tool. It leaves only minor gaps like pagination/freshness, which the output schema may cover.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both params are already documented; the description largely restates WOEID and the default `count` of 30 rather than adding syntax or format meaning. Baseline 3 applies when the schema carries the parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the trending topics for a location') and pins the identifier (Yahoo WOEID), distinguishing it from the sibling tweet/user tools without ambiguity. It also names the natural next step tool, making its role in the workflow unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear scenario ('real-time read on what a specific market is talking about right now', 'timing content or spotting emerging stories') and routes the follow-up to `get_twitter_tweet_advanced_search`. However, it never states when NOT to use it or how it relates to other trend-adjacent siblings, so it stops short of full explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_tweet_advanced_searchAdvanced SearchARead-onlyIdempotentInspect
Search X posts by keyword or query with X's advanced search operators, sorted by Latest (default) or Top. This is the primary entry point for X content research when you do not yet have tweet IDs or handles. Supports operators in the query string such as from:, to:, since:, until:, min_faves:, and -filter:replies. Cursor-paginated; returns tweets with has_next_page and next_cursor. To search accounts rather than posts use get_twitter_user_search. To read one account's own posts use get_twitter_user_tweet_timeline.
Usage-based billing; Default request estimate: $0.003 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| query | No | The query to search for. | |
| cursor | No | The cursor to paginate through the results. First page is empty. | |
| queryType | No | The query type to search for. Provider reference (supplier schema): `{"default":"Latest","enum":["Latest","Top"],"type":"string"}`. | |
| start_time | No | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), so the lower bar applies. The description still adds real behavior: cursor pagination semantics, the has_next_page/next_cursor return fields, sort modes, and supported query operators. It omits auth requirements and rate limits, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then operators, pagination, and alternatives in a tight sequence where each sentence carries information. The injected pricing boilerplate is not authored content but does add noise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be exhaustively explained, and annotations carry the safety profile. The description still covers usage context, alternatives, pagination flow, and query syntax, so nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, so the schema does part of the work. The description usefully explains the query-string operator syntax and the Latest/Top sort (mapping to queryType), but count, max_results, and start_time are undocumented in both places. It adds value over the schema without fully compensating for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (X posts) and immediately differentiates itself by naming the two sibling alternatives for account search and user timelines. An agent can distinguish this from any account-scoped tool without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly declares when to use it ('primary entry point for X content research when you do not yet have tweet IDs or handles') and routes to the correct alternatives ('to search accounts use get_twitter_user_search', 'to read one account's posts use get_twitter_user_tweet_timeline'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_tweet_repliesGet Tweet RepliesARead-onlyIdempotentInspect
Get the direct replies to a tweet, cursor-paginated. Use this to read the discussion under a post — sentiment, corrections, or follow-up questions. Returns full tweet objects with engagement counts. Prefer get_twitter_tweet_replies_v2 when you want to control ordering (Relevance, Latest, or Likes); this v1 endpoint returns the default order only. To follow a conversation upward to its root instead of downward, use get_twitter_tweet_thread_context.
Usage-based billing; Default request estimate: $0.01335 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for pagination. | |
| tweetId | No | The tweet ID to get replies for. | |
| queryType | No | Sort order for replies. Default is Relevance. Provider reference (supplier schema): `{"default":"Relevance","type":"string"}`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, open-world, so the safety profile is covered. The description adds real behavioral value beyond that: pagination behavior, the ordering limitation of the v1 endpoint, and the shape of returned objects. It stops short of describing rate limits or response envelope details, but is solid given annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core definition is three tight, front-loaded sentences that each carry routing or behavioral information. The appended pricing boilerplate is machine-generated and not part of the semantic definition, slightly diluting conciseness but not the author's fault.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value structure need not be spelled out, and annotations carry the safety profile. Combined with the sibling routing and pagination notes, an agent has everything needed to invoke this correctly. Complete for a read-only list endpoint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents cursor, tweetId, and the queryType enum with its default. The description reinforces the cursor pagination and default-order behavior but adds no syntax or format detail beyond the schema. Note a mild tension: the schema exposes an ordering enum while the description says this v1 endpoint returns default order only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the direct replies to a tweet') and immediately scopes the shape of the result (cursor-paginated, full tweet objects). It explicitly distinguishes itself from two named siblings, get_twitter_tweet_replies_v2 and get_twitter_tweet_thread_context, so an agent can route correctly without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit use context ('read the discussion under a post — sentiment, corrections, or follow-up questions') plus two exclusion routes: use v2 for ordering control, use thread_context to walk upward to the root. This is a full when/when-not/alternatives treatment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_user_followersList User FollowersARead-onlyIdempotentInspect
List the accounts that follow a given X user, identified by @handle, newest follower first. Returns up to 200 per page by default with has_next_page and next_cursor; each entry is a full user object (handle, name, bio, follower count, verification). Use this for audience analysis, mapping a competitor's follower base, or finding influential followers. For the reverse direction (who this user follows) use get_twitter_user_followings. For only the verified subset use get_twitter_user_verified_followers — note that one takes a numeric user_id, not a handle.
Usage-based billing; Default request estimate: $0.00326 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Cursor for pagination | |
| pageSize | No | Number of followers per page Provider reference (supplier schema): `{"default":200,"type":"integer"}`. | |
| userName | No | Screen name of the user |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), yet the description adds real behavioral context: 200 results per page by default, has_next_page/next_cursor pagination, and the shape of each entry. It stops short of stating rate limits or cursor lifetime, but the added pagination and page-payload detail is well beyond what the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then pagination, then use cases, then sibling routing — a logical order with no redundant sentences. The injected aisa-pricing boilerplate adds length that does not serve tool selection, which keeps it out of the top band.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite an output schema existing, the description goes further by summarizing the per-entry fields, and it covers pagination, the identifier format, use cases, and both alternatives. Given a three-parameter read-only tool with full annotation coverage, an agent has everything needed to call it correctly on the first try.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, and the description earns a step up by clarifying that the user is addressed by @handle rather than the schema's vaguer "screen name," and by restating the 200-per-page default in prose. It does not add cursor format or sizing rules beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list), resource (accounts that follow a given X user), the identity key (@handle), and the ordering (newest follower first). It also names the two closest siblings and how they differ, so an agent can pick it apart from get_twitter_user_followings and get_twitter_user_verified_followers without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives when-to-use scenarios (audience analysis, mapping a competitor's follower base, finding influential followers) and names both alternatives with their selecting conditions — reverse direction for followings, verified subset for verified followers. It even flags that the verified sibling takes a numeric user_id rather than a handle, which is exactly the kind of routing detail that prevents a wrong call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_user_infoGet User InfoARead-onlyIdempotentInspect
Look up one X (Twitter) user's public profile by @handle (screen name). Use this when you need to know who an account is — identity, reach, or credibility — before deciding whether to trust or analyze their content. Returns display name, bio, follower/following counts, verification status, account creation date, location, and profile images. If you only have a numeric user ID, use get_twitter_user_batch_info_by_ids instead. If you need extended profile metadata such as country or username-change history, use get_twitter_user_about. If you want their posts rather than their profile, use get_twitter_user_tweet_timeline.
Published reference price: $0.00018 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| userName | No | The screen name of the user |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds the meaningful scoping detail that this is a public-profile lookup keyed by handle, plus the returned field set; it does not mention auth or rate limits, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and each subsequent sentence earns its place by routing to a distinct sibling. The injected pricing block adds length that is not part of the tool's semantic content, keeping it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return-value explanation is optional, annotations carry the safety profile, and the single parameter is fully documented. An agent has everything needed to select and call this tool correctly, with sibling disambiguation included.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is only one parameter, so the schema already documents it (baseline 3). The description adds value by specifying the format is the @handle/screen name and by routing numeric-ID callers to a different tool, which the schema alone does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (look up) and resource (one X/Twitter user's public profile) with the exact input form (@handle). It is immediately distinguishable from the profile-adjacent siblings it names, so an agent can route without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-to-use framing (to assess identity, reach, or credibility before trusting content) and then names three concrete alternatives with the condition that selects each: numeric ID → get_twitter_user_batch_info_by_ids, extended metadata → get_twitter_user_about, posts → get_twitter_user_tweet_timeline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_user_last_tweetsGet User TweetsARead-onlyIdempotentInspect
Get a user's most recent tweets, accepting either userName (@handle) or userId — useful when you have not resolved the handle to an ID yet. Optionally include replies. Cursor-paginated. Returns tweets under data with has_next_page and next_cursor. Use get_twitter_user_tweet_timeline instead when you already have the numeric ID and want the full profile-order timeline with parent-tweet expansion.
Usage-based billing; Default request estimate: $0.003 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| cursor | No | Cursor for pagination | |
| userId | No | User ID of the user | |
| userName | No | Screen name of the user | |
| includeReplies | No | Include replies in the results Provider reference (supplier schema): `{"default":false,"type":"boolean"}`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, open-world, non-destructive behavior, so the bar is lower; the description still adds real behavioral context — cursor pagination and the response shape (data, has_next_page, next_cursor). It does not discuss rate limits or the billing estimate's non-fixed nature beyond the injected pricing note.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then pagination, return shape, and the alternative — each sentence earns its place. The auto-injected pricing block adds length but is boilerplate rather than authored text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, yet the description still summarizes them; annotations carry the safety profile; and parameters, pagination, and alternatives are all addressed. An agent can call this correctly without further inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so the baseline is a 3, and the description adds genuine meaning: that userName is a @handle, that userId and userName are interchangeable entry points (useful before handle resolution), and that replies are optional. Only 'count' remains undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: retrieves a user's most recent tweets, with the scope (recent, cursor-paginated, optional replies) stated up front. It attempts differentiation by naming an alternative timeline tool, but that tool does not appear in the sibling list, so the contrast lands weakly against the actual siblings (get_twitter_user_mentions, get_twitter_tweet_replies, etc.).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear usage condition: use this when you have not resolved the handle to an ID (accepts either userName or userId). It also names an explicit alternative and the condition selecting it. The referenced alternative is not present among siblings, which slightly undercuts the routing value.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_user_mentionsGet User MentionsARead-onlyIdempotentInspect
Get tweets that mention a given @handle, 20 per page. This is the only user-scoped X endpoint that supports a time window: pass sinceTime and/or untilTime as Unix timestamps in seconds to bound the range. Use this for monitoring — brand mentions, inbound replies, reputation tracking, or 'what happened to this account in the last 24 hours'. Returns tweets with has_next_page and next_cursor. For the account's own posts rather than mentions of it, use get_twitter_user_tweet_timeline.
Usage-based billing; Default request estimate: $0.003 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | The cursor to paginate through the results. First page is empty. | |
| userName | No | The user screen name to get mentions for. | |
| sinceTime | No | ||
| untilTime | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive/open-world, so the burden is lower. The description still adds real behavioral context: page size (20 per page) and the unique time-window capability. The return-format note (has_next_page/next_cursor) is redundant against the output schema, so it isn't a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose then usage then return shape in a sensible order, with no filler sentences. The trailing auto-injected pricing comment is noise but boilerplate; the return-value sentence is mildly redundant given the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, paginated list endpoint with a full output schema and safety annotations, the description covers purpose, when-to-use, the time-window mechanics, and pagination size. An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50% — sinceTime and untilTime have no schema description. The description compensates by telling the agent these are Unix timestamps in seconds and that they bound the range, which is exactly the missing semantic detail. cursor and userName are already schema-documented, so it doesn't need to repeat them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get tweets that mention a given @handle') and immediately differentiates itself from the sibling for own-posts content. An agent can tell it apart from get_twitter_user_last_tweets without reading either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit use cases (monitoring, brand mentions, inbound replies, reputation tracking, 'last 24 hours') and names the alternative ('For the account's own posts... use get_twitter_user_tweet_timeline'). It also declares a differentiating constraint — the only user-scoped X endpoint with a time window — which routes the agent decisively.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_twitter_user_searchSearch UsersARead-onlyIdempotentInspect
Search X user accounts by keyword and get back matching profiles. Use this when you know roughly who you are looking for — a company name, a topic, a partial handle — but not the exact @handle. Cursor-paginated; returns full user objects under users. This searches accounts, not posts; to search tweet content use get_twitter_tweet_advanced_search.
Usage-based billing; Default request estimate: $0.0036 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | The keyword to search. | |
| cursor | No | The cursor to paginate through the results. First page is empty. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, open-world and non-destructive, so the safety profile is covered structurally. The description adds value beyond them by disclosing pagination behavior ('cursor-paginated'), the top-level return key ('full user objects under `users`'), and the scope boundary (accounts, not posts). It omits rate limits or auth requirements, hence not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then the selection heuristic, then the pagination/return note, then the sibling disambiguation — every sentence earns its place. The trailing pricing block is boilerplate metadata rather than description prose and does not dilute the useful content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, open-world search with an output schema and full annotation coverage, the description supplies everything needed to call it correctly: what it searches, when to prefer it, how it pages, where results land, and which sibling to use instead for tweet content. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both 'query' and 'cursor'; the baseline is 3. The description reinforces the keyword-based search and pagination framing but adds no syntax or format detail beyond the schema, and does not address why 'query' is optional despite being the core input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Search X user accounts by keyword') and the return shape ('matching profiles'). It explicitly distinguishes itself from the nearest functional sibling, get_twitter_tweet_advanced_search, and implicitly from the exact-handle lookup tools, so an agent can pick it without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete selection condition ('when you know roughly who you are looking for — a company name, a topic, a partial handle — but not the exact @handle') and names the alternative for the adjacent case ('to search tweet content use get_twitter_tweet_advanced_search'). Both the when and the routing alternative are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_youtube_searchSearch VideosARead-onlyIdempotentInspect
Search YouTube and get back matching videos, channels, and playlists. Set engine=youtube and pass the query in q; both are required. Optionally narrow by country (gl) and interface language (hl), or pass a YouTube filter token in sp for pagination and advanced filters such as upload date, duration, or result type. Use this to find video content on a topic, track a channel's recent uploads, or gauge how much video coverage a subject has. Note: this is served through the AIsa mapped path /apis/v1/youtube/search; the upstream provider's canonical path is not mounted directly.
Published reference price: $0.0029 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Search query. Required by runtime and upstream SearchApi. | |
| gl | No | Country code (e.g. us, jp) | |
| hl | No | Interface language | |
| sp | No | YouTube filter token (pagination or advanced filters) | |
| engine | Yes | SearchApi engine identifier. Use `youtube` for this YouTube endpoint. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description usefully adds pricing ($0.0029 per successful request) and a routing note about the mapped path versus the upstream canonical path, which is real operational context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core capability and required-parameter guidance are front-loaded, and the optional-parameter detail follows logically. The pricing comment block and path-mapping note add length that is only marginally actionable, slightly diluting an otherwise tight description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, rich annotations, and full schema description coverage, the description supplies exactly the missing pieces: required params, filter-token semantics, cost, and endpoint routing. Nothing an agent needs to invoke this correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description goes further by clarifying that engine and q are both required, that sp carries pagination and advanced filter tokens (upload date, duration, result type), and that gl/hl narrow by country and interface language.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Search YouTube') and enumerates the returned entities (videos, channels, playlists), which an agent can act on immediately. It does not explicitly contrast itself with the sibling 'search' tool, so the distinction is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives three concrete use cases (topic discovery, tracking a channel's uploads, gauging coverage) plus the mandatory engine/q pairing. There are no when-not-to-use conditions or named alternatives among the siblings, which keeps it out of 5 territory.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_posts_digestInstagram posts digest: a timeline page at ~3% of the sizeARead-onlyInspect
One page of a public account's timeline, projected down to what fits a context window.
Calls the same upstream as get_instagram_user_posts and keeps, per post: code,
full caption text, taken_at, media_type, like/comment/play counts, owner, ONE
image URL and ONE video URL (the largest variant of each), video_duration, and
the carousel slide count. Measured: 632 KB raw becomes about 20 KB; nothing is
summarised and no post is dropped — every post and every caption byte survives,
in upstream order.
What does NOT survive: the other 9 resolution variants per image, dash manifests,
and ~100 internal flag fields per post. If you need any of those — downloading
every resolution, building a player, forensic detail — call
get_instagram_user_posts instead; it returns the upstream response untouched.
Returns the first page. The response keeps next_max_id and more_available
as provider metadata; the current API contract does not accept a pagination
cursor, so this tool cannot request subsequent pages.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent=false, openWorld), it discloses concrete behavior: 632 KB → ~20 KB, nothing summarised, no post dropped, upstream order preserved, which 9 variants and ~100 flags are dropped, and a pagination limitation the API cannot work around. This is unusually rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and routing, then the survival/removal detail. Slightly long, but nearly every sentence carries decision-relevant information; the byte-savings figures and field list earn their space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-param read tool with an output schema, the description covers projection semantics, dropped fields, ordering, and the pagination constraint. An agent has everything needed to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One required parameter with 0% schema description coverage. The description implies the handle identifies a public account whose timeline is fetched, but never explicitly defines the parameter or its format. With a single trivial param and an output schema present, this is adequate but not compensating for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('one page of a public account's timeline, projected down') and explicitly contrasts with `get_instagram_user_posts`, so an agent can distinguish it from the sibling without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use (need compact captions/counts in a context window) and when-not (downloading every resolution, building a player, forensic detail), and routes to the exact alternative tool by name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_profile_digestInstagram profile digest: the profile card at ~1% of the sizeARead-onlyInspect
A public profile as a flat card, projected from the same upstream as get_instagram_profile.
Keeps: username, full_name, numeric id, biography, external_url, bio_links (title + url), follower/following/posts counts, verification and privacy flags, category, one profile picture URL, and the recent posts Instagram embeds in the profile (shortcode, full caption, like/comment counts, taken_at, one display URL each). Measured: 380 KB raw becomes about 15 KB — the recent posts and their display URLs are most of it.
Counts are flattened from their upstream wrappers: followers here is
data.user.edge_followed_by.count there. The numeric id feeds
get_instagram_basic_profile, which is the cheap (4.5 KB) per-id lookup for
enriching many accounts.
For the untouched upstream response — every field, every wrapper — call
get_instagram_profile instead.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive, and the description adds meaningful behavior beyond that: field flattening with a concrete path mapping (`edge_followed_by.count` → `followers`), measured size reduction from 380 KB to 15 KB, what is retained vs. dropped, and the one-display-URL-per-post rule. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences, front-loaded with the core purpose, followed by the field list, measured size, flattening detail, and alternative routing. Every sentence adds operational value with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description plus the existing output schema cover almost everything an agent needs: scope, field semantics, size characteristics, relation to siblings, and return shape. The only meaningful gap is the undocumented `handle` input and any format restrictions. For a one-parameter public read tool, this is very close to complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, `handle`, is never described in the definition. With 0% schema-description coverage, the description should at least state that `handle` is the Instagram username and whether a leading `@` is accepted, but it only mentions `username` as an output field. The input contract is left to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Defines the resource (a public Instagram profile) and the transformation (a compact flat-card projection), then enumerates exactly which fields are kept. It explicitly contrasts itself with `get_instagram_profile`, so an agent can distinguish it from that upstream tool and from `instagram_posts_digest`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when-not signal: if the agent needs the untouched upstream response with every field and wrapper, call `get_instagram_profile` instead. It also explains that the returned numeric `id` feeds `get_instagram_basic_profile`, enabling intentional chaining for bulk enrichment. The size framing tells the agent when the compact digest is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesBrowse the AIsa 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. (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 establish that this is a safe, read-only, closed-world operation. The description adds useful context beyond annotations by saying it returns categories, servers, tool counts, and the dedicated endpoint, and that it is free. It omits auth/rate-limit details, but those are less critical given the read-only annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with what the tool returns and is generally efficient. The parenthetical about tool-router and the endpoint URL add some density, but each part contributes usage or content context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 zero parameters, read-only annotations, and an output schema available, the description supplies enough context for correct invocation. It explains the catalogue contents and gives the category-specific endpoint alternative, leaving no critical gap for an agent.
Complex tools with many parameters or behaviors need more documentation. 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 parameter semantics are not a meaningful differentiator. The schema has no properties to explain, and the description does not need to document any inputs.
Input schemas describe structure but not intent. Descriptions should explain 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 that this tool gives a catalogue overview: categories, servers per category, tool counts, and a dedicated endpoint. The resource is specific and recognizable, though sibling differentiation is only partial because it references 'tool-router' rather than the listed siblings like search/use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear alternative: use the category-specific endpoint if you only need one category, rather than going via search. It also notes the tool is free and AIsa-only, but it does not explicitly state when to call list_categories instead of search or use.
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.
Usage-based billing; Default request estimate: $0.01975 USD (not a fixed price). Declared unit rate: $0 USD per provider_credit. Account-specific pricing and final settlement may differ.
| 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_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 | |
| revenue_range_max | No | Search for organizations based on their revenue. Use this parameter to set the upper range of organization revenue. Use the revenue_range[min] parameter to set the lower range of revenue. Do not enter currency symbols, commas, or decimal points in the figure. Example: 50000000 | |
| revenue_range_min | No | Search for organizations based on their revenue. Use this parameter to set the lower range of organization revenue. Use the revenue_range[max] parameter to set the upper range of revenue. Do not enter currency symbols, commas, or decimal points in the figure. Example: 300000 | |
| 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 | |
| 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 | |
| total_funding_range_max | No | The maximum amount the company received during all of its funding rounds combined. Use this parameter in combination with total_funding_range[min] to set a monetary range for all of the company's funding rounds. Do not enter currency symbols, commas, or decimal points in the figure. Examples: 50000000; 350000000 | |
| total_funding_range_min | No | The minimum amount the company received during all of its funding rounds combined. Use this parameter in combination with total_funding_range[max] to set a monetary range for all of the company's funding rounds. Do not enter currency symbols, commas, or decimal points in the figure. Examples: 50000000; 350000000 | |
| 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 | |
| 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 | |
| latest_funding_date_range_max | No | The latest date when the company received its most recent funding round. Use this parameter in combination with latest_funding_date_range[min] to set a date range for when the company received its most recent funding round. Example: 2025-09-25 | |
| latest_funding_date_range_min | No | The earliest date when the company received its most recent funding round. Use this parameter in combination with latest_funding_date_range[max] to set a date range for when the company received its most recent funding round. Example: 2025-07-25 | |
| latest_funding_amount_range_max | No | The maximium amount the company received with its most recent funding round. Use this parameter in combination with latest_funding_amount_range[min] to set a monetary range for the company's most recent funding round. Do not enter currency symbols, commas, or decimal points in the figure. Examples: 5000000; 15000000 | |
| latest_funding_amount_range_min | No | The minimum amount the company received with its most recent funding round. Use this parameter in combination with latest_funding_amount_range[max] to set a monetary range for the company's most recent funding round. Do not enter currency symbols, commas, or decimal points in the figure. Examples: 5000000; 15000000 | |
| organization_num_jobs_range_max | No | The maximum number of job postings active at the company. Use this parameter in combination with organization_num_jobs_range[min] to set a job postings range. Examples: 50; 500 | |
| organization_num_jobs_range_min | No | The minimum number of job postings active at the company. Use this parameter in combination with organization_num_jobs_range[max] to set a job postings range. Examples: 50; 500 | |
| 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 | |
| organization_job_posted_at_range_max | No | The latest date when jobs were posted by the company. Use this parameter in combination with organization_job_posted_at_range[min] to set a date range for when jobs posted. Example: 2025-09-25 | |
| organization_job_posted_at_range_min | No | The earliest date when jobs were posted by the company. Use this parameter in combination with organization_job_posted_at_range[max] to set a date range for when jobs posted. Example: 2025-07-25 | |
| 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 cover the safety profile (readOnly, idempotent, openWorld, non-destructive), so the bar is lower. The description adds genuine value beyond them: the dual organizations/accounts return shape, the echoed pagination/breadcrumbs, and a cost signal ($0.01975 estimated request). It stops short of noting rate limits or result caps, so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with purpose, then output shape, then the routing decision. The appended pricing block is boilerplate but is genuine cost information, and nothing else is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 24-parameter, zero-required, open-world search with 100% schema coverage and an output schema, the description supplies everything an agent needs: what it searches, what comes back, and when to prefer the cheaper alternative. No critical invocation detail 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 24 parameters, making 3 the baseline. The description names broad filter categories (headcount, funding stage, technologies) that map onto schema properties but adds no syntax or format detail the schema does not already provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Find companies matching criteria') and enumerates the filterable dimensions (name, domain, headcount, industry, location, funding stage, technologies). It also distinguishes the result sets (organizations = Apollo global DB, accounts = existing workspace records), so an agent can tell it apart from sibling enrich 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?
Explicit when-to-use ('Use it to build a target list') and an explicit alternative with a selection condition and cost rationale ('When you already know the domain, get_apollo_organizations_enrich answers directly and costs less'). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_mixed_people_api_searchPeople API SearchARead-onlyIdempotentInspect
Use the People API Search endpoint to find net new people in the Apollo database. Several filters are available to help narrow your search. This endpoint is optimized for API usage and does not consume credits. This endpoint is primarily designed for prospecting net new people. This endpoint does not return email addresses or phone numbers. Use the People Enrichment or Bulk People Enrichment endpoints to enrich data. This endpoint requires a master API key. Refer to Create API Keys to learn how to create a master API key. To protect Apollo's performance for all users, this endpoint has a display limit of 50,000 records (100 records per page, up to 500 pages). Add more filters to narrow your search results as much as possible. This limitation does not restrict your access to Apollo's database; you just need to access the data in batches.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| 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 | |
| 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 | |
| revenue_range_max | No | The maximum revenue the person's current employer generates. Use this parameter in combination with revenue_range[min] to set a revenue range. Do not enter currency symbols, commas, or decimal points in the figure. Examples: 500000; 1500000 | |
| revenue_range_min | No | The minimum revenue the person's current employer generates. Use this parameter in combination with revenue_range[max] to set a revenue range. Do not enter currency symbols, commas, or decimal points in the figure. Examples: 500000; 1500000 | |
| 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 | |
| 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_num_jobs_range_max | No | The maximum number of job postings active at the person's current employer. Use this parameter in combination with organization_num_jobs_range[min] to set a job postings range. Examples: 50; 500 | |
| organization_num_jobs_range_min | No | The minimum number of job postings active at the person's current employer. Use this parameter in combination with organization_num_jobs_range[max] to set a job postings range. Examples: 50; 500 | |
| 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 | |
| organization_job_posted_at_range_max | No | The latest date when jobs were posted by the person's current employer. Use this parameter in combination with organization_job_posted_at_range[min] to set a date range for when jobs posted. Example: 2025-09-25 | |
| organization_job_posted_at_range_min | No | The earliest date when jobs were posted by the person's current employer. Use this parameter in combination with organization_job_posted_at_range[max] to set a date range for when jobs posted. Example: 2025-07-25 | |
| 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?
Annotations already cover read-only/idempotent/open-world, and the description adds substantial non-obvious behavior: no credit consumption, master API key requirement, a 50,000-record display limit (100/page, 500 pages), and guidance to narrow with filters. This is exactly the extra context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and key exclusions are front-loaded, but there is mild redundancy from the repeated 'This endpoint...' construction across consecutive sentences. It is appropriately sized for a 23-parameter tool, just slightly repetitive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 full annotation coverage, the description still supplies everything an agent needs to call it correctly: auth requirement, credit behavior, pagination ceiling, and enrichment alternatives. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across 23 parameters, so the schema already documents each filter in depth. The description adds no per-parameter syntax or pairing guidance beyond the pagination limit note, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('find net new people in the Apollo database') and explicitly contrasts the tool with People Enrichment / Bulk People Enrichment, so an agent can distinguish it from siblings like post_apollo_people_match without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the primary use case (prospecting net new people), the explicit exclusion ('does not return email addresses or phone numbers'), and names the alternative endpoints to use for enrichment. This is an explicit when/when-not/alternative routing.
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.
Usage-based billing; Default request estimate: $0.01975 USD (not a fixed price). Declared unit rate: $0 USD per provider_credit. Account-specific pricing and final settlement may differ.
| 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 | |
| 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 | |
| published_at_max | No | Set the upper bound of the date range you want to search. Use this parameter in combination with the published_at[min] parameter. This date should fall after the published_at[min] date. The date should be formatted as YYYY-MM-DD. Example: 2025-05-15 | |
| published_at_min | No | Set the lower bound of the date range you want to search. Use this parameter in combination with the published_at[max] parameter. This date should fall before the published_at[max] date. The date should be formatted as YYYY-MM-DD. Example: 2025-02-15 |
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, open-world), so the bar is lower. The description adds real behavioral context beyond them: the exact failure mode (HTTP 422 with 'organization_ids is required') when the required param is omitted, and the response shape (news_articles, pagination). No auth, rate-limit, or cost caveats beyond the injected pricing block.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense, front-loaded, and every sentence carries a distinct instruction: required param, how to resolve it, available filters, return fields, and use case. No filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values need not be explained, and the annotations cover the safety profile. Given the description covers the required parameter, its error behavior, the prerequisite chain, filter options, and a use case, 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 coverage is 100%, so the baseline is 3. The description adds meaning on top: it flags organization_ids as required and explains why (and how to obtain values), and gives category examples (funding, hires, launches) plus the date-range and paging parameters as a coherent filtering story. Some overlap with schema text, but the required-param rationale is genuine added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ("News coverage for specific companies") and immediately distinguishes itself from siblings by naming the prerequisite tools (get_apollo_organizations_enrich, post_apollo_mixed_companies_search) rather than describing itself in isolation. An agent can identify the tool's domain without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit prerequisite (resolve organization_ids first, with two named alternatives) and a concrete motivating use case ("catch a trigger event before reaching out"). It stops short of stating when NOT to use this tool versus other news/social sources in the sibling list, so it is strong but not exhaustive.
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.
Usage-based billing; Default request estimate: $0.1975 USD (not a fixed price). Declared unit rate: $0 USD per provider_credit. Account-specific pricing and final settlement may differ.
| 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?
Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: the 10-company cap and the warning that not every domain may resolve, advising the caller to compare requested vs enriched counts rather than assume success.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and cap, then the parameter, then the return caveat, then the sibling pointer. Well ordered and mostly waste-free, though the appended pricing boilerplate inflates length relative to the actionable content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite an output schema existing, the description helpfully calls out the key response fields and, more importantly, the semantic caveat that counts may not all match. Together with the sibling routing and the 10-domain limit, an agent has everything needed to call and interpret this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the domains array, bare-domain format, and www/@ exclusion. The description reinforces the 'array of bare domains' shape but adds no syntax or format detail the schema lacks, 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 (enrich) and resource (organizations/companies) with scope (up to 10 in one call). Explicitly distinguishes itself from the sibling get_apollo_organizations_enrich by noting that the single-domain case is a plain GET, so an agent can choose between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear routing rule: use this for multiple domains (up to 10), use get_apollo_organizations_enrich for one domain. That covers the primary selection decision, though it doesn't state exclusions such as what to do beyond 10 domains or rate-limit behavior.
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.
Usage-based billing; Default request estimate: $1.7775 USD (not a fixed price). Declared unit rate: $0 USD per provider_credit. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| 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 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/OpenWorld, so the safety profile is covered. The description adds genuinely useful behavior beyond that: credit cost is per record enriched rather than per call, and partial matches are possible so the caller should inspect missing_records rather than assume success. It stops short of rate limits or async timing, so a 4 rather than 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences ordered as purpose, body, return/cost, then routing. No wasted prose; the pricing block is an injected boilerplate section rather than authored description text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, nested, non-destructive enrichment call with an output schema, the definition covers input shape, cost model, partial-failure semantics, and sibling routing. Nothing an agent needs in order 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 80%, so a baseline of 3 applies. The description adds value by explaining that body.details is an array of the same identifier objects post_apollo_people_match accepts and is capped at 10, linking the nested schema to the sibling's contract rather than just restating field names.
Input schemas describe structure but not intent. Descriptions should explain 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 (bulk-enrich people), gives the hard cap (up to 10), and explicitly names the sibling it differs from (post_apollo_people_match). An agent can distinguish bulk from single enrichment without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit routing rule: use this over a loop of single calls for the same credits and one round trip, and fall back to post_apollo_people_match for a single person. Both the when-to-use and the when-to-use-something-else conditions are stated.
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. Send identifiers in the JSON request body, not the query string. 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 (body) or reveal_phone_number (query) 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.
Published reference price: $0.01975 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Identify one person. Give at least one identifier; the more you supply, the likelier the match. | |
| 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 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 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint), but the description adds material behavior beyond them: personal emails/phone numbers are withheld by default, revealing them costs extra credits, and a 200 response does not guarantee a match. That last caveat is exactly the kind of non-obvious trait an agent needs. It stops short of noting the async webhook requirement for phone reveals or any rate limiting, so it is not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is long, but front-loaded with the core action and then packed with distinct facts (identifiers, placement, return shape, cost, non-match caveat, alternatives) with no filler sentences. The return-field enumeration is arguably redundant given the output schema, which keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists so return values need no explanation, yet the description still sketches the person object and note fields for orientation. Combined with identifier options, payload placement, cost implications, and sibling alternatives, an agent has everything needed to invoke this correctly on the first attempt.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, and every body field is already documented with examples. The description still adds semantic value the schema does not: the identifier list is presented as a preference-ordered set ('the more you supply, the likelier the match'), and it flags that reveal_personal_emails lives in the body while reveal_phone_number is a query parameter — a distinction that is easy to get wrong from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Enrich one person', and immediately bounds scope ('one person' vs bulk). It explicitly names the sibling tools it is not (post_apollo_people_bulk_match, post_apollo_mixed_people_api_search), so an agent can discriminate among the Apollo people tools without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit routing rules: use bulk match for up to 10 people in one call, and use mixed_people_api_search when no identifier exists and candidates must be found first. It also states the entry condition (supply whatever identifiers you have, more is better) and the payload-placement rule (body, not query string).
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. for more info please visit 'https://docs.dataforseo.com/v3/serp/youtube/organic/live/advanced/'
Usage-based billing; Default request estimate: $0.002 USD (not a fixed price). Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations (readOnlyHint=false, destructiveHint=true, idempotentHint=false) are counterintuitive for a data-retrieval endpoint, and the description does not reconcile that tension or mention auth or rate limits. It does add genuinely useful behavioral context the annotations lack: the request is billed per call at roughly $0.002 USD, and higher block_depth may incur extra charges.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core capability is stated in the first sentence, followed by a docs link and a clearly delimited pricing block. It is compact and front-loaded, with only mild boilerplate in the trailing URL and billing lines.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the description covers purpose, location/language dependence, and cost. However, for a paid, multi-field live SERP call it omits which fields are required and when to use it versus the other SERP/social siblings, leaving real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description generically notes that results are specific to the selected location and language settings, mirroring location_code/language_code, but adds no syntax, defaults, or constraints beyond the schema. The nested field descriptions (os, device, block_depth, keyword encoding rules) already carry that load, so the description contributes little parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: it 'provides real-time data on the top 20 blocks of YouTube search engine results', scoped to live SERP with location/language targeting. That is enough to distinguish it from a generic search sibling like get_youtube_search, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 live endpoint over a batch/standard SERP tool, nor any stated prerequisites even though the nested schema marks keyword, and one of location/language, as required. The reader is only told what the results depend on, not when this tool is the right pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
Usage-based billing; Default request estimate: $0.001991 USD (not a fixed price). Declared unit rate: $0.001991 USD per email_lookup_point. Account-specific pricing and final settlement may differ.
| 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 already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely non-obvious behavior: a `not_found` status with null value is a normal outcome rather than an error, and it is still billed as one valid lookup, plus the per-lookup pricing unit. It does not mention auth requirements or rate limits, so it stops short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and payload, then layers response shape, error semantics, and routing in descending order of importance. The embedded pricing comment block is machine-generated noise, but the prose itself is tight with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values were already documented, yet the description still surfaces the two things an agent actually needs to reason about: the `not_found` case is normal and billable, and one creator is handled per call. Combined with the sibling routing, nothing needed to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% at the top level (the single nested `body.profile_url`), so the description must compensate, and it does: it tells the agent to pass `profile_url` and constrains the accepted values to Instagram, TikTok, or YouTube profile URLs, matching the schema example. It adds no syntax rules (e.g., trailing slash or handle-only input), so it is not fully exhaustive.
Input schemas describe structure but not intent. Descriptions should explain 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 — looks up the contact email for exactly one Instagram/TikTok/YouTube creator from a profile URL — and names the sibling alternatives (Similar Creators, AI Search) it is not. An agent can distinguish this from post_waveinflu_ai_search or post_waveinflu_similar_creators without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing guidance: use the list-producing endpoints first to assemble a creator list, then call this endpoint for the creators whose `email` came back null. The one-creator-per-call constraint is stated outright, which prevents batching misuse.
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).
Usage-based billing; Default request estimate: $0.124425 USD (not a fixed price). Declared unit rate: $0.004977 USD per similar_creator_point. Account-specific pricing and final settlement may differ.
| 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 already cover the safety profile (readOnly, idempotent, open-world, non-destructive), so the bar is lower. The description adds genuinely useful context beyond them: per-delivered-creator billing tied to data.count, score-descending sort, and workspace-dedup behavior. Auth/rate-limit behavior is still absent, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then parameters, return fields, sorting, and billing in a single dense paragraph. Every sentence carries information, though the return-field enumeration is somewhat list-heavy against an existing output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nested, complex tool with an output schema, the description covers required params, optional filters, dedup, sort order, and billing. Return values are enumerated even though the output schema handles them, so nothing an agent needs is missing, but the incorrect limit default is a completeness flaw.
Complex tools with many parameters or behaviors need more documentation. 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 compensates for the low top-level schema coverage by naming the required fields and enumerating the filter categories. However, it states a `limit` default of 40 while the schema declares a default of 25, a factual mismatch that could mislead the agent, and it largely restates what the nested schema descriptions already document.
Input schemas describe structure but not intent. Descriptions should explain 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') plus the exact platforms (Instagram, TikTok, YouTube). This clearly distinguishes it from siblings like ai_search, email_lookup, and search without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells the agent which parameters are required and which are optional, which implies the invocation pattern, but it never states when to choose this over siblings like post_waveinflu_ai_search or when not to use it. Usage context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch AIsa tools and agent-ready plansARead-onlyInspect
Discover AIsa tools and Plans for external data or actions. Skip tasks that only need supplied content or general knowledge. For multi-step tasks, search the full goal before decomposing it. Use English; put identifiers in known_fields. If has_full_schema=false, call batch_get_schema. Next call batch_quote, not batch_use. Do not search for standalone rewriting, translation, summarization, formatting, or calculations on supplied content. For one capability, use an atomic query. Select a matching capability, date window, and metric. A Plan may cover only part of the task; assess its purpose and follow next_steps_guidance.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of additional direct tool candidates. | |
| query | Yes | Natural-language capability or task to discover. | |
| category | No | Restrict retrieval to one category. Omit to search everything. (AIsa-only: tool-router has no equivalent.) | |
| session_id | No | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. | |
| known_fields | No | Known values such as ticker, URL, provider, or identifier that improve retrieval. | |
| provider_filters | No | Optional exact catalog provider keys used to narrow retrieval (for example similarweb). Do not use display brands. Omit this field if the exact key is unknown. |
Output Schema
| Name | Required | Description |
|---|---|---|
| plan | No | |
| tools | Yes | |
| search_id | Yes | |
| session_id | Yes | Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created. |
| retrieval_mode | No | |
| next_steps_guidance | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds workflow behavior the annotations cannot: the has_full_schema flag gates a required batch_get_schema call, and the next step after search is batch_quote, not batch_use. It stops short of disclosing retrieval limits or catalog breadth that would push it to a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a dense run of imperatives rather than flowing prose, but each sentence carries a distinct rule (scope, language, workflow branch, negative cases, result interpretation) and the most important scoping guidance is front-loaded. Slightly more compression would help.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and it correctly avoids doing so while still referencing the output fields that drive the workflow (has_full_schema, next_steps_guidance). A mutation-free, well-annotated search tool is adequately covered, though catalog scope ('AIsa-only', no external providers) could be stated more explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the structured baseline is 3. The description adds genuine meaning beyond the schema by telling the agent to write the query in English and to place tickers, URLs, providers, or identifiers in known_fields, which is non-obvious routing guidance for a nested free-form object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Discover AIsa tools and Plans for external data or actions.' It also separates this discovery step from the sibling execution tools by naming batch_get_schema, batch_quote, and batch_use and stating when each follows, so an agent can place it in the workflow without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use ('tasks needing external data or actions'), when-not ('tasks that only need supplied content or general knowledge'; no standalone rewriting, translation, summarization, formatting, or calculations), and named alternatives (batch_get_schema when has_full_schema=false, batch_quote rather than batch_use). It also specifies query language and atomic-query style, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
useRun an AIsa operationCDestructiveInspect
deprecated, use batch_use instead
| Name | Required | Description | Default |
|---|---|---|---|
| arguments | No | Arguments matching input_schema / arguments_schema | |
| search_id | No | search_id from the search that found this operation | |
| operation_id | Yes | operation_id as returned by search | |
| max_price_usd | No | Refuse the call before any spend if its quoted price is above this many USD |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=true, so the agent knows this is a state-changing, open-world operation. The description adds only the deprecation status and says nothing about what gets mutated, spend behavior (despite a max_price_usd param), or authorization needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single clause with zero waste; the deprecation notice and the replacement are front-loaded. It is terse by design for a deprecated endpoint, though it is under-specified rather than optimally efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Has an output schema and annotations, which reduces the burden, but a 4-parameter operation tool with a deprecation notice gives no information about what it executes or whether it remains functional. For an agent deciding between this and batch_use, the description is thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (operation_id, arguments, search_id, max_price_usd) are already documented in the schema. The description adds no parameter meaning on top, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description never states what the tool does — no verb or resource. It only labels the tool as deprecated and points to a replacement, leaving the actual capability ('Run an AIsa operation' from the title) unexplained. An agent must infer the purpose from the title and schema alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes the agent to the alternative ('use batch_use instead'), which is exactly the guidance needed for a deprecated tool. It doesn't explain when, if ever, this tool should still be called (e.g., during a migration window), so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
instagram_posts_digest1 field changed- removed
Input schema / properties / next_max_idRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null -}
25 tool updates
- Added
account - Removed
get_details - Changed
get_instagram_search_hashtag4 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "The cursor returned by the previous response. In this version, it is the next Google results page number.", + "type": "string" +} - added
Input schema / properties / date_postedAdded value: +{ + "description": "Only return Google-indexed posts found in this relative window.", + "enum": [ + "last-day", + "last-hour", + "last-month", + "last-week", + "last-year" + ], + "type": "string" +} - added
Input schema / properties / hashtag / descriptionAdded value: +"The hashtag to search for. Include or omit the #." - added
Input schema / properties / media_typeAdded value: +{ + "description": "Use all to search public posts and reels, or reels to only return reels. Defaults to all.", + "enum": [ + "all", + "reels" + ], + "type": "string" +}
- Changed
get_instagram_search_profiles2 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "The cursor returned by the previous response. In this version, it is the next Google results page number.", + "type": "string" +} - added
Input schema / properties / query / descriptionAdded value: +"Bio or caption keyword/phrase to search for."
- Changed
get_pinterest_board3 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "The cursor to get the next page of results", + "type": "string" +} - added
Input schema / properties / trim / descriptionAdded value: +"Set to true for a trimmed down version of the response" - added
Input schema / properties / url / descriptionAdded value: +"The URL of the board to get"
- Changed
get_pinterest_search3 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "Cursor", + "type": "string" +} - added
Input schema / properties / query / descriptionAdded value: +"Search query" - added
Input schema / properties / trim / descriptionAdded value: +"Set to true for a trimmed down version of the response"
- Changed
get_reddit_post_comments3 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Cursor to get more comments, or replies." - added
Input schema / properties / trimAdded value: +{ + "description": "Set to true for a trimmed down version of the response", + "type": "boolean" +} - added
Input schema / properties / url / descriptionAdded value: +"Reddit post URL"
- Changed
get_reddit_search6 fields changed- added
Input schema / properties / afterAdded value: +{ + "description": "Used to paginate to next page", + "type": "string" +} - added
Input schema / properties / filterAdded value: +{ + "description": "Search posts or comments", + "enum": [ + "comments", + "posts" + ], + "type": "string" +} - added
Input schema / properties / query / descriptionAdded value: +"Search query" - added
Input schema / properties / sort / descriptionAdded value: +"Sort by\n\nProvider reference (supplier schema): `{\"enum\":[\"relevance\",\"new\",\"top\",\"comment_count\"],\"type\":\"string\"}`." - added
Input schema / properties / timeframe / descriptionAdded value: +"Timeframe\n\nProvider reference (supplier schema): `{\"enum\":[\"all\",\"day\",\"week\",\"month\",\"year\"],\"type\":\"string\"}`." - added
Input schema / properties / trim / descriptionAdded value: +"Set to true for a trimmed down version of the response"
- Changed
get_reddit_subreddit5 fields changed- added
Input schema / properties / after / descriptionAdded value: +"After to get more posts. Get 'after' from previous response." - added
Input schema / properties / sort / descriptionAdded value: +"Sort order\n\nProvider reference (supplier schema): `{\"enum\":[\"best\",\"hot\",\"new\",\"top\",\"rising\"],\"type\":\"string\"}`." - added
Input schema / properties / subreddit / descriptionAdded value: +"Subreddit name" - added
Input schema / properties / timeframe / descriptionAdded value: +"Timeframe to get posts from. Runtime requires `sort=top` when `timeframe` is provided.\n\nProvider reference (supplier schema): `{\"enum\":[\"all\",\"day\",\"week\",\"month\",\"year\"],\"type\":\"string\"}`." - added
Input schema / properties / trim / descriptionAdded value: +"Set to true for a trimmed down version of the response"
- Changed
get_twitter_trends2 fields changed- added
Input schema / properties / count / descriptionAdded value: +"The number of trends to return. Default is 30.\n\nProvider reference (supplier schema): `{\"default\":30,\"format\":\"int64\",\"minimum\":30,\"type\":\"integer\"}`." - added
Input schema / properties / woeid / descriptionAdded value: +"The WOEID of the location. Example: 2418046.\n\nProvider reference (supplier schema): `{\"format\":\"int64\",\"type\":\"integer\"}`."
- Changed
get_twitter_tweet_advanced_search3 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"The cursor to paginate through the results. First page is empty." - added
Input schema / properties / query / descriptionAdded value: +"The query to search for." - added
Input schema / properties / queryType / descriptionAdded value: +"The query type to search for.\n\nProvider reference (supplier schema): `{\"default\":\"Latest\",\"enum\":[\"Latest\",\"Top\"],\"type\":\"string\"}`."
- Changed
get_twitter_tweet_replies3 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Cursor for pagination." - added
Input schema / properties / queryTypeAdded value: +{ + "description": "Sort order for replies. Default is Relevance.\n\nProvider reference (supplier schema): `{\"default\":\"Relevance\",\"type\":\"string\"}`.", + "enum": [ + "Latest", + "Likes", + "Relevance" + ], + "type": "string" +} - added
Input schema / properties / tweetId / descriptionAdded value: +"The tweet ID to get replies for."
- Changed
get_twitter_user_followers3 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Cursor for pagination" - added
Input schema / properties / pageSizeAdded value: +{ + "description": "Number of followers per page\n\nProvider reference (supplier schema): `{\"default\":200,\"type\":\"integer\"}`.", + "maximum": 200, + "minimum": 20, + "type": "integer" +} - added
Input schema / properties / userName / descriptionAdded value: +"Screen name of the user"
- Changed
get_twitter_user_info1 field changed- added
Input schema / properties / userName / descriptionAdded value: +"The screen name of the user"
- Changed
get_twitter_user_last_tweets4 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Cursor for pagination" - added
Input schema / properties / includeReplies / descriptionAdded value: +"Include replies in the results\n\nProvider reference (supplier schema): `{\"default\":false,\"type\":\"boolean\"}`." - added
Input schema / properties / userId / descriptionAdded value: +"User ID of the user" - added
Input schema / properties / userName / descriptionAdded value: +"Screen name of the user"
- Changed
get_twitter_user_mentions4 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "The cursor to paginate through the results. First page is empty.", + "type": "string" +} - added
Input schema / properties / sinceTimeAdded value: +{ + "maximum": 9223372036854776000, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / untilTimeAdded value: +{ + "maximum": 9223372036854776000, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / userName / descriptionAdded value: +"The user screen name to get mentions for."
- Changed
get_twitter_user_search2 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "The cursor to paginate through the results. First page is empty.", + "type": "string" +} - added
Input schema / properties / query / descriptionAdded value: +"The keyword to search."
- Changed
post_apollo_mixed_companies_search18 fields changed- removed
Input schema / properties / latest_funding_amount_rangeRemoved value: -{ - "properties": { - "max": { - "description": "The maximium amount the company received with its most recent funding round. Use this parameter in combination with latest_funding_amount_range[min] to set a monetary range for the company's most recent funding round. Do not enter currency symbols, commas, or decimal points in the figure. Examples: 5000000; 15000000", - "type": "integer" - }, - "min": { - "description": "The minimum amount the company received with its most recent funding round. Use this parameter in combination with latest_funding_amount_range[max] to set a monetary range for the company's most recent funding round. Do not enter currency symbols, commas, or decimal points in the figure. Examples: 5000000; 15000000", - "type": "integer" - } - }, - "type": "object" -} - added
Input schema / properties / latest_funding_amount_range_maxAdded value: +{ + "description": "The maximium amount the company received with its most recent funding round. Use this parameter in combination with latest_funding_amount_range[min] to set a monetary range for the company's most recent funding round. Do not enter currency symbols, commas, or decimal points in the figure. Examples: 5000000; 15000000", + "type": "integer" +} - added
Input schema / properties / latest_funding_amount_range_minAdded value: +{ + "description": "The minimum amount the company received with its most recent funding round. Use this parameter in combination with latest_funding_amount_range[max] to set a monetary range for the company's most recent funding round. Do not enter currency symbols, commas, or decimal points in the figure. Examples: 5000000; 15000000", + "type": "integer" +} - removed
Input schema / properties / latest_funding_date_rangeRemoved value: -{ - "properties": { - "max": { - "description": "The latest date when the company received its most recent funding round. Use this parameter in combination with latest_funding_date_range[min] to set a date range for when the company received its most recent funding round. Example: 2025-09-25", - "type": "string" - }, - "min": { - "description": "The earliest date when the company received its most recent funding round. Use this parameter in combination with latest_funding_date_range[max] to set a date range for when the company received its most recent funding round. Example: 2025-07-25", - "type": "string" - } - }, - "type": "object" -} - added
Input schema / properties / latest_funding_date_range_maxAdded value: +{ + "description": "The latest date when the company received its most recent funding round. Use this parameter in combination with latest_funding_date_range[min] to set a date range for when the company received its most recent funding round. Example: 2025-09-25", + "type": "string" +} - added
Input schema / properties / latest_funding_date_range_minAdded value: +{ + "description": "The earliest date when the company received its most recent funding round. Use this parameter in combination with latest_funding_date_range[max] to set a date range for when the company received its most recent funding round. Example: 2025-07-25", + "type": "string" +} - removed
Input schema / properties / organization_job_posted_at_rangeRemoved value: -{ - "properties": { - "max": { - "description": "The latest date when jobs were posted by the company. Use this parameter in combination with organization_job_posted_at_range[min] to set a date range for when jobs posted. Example: 2025-09-25", - "type": "string" - }, - "min": { - "description": "The earliest date when jobs were posted by the company. Use this parameter in combination with organization_job_posted_at_range[max] to set a date range for when jobs posted. Example: 2025-07-25", - "type": "string" - } - }, - "type": "object" -} - added
Input schema / properties / organization_job_posted_at_range_maxAdded value: +{ + "description": "The latest date when jobs were posted by the company. Use this parameter in combination with organization_job_posted_at_range[min] to set a date range for when jobs posted. Example: 2025-09-25", + "type": "string" +} - added
Input schema / properties / organization_job_posted_at_range_minAdded value: +{ + "description": "The earliest date when jobs were posted by the company. Use this parameter in combination with organization_job_posted_at_range[max] to set a date range for when jobs posted. Example: 2025-07-25", + "type": "string" +} - removed
Input schema / properties / organization_num_jobs_rangeRemoved value: -{ - "properties": { - "max": { - "description": "The maximum number of job postings active at the company. Use this parameter in combination with organization_num_jobs_range[min] to set a job postings range. Examples: 50; 500", - "type": "integer" - }, - "min": { - "description": "The minimum number of job postings active at the company. Use this parameter in combination with organization_num_jobs_range[max] to set a job postings range. Examples: 50; 500", - "type": "integer" - } - }, - "type": "object" -} - added
Input schema / properties / organization_num_jobs_range_maxAdded value: +{ + "description": "The maximum number of job postings active at the company. Use this parameter in combination with organization_num_jobs_range[min] to set a job postings range. Examples: 50; 500", + "type": "integer" +} - added
Input schema / properties / organization_num_jobs_range_minAdded value: +{ + "description": "The minimum number of job postings active at the company. Use this parameter in combination with organization_num_jobs_range[max] to set a job postings range. Examples: 50; 500", + "type": "integer" +} - removed
Input schema / properties / revenue_rangeRemoved value: -{ - "properties": { - "max": { - "description": "Search for organizations based on their revenue. Use this parameter to set the upper range of organization revenue. Use the revenue_range[min] parameter to set the lower range of revenue. Do not enter currency symbols, commas, or decimal points in the figure. Example: 50000000", - "type": "integer" - }, - "min": { - "description": "Search for organizations based on their revenue. Use this parameter to set the lower range of organization revenue. Use the revenue_range[max] parameter to set the upper range of revenue. Do not enter currency symbols, commas, or decimal points in the figure. Example: 300000", - "type": "integer" - } - }, - "type": "object" -} - added
Input schema / properties / revenue_range_maxAdded value: +{ + "description": "Search for organizations based on their revenue. Use this parameter to set the upper range of organization revenue. Use the revenue_range[min] parameter to set the lower range of revenue. Do not enter currency symbols, commas, or decimal points in the figure. Example: 50000000", + "type": "integer" +} - added
Input schema / properties / revenue_range_minAdded value: +{ + "description": "Search for organizations based on their revenue. Use this parameter to set the lower range of organization revenue. Use the revenue_range[max] parameter to set the upper range of revenue. Do not enter currency symbols, commas, or decimal points in the figure. Example: 300000", + "type": "integer" +} - removed
Input schema / properties / total_funding_rangeRemoved value: -{ - "properties": { - "max": { - "description": "The maximum amount the company received during all of its funding rounds combined. Use this parameter in combination with total_funding_range[min] to set a monetary range for all of the company's funding rounds. Do not enter currency symbols, commas, or decimal points in the figure. Examples: 50000000; 350000000", - "type": "integer" - }, - "min": { - "description": "The minimum amount the company received during all of its funding rounds combined. Use this parameter in combination with total_funding_range[max] to set a monetary range for all of the company's funding rounds. Do not enter currency symbols, commas, or decimal points in the figure. Examples: 50000000; 350000000", - "type": "integer" - } - }, - "type": "object" -} - added
Input schema / properties / total_funding_range_maxAdded value: +{ + "description": "The maximum amount the company received during all of its funding rounds combined. Use this parameter in combination with total_funding_range[min] to set a monetary range for all of the company's funding rounds. Do not enter currency symbols, commas, or decimal points in the figure. Examples: 50000000; 350000000", + "type": "integer" +} - added
Input schema / properties / total_funding_range_minAdded value: +{ + "description": "The minimum amount the company received during all of its funding rounds combined. Use this parameter in combination with total_funding_range[max] to set a monetary range for all of the company's funding rounds. Do not enter currency symbols, commas, or decimal points in the figure. Examples: 50000000; 350000000", + "type": "integer" +}
- Changed
post_apollo_mixed_people_api_search9 fields changed- removed
Input schema / properties / organization_job_posted_at_rangeRemoved value: -{ - "properties": { - "max": { - "description": "The latest date when jobs were posted by the person's current employer. Use this parameter in combination with organization_job_posted_at_range[min] to set a date range for when jobs posted. Example: 2025-09-25", - "type": "string" - }, - "min": { - "description": "The earliest date when jobs were posted by the person's current employer. Use this parameter in combination with organization_job_posted_at_range[max] to set a date range for when jobs posted. Example: 2025-07-25", - "type": "string" - } - }, - "type": "object" -} - added
Input schema / properties / organization_job_posted_at_range_maxAdded value: +{ + "description": "The latest date when jobs were posted by the person's current employer. Use this parameter in combination with organization_job_posted_at_range[min] to set a date range for when jobs posted. Example: 2025-09-25", + "type": "string" +} - added
Input schema / properties / organization_job_posted_at_range_minAdded value: +{ + "description": "The earliest date when jobs were posted by the person's current employer. Use this parameter in combination with organization_job_posted_at_range[max] to set a date range for when jobs posted. Example: 2025-07-25", + "type": "string" +} - removed
Input schema / properties / organization_num_jobs_rangeRemoved value: -{ - "properties": { - "max": { - "description": "The maximum number of job postings active at the person's current employer. Use this parameter in combination with organization_num_jobs_range[min] to set a job postings range. Examples: 50; 500", - "type": "integer" - }, - "min": { - "description": "The minimum number of job postings active at the person's current employer. Use this parameter in combination with organization_num_jobs_range[max] to set a job postings range. Examples: 50; 500", - "type": "integer" - } - }, - "type": "object" -} - added
Input schema / properties / organization_num_jobs_range_maxAdded value: +{ + "description": "The maximum number of job postings active at the person's current employer. Use this parameter in combination with organization_num_jobs_range[min] to set a job postings range. Examples: 50; 500", + "type": "integer" +} - added
Input schema / properties / organization_num_jobs_range_minAdded value: +{ + "description": "The minimum number of job postings active at the person's current employer. Use this parameter in combination with organization_num_jobs_range[max] to set a job postings range. Examples: 50; 500", + "type": "integer" +} - removed
Input schema / properties / revenue_rangeRemoved value: -{ - "properties": { - "max": { - "description": "The maximum revenue the person's current employer generates. Use this parameter in combination with revenue_range[min] to set a revenue range. Do not enter currency symbols, commas, or decimal points in the figure. Examples: 500000; 1500000", - "type": "integer" - }, - "min": { - "description": "The minimum revenue the person's current employer generates. Use this parameter in combination with revenue_range[max] to set a revenue range. Do not enter currency symbols, commas, or decimal points in the figure. Examples: 500000; 1500000", - "type": "integer" - } - }, - "type": "object" -} - added
Input schema / properties / revenue_range_maxAdded value: +{ + "description": "The maximum revenue the person's current employer generates. Use this parameter in combination with revenue_range[min] to set a revenue range. Do not enter currency symbols, commas, or decimal points in the figure. Examples: 500000; 1500000", + "type": "integer" +} - added
Input schema / properties / revenue_range_minAdded value: +{ + "description": "The minimum revenue the person's current employer generates. Use this parameter in combination with revenue_range[max] to set a revenue range. Do not enter currency symbols, commas, or decimal points in the figure. Examples: 500000; 1500000", + "type": "integer" +}
- Changed
post_apollo_news_articles_search3 fields changed- removed
Input schema / properties / published_atRemoved value: -{ - "properties": { - "max": { - "description": "Set the upper bound of the date range you want to search. Use this parameter in combination with the published_at[min] parameter. This date should fall after the published_at[min] date. The date should be formatted as YYYY-MM-DD. Example: 2025-05-15", - "type": "string" - }, - "min": { - "description": "Set the lower bound of the date range you want to search. Use this parameter in combination with the published_at[max] parameter. This date should fall before the published_at[max] date. The date should be formatted as YYYY-MM-DD. Example: 2025-02-15", - "type": "string" - } - }, - "type": "object" -} - added
Input schema / properties / published_at_maxAdded value: +{ + "description": "Set the upper bound of the date range you want to search. Use this parameter in combination with the published_at[min] parameter. This date should fall after the published_at[min] date. The date should be formatted as YYYY-MM-DD. Example: 2025-05-15", + "type": "string" +} - added
Input schema / properties / published_at_minAdded value: +{ + "description": "Set the lower bound of the date range you want to search. Use this parameter in combination with the published_at[max] parameter. This date should fall before the published_at[max] date. The date should be formatted as YYYY-MM-DD. Example: 2025-02-15", + "type": "string" +}
- Changed
post_apollo_people_bulk_match8 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "details": { + "description": "Provide info for each person you want to enrich as an object within this array. Add up to 10 people.", + "items": { + "description": "One person to enrich. Give whatever identifiers you have — the more, the likelier the match.", + "properties": { + "domain": { + "description": "Domain of the person's employer, without www. Example: apollo.io", + "type": "string" + }, + "email": { + "description": "Email address of the person.", + "type": "string" + }, + "first_name": { + "description": "First name, used with last_name. Example: tim", + "type": "string" + }, + "hashed_email": { + "description": "MD5 or SHA-256 hash of the email address.", + "type": "string" + }, + "id": { + "description": "Apollo person id, e.g. from a people search.", + "type": "string" + }, + "last_name": { + "description": "Last name, used with first_name. Example: zheng", + "type": "string" + }, + "linkedin_url": { + "description": "LinkedIn profile URL of the person.", + "type": "string" + }, + "name": { + "description": "Full name, e.g. \"tim zheng\"; replaces first_name + last_name.", + "type": "string" + }, + "organization_name": { + "description": "Name of the person's employer. Example: apollo", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "reveal_personal_emails": { + "description": "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.", + "type": "boolean" + } + }, + "required": [ + "details" + ], + "type": "object" +} - removed
Input schema / properties / detailsRemoved value: -{ - "description": "Provide info for each person you want to enrich as an object within this array. Add up to 10 people.", - "items": { - "description": "One person to enrich. Give whatever identifiers you have — the more, the likelier the match.", - "properties": { - "domain": { - "description": "Domain of the person's employer, without www. Example: apollo.io", - "type": "string" - }, - "email": { - "description": "Email address of the person.", - "type": "string" - }, - "first_name": { - "description": "First name, used with last_name. Example: tim", - "type": "string" - }, - "hashed_email": { - "description": "MD5 or SHA-256 hash of the email address.", - "type": "string" - }, - "id": { - "description": "Apollo person id, e.g. from a people search.", - "type": "string" - }, - "last_name": { - "description": "Last name, used with first_name. Example: zheng", - "type": "string" - }, - "linkedin_url": { - "description": "LinkedIn profile URL of the person.", - "type": "string" - }, - "name": { - "description": "Full name, e.g. \"tim zheng\"; replaces first_name + last_name.", - "type": "string" - }, - "organization_name": { - "description": "Name of the person's employer. Example: apollo", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" -} - added
Input schema / properties / reveal_phone_number / descriptionAdded value: +"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." - added
Input schema / properties / run_waterfall_email / descriptionAdded value: +"Set to true to enable email waterfall enrichment" - added
Input schema / properties / run_waterfall_phone / descriptionAdded value: +"Set to true to enable phone waterfall enrichment" - added
Input schema / properties / webhook_url / descriptionAdded value: +"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" - changed
Input schema / requiredPrevious value: -[ - "details" -]New value: +[ + "body" +]
- Changed
post_apollo_people_match7 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / bodyAdded value: +{ + "anyOf": [ + { + "properties": { + "first_name": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "first_name" + ] + }, + { + "properties": { + "last_name": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "last_name" + ] + }, + { + "properties": { + "name": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "name" + ] + }, + { + "properties": { + "email": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "email" + ] + }, + { + "properties": { + "hashed_email": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "hashed_email" + ] + }, + { + "properties": { + "organization_name": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "organization_name" + ] + }, + { + "properties": { + "domain": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "domain" + ] + }, + { + "properties": { + "id": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "id" + ] + }, + { + "properties": { + "linkedin_url": { + "minLength": 1, + "type": "string" + } + }, + "required": [ + "linkedin_url" + ] + } + ], + "description": "Identify one person. Give at least one identifier; the more you supply, the likelier the match.", + "minProperties": 1, + "properties": { + "domain": { + "description": "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", + "type": "string" + }, + "email": { + "description": "The email address of the person. Example: example@email.com", + "type": "string" + }, + "first_name": { + "description": "The first name of the person. This is typically used in combination with the last_name parameter. Example: tim", + "type": "string" + }, + "hashed_email": { + "description": "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)", + "type": "string" + }, + "id": { + "description": "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", + "type": "string" + }, + "last_name": { + "description": "The last name of the person. This is typically used in combination with the first_name parameter. Example: zheng", + "type": "string" + }, + "linkedin_url": { + "description": "The URL for the person's LinkedIn profile. Example: http://www.linkedin.com/in/tim-zheng-677ba010", + "type": "string" + }, + "name": { + "description": "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", + "type": "string" + }, + "organization_name": { + "description": "The name of the person's employer. This can be the current employer or a previous employer. Example: apollo", + "type": "string" + }, + "reveal_personal_emails": { + "description": "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.", + "type": "boolean" + } + }, + "type": "object" +} - added
Input schema / properties / reveal_phone_number / descriptionAdded value: +"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." - added
Input schema / properties / run_waterfall_email / descriptionAdded value: +"Set to true to enable email waterfall enrichment" - added
Input schema / properties / run_waterfall_phone / descriptionAdded value: +"Set to true to enable phone waterfall enrichment" - added
Input schema / properties / webhook_url / descriptionAdded value: +"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" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "body" +]
- Changed
post_dataforseo_serp_youtube_organic_live1 field changed- changed
Input schema / properties / body / items / oneOfPrevious value: -[ - { - "example": [ - { - "keyword": "audi", - "language_code": "en", - "location_code": 2840 - } - ], - "properties": { - "block_depth": { - "description": "parsing depth\noptional field\nnumber of blocks of results in SERP\ndefault value: 20\nmax value: 200\nNote: your account will be billed per each SERP containing up to 20 results;\nthus, setting a block depth above 20 may result in additional charges if the search engine returns more than 20 results;\nif the specified block depth is higher than the number of results in the response, the difference will be refunded automatically to your account balance", - "type": [ - "integer", - "null" - ] - }, - "device": { - "description": "device type\noptional field\nreturn results for a specific device type\navailable values: desktop, mobile", - "type": [ - "string", - "null" - ] - }, - "keyword": { - "description": "keyword\nrequired field\nyou can specify up to 700 characters in the keyword field\nall %## will be decoded (plus character ‘+’ will be decoded to a space character)\nif you need to use the “%” character for your keyword, please specify it as “%25”;\nif you need to use the “+” character for your keyword, please specify it as “%2B”;\nlearn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article", - "type": "string" - }, - "language_code": { - "description": "search engine language code\nrequired field if you don't specify language_name\nif you use this field, you don't need to specify language_name\nyou can receive the list of available languages of the search engine with their language_code by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/languages\nexample:\nen", - "type": [ - "string", - "null" - ] - }, - "language_name": { - "description": "full name of search engine language\nrequired field if you don't specify language_code\nif you use this field, you don't need to specify language_code\nyou can receive the list of available languages of the search engine with their language_name by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/languages\nexample:\nEnglish", - "type": [ - "string", - "null" - ] - }, - "location_code": { - "description": "search engine location code\nrequired field if you don't specify location_name \nif you use this field, you don't need to specify location_name\nyou can receive the list of available locations of the search engines with their location_code by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/locations\nexample:\n2840", - "type": [ - "integer", - "null" - ] - }, - "location_name": { - "description": "full name of search engine location\nrequired field if you don't specify location_code\nif you use this field, you don't need to specify location_code\nyou can receive the list of available locations of the search engine with their location_name by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/locations\nexample:\nUnited States", - "type": [ - "string", - "null" - ] - }, - "os": { - "description": "device operating system\noptional field\nif you specify desktop in the device field, choose from the following values: windows, macos\ndefault value: windows\nif you specify mobile in the device field, choose from the following values: android, ios\ndefault value: android", - "type": [ - "string", - "null" - ] - }, - "search_param": { - "description": "additional parameters of the search query\noptional field\nexample:\nsp=EgIQAg%253D%253D", - "type": [ - "string", - "null" - ] - }, - "tag": { - "description": "user-defined task identifier\noptional field\nthe character limit is 255\nyou can use this parameter to identify the task and match it with the result\nyou will find the specified tag value in the data object of the response", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } -]New value: +[ + { + "properties": { + "block_depth": { + "description": "parsing depth\noptional field\nnumber of blocks of results in SERP\ndefault value: 20\nmax value: 200\nNote: your account will be billed per each SERP containing up to 20 results;\nthus, setting a block depth above 20 may result in additional charges if the search engine returns more than 20 results;\nif the specified block depth is higher than the number of results in the response, the difference will be refunded automatically to your account balance", + "type": [ + "integer", + "null" + ] + }, + "device": { + "description": "device type\noptional field\nreturn results for a specific device type\navailable values: desktop, mobile", + "type": [ + "string", + "null" + ] + }, + "keyword": { + "description": "keyword\nrequired field\nyou can specify up to 700 characters in the keyword field\nall %## will be decoded (plus character ‘+’ will be decoded to a space character)\nif you need to use the “%” character for your keyword, please specify it as “%25”;\nif you need to use the “+” character for your keyword, please specify it as “%2B”;\nlearn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article", + "type": "string" + }, + "language_code": { + "description": "search engine language code\nrequired field if you don't specify language_name\nif you use this field, you don't need to specify language_name\nyou can receive the list of available languages of the search engine with their language_code by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/languages\nexample:\nen", + "type": [ + "string", + "null" + ] + }, + "language_name": { + "description": "full name of search engine language\nrequired field if you don't specify language_code\nif you use this field, you don't need to specify language_code\nyou can receive the list of available languages of the search engine with their language_name by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/languages\nexample:\nEnglish", + "type": [ + "string", + "null" + ] + }, + "location_code": { + "description": "search engine location code\nrequired field if you don't specify location_name \nif you use this field, you don't need to specify location_name\nyou can receive the list of available locations of the search engines with their location_code by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/locations\nexample:\n2840", + "type": [ + "integer", + "null" + ] + }, + "location_name": { + "description": "full name of search engine location\nrequired field if you don't specify location_code\nif you use this field, you don't need to specify location_code\nyou can receive the list of available locations of the search engine with their location_name by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/locations\nexample:\nUnited States", + "type": [ + "string", + "null" + ] + }, + "os": { + "description": "device operating system\noptional field\nif you specify desktop in the device field, choose from the following values: windows, macos\ndefault value: windows\nif you specify mobile in the device field, choose from the following values: android, ios\ndefault value: android", + "type": [ + "string", + "null" + ] + }, + "search_param": { + "description": "additional parameters of the search query\noptional field\nexample:\nsp=EgIQAg%253D%253D", + "type": [ + "string", + "null" + ] + }, + "tag": { + "description": "user-defined task identifier\noptional field\nthe character limit is 255\nyou can use this parameter to identify the task and match it with the result\nyou will find the specified tag value in the data object of the response", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } +]
- Changed
post_waveinflu_email_lookup4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "profile_url": { + "description": "Instagram, TikTok, or YouTube creator profile URL.", + "example": "https://www.instagram.com/onkimia/", + "type": "string" + } + }, + "type": "object" +} - removed
Input schema / properties / profile_urlRemoved value: -{ - "type": "string" -} - changed
Input schema / requiredPrevious value: -[]New value: +[ + "body" +]
- Changed
post_waveinflu_similar_creators7 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "filters": { + "description": "Optional filters applied before matching. All fields are optional.", + "properties": { + "creatorTypes": { + "description": "Creator account types, e.g. [\"individual\", \"brand\"].", + "items": { + "type": "string" + }, + "type": "array" + }, + "ethnicities": { + "description": "Inferred creator ethnicities.", + "items": { + "type": "string" + }, + "type": "array" + }, + "faceVisibilities": { + "description": "Face-visibility classifications, e.g. [\"clear_face\", \"mixed\", \"no_face\"].", + "items": { + "type": "string" + }, + "type": "array" + }, + "genders": { + "description": "Inferred creator genders, e.g. [\"female\", \"male\"].", + "items": { + "type": "string" + }, + "type": "array" + }, + "languages": { + "description": "Creator languages, e.g. [\"en\", \"ja\", \"zh-cn\"].", + "items": { + "type": "string" + }, + "type": "array" + }, + "maxFollowers": { + "description": "Maximum follower / subscriber count.", + "type": "number" + }, + "maxPlayCount": { + "description": "Maximum play / view count, measured by `playCountMetric`.", + "type": "number" + }, + "minFollowers": { + "description": "Minimum follower / subscriber count.", + "type": "number" + }, + "minPlayCount": { + "description": "Minimum play / view count, measured by `playCountMetric`.", + "type": "number" + }, + "playCountMetric": { + "description": "Whether `minPlayCount` / `maxPlayCount` are compared against the median or the average play count.", + "enum": [ + "median", + "average" + ], + "type": "string" + }, + "regions": { + "description": "Creator regions (ISO country codes), e.g. [\"US\", \"GB\", \"JP\"].", + "items": { + "type": "string" + }, + "type": "array" + }, + "workspaceDeduplicationEnabled": { + "description": "When true, creators already saved in your workspace are excluded from the results.", + "type": "boolean" + } + }, + "type": "object" + }, + "limit": { + "default": 25, + "description": "Maximum number of creators to return. Default 25, range 1–100. Caps the billed count.", + "example": 10, + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + "platform": { + "default": "youtube", + "description": "Target platform.", + "enum": [ + "instagram", + "tiktok", + "youtube" + ], + "example": "instagram", + "type": "string" + }, + "target_account": { + "description": "Seed account: a creator handle (with or without @) or profile URL to find similar creators for.", + "example": "@onkimia", + "type": "string" + } + }, + "required": [ + "target_account" + ], + "type": "object" +} - removed
Input schema / properties / filtersRemoved value: -{ - "description": "Optional filters applied before matching. All fields are optional.", - "properties": { - "creatorTypes": { - "description": "Creator account types, e.g. [\"individual\", \"brand\"].", - "items": { - "type": "string" - }, - "type": "array" - }, - "ethnicities": { - "description": "Inferred creator ethnicities.", - "items": { - "type": "string" - }, - "type": "array" - }, - "faceVisibilities": { - "description": "Face-visibility classifications, e.g. [\"clear_face\", \"mixed\", \"no_face\"].", - "items": { - "type": "string" - }, - "type": "array" - }, - "genders": { - "description": "Inferred creator genders, e.g. [\"female\", \"male\"].", - "items": { - "type": "string" - }, - "type": "array" - }, - "languages": { - "description": "Creator languages, e.g. [\"en\", \"ja\", \"zh-cn\"].", - "items": { - "type": "string" - }, - "type": "array" - }, - "maxFollowers": { - "description": "Maximum follower / subscriber count.", - "type": "number" - }, - "maxPlayCount": { - "description": "Maximum play / view count, measured by `playCountMetric`.", - "type": "number" - }, - "minFollowers": { - "description": "Minimum follower / subscriber count.", - "type": "number" - }, - "minPlayCount": { - "description": "Minimum play / view count, measured by `playCountMetric`.", - "type": "number" - }, - "playCountMetric": { - "description": "Whether `minPlayCount` / `maxPlayCount` are compared against the median or the average play count.", - "enum": [ - "median", - "average" - ], - "type": "string" - }, - "regions": { - "description": "Creator regions (ISO country codes), e.g. [\"US\", \"GB\", \"JP\"].", - "items": { - "type": "string" - }, - "type": "array" - }, - "workspaceDeduplicationEnabled": { - "description": "When true, creators already saved in your workspace are excluded from the results.", - "type": "boolean" - } - }, - "type": "object" -} - removed
Input schema / properties / limitRemoved value: -{ - "default": 25, - "maximum": 100, - "minimum": 1, - "type": "integer" -} - removed
Input schema / properties / platformRemoved value: -{ - "default": "youtube", - "enum": [ - "instagram", - "tiktok", - "youtube" - ], - "type": "string" -} - removed
Input schema / properties / target_accountRemoved 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: -[ - "target_account" -]New value: +[ + "body" +]
1 tool update
- Changed
post_dataforseo_serp_youtube_organic_live2 fields changed- removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "keyword": "audi", - "language_code": "en", - "location_code": 2840 - } - ], - "properties": { - "block_depth": { - "description": "parsing depth\noptional field\nnumber of blocks of results in SERP\ndefault value: 20\nmax value: 200\nNote: your account will be billed per each SERP containing up to 20 results;\nthus, setting a block depth above 20 may result in additional charges if the search engine returns more than 20 results;\nif the specified block depth is higher than the number of results in the response, the difference will be refunded automatically to your account balance", - "type": [ - "integer", - "null" - ] - }, - "device": { - "description": "device type\noptional field\nreturn results for a specific device type\navailable values: desktop, mobile", - "type": [ - "string", - "null" - ] - }, - "keyword": { - "description": "keyword\nrequired field\nyou can specify up to 700 characters in the keyword field\nall %## will be decoded (plus character ‘+’ will be decoded to a space character)\nif you need to use the “%” character for your keyword, please specify it as “%25”;\nif you need to use the “+” character for your keyword, please specify it as “%2B”;\nlearn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article", - "type": "string" - }, - "language_code": { - "description": "search engine language code\nrequired field if you don't specify language_name\nif you use this field, you don't need to specify language_name\nyou can receive the list of available languages of the search engine with their language_code by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/languages\nexample:\nen", - "type": [ - "string", - "null" - ] - }, - "language_name": { - "description": "full name of search engine language\nrequired field if you don't specify language_code\nif you use this field, you don't need to specify language_code\nyou can receive the list of available languages of the search engine with their language_name by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/languages\nexample:\nEnglish", - "type": [ - "string", - "null" - ] - }, - "location_code": { - "description": "search engine location code\nrequired field if you don't specify location_name \nif you use this field, you don't need to specify location_name\nyou can receive the list of available locations of the search engines with their location_code by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/locations\nexample:\n2840", - "type": [ - "integer", - "null" - ] - }, - "location_name": { - "description": "full name of search engine location\nrequired field if you don't specify location_code\nif you use this field, you don't need to specify location_code\nyou can receive the list of available locations of the search engine with their location_name by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/locations\nexample:\nUnited States", - "type": [ - "string", - "null" - ] - }, - "os": { - "description": "device operating system\noptional field\nif you specify desktop in the device field, choose from the following values: windows, macos\ndefault value: windows\nif you specify mobile in the device field, choose from the following values: android, ios\ndefault value: android", - "type": [ - "string", - "null" - ] - }, - "search_param": { - "description": "additional parameters of the search query\noptional field\nexample:\nsp=EgIQAg%253D%253D", - "type": [ - "string", - "null" - ] - }, - "tag": { - "description": "user-defined task identifier\noptional field\nthe character limit is 255\nyou can use this parameter to identify the task and match it with the result\nyou will find the specified tag value in the data object of the response", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / oneOfAdded value: +[ + { + "example": [ + { + "keyword": "audi", + "language_code": "en", + "location_code": 2840 + } + ], + "properties": { + "block_depth": { + "description": "parsing depth\noptional field\nnumber of blocks of results in SERP\ndefault value: 20\nmax value: 200\nNote: your account will be billed per each SERP containing up to 20 results;\nthus, setting a block depth above 20 may result in additional charges if the search engine returns more than 20 results;\nif the specified block depth is higher than the number of results in the response, the difference will be refunded automatically to your account balance", + "type": [ + "integer", + "null" + ] + }, + "device": { + "description": "device type\noptional field\nreturn results for a specific device type\navailable values: desktop, mobile", + "type": [ + "string", + "null" + ] + }, + "keyword": { + "description": "keyword\nrequired field\nyou can specify up to 700 characters in the keyword field\nall %## will be decoded (plus character ‘+’ will be decoded to a space character)\nif you need to use the “%” character for your keyword, please specify it as “%25”;\nif you need to use the “+” character for your keyword, please specify it as “%2B”;\nlearn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article", + "type": "string" + }, + "language_code": { + "description": "search engine language code\nrequired field if you don't specify language_name\nif you use this field, you don't need to specify language_name\nyou can receive the list of available languages of the search engine with their language_code by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/languages\nexample:\nen", + "type": [ + "string", + "null" + ] + }, + "language_name": { + "description": "full name of search engine language\nrequired field if you don't specify language_code\nif you use this field, you don't need to specify language_code\nyou can receive the list of available languages of the search engine with their language_name by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/languages\nexample:\nEnglish", + "type": [ + "string", + "null" + ] + }, + "location_code": { + "description": "search engine location code\nrequired field if you don't specify location_name \nif you use this field, you don't need to specify location_name\nyou can receive the list of available locations of the search engines with their location_code by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/locations\nexample:\n2840", + "type": [ + "integer", + "null" + ] + }, + "location_name": { + "description": "full name of search engine location\nrequired field if you don't specify location_code\nif you use this field, you don't need to specify location_code\nyou can receive the list of available locations of the search engine with their location_name by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/locations\nexample:\nUnited States", + "type": [ + "string", + "null" + ] + }, + "os": { + "description": "device operating system\noptional field\nif you specify desktop in the device field, choose from the following values: windows, macos\ndefault value: windows\nif you specify mobile in the device field, choose from the following values: android, ios\ndefault value: android", + "type": [ + "string", + "null" + ] + }, + "search_param": { + "description": "additional parameters of the search query\noptional field\nexample:\nsp=EgIQAg%253D%253D", + "type": [ + "string", + "null" + ] + }, + "tag": { + "description": "user-defined task identifier\noptional field\nthe character limit is 255\nyou can use this parameter to identify the task and match it with the result\nyou will find the specified tag value in the data object of the response", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } +]
40 tool updates
- Added
batch_get_schema - Added
batch_quote - Changed
batch_use18 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / calls / descriptionRemoved value: -"Up to 20 items of {call_id, operation_id, arguments}; steps at the same execution_level of a plan go in one batch" - added
Input schema / properties / calls / items / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - changed
Input schema / properties / calls / items / additionalPropertiesPrevious value: -trueNew value: +false - added
Input schema / properties / calls / items / propertiesAdded value: +{ + "arguments": { + "additionalProperties": true, + "description": "Strictly schema-compliant arguments using the exact field names and types from this tool's arguments_schema.", + "type": "object" + }, + "call_id": { + "description": "Caller-chosen identifier unique within this batch.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "tool": { + "description": "Exact tool name returned by search or batch_get_schema. Never invent a name.", + "minLength": 1, + "type": "string" + } +} - added
Input schema / properties / calls / items / requiredAdded value: +[ + "call_id", + "tool", + "arguments" +] - added
Input schema / properties / calls / maxItemsAdded value: +20 - added
Input schema / properties / calls / minItemsAdded value: +1 - removed
Input schema / properties / max_price_usdRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Per-call price cap applied to every item" -} - removed
Input schema / properties / search_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / search_id / defaultRemoved value: -null - changed
Input schema / properties / search_id / descriptionPrevious value: -"search_id from the search that found these operations"New value: +"Optional search correlation identifier returned by search." - added
Input schema / properties / search_id / typeAdded value: +"string" - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Output schema / $defsAdded value: +{ + "jsonValue": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/jsonValue" + }, + "type": "object" + }, + { + "items": { + "$ref": "#/$defs/jsonValue" + }, + "type": "array" + }, + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "JSON value returned by the upstream tool." + } +} - added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / propertiesAdded value: +{ + "batch_id": { + "type": "string" + }, + "error_count": { + "minimum": 0, + "type": "integer" + }, + "next_steps_guidance": { + "description": "Deterministic next-step instructions derived from this result. Not an authorization grant.", + "items": { + "type": "string" + }, + "type": "array" + }, + "results": { + "items": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "call_id": { + "type": "string" + }, + "customer_cost_micros_usd": { + "description": "Actual customer charge settled by AIsaServices, in micro-USD. Omitted when the upstream response does not report it.", + "minimum": 0, + "type": "integer" + }, + "data": { + "$ref": "#/$defs/jsonValue" + }, + "error": { + "anyOf": [ + { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "status": { + "type": "integer" + }, + "type": { + "enum": [ + "validation", + "authentication", + "payment", + "permission", + "rate_limit", + "upstream", + "timeout", + "internal" + ], + "type": "string" + } + }, + "required": [ + "type", + "status", + "retryable" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "request_id": { + "type": "string" + }, + "successful": { + "type": "boolean" + }, + "tool": { + "type": "string" + }, + "upstream_status": { + "description": "HTTP status returned by AIsaServices when a request was dispatched.", + "type": "integer" + } + }, + "required": [ + "call_id", + "tool", + "successful", + "request_id" + ], + "type": "object" + }, + "type": "array" + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" + }, + "success_count": { + "minimum": 0, + "type": "integer" + }, + "total_count": { + "minimum": 1, + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "session_id", + "batch_id", + "total_count", + "success_count", + "error_count", + "results", + "next_steps_guidance" +]
- Changed
get_ahrefs_domain_rating2 fields changed- added
Input schema / properties / target / exampleAdded value: +"ahrefs.com" - changed
Input schema / requiredPrevious value: -[ - "target", - "date" -]New value: +[ + "date", + "target" +]
- Changed
get_details13 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / argumentsRemoved value: -{ - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "The arguments the operation would be called with, for a price that reflects them. Keyed by operation_id for a batch, or passed flat for a single operation_id. Routes whose required parameters are validated before pricing have no price without them." -} - added
Input schema / properties / include_arguments_schemaAdded value: +{ + "default": true, + "description": "Return the complete arguments_schema. Defaults to true.", + "type": "boolean" +} - changed
Input schema / properties / include_documentation / descriptionPrevious value: -"Include the complete native public OpenAPI document, reference closure and scoped completeness. Existing execution schemas remain unchanged."New value: +"Return the complete immutable public OpenAPI operation, referenced declarations, provenance and scoped completeness. Documentation does not change execution support." - added
Input schema / properties / include_response_schemaAdded value: +{ + "default": false, + "description": "Return the complete response_schema. Defaults to false.", + "type": "boolean" +} - removed
Input schema / properties / operation_idRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "One operation_id from search" -} - removed
Input schema / properties / operation_idsRemoved value: -{ - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Up to 20 operation_ids, for a batch" -} - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Input schema / properties / toolsAdded value: +{ + "description": "Exact tool names returned by search whose complete contracts are needed. Never invent tool names.", + "items": { + "minLength": 1, + "pattern": "^\\S(?:.*\\S)?$", + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true +} - removed
Input schema / properties / with_quoteRemoved value: -{ - "default": true, - "description": "Whether each operation is priced for this account before the answer. One round trip per operation; spends nothing.", - "type": "boolean" -} - added
Input schema / requiredAdded value: +[ + "tools" +] - added
Output schema / propertiesAdded value: +{ + "error_count": { + "type": "integer" + }, + "next_steps_guidance": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]{1,128}$", + "type": "string" + }, + "success_count": { + "type": "integer" + }, + "tools": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "arguments_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "canonical_operation_id": { + "type": "string" + }, + "documentation": { + "additionalProperties": true, + "type": "object" + }, + "error": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ] + }, + "execution_supported": { + "description": "Whether this router can execute and quote the operation; false retains documentation and discovery only.", + "type": "boolean" + }, + "execution_unsupported_reason": { + "description": "Why execution and quoting remain unavailable through this router.", + "type": "string" + }, + "idempotent": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + } + ] + }, + "known_pitfalls": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "read_only": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + } + ] + }, + "response_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "side_effects": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "successful": { + "type": "boolean" + } + }, + "required": [ + "successful" + ], + "type": "object" + }, + "type": "object" + }, + "total_count": { + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "error_count", + "next_steps_guidance", + "session_id", + "success_count", + "tools", + "total_count" +]
- Changed
get_instagram_search_hashtag6 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "The cursor returned by the previous response. In this version, it is the next Google results page number.", - "example": "2", - "type": "string" -} - removed
Input schema / properties / date_postedRemoved value: -{ - "description": "Only return Google-indexed posts found in this relative window.", - "enum": [ - "last-hour", - "last-day", - "last-week", - "last-month", - "last-year" - ], - "example": "last-week", - "type": "string" -} - removed
Input schema / properties / hashtag / descriptionRemoved value: -"The hashtag to search for. Include or omit the #." - removed
Input schema / properties / hashtag / exampleRemoved value: -"makeup" - removed
Input schema / properties / media_typeRemoved value: -{ - "description": "Use all to search public posts and reels, or reels to only return reels. Defaults to all.", - "enum": [ - "all", - "reels" - ], - "example": "all", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "hashtag" -]New value: +[]
- Changed
get_instagram_search_profiles4 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "The cursor returned by the previous response. In this version, it is the next Google results page number.", - "example": "2", - "type": "string" -} - removed
Input schema / properties / query / descriptionRemoved value: -"Bio or caption keyword/phrase to search for." - removed
Input schema / properties / query / exampleRemoved value: -"fitness coach" - changed
Input schema / requiredPrevious value: -[ - "query" -]New value: +[]
- Changed
get_pinterest_board7 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "The cursor to get the next page of results", - "example": "Y2JURlEwTWsxNlp6Vk9SR2MwV....", - "type": "string" -} - removed
Input schema / properties / trim / descriptionRemoved value: -"Set to true for a trimmed down version of the response" - removed
Input schema / properties / trim / exampleRemoved value: -"false" - changed
Input schema / properties / trim / typePrevious value: -"boolean"New value: +"string" - removed
Input schema / properties / url / descriptionRemoved value: -"The URL of the board to get" - removed
Input schema / properties / url / exampleRemoved value: -"https://www.pinterest.com/lizmrodgers/moms-night/" - changed
Input schema / requiredPrevious value: -[ - "url" -]New value: +[]
- Changed
get_pinterest_search8 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "Cursor", - "example": "Y2JVSG81V2sxcmNHRlpWM1J...", - "type": "string" -} - added
Input schema / properties / limitAdded value: +{ + "type": "string" +} - removed
Input schema / properties / query / descriptionRemoved value: -"Search query" - removed
Input schema / properties / query / exampleRemoved value: -"Italian Pot Roast" - removed
Input schema / properties / trim / descriptionRemoved value: -"Set to true for a trimmed down version of the response" - removed
Input schema / properties / trim / exampleRemoved value: -"false" - changed
Input schema / properties / trim / typePrevious value: -"boolean"New value: +"string" - changed
Input schema / requiredPrevious value: -[ - "query" -]New value: +[]
- Changed
get_reddit_post_comments7 fields changed- removed
Input schema / properties / cursor / descriptionRemoved value: -"Cursor to get more comments, or replies." - removed
Input schema / properties / cursor / exampleRemoved value: -"ed1lvsa,ed3fnpq,ed25l2w" - removed
Input schema / properties / trimRemoved value: -{ - "description": "Set to true for a trimmed down version of the response", - "example": "false", - "type": "boolean" -} - added
Input schema / properties / trimmedAdded value: +{ + "type": "string" +} - removed
Input schema / properties / url / descriptionRemoved value: -"Reddit post URL" - removed
Input schema / properties / url / exampleRemoved value: -"https://www.reddit.com/r/AskReddit/comments/ablzuq/people_who_havent_pooped_in_2019_yet_why_are_you/" - changed
Input schema / requiredPrevious value: -[ - "url" -]New value: +[]
- Changed
get_reddit_search16 fields changed- removed
Input schema / properties / afterRemoved value: -{ - "description": "Used to paginate to next page", - "example": "t3_1i8z28z", - "type": "string" -} - added
Input schema / properties / countAdded value: +{ + "type": "string" +} - added
Input schema / properties / limitAdded value: +{ + "type": "string" +} - removed
Input schema / properties / query / descriptionRemoved value: -"Search query" - removed
Input schema / properties / sort / descriptionRemoved value: -"Sort by" - removed
Input schema / properties / sort / enumRemoved value: -[ - "relevance", - "new", - "top", - "comment_count" -] - removed
Input schema / properties / sort / exampleRemoved value: -"relevance" - added
Input schema / properties / timeAdded value: +{ + "type": "string" +} - removed
Input schema / properties / timeframe / descriptionRemoved value: -"Timeframe" - removed
Input schema / properties / timeframe / enumRemoved value: -[ - "all", - "day", - "week", - "month", - "year" -] - removed
Input schema / properties / timeframe / exampleRemoved value: -"all" - removed
Input schema / properties / trim / descriptionRemoved value: -"Set to true for a trimmed down version of the response" - removed
Input schema / properties / trim / exampleRemoved value: -"false" - changed
Input schema / properties / trim / typePrevious value: -"boolean"New value: +"string" - added
Input schema / properties / trimmedAdded value: +{ + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "query" -]New value: +[]
- Changed
get_reddit_subreddit12 fields changed- removed
Input schema / properties / after / descriptionRemoved value: -"After to get more posts. Get 'after' from previous response." - removed
Input schema / properties / after / exampleRemoved value: -"t3_1234567890" - added
Input schema / properties / cache_max_ageAdded value: +{ + "type": "string" +} - removed
Input schema / properties / sort / descriptionRemoved value: -"Sort order" - removed
Input schema / properties / sort / enumRemoved value: -[ - "best", - "hot", - "new", - "top", - "rising" -] - removed
Input schema / properties / subreddit / descriptionRemoved value: -"Subreddit name" - removed
Input schema / properties / timeframe / descriptionRemoved value: -"Timeframe to get posts from. Runtime requires `sort=top` when `timeframe` is provided." - removed
Input schema / properties / timeframe / enumRemoved value: -[ - "all", - "day", - "week", - "month", - "year" -] - removed
Input schema / properties / trim / descriptionRemoved value: -"Set to true for a trimmed down version of the response" - removed
Input schema / properties / trim / exampleRemoved value: -"false" - changed
Input schema / properties / trim / typePrevious value: -"boolean"New value: +"string" - changed
Input schema / requiredPrevious value: -[ - "subreddit" -]New value: +[]
- Changed
get_semrush_backlinks_overview1 field changed- removed
Input schema / properties / target / descriptionRemoved value: -"Target root domain, e.g. `ahrefs.com`."
- Changed
get_semrush_domain_overview2 fields changed- removed
Input schema / properties / database / descriptionRemoved value: -"Regional database / country code. Defaults to `us`. Examples: `us`, `uk`, `cn`." - removed
Input schema / properties / domain / descriptionRemoved value: -"Target domain, e.g. `ahrefs.com`."
- Changed
get_semrush_keyword_overview3 fields changed- removed
Input schema / properties / database / descriptionRemoved value: -"Regional database / country code. Defaults to `us`." - removed
Input schema / properties / phrase / descriptionRemoved value: -"Keyword phrase. URL-encode spaces as `%20` or `+`." - removed
Input schema / properties / phrase / exampleRemoved value: -"seo tools"
- Changed
get_semrush_organic_competitors5 fields changed- removed
Input schema / properties / database / descriptionRemoved value: -"Regional database / country code, e.g. `us`." - removed
Input schema / properties / database / exampleRemoved value: -"us" - removed
Input schema / properties / domain / descriptionRemoved value: -"Target domain, e.g. `ahrefs.com`." - removed
Input schema / properties / domain / exampleRemoved value: -"ahrefs.com" - changed
Input schema / requiredPrevious value: -[ - "domain", - "database" -]New value: +[ + "database", + "domain" +]
- Changed
get_similarweb_keyword_competitors19 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan."New value: +"Worldwide data only; values are case-insensitive." - changed
Input schema / properties / country / enumPrevious value: -[ - "us", - "ww" -]New value: +[ + "ww" +] - removed
Input schema / properties / domain / descriptionRemoved value: -"Target domain, e.g. example.com." - added
Input schema / properties / domain / maxLengthAdded value: +253 - added
Input schema / properties / domain / minLengthAdded value: +1 - removed
Input schema / properties / end_date / descriptionRemoved value: -"End month, format YYYY-MM." - removed
Input schema / properties / granularity / descriptionRemoved value: -"Time granularity. Allowed: monthly." - removed
Input schema / properties / limit / defaultRemoved value: -20 - removed
Input schema / properties / limit / descriptionRemoved value: -"Number of rows to return; max 20, billed as 20 if exceeded." - added
Input schema / properties / limit / minimumAdded value: +1 - removed
Input schema / properties / main_domain_only / descriptionRemoved value: -"Restrict to the main domain only (true/false)." - removed
Input schema / properties / offset / descriptionRemoved value: -"Row offset for pagination." - added
Input schema / properties / offset / maximumAdded value: +100000 - added
Input schema / properties / offset / minimumAdded value: +0 - removed
Input schema / properties / start_date / descriptionRemoved value: -"Start month, format YYYY-MM." - removed
Input schema / properties / traffic_source / descriptionRemoved value: -"Traffic-source filter." - removed
Input schema / properties / web_source / descriptionRemoved value: -"Web source. This endpoint accepts desktop only (the gateway rejects mobile_web and total with 400)." - changed
Input schema / properties / web_source / enumPrevious value: -[ - "desktop" -]New value: +[ + "desktop", + "mobile_web", + "total" +] - changed
Input schema / requiredPrevious value: -[ - "domain", - "start_date", - "end_date", - "limit" -]New value: +[ + "domain", + "end_date", + "limit", + "start_date" +]
- Changed
get_similarweb_keywords15 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan."New value: +"Worldwide data only; values are case-insensitive." - changed
Input schema / properties / country / enumPrevious value: -[ - "us", - "ww" -]New value: +[ + "ww" +] - removed
Input schema / properties / domain / descriptionRemoved value: -"Target domain, e.g. example.com." - added
Input schema / properties / domain / maxLengthAdded value: +2048 - added
Input schema / properties / domain / minLengthAdded value: +1 - removed
Input schema / properties / end_date / descriptionRemoved value: -"End month, format YYYY-MM." - removed
Input schema / properties / format / descriptionRemoved value: -"Response format. Allowed: json." - removed
Input schema / properties / granularity / descriptionRemoved value: -"Time granularity. Allowed: monthly." - removed
Input schema / properties / limit / defaultRemoved value: -20 - removed
Input schema / properties / limit / descriptionRemoved value: -"Number of rows to return; max 20, billed as 20 if exceeded." - added
Input schema / properties / limit / minimumAdded value: +1 - removed
Input schema / properties / main_domain_only / descriptionRemoved value: -"Restrict to the main domain only (true/false)." - removed
Input schema / properties / start_date / descriptionRemoved value: -"Start month, format YYYY-MM." - removed
Input schema / properties / web_source / descriptionRemoved value: -"Traffic source device split. Allowed: total." - changed
Input schema / requiredPrevious value: -[ - "domain", - "start_date", - "end_date", - "granularity", - "limit" -]New value: +[ + "domain", + "end_date", + "granularity", + "limit", + "start_date" +]
- Changed
get_similarweb_ranking11 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan."New value: +"Worldwide data only; values are case-insensitive." - changed
Input schema / properties / country / enumPrevious value: -[ - "us", - "ww" -]New value: +[ + "ww" +] - removed
Input schema / properties / domain / descriptionRemoved value: -"Target domain, e.g. example.com." - added
Input schema / properties / domain / maxLengthAdded value: +253 - added
Input schema / properties / domain / minLengthAdded value: +1 - removed
Input schema / properties / end_date / descriptionRemoved value: -"End month, format YYYY-MM." - removed
Input schema / properties / granularity / descriptionRemoved value: -"Time granularity. Allowed: monthly. Default: monthly." - removed
Input schema / properties / main_domain_only / descriptionRemoved value: -"Restrict to the main domain only (true/false). Default: True." - removed
Input schema / properties / start_date / descriptionRemoved value: -"Start month, format YYYY-MM." - removed
Input schema / properties / web_source / descriptionRemoved value: -"Traffic source device split. Allowed: desktop, mobile_web, total." - changed
Input schema / requiredPrevious value: -[ - "domain", - "start_date", - "end_date" -]New value: +[ + "domain", + "end_date", + "start_date" +]
- Changed
get_similarweb_similar_sites18 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan."New value: +"Worldwide data only; values are case-insensitive." - changed
Input schema / properties / country / enumPrevious value: -[ - "us", - "ww" -]New value: +[ + "ww" +] - removed
Input schema / properties / domain / descriptionRemoved value: -"Target domain, e.g. example.com." - added
Input schema / properties / domain / maxLengthAdded value: +253 - added
Input schema / properties / domain / minLengthAdded value: +1 - removed
Input schema / properties / end_date / descriptionRemoved value: -"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)." - removed
Input schema / properties / granularity / descriptionRemoved value: -"Time granularity. Allowed: monthly." - removed
Input schema / properties / limit / defaultRemoved value: -20 - removed
Input schema / properties / limit / descriptionRemoved value: -"Number of rows to return; max 20, billed as 20 if exceeded." - added
Input schema / properties / limit / minimumAdded value: +1 - removed
Input schema / properties / main_domain_only / descriptionRemoved value: -"Restrict to the main domain only (true/false)." - removed
Input schema / properties / offset / descriptionRemoved value: -"Row offset for pagination." - added
Input schema / properties / offset / maximumAdded value: +100000 - added
Input schema / properties / offset / minimumAdded value: +0 - removed
Input schema / properties / start_date / descriptionRemoved value: -"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)." - removed
Input schema / properties / traffic_source / descriptionRemoved value: -"Traffic-source filter." - removed
Input schema / properties / web_source / descriptionRemoved value: -"Traffic source device split. Allowed: desktop, mobile_web, total." - changed
Input schema / requiredPrevious value: -[ - "domain", - "start_date", - "end_date", - "limit" -]New value: +[ + "domain", + "end_date", + "limit", + "start_date" +]
- Changed
get_similarweb_traffic_engagement16 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan."New value: +"Worldwide data only; values are case-insensitive." - changed
Input schema / properties / country / enumPrevious value: -[ - "us", - "ww" -]New value: +[ + "ww" +] - removed
Input schema / properties / domain / descriptionRemoved value: -"Target domain, e.g. example.com." - added
Input schema / properties / domain / maxLengthAdded value: +253 - added
Input schema / properties / domain / minLengthAdded value: +1 - removed
Input schema / properties / end_date / descriptionRemoved value: -"End month, format YYYY-MM." - removed
Input schema / properties / granularity / descriptionRemoved value: -"Time granularity. Allowed: monthly. Default: monthly." - removed
Input schema / properties / main_domain_only / descriptionRemoved value: -"Restrict to the main domain only (true/false). Default: True." - removed
Input schema / properties / metrics / descriptionRemoved value: -"Comma-separated metrics, e.g. visits,pages_per_visit." - added
Input schema / properties / metrics / x-aisa-delimiterAdded value: +"," - added
Input schema / properties / metrics / x-aisa-maxItemsAdded value: +8 - added
Input schema / properties / metrics / x-aisa-minItemsAdded value: +1 - removed
Input schema / properties / mtd / descriptionRemoved value: -"Month-to-date flag (true/false)." - removed
Input schema / properties / start_date / descriptionRemoved value: -"Start month, format YYYY-MM." - removed
Input schema / properties / web_source / descriptionRemoved value: -"Traffic source device split. Allowed: desktop, mobile_web, total." - changed
Input schema / requiredPrevious value: -[ - "domain", - "start_date", - "end_date", - "metrics" -]New value: +[ + "domain", + "end_date", + "metrics", + "start_date" +]
- Changed
get_similarweb_website_top_geographies2 fields changed- changed
Input schema / properties / domain / descriptionPrevious value: -"Target domain, e.g. example.com."New value: +"Bare website hostname without scheme, path, port, or credentials." - added
Input schema / properties / monthAdded value: +{ + "description": "Complete month in YYYY-MM.", + "type": "string", + "x-aisa-default-policy": "previous_complete_utc_month" +}
- Changed
get_similarweb_website_traffic_snapshot4 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan."New value: +"Worldwide data only; values are case-insensitive." - changed
Input schema / properties / country / enumPrevious value: -[ - "us", - "ww" -]New value: +[ + "ww" +] - changed
Input schema / properties / domain / descriptionPrevious value: -"Target domain, e.g. example.com."New value: +"Bare website hostname without scheme, path, port, or credentials." - added
Input schema / properties / monthAdded value: +{ + "description": "Complete month in YYYY-MM.", + "type": "string", + "x-aisa-default-policy": "previous_complete_utc_month" +}
- Changed
get_similarweb_website_traffic_trend6 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan."New value: +"Worldwide data only; values are case-insensitive." - changed
Input schema / properties / country / enumPrevious value: -[ - "us", - "ww" -]New value: +[ + "ww" +] - changed
Input schema / properties / domain / descriptionPrevious value: -"Target domain, e.g. example.com."New value: +"Bare website hostname without scheme, path, port, or credentials." - added
Input schema / properties / end_dateAdded value: +{ + "description": "Inclusive last complete UTC month in YYYY-MM.", + "type": "string" +} - added
Input schema / properties / metricsAdded value: +{ + "default": "visits", + "description": "One to four supported Traffic & Engagement metrics.", + "type": "string", + "x-aisa-delimiter": ",", + "x-aisa-item-enum": [ + "average_visit_duration", + "bounce_rate", + "new_users", + "page_views", + "pages_per_visit", + "returning_users", + "unique_visitors", + "visits" + ], + "x-aisa-maxItems": 4 +} - added
Input schema / properties / start_dateAdded value: +{ + "description": "Inclusive first month in YYYY-MM; provide together with end_date.", + "type": "string" +}
- Changed
get_twitter_trends9 fields changed- removed
Input schema / properties / count / defaultRemoved value: -30 - removed
Input schema / properties / count / descriptionRemoved value: -"The number of trends to return. Default is 30." - removed
Input schema / properties / count / formatRemoved value: -"int64" - removed
Input schema / properties / count / minimumRemoved value: -30 - changed
Input schema / properties / count / typePrevious value: -"integer"New value: +"string" - removed
Input schema / properties / woeid / descriptionRemoved value: -"The WOEID of the location. Example: 2418046." - removed
Input schema / properties / woeid / formatRemoved value: -"int64" - changed
Input schema / properties / woeid / typePrevious value: -"integer"New value: +"string" - changed
Input schema / requiredPrevious value: -[ - "woeid" -]New value: +[]
- Changed
get_twitter_tweet_advanced_search9 fields changed- added
Input schema / properties / countAdded value: +{ + "type": "string" +} - removed
Input schema / properties / cursor / descriptionRemoved value: -"The cursor to paginate through the results. First page is empty." - added
Input schema / properties / max_resultsAdded value: +{ + "type": "string" +} - removed
Input schema / properties / query / descriptionRemoved value: -"The query to search for." - removed
Input schema / properties / queryType / defaultRemoved value: -"Latest" - removed
Input schema / properties / queryType / descriptionRemoved value: -"The query type to search for." - removed
Input schema / properties / queryType / enumRemoved value: -[ - "Latest", - "Top" -] - added
Input schema / properties / start_timeAdded value: +{ + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "query", - "queryType" -]New value: +[]
- Changed
get_twitter_tweet_replies3 fields changed- removed
Input schema / properties / cursor / descriptionRemoved value: -"Cursor for pagination." - removed
Input schema / properties / tweetId / descriptionRemoved value: -"The tweet ID to get replies for." - changed
Input schema / requiredPrevious value: -[ - "tweetId" -]New value: +[]
- Changed
get_twitter_user_followers4 fields changed- removed
Input schema / properties / cursor / descriptionRemoved value: -"Cursor for pagination" - removed
Input schema / properties / pageSizeRemoved value: -{ - "default": 200, - "description": "Number of followers per page", - "maximum": 200, - "minimum": 20, - "type": "integer" -} - removed
Input schema / properties / userName / descriptionRemoved value: -"Screen name of the user" - changed
Input schema / requiredPrevious value: -[ - "userName" -]New value: +[]
- Changed
get_twitter_user_info2 fields changed- removed
Input schema / properties / userName / descriptionRemoved value: -"The screen name of the user" - changed
Input schema / requiredPrevious value: -[ - "userName" -]New value: +[]
- Changed
get_twitter_user_last_tweets7 fields changed- added
Input schema / properties / countAdded value: +{ + "type": "string" +} - removed
Input schema / properties / cursor / descriptionRemoved value: -"Cursor for pagination" - removed
Input schema / properties / includeReplies / defaultRemoved value: -false - removed
Input schema / properties / includeReplies / descriptionRemoved value: -"Include replies in the results" - changed
Input schema / properties / includeReplies / typePrevious value: -"boolean"New value: +"string" - removed
Input schema / properties / userId / descriptionRemoved value: -"User ID of the user" - removed
Input schema / properties / userName / descriptionRemoved value: -"Screen name of the user"
- Changed
get_twitter_user_mentions5 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "The cursor to paginate through the results. First page is empty.", - "type": "string" -} - removed
Input schema / properties / sinceTimeRemoved value: -{ - "description": "On or after a specified unix timestamp in seconds.", - "format": "int64", - "type": "integer" -} - removed
Input schema / properties / untilTimeRemoved value: -{ - "description": "Before a specified unix timestamp in seconds.", - "format": "int64", - "type": "integer" -} - removed
Input schema / properties / userName / descriptionRemoved value: -"The user screen name to get mentions for." - changed
Input schema / requiredPrevious value: -[ - "userName" -]New value: +[]
- Changed
get_twitter_user_search3 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "The cursor to paginate through the results. First page is empty.", - "type": "string" -} - removed
Input schema / properties / query / descriptionRemoved value: -"The keyword to search." - changed
Input schema / requiredPrevious value: -[ - "query" -]New value: +[]
- Changed
post_apollo_people_bulk_match11 fields changed- removed
Input schema / properties / reveal_personal_emailsRemoved value: -{ - "description": "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.", - "type": "boolean" -} - added
Input schema / properties / reveal_phone_number / defaultAdded value: +false - removed
Input schema / properties / reveal_phone_number / descriptionRemoved value: -"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." - added
Input schema / properties / run_waterfall_email / defaultAdded value: +false - removed
Input schema / properties / run_waterfall_email / descriptionRemoved value: -"Set to true to enable email waterfall enrichment" - added
Input schema / properties / run_waterfall_phone / defaultAdded value: +false - removed
Input schema / properties / run_waterfall_phone / descriptionRemoved value: -"Set to true to enable phone waterfall enrichment" - removed
Input schema / properties / webhook_url / descriptionRemoved value: -"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" - added
Input schema / properties / webhook_url / formatAdded value: +"https_url" - added
Input schema / properties / webhook_url / maxLengthAdded value: +2048 - added
Input schema / properties / webhook_url / minLengthAdded value: +1
- Changed
post_apollo_people_match20 fields changed- removed
Input schema / properties / domainRemoved value: -{ - "description": "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", - "type": "string" -} - removed
Input schema / properties / emailRemoved value: -{ - "description": "The email address of the person. Example: example@email.com", - "type": "string" -} - removed
Input schema / properties / first_nameRemoved value: -{ - "description": "The first name of the person. This is typically used in combination with the last_name parameter. Example: tim", - "type": "string" -} - removed
Input schema / properties / hashed_emailRemoved value: -{ - "description": "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)", - "type": "string" -} - removed
Input schema / properties / idRemoved value: -{ - "description": "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", - "type": "string" -} - removed
Input schema / properties / last_nameRemoved value: -{ - "description": "The last name of the person. This is typically used in combination with the first_name parameter. Example: zheng", - "type": "string" -} - removed
Input schema / properties / linkedin_urlRemoved value: -{ - "description": "The URL for the person's LinkedIn profile. Example: http://www.linkedin.com/in/tim-zheng-677ba010", - "type": "string" -} - removed
Input schema / properties / nameRemoved value: -{ - "description": "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", - "type": "string" -} - removed
Input schema / properties / organization_nameRemoved value: -{ - "description": "The name of the person's employer. This can be the current employer or a previous employer. Example: apollo", - "type": "string" -} - removed
Input schema / properties / reveal_personal_emailsRemoved value: -{ - "description": "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.", - "type": "boolean" -} - added
Input schema / properties / reveal_phone_number / defaultAdded value: +false - removed
Input schema / properties / reveal_phone_number / descriptionRemoved value: -"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." - added
Input schema / properties / run_waterfall_email / defaultAdded value: +false - removed
Input schema / properties / run_waterfall_email / descriptionRemoved value: -"Set to true to enable email waterfall enrichment" - added
Input schema / properties / run_waterfall_phone / defaultAdded value: +false - removed
Input schema / properties / run_waterfall_phone / descriptionRemoved value: -"Set to true to enable phone waterfall enrichment" - removed
Input schema / properties / webhook_url / descriptionRemoved value: -"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" - added
Input schema / properties / webhook_url / formatAdded value: +"https_url" - added
Input schema / properties / webhook_url / maxLengthAdded value: +2048 - added
Input schema / properties / webhook_url / minLengthAdded value: +1
- Changed
post_dataforseo_serp_youtube_organic_live7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "keyword": "audi", + "language_code": "en", + "location_code": 2840 + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "keyword": "audi", + "language_code": "en", + "location_code": 2840 + } + ], + "properties": { + "block_depth": { + "description": "parsing depth\noptional field\nnumber of blocks of results in SERP\ndefault value: 20\nmax value: 200\nNote: your account will be billed per each SERP containing up to 20 results;\nthus, setting a block depth above 20 may result in additional charges if the search engine returns more than 20 results;\nif the specified block depth is higher than the number of results in the response, the difference will be refunded automatically to your account balance", + "type": [ + "integer", + "null" + ] + }, + "device": { + "description": "device type\noptional field\nreturn results for a specific device type\navailable values: desktop, mobile", + "type": [ + "string", + "null" + ] + }, + "keyword": { + "description": "keyword\nrequired field\nyou can specify up to 700 characters in the keyword field\nall %## will be decoded (plus character ‘+’ will be decoded to a space character)\nif you need to use the “%” character for your keyword, please specify it as “%25”;\nif you need to use the “+” character for your keyword, please specify it as “%2B”;\nlearn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article", + "type": "string" + }, + "language_code": { + "description": "search engine language code\nrequired field if you don't specify language_name\nif you use this field, you don't need to specify language_name\nyou can receive the list of available languages of the search engine with their language_code by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/languages\nexample:\nen", + "type": [ + "string", + "null" + ] + }, + "language_name": { + "description": "full name of search engine language\nrequired field if you don't specify language_code\nif you use this field, you don't need to specify language_code\nyou can receive the list of available languages of the search engine with their language_name by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/languages\nexample:\nEnglish", + "type": [ + "string", + "null" + ] + }, + "location_code": { + "description": "search engine location code\nrequired field if you don't specify location_name \nif you use this field, you don't need to specify location_name\nyou can receive the list of available locations of the search engines with their location_code by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/locations\nexample:\n2840", + "type": [ + "integer", + "null" + ] + }, + "location_name": { + "description": "full name of search engine location\nrequired field if you don't specify location_code\nif you use this field, you don't need to specify location_code\nyou can receive the list of available locations of the search engine with their location_name by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/locations\nexample:\nUnited States", + "type": [ + "string", + "null" + ] + }, + "os": { + "description": "device operating system\noptional field\nif you specify desktop in the device field, choose from the following values: windows, macos\ndefault value: windows\nif you specify mobile in the device field, choose from the following values: android, ios\ndefault value: android", + "type": [ + "string", + "null" + ] + }, + "search_param": { + "description": "additional parameters of the search query\noptional field\nexample:\nsp=EgIQAg%253D%253D", + "type": [ + "string", + "null" + ] + }, + "tag": { + "description": "user-defined task identifier\noptional field\nthe character limit is 255\nyou can use this parameter to identify the task and match it with the result\nyou will find the specified tag value in the data object of the response", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "keyword": { - "description": "Keyword to search for", - "type": "string" - }, - "language_code": { - "description": "Search engine language code", - "type": "string" - }, - "language_name": { - "description": "Full name of search engine language", - "type": "string" - }, - "location_code": { - "description": "Search engine location code", - "type": "integer" - }, - "location_name": { - "description": "Full name of search engine location", - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "keyword" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Removed
post_oxylabs_ai_search - Changed
post_waveinflu_email_lookup3 fields changed- removed
Input schema / properties / profile_url / descriptionRemoved value: -"Instagram, TikTok, or YouTube creator profile URL." - removed
Input schema / properties / profile_url / exampleRemoved value: -"https://www.instagram.com/onkimia/" - changed
Input schema / requiredPrevious value: -[ - "profile_url" -]New value: +[]
- Changed
post_waveinflu_similar_creators8 fields changed- changed
Input schema / properties / limit / defaultPrevious value: -40New value: +25 - removed
Input schema / properties / limit / descriptionRemoved value: -"Maximum number of creators to return. Default 40, range 1–100. Caps the billed count." - removed
Input schema / properties / limit / exampleRemoved value: -10 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / platform / defaultAdded value: +"youtube" - removed
Input schema / properties / platform / descriptionRemoved value: -"Target platform." - removed
Input schema / properties / platform / exampleRemoved value: -"instagram" - changed
Input schema / requiredPrevious value: -[ - "platform", - "target_account" -]New value: +[ + "target_account" +]
- Changed
search17 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / category / anyOfRemoved value: -[ - { - "enum": [ - "seo", - "finance", - "social", - "search", - "sales", - "mail" - ], - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / category / defaultRemoved value: -null - changed
Input schema / properties / category / descriptionPrevious value: -"Restrict to one category (seo, finance, social, search, sales, mail). Omit to search everything."New value: +"Restrict retrieval to one category. Omit to search everything. (AIsa-only: tool-router has no equivalent.)" - added
Input schema / properties / category / enumAdded value: +[ + "seo", + "finance", + "social", + "search", + "sales", + "mail" +] - added
Input schema / properties / category / typeAdded value: +"string" - added
Input schema / properties / known_fieldsAdded value: +{ + "additionalProperties": true, + "default": {}, + "description": "Known values such as ticker, URL, provider, or identifier that improve retrieval.", + "type": "object" +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum candidates, 1-10"New value: +"Maximum number of additional direct tool candidates." - added
Input schema / properties / limit / maximumAdded value: +20 - added
Input schema / properties / limit / minimumAdded value: +1 - added
Input schema / properties / provider_filtersAdded value: +{ + "default": [], + "description": "Optional exact catalog provider keys used to narrow retrieval (for example similarweb). Do not use display brands. Omit this field if the exact key is unknown.", + "items": { + "type": "string" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true +} - changed
Input schema / properties / query / descriptionPrevious value: -"What you need, in plain language, e.g. 'backlinks of a domain', 'recent tweets by a user', 'insider trades for AAPL'. English works best."New value: +"Natural-language capability or task to discover." - added
Input schema / properties / query / maxLengthAdded value: +2000 - added
Input schema / properties / query / minLengthAdded value: +1 - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Output schema / propertiesAdded value: +{ + "next_steps_guidance": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "plan": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "canonical_use_case": { + "type": "string" + }, + "description": { + "type": "string" + }, + "known_pitfalls": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "plan_ref": { + "type": "string" + }, + "primary_tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "recommended_steps": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "related_tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + } + }, + "required": [ + "canonical_use_case", + "description", + "known_pitfalls", + "plan_ref", + "primary_tools", + "recommended_steps", + "related_tools" + ] + }, + "retrieval_mode": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "search_id": { + "type": "string" + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]{1,128}$", + "type": "string" + }, + "tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "additionalProperties": false, + "properties": { + "arguments_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "description": { + "type": "string" + }, + "execution_supported": { + "description": "Whether this router can execute and quote the operation; false retains documentation and discovery only.", + "type": "boolean" + }, + "execution_unsupported_reason": { + "description": "Why execution and quoting remain unavailable through this router.", + "type": "string" + }, + "has_full_schema": { + "type": "boolean" + }, + "match_reasons": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "price": { + "additionalProperties": true, + "type": "object" + }, + "retrieval_debug": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "fused_rank": { + "type": "integer" + }, + "fused_score": { + "type": "number" + }, + "lexical_rank": { + "type": "integer" + }, + "lexical_score": { + "type": "number" + }, + "rerank_admission_rank": { + "type": "integer" + }, + "rerank_rank": { + "type": "integer" + }, + "rerank_score": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "number" + } + ] + }, + "runtime_availability": { + "type": "string" + }, + "vector_view_ranks": { + "additionalProperties": { + "type": "integer" + }, + "type": "object" + }, + "vector_view_scores": { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + }, + "required": [ + "fused_rank", + "fused_score", + "lexical_rank", + "lexical_score", + "rerank_admission_rank", + "rerank_rank", + "runtime_availability", + "vector_view_ranks", + "vector_view_scores" + ] + }, + "summary": { + "type": "string" + }, + "tool": { + "type": "string" + } + }, + "required": [ + "description", + "has_full_schema", + "price", + "summary", + "tool" + ], + "type": "object" + } + } +} - added
Output schema / requiredAdded value: +[ + "next_steps_guidance", + "search_id", + "session_id", + "tools" +]
- Changed
use1 field changed- changed
Input schema / properties / max_price_usd / descriptionPrevious value: -"Refuse the call before any spend if it would cost more than this many USD"New value: +"Refuse the call before any spend if its quoted price is above this many USD"
40 tool updates
- Removed
batch_get_schema - Removed
batch_quote - Changed
batch_use18 fields changed- removed
Input schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - added
Input schema / properties / calls / descriptionAdded value: +"Up to 20 items of {call_id, operation_id, arguments}; steps at the same execution_level of a plan go in one batch" - removed
Input schema / properties / calls / items / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - changed
Input schema / properties / calls / items / additionalPropertiesPrevious value: -falseNew value: +true - removed
Input schema / properties / calls / items / propertiesRemoved value: -{ - "arguments": { - "additionalProperties": true, - "description": "Strictly schema-compliant arguments using the exact field names and types from this tool's arguments_schema.", - "type": "object" - }, - "call_id": { - "description": "Caller-chosen identifier unique within this batch.", - "maxLength": 128, - "minLength": 1, - "type": "string" - }, - "tool": { - "description": "Exact tool name returned by search or batch_get_schema. Never invent a name.", - "minLength": 1, - "type": "string" - } -} - removed
Input schema / properties / calls / items / requiredRemoved value: -[ - "call_id", - "tool", - "arguments" -] - removed
Input schema / properties / calls / maxItemsRemoved value: -20 - removed
Input schema / properties / calls / minItemsRemoved value: -1 - added
Input schema / properties / max_price_usdAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Per-call price cap applied to every item" +} - added
Input schema / properties / search_id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / search_id / defaultAdded value: +null - changed
Input schema / properties / search_id / descriptionPrevious value: -"Optional search correlation identifier returned by search."New value: +"search_id from the search that found these operations" - removed
Input schema / properties / search_id / typeRemoved value: -"string" - removed
Input schema / properties / session_idRemoved value: -{ - "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", - "maxLength": 128, - "pattern": "^[A-Za-z0-9_-]*$", - "type": "string" -} - removed
Output schema / $defsRemoved value: -{ - "jsonValue": { - "anyOf": [ - { - "additionalProperties": { - "$ref": "#/$defs/jsonValue" - }, - "type": "object" - }, - { - "items": { - "$ref": "#/$defs/jsonValue" - }, - "type": "array" - }, - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "description": "JSON value returned by the upstream tool." - } -} - removed
Output schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - removed
Output schema / propertiesRemoved value: -{ - "batch_id": { - "type": "string" - }, - "error_count": { - "minimum": 0, - "type": "integer" - }, - "next_steps_guidance": { - "description": "Deterministic next-step instructions derived from this result. Not an authorization grant.", - "items": { - "type": "string" - }, - "type": "array" - }, - "results": { - "items": { - "$schema": "https://json-schema.org/draft/2020-12/schema", - "additionalProperties": false, - "properties": { - "call_id": { - "type": "string" - }, - "customer_cost_micros_usd": { - "description": "Actual customer charge settled by AIsaServices, in micro-USD. Omitted when the upstream response does not report it.", - "minimum": 0, - "type": "integer" - }, - "data": { - "$ref": "#/$defs/jsonValue" - }, - "error": { - "anyOf": [ - { - "$schema": "https://json-schema.org/draft/2020-12/schema", - "additionalProperties": false, - "properties": { - "message": { - "type": "string" - }, - "retryable": { - "type": "boolean" - }, - "status": { - "type": "integer" - }, - "type": { - "enum": [ - "validation", - "authentication", - "payment", - "permission", - "rate_limit", - "upstream", - "timeout", - "internal" - ], - "type": "string" - } - }, - "required": [ - "type", - "status", - "retryable" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "request_id": { - "type": "string" - }, - "successful": { - "type": "boolean" - }, - "tool": { - "type": "string" - }, - "upstream_status": { - "description": "HTTP status returned by AIsaServices when a request was dispatched.", - "type": "integer" - } - }, - "required": [ - "call_id", - "tool", - "successful", - "request_id" - ], - "type": "object" - }, - "type": "array" - }, - "session_id": { - "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9_-]*$", - "type": "string" - }, - "success_count": { - "minimum": 0, - "type": "integer" - }, - "total_count": { - "minimum": 1, - "type": "integer" - } -} - removed
Output schema / requiredRemoved value: -[ - "session_id", - "batch_id", - "total_count", - "success_count", - "error_count", - "results", - "next_steps_guidance" -]
- Changed
get_ahrefs_domain_rating2 fields changed- removed
Input schema / properties / target / exampleRemoved value: -"ahrefs.com" - changed
Input schema / requiredPrevious value: -[ - "date", - "target" -]New value: +[ + "target", + "date" +]
- Changed
get_details13 fields changed- removed
Input schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - added
Input schema / properties / argumentsAdded value: +{ + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "The arguments the operation would be called with, for a price that reflects them. Keyed by operation_id for a batch, or passed flat for a single operation_id. Routes whose required parameters are validated before pricing have no price without them." +} - removed
Input schema / properties / include_arguments_schemaRemoved value: -{ - "default": true, - "description": "Return the complete arguments_schema. Defaults to true.", - "type": "boolean" -} - changed
Input schema / properties / include_documentation / descriptionPrevious value: -"Return the complete immutable public OpenAPI operation, referenced declarations, provenance and scoped completeness. Documentation does not change execution support."New value: +"Include the complete native public OpenAPI document, reference closure and scoped completeness. Existing execution schemas remain unchanged." - removed
Input schema / properties / include_response_schemaRemoved value: -{ - "default": false, - "description": "Return the complete response_schema. Defaults to false.", - "type": "boolean" -} - added
Input schema / properties / operation_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "One operation_id from search" +} - added
Input schema / properties / operation_idsAdded value: +{ + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Up to 20 operation_ids, for a batch" +} - removed
Input schema / properties / session_idRemoved value: -{ - "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", - "maxLength": 128, - "pattern": "^[A-Za-z0-9_-]*$", - "type": "string" -} - removed
Input schema / properties / toolsRemoved value: -{ - "description": "Exact tool names returned by search whose complete contracts are needed. Never invent tool names.", - "items": { - "minLength": 1, - "pattern": "^\\S(?:.*\\S)?$", - "type": "string" - }, - "maxItems": 20, - "minItems": 1, - "type": "array", - "uniqueItems": true -} - added
Input schema / properties / with_quoteAdded value: +{ + "default": true, + "description": "Whether each operation is priced for this account before the answer. One round trip per operation; spends nothing.", + "type": "boolean" +} - removed
Input schema / requiredRemoved value: -[ - "tools" -] - removed
Output schema / propertiesRemoved value: -{ - "error_count": { - "type": "integer" - }, - "next_steps_guidance": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "session_id": { - "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9_-]{1,128}$", - "type": "string" - }, - "success_count": { - "type": "integer" - }, - "tools": { - "additionalProperties": { - "additionalProperties": false, - "properties": { - "arguments_schema": { - "additionalProperties": true, - "anyOf": [ - { - "type": "null" - }, - { - "type": "object" - } - ] - }, - "canonical_operation_id": { - "type": "string" - }, - "documentation": { - "additionalProperties": true, - "type": "object" - }, - "error": { - "additionalProperties": false, - "anyOf": [ - { - "type": "null" - }, - { - "type": "object" - } - ], - "properties": { - "code": { - "type": "string" - }, - "message": { - "type": "string" - } - }, - "required": [ - "code", - "message" - ] - }, - "execution_supported": { - "description": "Whether this router can execute and quote the operation; false retains documentation and discovery only.", - "type": "boolean" - }, - "execution_unsupported_reason": { - "description": "Why execution and quoting remain unavailable through this router.", - "type": "string" - }, - "idempotent": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "boolean" - } - ] - }, - "known_pitfalls": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "read_only": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "boolean" - } - ] - }, - "response_schema": { - "additionalProperties": true, - "anyOf": [ - { - "type": "null" - }, - { - "type": "object" - } - ] - }, - "side_effects": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "successful": { - "type": "boolean" - } - }, - "required": [ - "successful" - ], - "type": "object" - }, - "type": "object" - }, - "total_count": { - "type": "integer" - } -} - removed
Output schema / requiredRemoved value: -[ - "error_count", - "next_steps_guidance", - "session_id", - "success_count", - "tools", - "total_count" -]
- Changed
get_instagram_search_hashtag6 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "The cursor returned by the previous response. In this version, it is the next Google results page number.", + "example": "2", + "type": "string" +} - added
Input schema / properties / date_postedAdded value: +{ + "description": "Only return Google-indexed posts found in this relative window.", + "enum": [ + "last-hour", + "last-day", + "last-week", + "last-month", + "last-year" + ], + "example": "last-week", + "type": "string" +} - added
Input schema / properties / hashtag / descriptionAdded value: +"The hashtag to search for. Include or omit the #." - added
Input schema / properties / hashtag / exampleAdded value: +"makeup" - added
Input schema / properties / media_typeAdded value: +{ + "description": "Use all to search public posts and reels, or reels to only return reels. Defaults to all.", + "enum": [ + "all", + "reels" + ], + "example": "all", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[]New value: +[ + "hashtag" +]
- Changed
get_instagram_search_profiles4 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "The cursor returned by the previous response. In this version, it is the next Google results page number.", + "example": "2", + "type": "string" +} - added
Input schema / properties / query / descriptionAdded value: +"Bio or caption keyword/phrase to search for." - added
Input schema / properties / query / exampleAdded value: +"fitness coach" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "query" +]
- Changed
get_pinterest_board7 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "The cursor to get the next page of results", + "example": "Y2JURlEwTWsxNlp6Vk9SR2MwV....", + "type": "string" +} - added
Input schema / properties / trim / descriptionAdded value: +"Set to true for a trimmed down version of the response" - added
Input schema / properties / trim / exampleAdded value: +"false" - changed
Input schema / properties / trim / typePrevious value: -"string"New value: +"boolean" - added
Input schema / properties / url / descriptionAdded value: +"The URL of the board to get" - added
Input schema / properties / url / exampleAdded value: +"https://www.pinterest.com/lizmrodgers/moms-night/" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "url" +]
- Changed
get_pinterest_search8 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "Cursor", + "example": "Y2JVSG81V2sxcmNHRlpWM1J...", + "type": "string" +} - removed
Input schema / properties / limitRemoved value: -{ - "type": "string" -} - added
Input schema / properties / query / descriptionAdded value: +"Search query" - added
Input schema / properties / query / exampleAdded value: +"Italian Pot Roast" - added
Input schema / properties / trim / descriptionAdded value: +"Set to true for a trimmed down version of the response" - added
Input schema / properties / trim / exampleAdded value: +"false" - changed
Input schema / properties / trim / typePrevious value: -"string"New value: +"boolean" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "query" +]
- Changed
get_reddit_post_comments7 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Cursor to get more comments, or replies." - added
Input schema / properties / cursor / exampleAdded value: +"ed1lvsa,ed3fnpq,ed25l2w" - added
Input schema / properties / trimAdded value: +{ + "description": "Set to true for a trimmed down version of the response", + "example": "false", + "type": "boolean" +} - removed
Input schema / properties / trimmedRemoved value: -{ - "type": "string" -} - added
Input schema / properties / url / descriptionAdded value: +"Reddit post URL" - 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
Input schema / requiredPrevious value: -[]New value: +[ + "url" +]
- Changed
get_reddit_search16 fields changed- added
Input schema / properties / afterAdded value: +{ + "description": "Used to paginate to next page", + "example": "t3_1i8z28z", + "type": "string" +} - removed
Input schema / properties / countRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / limitRemoved value: -{ - "type": "string" -} - added
Input schema / properties / query / descriptionAdded value: +"Search query" - added
Input schema / properties / sort / descriptionAdded value: +"Sort by" - added
Input schema / properties / sort / enumAdded value: +[ + "relevance", + "new", + "top", + "comment_count" +] - added
Input schema / properties / sort / exampleAdded value: +"relevance" - removed
Input schema / properties / timeRemoved value: -{ - "type": "string" -} - added
Input schema / properties / timeframe / descriptionAdded value: +"Timeframe" - added
Input schema / properties / timeframe / enumAdded value: +[ + "all", + "day", + "week", + "month", + "year" +] - added
Input schema / properties / timeframe / exampleAdded value: +"all" - added
Input schema / properties / trim / descriptionAdded value: +"Set to true for a trimmed down version of the response" - added
Input schema / properties / trim / exampleAdded value: +"false" - changed
Input schema / properties / trim / typePrevious value: -"string"New value: +"boolean" - removed
Input schema / properties / trimmedRemoved value: -{ - "type": "string" -} - changed
Input schema / requiredPrevious value: -[]New value: +[ + "query" +]
- Changed
get_reddit_subreddit12 fields changed- added
Input schema / properties / after / descriptionAdded value: +"After to get more posts. Get 'after' from previous response." - added
Input schema / properties / after / exampleAdded value: +"t3_1234567890" - removed
Input schema / properties / cache_max_ageRemoved value: -{ - "type": "string" -} - added
Input schema / properties / sort / descriptionAdded value: +"Sort order" - added
Input schema / properties / sort / enumAdded value: +[ + "best", + "hot", + "new", + "top", + "rising" +] - added
Input schema / properties / subreddit / descriptionAdded value: +"Subreddit name" - added
Input schema / properties / timeframe / descriptionAdded value: +"Timeframe to get posts from. Runtime requires `sort=top` when `timeframe` is provided." - added
Input schema / properties / timeframe / enumAdded value: +[ + "all", + "day", + "week", + "month", + "year" +] - added
Input schema / properties / trim / descriptionAdded value: +"Set to true for a trimmed down version of the response" - added
Input schema / properties / trim / exampleAdded value: +"false" - changed
Input schema / properties / trim / typePrevious value: -"string"New value: +"boolean" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "subreddit" +]
- Changed
get_semrush_backlinks_overview1 field changed- added
Input schema / properties / target / descriptionAdded value: +"Target root domain, e.g. `ahrefs.com`."
- Changed
get_semrush_domain_overview2 fields changed- added
Input schema / properties / database / descriptionAdded value: +"Regional database / country code. Defaults to `us`. Examples: `us`, `uk`, `cn`." - added
Input schema / properties / domain / descriptionAdded value: +"Target domain, e.g. `ahrefs.com`."
- Changed
get_semrush_keyword_overview3 fields changed- added
Input schema / properties / database / descriptionAdded value: +"Regional database / country code. Defaults to `us`." - added
Input schema / properties / phrase / descriptionAdded value: +"Keyword phrase. URL-encode spaces as `%20` or `+`." - added
Input schema / properties / phrase / exampleAdded value: +"seo tools"
- Changed
get_semrush_organic_competitors5 fields changed- added
Input schema / properties / database / descriptionAdded value: +"Regional database / country code, e.g. `us`." - added
Input schema / properties / database / exampleAdded value: +"us" - added
Input schema / properties / domain / descriptionAdded value: +"Target domain, e.g. `ahrefs.com`." - added
Input schema / properties / domain / exampleAdded value: +"ahrefs.com" - changed
Input schema / requiredPrevious value: -[ - "database", - "domain" -]New value: +[ + "domain", + "database" +]
- Changed
get_similarweb_keyword_competitors19 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Worldwide data only; values are case-insensitive."New value: +"Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan." - changed
Input schema / properties / country / enumPrevious value: -[ - "ww" -]New value: +[ + "us", + "ww" +] - added
Input schema / properties / domain / descriptionAdded value: +"Target domain, e.g. example.com." - removed
Input schema / properties / domain / maxLengthRemoved value: -253 - removed
Input schema / properties / domain / minLengthRemoved value: -1 - added
Input schema / properties / end_date / descriptionAdded value: +"End month, format YYYY-MM." - added
Input schema / properties / granularity / descriptionAdded value: +"Time granularity. Allowed: monthly." - added
Input schema / properties / limit / defaultAdded value: +20 - added
Input schema / properties / limit / descriptionAdded value: +"Number of rows to return; max 20, billed as 20 if exceeded." - removed
Input schema / properties / limit / minimumRemoved value: -1 - added
Input schema / properties / main_domain_only / descriptionAdded value: +"Restrict to the main domain only (true/false)." - added
Input schema / properties / offset / descriptionAdded value: +"Row offset for pagination." - removed
Input schema / properties / offset / maximumRemoved value: -100000 - removed
Input schema / properties / offset / minimumRemoved value: -0 - added
Input schema / properties / start_date / descriptionAdded value: +"Start month, format YYYY-MM." - added
Input schema / properties / traffic_source / descriptionAdded value: +"Traffic-source filter." - added
Input schema / properties / web_source / descriptionAdded value: +"Web source. This endpoint accepts desktop only (the gateway rejects mobile_web and total with 400)." - changed
Input schema / properties / web_source / enumPrevious value: -[ - "desktop", - "mobile_web", - "total" -]New value: +[ + "desktop" +] - changed
Input schema / requiredPrevious value: -[ - "domain", - "end_date", - "limit", - "start_date" -]New value: +[ + "domain", + "start_date", + "end_date", + "limit" +]
- Changed
get_similarweb_keywords15 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Worldwide data only; values are case-insensitive."New value: +"Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan." - changed
Input schema / properties / country / enumPrevious value: -[ - "ww" -]New value: +[ + "us", + "ww" +] - added
Input schema / properties / domain / descriptionAdded value: +"Target domain, e.g. example.com." - removed
Input schema / properties / domain / maxLengthRemoved value: -2048 - removed
Input schema / properties / domain / minLengthRemoved value: -1 - added
Input schema / properties / end_date / descriptionAdded value: +"End month, format YYYY-MM." - added
Input schema / properties / format / descriptionAdded value: +"Response format. Allowed: json." - added
Input schema / properties / granularity / descriptionAdded value: +"Time granularity. Allowed: monthly." - added
Input schema / properties / limit / defaultAdded value: +20 - added
Input schema / properties / limit / descriptionAdded value: +"Number of rows to return; max 20, billed as 20 if exceeded." - removed
Input schema / properties / limit / minimumRemoved value: -1 - added
Input schema / properties / main_domain_only / descriptionAdded value: +"Restrict to the main domain only (true/false)." - added
Input schema / properties / start_date / descriptionAdded value: +"Start month, format YYYY-MM." - added
Input schema / properties / web_source / descriptionAdded value: +"Traffic source device split. Allowed: total." - changed
Input schema / requiredPrevious value: -[ - "domain", - "end_date", - "granularity", - "limit", - "start_date" -]New value: +[ + "domain", + "start_date", + "end_date", + "granularity", + "limit" +]
- Changed
get_similarweb_ranking11 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Worldwide data only; values are case-insensitive."New value: +"Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan." - changed
Input schema / properties / country / enumPrevious value: -[ - "ww" -]New value: +[ + "us", + "ww" +] - added
Input schema / properties / domain / descriptionAdded value: +"Target domain, e.g. example.com." - removed
Input schema / properties / domain / maxLengthRemoved value: -253 - removed
Input schema / properties / domain / minLengthRemoved value: -1 - added
Input schema / properties / end_date / descriptionAdded value: +"End month, format YYYY-MM." - added
Input schema / properties / granularity / descriptionAdded value: +"Time granularity. Allowed: monthly. Default: monthly." - added
Input schema / properties / main_domain_only / descriptionAdded value: +"Restrict to the main domain only (true/false). Default: True." - added
Input schema / properties / start_date / descriptionAdded value: +"Start month, format YYYY-MM." - added
Input schema / properties / web_source / descriptionAdded value: +"Traffic source device split. Allowed: desktop, mobile_web, total." - changed
Input schema / requiredPrevious value: -[ - "domain", - "end_date", - "start_date" -]New value: +[ + "domain", + "start_date", + "end_date" +]
- Changed
get_similarweb_similar_sites18 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Worldwide data only; values are case-insensitive."New value: +"Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan." - changed
Input schema / properties / country / enumPrevious value: -[ - "ww" -]New value: +[ + "us", + "ww" +] - added
Input schema / properties / domain / descriptionAdded value: +"Target domain, e.g. example.com." - removed
Input schema / properties / domain / maxLengthRemoved value: -253 - removed
Input schema / properties / domain / minLengthRemoved value: -1 - added
Input schema / properties / end_date / descriptionAdded value: +"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)." - added
Input schema / properties / granularity / descriptionAdded value: +"Time granularity. Allowed: monthly." - added
Input schema / properties / limit / defaultAdded value: +20 - added
Input schema / properties / limit / descriptionAdded value: +"Number of rows to return; max 20, billed as 20 if exceeded." - removed
Input schema / properties / limit / minimumRemoved value: -1 - added
Input schema / properties / main_domain_only / descriptionAdded value: +"Restrict to the main domain only (true/false)." - added
Input schema / properties / offset / descriptionAdded value: +"Row offset for pagination." - removed
Input schema / properties / offset / maximumRemoved value: -100000 - removed
Input schema / properties / offset / minimumRemoved value: -0 - added
Input schema / properties / start_date / descriptionAdded value: +"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)." - added
Input schema / properties / traffic_source / descriptionAdded value: +"Traffic-source filter." - added
Input schema / properties / web_source / descriptionAdded value: +"Traffic source device split. Allowed: desktop, mobile_web, total." - changed
Input schema / requiredPrevious value: -[ - "domain", - "end_date", - "limit", - "start_date" -]New value: +[ + "domain", + "start_date", + "end_date", + "limit" +]
- Changed
get_similarweb_traffic_engagement16 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Worldwide data only; values are case-insensitive."New value: +"Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan." - changed
Input schema / properties / country / enumPrevious value: -[ - "ww" -]New value: +[ + "us", + "ww" +] - added
Input schema / properties / domain / descriptionAdded value: +"Target domain, e.g. example.com." - removed
Input schema / properties / domain / maxLengthRemoved value: -253 - removed
Input schema / properties / domain / minLengthRemoved value: -1 - added
Input schema / properties / end_date / descriptionAdded value: +"End month, format YYYY-MM." - added
Input schema / properties / granularity / descriptionAdded value: +"Time granularity. Allowed: monthly. Default: monthly." - added
Input schema / properties / main_domain_only / descriptionAdded value: +"Restrict to the main domain only (true/false). Default: True." - added
Input schema / properties / metrics / descriptionAdded value: +"Comma-separated metrics, e.g. visits,pages_per_visit." - removed
Input schema / properties / metrics / x-aisa-delimiterRemoved value: -"," - removed
Input schema / properties / metrics / x-aisa-maxItemsRemoved value: -8 - removed
Input schema / properties / metrics / x-aisa-minItemsRemoved value: -1 - added
Input schema / properties / mtd / descriptionAdded value: +"Month-to-date flag (true/false)." - added
Input schema / properties / start_date / descriptionAdded value: +"Start month, format YYYY-MM." - added
Input schema / properties / web_source / descriptionAdded value: +"Traffic source device split. Allowed: desktop, mobile_web, total." - changed
Input schema / requiredPrevious value: -[ - "domain", - "end_date", - "metrics", - "start_date" -]New value: +[ + "domain", + "start_date", + "end_date", + "metrics" +]
- Changed
get_similarweb_website_top_geographies2 fields changed- changed
Input schema / properties / domain / descriptionPrevious value: -"Bare website hostname without scheme, path, port, or credentials."New value: +"Target domain, e.g. example.com." - removed
Input schema / properties / monthRemoved value: -{ - "description": "Complete month in YYYY-MM.", - "type": "string", - "x-aisa-default-policy": "previous_complete_utc_month" -}
- Changed
get_similarweb_website_traffic_snapshot4 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Worldwide data only; values are case-insensitive."New value: +"Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan." - changed
Input schema / properties / country / enumPrevious value: -[ - "ww" -]New value: +[ + "us", + "ww" +] - changed
Input schema / properties / domain / descriptionPrevious value: -"Bare website hostname without scheme, path, port, or credentials."New value: +"Target domain, e.g. example.com." - removed
Input schema / properties / monthRemoved value: -{ - "description": "Complete month in YYYY-MM.", - "type": "string", - "x-aisa-default-policy": "previous_complete_utc_month" -}
- Changed
get_similarweb_website_traffic_trend6 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Worldwide data only; values are case-insensitive."New value: +"Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan." - changed
Input schema / properties / country / enumPrevious value: -[ - "ww" -]New value: +[ + "us", + "ww" +] - changed
Input schema / properties / domain / descriptionPrevious value: -"Bare website hostname without scheme, path, port, or credentials."New value: +"Target domain, e.g. example.com." - removed
Input schema / properties / end_dateRemoved value: -{ - "description": "Inclusive last complete UTC month in YYYY-MM.", - "type": "string" -} - removed
Input schema / properties / metricsRemoved value: -{ - "default": "visits", - "description": "One to four supported Traffic & Engagement metrics.", - "type": "string", - "x-aisa-delimiter": ",", - "x-aisa-item-enum": [ - "average_visit_duration", - "bounce_rate", - "new_users", - "page_views", - "pages_per_visit", - "returning_users", - "unique_visitors", - "visits" - ], - "x-aisa-maxItems": 4 -} - removed
Input schema / properties / start_dateRemoved value: -{ - "description": "Inclusive first month in YYYY-MM; provide together with end_date.", - "type": "string" -}
- Changed
get_twitter_trends9 fields changed- added
Input schema / properties / count / defaultAdded value: +30 - added
Input schema / properties / count / descriptionAdded value: +"The number of trends to return. Default is 30." - added
Input schema / properties / count / formatAdded value: +"int64" - added
Input schema / properties / count / minimumAdded value: +30 - changed
Input schema / properties / count / typePrevious value: -"string"New value: +"integer" - added
Input schema / properties / woeid / descriptionAdded value: +"The WOEID of the location. Example: 2418046." - added
Input schema / properties / woeid / formatAdded value: +"int64" - changed
Input schema / properties / woeid / typePrevious value: -"string"New value: +"integer" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "woeid" +]
- Changed
get_twitter_tweet_advanced_search9 fields changed- removed
Input schema / properties / countRemoved value: -{ - "type": "string" -} - added
Input schema / properties / cursor / descriptionAdded value: +"The cursor to paginate through the results. First page is empty." - removed
Input schema / properties / max_resultsRemoved value: -{ - "type": "string" -} - added
Input schema / properties / query / descriptionAdded value: +"The query to search for." - added
Input schema / properties / queryType / defaultAdded value: +"Latest" - added
Input schema / properties / queryType / descriptionAdded value: +"The query type to search for." - added
Input schema / properties / queryType / enumAdded value: +[ + "Latest", + "Top" +] - removed
Input schema / properties / start_timeRemoved value: -{ - "type": "string" -} - changed
Input schema / requiredPrevious value: -[]New value: +[ + "query", + "queryType" +]
- Changed
get_twitter_tweet_replies3 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Cursor for pagination." - added
Input schema / properties / tweetId / descriptionAdded value: +"The tweet ID to get replies for." - changed
Input schema / requiredPrevious value: -[]New value: +[ + "tweetId" +]
- Changed
get_twitter_user_followers4 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Cursor for pagination" - added
Input schema / properties / pageSizeAdded value: +{ + "default": 200, + "description": "Number of followers per page", + "maximum": 200, + "minimum": 20, + "type": "integer" +} - added
Input schema / properties / userName / descriptionAdded value: +"Screen name of the user" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "userName" +]
- Changed
get_twitter_user_info2 fields changed- added
Input schema / properties / userName / descriptionAdded value: +"The screen name of the user" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "userName" +]
- Changed
get_twitter_user_last_tweets7 fields changed- removed
Input schema / properties / countRemoved value: -{ - "type": "string" -} - added
Input schema / properties / cursor / descriptionAdded value: +"Cursor for pagination" - added
Input schema / properties / includeReplies / defaultAdded value: +false - added
Input schema / properties / includeReplies / descriptionAdded value: +"Include replies in the results" - changed
Input schema / properties / includeReplies / typePrevious value: -"string"New value: +"boolean" - added
Input schema / properties / userId / descriptionAdded value: +"User ID of the user" - added
Input schema / properties / userName / descriptionAdded value: +"Screen name of the user"
- Changed
get_twitter_user_mentions5 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "The cursor to paginate through the results. First page is empty.", + "type": "string" +} - added
Input schema / properties / sinceTimeAdded value: +{ + "description": "On or after a specified unix timestamp in seconds.", + "format": "int64", + "type": "integer" +} - added
Input schema / properties / untilTimeAdded value: +{ + "description": "Before a specified unix timestamp in seconds.", + "format": "int64", + "type": "integer" +} - added
Input schema / properties / userName / descriptionAdded value: +"The user screen name to get mentions for." - changed
Input schema / requiredPrevious value: -[]New value: +[ + "userName" +]
- Changed
get_twitter_user_search3 fields changed- added
Input schema / properties / cursorAdded value: +{ + "description": "The cursor to paginate through the results. First page is empty.", + "type": "string" +} - added
Input schema / properties / query / descriptionAdded value: +"The keyword to search." - changed
Input schema / requiredPrevious value: -[]New value: +[ + "query" +]
- Changed
post_apollo_people_bulk_match11 fields changed- added
Input schema / properties / reveal_personal_emailsAdded value: +{ + "description": "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.", + "type": "boolean" +} - removed
Input schema / properties / reveal_phone_number / defaultRemoved value: -false - added
Input schema / properties / reveal_phone_number / descriptionAdded value: +"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." - removed
Input schema / properties / run_waterfall_email / defaultRemoved value: -false - added
Input schema / properties / run_waterfall_email / descriptionAdded value: +"Set to true to enable email waterfall enrichment" - removed
Input schema / properties / run_waterfall_phone / defaultRemoved value: -false - added
Input schema / properties / run_waterfall_phone / descriptionAdded value: +"Set to true to enable phone waterfall enrichment" - added
Input schema / properties / webhook_url / descriptionAdded value: +"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" - removed
Input schema / properties / webhook_url / formatRemoved value: -"https_url" - removed
Input schema / properties / webhook_url / maxLengthRemoved value: -2048 - removed
Input schema / properties / webhook_url / minLengthRemoved value: -1
- Changed
post_apollo_people_match20 fields changed- added
Input schema / properties / domainAdded value: +{ + "description": "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", + "type": "string" +} - added
Input schema / properties / emailAdded value: +{ + "description": "The email address of the person. Example: example@email.com", + "type": "string" +} - added
Input schema / properties / first_nameAdded value: +{ + "description": "The first name of the person. This is typically used in combination with the last_name parameter. Example: tim", + "type": "string" +} - added
Input schema / properties / hashed_emailAdded value: +{ + "description": "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)", + "type": "string" +} - added
Input schema / properties / idAdded value: +{ + "description": "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", + "type": "string" +} - added
Input schema / properties / last_nameAdded value: +{ + "description": "The last name of the person. This is typically used in combination with the first_name parameter. Example: zheng", + "type": "string" +} - added
Input schema / properties / linkedin_urlAdded value: +{ + "description": "The URL for the person's LinkedIn profile. Example: http://www.linkedin.com/in/tim-zheng-677ba010", + "type": "string" +} - added
Input schema / properties / nameAdded value: +{ + "description": "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", + "type": "string" +} - added
Input schema / properties / organization_nameAdded value: +{ + "description": "The name of the person's employer. This can be the current employer or a previous employer. Example: apollo", + "type": "string" +} - added
Input schema / properties / reveal_personal_emailsAdded value: +{ + "description": "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.", + "type": "boolean" +} - removed
Input schema / properties / reveal_phone_number / defaultRemoved value: -false - added
Input schema / properties / reveal_phone_number / descriptionAdded value: +"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." - removed
Input schema / properties / run_waterfall_email / defaultRemoved value: -false - added
Input schema / properties / run_waterfall_email / descriptionAdded value: +"Set to true to enable email waterfall enrichment" - removed
Input schema / properties / run_waterfall_phone / defaultRemoved value: -false - added
Input schema / properties / run_waterfall_phone / descriptionAdded value: +"Set to true to enable phone waterfall enrichment" - added
Input schema / properties / webhook_url / descriptionAdded value: +"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" - removed
Input schema / properties / webhook_url / formatRemoved value: -"https_url" - removed
Input schema / properties / webhook_url / maxLengthRemoved value: -2048 - removed
Input schema / properties / webhook_url / minLengthRemoved value: -1
- Changed
post_dataforseo_serp_youtube_organic_live7 fields changed- removed
Input schema / properties / body / exampleRemoved value: -[ - { - "keyword": "audi", - "language_code": "en", - "location_code": 2840 - } -] - removed
Input schema / properties / body / items / anyOfRemoved value: -[ - { - "example": [ - { - "keyword": "audi", - "language_code": "en", - "location_code": 2840 - } - ], - "properties": { - "block_depth": { - "description": "parsing depth\noptional field\nnumber of blocks of results in SERP\ndefault value: 20\nmax value: 200\nNote: your account will be billed per each SERP containing up to 20 results;\nthus, setting a block depth above 20 may result in additional charges if the search engine returns more than 20 results;\nif the specified block depth is higher than the number of results in the response, the difference will be refunded automatically to your account balance", - "type": [ - "integer", - "null" - ] - }, - "device": { - "description": "device type\noptional field\nreturn results for a specific device type\navailable values: desktop, mobile", - "type": [ - "string", - "null" - ] - }, - "keyword": { - "description": "keyword\nrequired field\nyou can specify up to 700 characters in the keyword field\nall %## will be decoded (plus character ‘+’ will be decoded to a space character)\nif you need to use the “%” character for your keyword, please specify it as “%25”;\nif you need to use the “+” character for your keyword, please specify it as “%2B”;\nlearn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article", - "type": "string" - }, - "language_code": { - "description": "search engine language code\nrequired field if you don't specify language_name\nif you use this field, you don't need to specify language_name\nyou can receive the list of available languages of the search engine with their language_code by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/languages\nexample:\nen", - "type": [ - "string", - "null" - ] - }, - "language_name": { - "description": "full name of search engine language\nrequired field if you don't specify language_code\nif you use this field, you don't need to specify language_code\nyou can receive the list of available languages of the search engine with their language_name by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/languages\nexample:\nEnglish", - "type": [ - "string", - "null" - ] - }, - "location_code": { - "description": "search engine location code\nrequired field if you don't specify location_name \nif you use this field, you don't need to specify location_name\nyou can receive the list of available locations of the search engines with their location_code by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/locations\nexample:\n2840", - "type": [ - "integer", - "null" - ] - }, - "location_name": { - "description": "full name of search engine location\nrequired field if you don't specify location_code\nif you use this field, you don't need to specify location_code\nyou can receive the list of available locations of the search engine with their location_name by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/locations\nexample:\nUnited States", - "type": [ - "string", - "null" - ] - }, - "os": { - "description": "device operating system\noptional field\nif you specify desktop in the device field, choose from the following values: windows, macos\ndefault value: windows\nif you specify mobile in the device field, choose from the following values: android, ios\ndefault value: android", - "type": [ - "string", - "null" - ] - }, - "search_param": { - "description": "additional parameters of the search query\noptional field\nexample:\nsp=EgIQAg%253D%253D", - "type": [ - "string", - "null" - ] - }, - "tag": { - "description": "user-defined task identifier\noptional field\nthe character limit is 255\nyou can use this parameter to identify the task and match it with the result\nyou will find the specified tag value in the data object of the response", - "type": [ - "string", - "null" - ] - } - }, - "type": "object" - } -] - added
Input schema / properties / body / items / propertiesAdded value: +{ + "keyword": { + "description": "Keyword to search for", + "type": "string" + }, + "language_code": { + "description": "Search engine language code", + "type": "string" + }, + "language_name": { + "description": "Full name of search engine language", + "type": "string" + }, + "location_code": { + "description": "Search engine location code", + "type": "integer" + }, + "location_name": { + "description": "Full name of search engine location", + "type": "string" + } +} - added
Input schema / properties / body / items / requiredAdded value: +[ + "keyword" +] - changed
Input schema / properties / body / items / typePrevious value: -[ - "object", - "null" -]New value: +"object" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "body" +] - removed
Output schema / x-fastmcp-wrap-resultRemoved value: -true
- Added
post_oxylabs_ai_search - Changed
post_waveinflu_email_lookup3 fields changed- added
Input schema / properties / profile_url / descriptionAdded value: +"Instagram, TikTok, or YouTube creator profile URL." - added
Input schema / properties / profile_url / exampleAdded value: +"https://www.instagram.com/onkimia/" - changed
Input schema / requiredPrevious value: -[]New value: +[ + "profile_url" +]
- Changed
post_waveinflu_similar_creators8 fields changed- changed
Input schema / properties / limit / defaultPrevious value: -25New value: +40 - added
Input schema / properties / limit / descriptionAdded value: +"Maximum number of creators to return. Default 40, range 1–100. Caps the billed count." - added
Input schema / properties / limit / exampleAdded value: +10 - changed
Input schema / properties / limit / typePrevious value: -"integer"New value: +"number" - removed
Input schema / properties / platform / defaultRemoved value: -"youtube" - added
Input schema / properties / platform / descriptionAdded value: +"Target platform." - added
Input schema / properties / platform / exampleAdded value: +"instagram" - changed
Input schema / requiredPrevious value: -[ - "target_account" -]New value: +[ + "platform", + "target_account" +]
- Changed
search17 fields changed- removed
Input schema / $schemaRemoved value: -"https://json-schema.org/draft/2020-12/schema" - added
Input schema / properties / category / anyOfAdded value: +[ + { + "enum": [ + "seo", + "finance", + "social", + "search", + "sales", + "mail" + ], + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / category / defaultAdded value: +null - changed
Input schema / properties / category / descriptionPrevious value: -"Restrict retrieval to one category. Omit to search everything. (AIsa-only: tool-router has no equivalent.)"New value: +"Restrict to one category (seo, finance, social, search, sales, mail). Omit to search everything." - removed
Input schema / properties / category / enumRemoved value: -[ - "seo", - "finance", - "social", - "search", - "sales", - "mail" -] - removed
Input schema / properties / category / typeRemoved value: -"string" - removed
Input schema / properties / known_fieldsRemoved value: -{ - "additionalProperties": true, - "default": {}, - "description": "Known values such as ticker, URL, provider, or identifier that improve retrieval.", - "type": "object" -} - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum number of additional direct tool candidates."New value: +"Maximum candidates, 1-10" - removed
Input schema / properties / limit / maximumRemoved value: -20 - removed
Input schema / properties / limit / minimumRemoved value: -1 - removed
Input schema / properties / provider_filtersRemoved value: -{ - "default": [], - "description": "Optional exact catalog provider keys used to narrow retrieval (for example similarweb). Do not use display brands. Omit this field if the exact key is unknown.", - "items": { - "type": "string" - }, - "maxItems": 50, - "type": "array", - "uniqueItems": true -} - changed
Input schema / properties / query / descriptionPrevious value: -"Natural-language capability or task to discover."New value: +"What you need, in plain language, e.g. 'backlinks of a domain', 'recent tweets by a user', 'insider trades for AAPL'. English works best." - removed
Input schema / properties / query / maxLengthRemoved value: -2000 - removed
Input schema / properties / query / minLengthRemoved value: -1 - removed
Input schema / properties / session_idRemoved value: -{ - "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", - "maxLength": 128, - "pattern": "^[A-Za-z0-9_-]*$", - "type": "string" -} - removed
Output schema / propertiesRemoved value: -{ - "next_steps_guidance": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "plan": { - "additionalProperties": false, - "anyOf": [ - { - "type": "null" - }, - { - "type": "object" - } - ], - "properties": { - "canonical_use_case": { - "type": "string" - }, - "description": { - "type": "string" - }, - "known_pitfalls": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "plan_ref": { - "type": "string" - }, - "primary_tools": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "recommended_steps": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "related_tools": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - } - }, - "required": [ - "canonical_use_case", - "description", - "known_pitfalls", - "plan_ref", - "primary_tools", - "recommended_steps", - "related_tools" - ] - }, - "retrieval_mode": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "string" - } - ] - }, - "search_id": { - "type": "string" - }, - "session_id": { - "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", - "maxLength": 128, - "minLength": 1, - "pattern": "^[A-Za-z0-9_-]{1,128}$", - "type": "string" - }, - "tools": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "additionalProperties": false, - "properties": { - "arguments_schema": { - "additionalProperties": true, - "anyOf": [ - { - "type": "null" - }, - { - "type": "object" - } - ] - }, - "description": { - "type": "string" - }, - "execution_supported": { - "description": "Whether this router can execute and quote the operation; false retains documentation and discovery only.", - "type": "boolean" - }, - "execution_unsupported_reason": { - "description": "Why execution and quoting remain unavailable through this router.", - "type": "string" - }, - "has_full_schema": { - "type": "boolean" - }, - "match_reasons": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "array" - } - ], - "items": { - "type": "string" - } - }, - "price": { - "additionalProperties": true, - "type": "object" - }, - "retrieval_debug": { - "additionalProperties": false, - "anyOf": [ - { - "type": "null" - }, - { - "type": "object" - } - ], - "properties": { - "fused_rank": { - "type": "integer" - }, - "fused_score": { - "type": "number" - }, - "lexical_rank": { - "type": "integer" - }, - "lexical_score": { - "type": "number" - }, - "rerank_admission_rank": { - "type": "integer" - }, - "rerank_rank": { - "type": "integer" - }, - "rerank_score": { - "anyOf": [ - { - "type": "null" - }, - { - "type": "number" - } - ] - }, - "runtime_availability": { - "type": "string" - }, - "vector_view_ranks": { - "additionalProperties": { - "type": "integer" - }, - "type": "object" - }, - "vector_view_scores": { - "additionalProperties": { - "type": "number" - }, - "type": "object" - } - }, - "required": [ - "fused_rank", - "fused_score", - "lexical_rank", - "lexical_score", - "rerank_admission_rank", - "rerank_rank", - "runtime_availability", - "vector_view_ranks", - "vector_view_scores" - ] - }, - "summary": { - "type": "string" - }, - "tool": { - "type": "string" - } - }, - "required": [ - "description", - "has_full_schema", - "price", - "summary", - "tool" - ], - "type": "object" - } - } -} - removed
Output schema / requiredRemoved value: -[ - "next_steps_guidance", - "search_id", - "session_id", - "tools" -]
- Changed
use1 field changed- changed
Input schema / properties / max_price_usd / descriptionPrevious value: -"Refuse the call before any spend if its quoted price is above this many USD"New value: +"Refuse the call before any spend if it would cost more than this many USD"
40 tool updates
- Added
batch_get_schema - Added
batch_quote - Changed
batch_use18 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / calls / descriptionRemoved value: -"Up to 20 items of {call_id, operation_id, arguments}; steps at the same execution_level of a plan go in one batch" - added
Input schema / properties / calls / items / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - changed
Input schema / properties / calls / items / additionalPropertiesPrevious value: -trueNew value: +false - added
Input schema / properties / calls / items / propertiesAdded value: +{ + "arguments": { + "additionalProperties": true, + "description": "Strictly schema-compliant arguments using the exact field names and types from this tool's arguments_schema.", + "type": "object" + }, + "call_id": { + "description": "Caller-chosen identifier unique within this batch.", + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "tool": { + "description": "Exact tool name returned by search or batch_get_schema. Never invent a name.", + "minLength": 1, + "type": "string" + } +} - added
Input schema / properties / calls / items / requiredAdded value: +[ + "call_id", + "tool", + "arguments" +] - added
Input schema / properties / calls / maxItemsAdded value: +20 - added
Input schema / properties / calls / minItemsAdded value: +1 - removed
Input schema / properties / max_price_usdRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Per-call price cap applied to every item" -} - removed
Input schema / properties / search_id / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / search_id / defaultRemoved value: -null - changed
Input schema / properties / search_id / descriptionPrevious value: -"search_id from the search that found these operations"New value: +"Optional search correlation identifier returned by search." - added
Input schema / properties / search_id / typeAdded value: +"string" - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Output schema / $defsAdded value: +{ + "jsonValue": { + "anyOf": [ + { + "additionalProperties": { + "$ref": "#/$defs/jsonValue" + }, + "type": "object" + }, + { + "items": { + "$ref": "#/$defs/jsonValue" + }, + "type": "array" + }, + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "JSON value returned by the upstream tool." + } +} - added
Output schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / propertiesAdded value: +{ + "batch_id": { + "type": "string" + }, + "error_count": { + "minimum": 0, + "type": "integer" + }, + "next_steps_guidance": { + "description": "Deterministic next-step instructions derived from this result. Not an authorization grant.", + "items": { + "type": "string" + }, + "type": "array" + }, + "results": { + "items": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "call_id": { + "type": "string" + }, + "customer_cost_micros_usd": { + "description": "Actual customer charge settled by AIsaServices, in micro-USD. Omitted when the upstream response does not report it.", + "minimum": 0, + "type": "integer" + }, + "data": { + "$ref": "#/$defs/jsonValue" + }, + "error": { + "anyOf": [ + { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "message": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "status": { + "type": "integer" + }, + "type": { + "enum": [ + "validation", + "authentication", + "payment", + "permission", + "rate_limit", + "upstream", + "timeout", + "internal" + ], + "type": "string" + } + }, + "required": [ + "type", + "status", + "retryable" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "request_id": { + "type": "string" + }, + "successful": { + "type": "boolean" + }, + "tool": { + "type": "string" + }, + "upstream_status": { + "description": "HTTP status returned by AIsaServices when a request was dispatched.", + "type": "integer" + } + }, + "required": [ + "call_id", + "tool", + "successful", + "request_id" + ], + "type": "object" + }, + "type": "array" + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" + }, + "success_count": { + "minimum": 0, + "type": "integer" + }, + "total_count": { + "minimum": 1, + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "session_id", + "batch_id", + "total_count", + "success_count", + "error_count", + "results", + "next_steps_guidance" +]
- Changed
get_ahrefs_domain_rating2 fields changed- added
Input schema / properties / target / exampleAdded value: +"ahrefs.com" - changed
Input schema / requiredPrevious value: -[ - "target", - "date" -]New value: +[ + "date", + "target" +]
- Changed
get_details13 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / argumentsRemoved value: -{ - "anyOf": [ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null, - "description": "The arguments the operation would be called with, for a price that reflects them. Keyed by operation_id for a batch, or passed flat for a single operation_id. Routes whose required parameters are validated before pricing have no price without them." -} - added
Input schema / properties / include_arguments_schemaAdded value: +{ + "default": true, + "description": "Return the complete arguments_schema. Defaults to true.", + "type": "boolean" +} - changed
Input schema / properties / include_documentation / descriptionPrevious value: -"Include the complete native public OpenAPI document, reference closure and scoped completeness. Existing execution schemas remain unchanged."New value: +"Return the complete immutable public OpenAPI operation, referenced declarations, provenance and scoped completeness. Documentation does not change execution support." - added
Input schema / properties / include_response_schemaAdded value: +{ + "default": false, + "description": "Return the complete response_schema. Defaults to false.", + "type": "boolean" +} - removed
Input schema / properties / operation_idRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "One operation_id from search" -} - removed
Input schema / properties / operation_idsRemoved value: -{ - "anyOf": [ - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Up to 20 operation_ids, for a batch" -} - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Input schema / properties / toolsAdded value: +{ + "description": "Exact tool names returned by search whose complete contracts are needed. Never invent tool names.", + "items": { + "minLength": 1, + "pattern": "^\\S(?:.*\\S)?$", + "type": "string" + }, + "maxItems": 20, + "minItems": 1, + "type": "array", + "uniqueItems": true +} - removed
Input schema / properties / with_quoteRemoved value: -{ - "default": true, - "description": "Whether each operation is priced for this account before the answer. One round trip per operation; spends nothing.", - "type": "boolean" -} - added
Input schema / requiredAdded value: +[ + "tools" +] - added
Output schema / propertiesAdded value: +{ + "error_count": { + "type": "integer" + }, + "next_steps_guidance": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]{1,128}$", + "type": "string" + }, + "success_count": { + "type": "integer" + }, + "tools": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "arguments_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "canonical_operation_id": { + "type": "string" + }, + "documentation": { + "additionalProperties": true, + "type": "object" + }, + "error": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "code": { + "type": "string" + }, + "message": { + "type": "string" + } + }, + "required": [ + "code", + "message" + ] + }, + "execution_supported": { + "description": "Whether this router can execute and quote the operation; false retains documentation and discovery only.", + "type": "boolean" + }, + "execution_unsupported_reason": { + "description": "Why execution and quoting remain unavailable through this router.", + "type": "string" + }, + "idempotent": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + } + ] + }, + "known_pitfalls": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "read_only": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "boolean" + } + ] + }, + "response_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "side_effects": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "successful": { + "type": "boolean" + } + }, + "required": [ + "successful" + ], + "type": "object" + }, + "type": "object" + }, + "total_count": { + "type": "integer" + } +} - added
Output schema / requiredAdded value: +[ + "error_count", + "next_steps_guidance", + "session_id", + "success_count", + "tools", + "total_count" +]
- Changed
get_instagram_search_hashtag6 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "The cursor returned by the previous response. In this version, it is the next Google results page number.", - "example": "2", - "type": "string" -} - removed
Input schema / properties / date_postedRemoved value: -{ - "description": "Only return Google-indexed posts found in this relative window.", - "enum": [ - "last-hour", - "last-day", - "last-week", - "last-month", - "last-year" - ], - "example": "last-week", - "type": "string" -} - removed
Input schema / properties / hashtag / descriptionRemoved value: -"The hashtag to search for. Include or omit the #." - removed
Input schema / properties / hashtag / exampleRemoved value: -"makeup" - removed
Input schema / properties / media_typeRemoved value: -{ - "description": "Use all to search public posts and reels, or reels to only return reels. Defaults to all.", - "enum": [ - "all", - "reels" - ], - "example": "all", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "hashtag" -]New value: +[]
- Changed
get_instagram_search_profiles4 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "The cursor returned by the previous response. In this version, it is the next Google results page number.", - "example": "2", - "type": "string" -} - removed
Input schema / properties / query / descriptionRemoved value: -"Bio or caption keyword/phrase to search for." - removed
Input schema / properties / query / exampleRemoved value: -"fitness coach" - changed
Input schema / requiredPrevious value: -[ - "query" -]New value: +[]
- Changed
get_pinterest_board7 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "The cursor to get the next page of results", - "example": "Y2JURlEwTWsxNlp6Vk9SR2MwV....", - "type": "string" -} - removed
Input schema / properties / trim / descriptionRemoved value: -"Set to true for a trimmed down version of the response" - removed
Input schema / properties / trim / exampleRemoved value: -"false" - changed
Input schema / properties / trim / typePrevious value: -"boolean"New value: +"string" - removed
Input schema / properties / url / descriptionRemoved value: -"The URL of the board to get" - removed
Input schema / properties / url / exampleRemoved value: -"https://www.pinterest.com/lizmrodgers/moms-night/" - changed
Input schema / requiredPrevious value: -[ - "url" -]New value: +[]
- Changed
get_pinterest_search8 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "Cursor", - "example": "Y2JVSG81V2sxcmNHRlpWM1J...", - "type": "string" -} - added
Input schema / properties / limitAdded value: +{ + "type": "string" +} - removed
Input schema / properties / query / descriptionRemoved value: -"Search query" - removed
Input schema / properties / query / exampleRemoved value: -"Italian Pot Roast" - removed
Input schema / properties / trim / descriptionRemoved value: -"Set to true for a trimmed down version of the response" - removed
Input schema / properties / trim / exampleRemoved value: -"false" - changed
Input schema / properties / trim / typePrevious value: -"boolean"New value: +"string" - changed
Input schema / requiredPrevious value: -[ - "query" -]New value: +[]
- Changed
get_reddit_post_comments7 fields changed- removed
Input schema / properties / cursor / descriptionRemoved value: -"Cursor to get more comments, or replies." - removed
Input schema / properties / cursor / exampleRemoved value: -"ed1lvsa,ed3fnpq,ed25l2w" - removed
Input schema / properties / trimRemoved value: -{ - "description": "Set to true for a trimmed down version of the response", - "example": "false", - "type": "boolean" -} - added
Input schema / properties / trimmedAdded value: +{ + "type": "string" +} - removed
Input schema / properties / url / descriptionRemoved value: -"Reddit post URL" - removed
Input schema / properties / url / exampleRemoved value: -"https://www.reddit.com/r/AskReddit/comments/ablzuq/people_who_havent_pooped_in_2019_yet_why_are_you/" - changed
Input schema / requiredPrevious value: -[ - "url" -]New value: +[]
- Changed
get_reddit_search16 fields changed- removed
Input schema / properties / afterRemoved value: -{ - "description": "Used to paginate to next page", - "example": "t3_1i8z28z", - "type": "string" -} - added
Input schema / properties / countAdded value: +{ + "type": "string" +} - added
Input schema / properties / limitAdded value: +{ + "type": "string" +} - removed
Input schema / properties / query / descriptionRemoved value: -"Search query" - removed
Input schema / properties / sort / descriptionRemoved value: -"Sort by" - removed
Input schema / properties / sort / enumRemoved value: -[ - "relevance", - "new", - "top", - "comment_count" -] - removed
Input schema / properties / sort / exampleRemoved value: -"relevance" - added
Input schema / properties / timeAdded value: +{ + "type": "string" +} - removed
Input schema / properties / timeframe / descriptionRemoved value: -"Timeframe" - removed
Input schema / properties / timeframe / enumRemoved value: -[ - "all", - "day", - "week", - "month", - "year" -] - removed
Input schema / properties / timeframe / exampleRemoved value: -"all" - removed
Input schema / properties / trim / descriptionRemoved value: -"Set to true for a trimmed down version of the response" - removed
Input schema / properties / trim / exampleRemoved value: -"false" - changed
Input schema / properties / trim / typePrevious value: -"boolean"New value: +"string" - added
Input schema / properties / trimmedAdded value: +{ + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "query" -]New value: +[]
- Changed
get_reddit_subreddit12 fields changed- removed
Input schema / properties / after / descriptionRemoved value: -"After to get more posts. Get 'after' from previous response." - removed
Input schema / properties / after / exampleRemoved value: -"t3_1234567890" - added
Input schema / properties / cache_max_ageAdded value: +{ + "type": "string" +} - removed
Input schema / properties / sort / descriptionRemoved value: -"Sort order" - removed
Input schema / properties / sort / enumRemoved value: -[ - "best", - "hot", - "new", - "top", - "rising" -] - removed
Input schema / properties / subreddit / descriptionRemoved value: -"Subreddit name" - removed
Input schema / properties / timeframe / descriptionRemoved value: -"Timeframe to get posts from. Runtime requires `sort=top` when `timeframe` is provided." - removed
Input schema / properties / timeframe / enumRemoved value: -[ - "all", - "day", - "week", - "month", - "year" -] - removed
Input schema / properties / trim / descriptionRemoved value: -"Set to true for a trimmed down version of the response" - removed
Input schema / properties / trim / exampleRemoved value: -"false" - changed
Input schema / properties / trim / typePrevious value: -"boolean"New value: +"string" - changed
Input schema / requiredPrevious value: -[ - "subreddit" -]New value: +[]
- Changed
get_semrush_backlinks_overview1 field changed- removed
Input schema / properties / target / descriptionRemoved value: -"Target root domain, e.g. `ahrefs.com`."
- Changed
get_semrush_domain_overview2 fields changed- removed
Input schema / properties / database / descriptionRemoved value: -"Regional database / country code. Defaults to `us`. Examples: `us`, `uk`, `cn`." - removed
Input schema / properties / domain / descriptionRemoved value: -"Target domain, e.g. `ahrefs.com`."
- Changed
get_semrush_keyword_overview3 fields changed- removed
Input schema / properties / database / descriptionRemoved value: -"Regional database / country code. Defaults to `us`." - removed
Input schema / properties / phrase / descriptionRemoved value: -"Keyword phrase. URL-encode spaces as `%20` or `+`." - removed
Input schema / properties / phrase / exampleRemoved value: -"seo tools"
- Changed
get_semrush_organic_competitors5 fields changed- removed
Input schema / properties / database / descriptionRemoved value: -"Regional database / country code, e.g. `us`." - removed
Input schema / properties / database / exampleRemoved value: -"us" - removed
Input schema / properties / domain / descriptionRemoved value: -"Target domain, e.g. `ahrefs.com`." - removed
Input schema / properties / domain / exampleRemoved value: -"ahrefs.com" - changed
Input schema / requiredPrevious value: -[ - "domain", - "database" -]New value: +[ + "database", + "domain" +]
- Changed
get_similarweb_keyword_competitors19 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan."New value: +"Worldwide data only; values are case-insensitive." - changed
Input schema / properties / country / enumPrevious value: -[ - "us", - "ww" -]New value: +[ + "ww" +] - removed
Input schema / properties / domain / descriptionRemoved value: -"Target domain, e.g. example.com." - added
Input schema / properties / domain / maxLengthAdded value: +253 - added
Input schema / properties / domain / minLengthAdded value: +1 - removed
Input schema / properties / end_date / descriptionRemoved value: -"End month, format YYYY-MM." - removed
Input schema / properties / granularity / descriptionRemoved value: -"Time granularity. Allowed: monthly." - removed
Input schema / properties / limit / defaultRemoved value: -20 - removed
Input schema / properties / limit / descriptionRemoved value: -"Number of rows to return; max 20, billed as 20 if exceeded." - added
Input schema / properties / limit / minimumAdded value: +1 - removed
Input schema / properties / main_domain_only / descriptionRemoved value: -"Restrict to the main domain only (true/false)." - removed
Input schema / properties / offset / descriptionRemoved value: -"Row offset for pagination." - added
Input schema / properties / offset / maximumAdded value: +100000 - added
Input schema / properties / offset / minimumAdded value: +0 - removed
Input schema / properties / start_date / descriptionRemoved value: -"Start month, format YYYY-MM." - removed
Input schema / properties / traffic_source / descriptionRemoved value: -"Traffic-source filter." - removed
Input schema / properties / web_source / descriptionRemoved value: -"Web source. This endpoint accepts desktop only (the gateway rejects mobile_web and total with 400)." - changed
Input schema / properties / web_source / enumPrevious value: -[ - "desktop" -]New value: +[ + "desktop", + "mobile_web", + "total" +] - changed
Input schema / requiredPrevious value: -[ - "domain", - "start_date", - "end_date", - "limit" -]New value: +[ + "domain", + "end_date", + "limit", + "start_date" +]
- Changed
get_similarweb_keywords15 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan."New value: +"Worldwide data only; values are case-insensitive." - changed
Input schema / properties / country / enumPrevious value: -[ - "us", - "ww" -]New value: +[ + "ww" +] - removed
Input schema / properties / domain / descriptionRemoved value: -"Target domain, e.g. example.com." - added
Input schema / properties / domain / maxLengthAdded value: +2048 - added
Input schema / properties / domain / minLengthAdded value: +1 - removed
Input schema / properties / end_date / descriptionRemoved value: -"End month, format YYYY-MM." - removed
Input schema / properties / format / descriptionRemoved value: -"Response format. Allowed: json." - removed
Input schema / properties / granularity / descriptionRemoved value: -"Time granularity. Allowed: monthly." - removed
Input schema / properties / limit / defaultRemoved value: -20 - removed
Input schema / properties / limit / descriptionRemoved value: -"Number of rows to return; max 20, billed as 20 if exceeded." - added
Input schema / properties / limit / minimumAdded value: +1 - removed
Input schema / properties / main_domain_only / descriptionRemoved value: -"Restrict to the main domain only (true/false)." - removed
Input schema / properties / start_date / descriptionRemoved value: -"Start month, format YYYY-MM." - removed
Input schema / properties / web_source / descriptionRemoved value: -"Traffic source device split. Allowed: total." - changed
Input schema / requiredPrevious value: -[ - "domain", - "start_date", - "end_date", - "granularity", - "limit" -]New value: +[ + "domain", + "end_date", + "granularity", + "limit", + "start_date" +]
- Changed
get_similarweb_ranking11 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan."New value: +"Worldwide data only; values are case-insensitive." - changed
Input schema / properties / country / enumPrevious value: -[ - "us", - "ww" -]New value: +[ + "ww" +] - removed
Input schema / properties / domain / descriptionRemoved value: -"Target domain, e.g. example.com." - added
Input schema / properties / domain / maxLengthAdded value: +253 - added
Input schema / properties / domain / minLengthAdded value: +1 - removed
Input schema / properties / end_date / descriptionRemoved value: -"End month, format YYYY-MM." - removed
Input schema / properties / granularity / descriptionRemoved value: -"Time granularity. Allowed: monthly. Default: monthly." - removed
Input schema / properties / main_domain_only / descriptionRemoved value: -"Restrict to the main domain only (true/false). Default: True." - removed
Input schema / properties / start_date / descriptionRemoved value: -"Start month, format YYYY-MM." - removed
Input schema / properties / web_source / descriptionRemoved value: -"Traffic source device split. Allowed: desktop, mobile_web, total." - changed
Input schema / requiredPrevious value: -[ - "domain", - "start_date", - "end_date" -]New value: +[ + "domain", + "end_date", + "start_date" +]
- Changed
get_similarweb_similar_sites18 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan."New value: +"Worldwide data only; values are case-insensitive." - changed
Input schema / properties / country / enumPrevious value: -[ - "us", - "ww" -]New value: +[ + "ww" +] - removed
Input schema / properties / domain / descriptionRemoved value: -"Target domain, e.g. example.com." - added
Input schema / properties / domain / maxLengthAdded value: +253 - added
Input schema / properties / domain / minLengthAdded value: +1 - removed
Input schema / properties / end_date / descriptionRemoved value: -"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)." - removed
Input schema / properties / granularity / descriptionRemoved value: -"Time granularity. Allowed: monthly." - removed
Input schema / properties / limit / defaultRemoved value: -20 - removed
Input schema / properties / limit / descriptionRemoved value: -"Number of rows to return; max 20, billed as 20 if exceeded." - added
Input schema / properties / limit / minimumAdded value: +1 - removed
Input schema / properties / main_domain_only / descriptionRemoved value: -"Restrict to the main domain only (true/false)." - removed
Input schema / properties / offset / descriptionRemoved value: -"Row offset for pagination." - added
Input schema / properties / offset / maximumAdded value: +100000 - added
Input schema / properties / offset / minimumAdded value: +0 - removed
Input schema / properties / start_date / descriptionRemoved value: -"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)." - removed
Input schema / properties / traffic_source / descriptionRemoved value: -"Traffic-source filter." - removed
Input schema / properties / web_source / descriptionRemoved value: -"Traffic source device split. Allowed: desktop, mobile_web, total." - changed
Input schema / requiredPrevious value: -[ - "domain", - "start_date", - "end_date", - "limit" -]New value: +[ + "domain", + "end_date", + "limit", + "start_date" +]
- Changed
get_similarweb_traffic_engagement16 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan."New value: +"Worldwide data only; values are case-insensitive." - changed
Input schema / properties / country / enumPrevious value: -[ - "us", - "ww" -]New value: +[ + "ww" +] - removed
Input schema / properties / domain / descriptionRemoved value: -"Target domain, e.g. example.com." - added
Input schema / properties / domain / maxLengthAdded value: +253 - added
Input schema / properties / domain / minLengthAdded value: +1 - removed
Input schema / properties / end_date / descriptionRemoved value: -"End month, format YYYY-MM." - removed
Input schema / properties / granularity / descriptionRemoved value: -"Time granularity. Allowed: monthly. Default: monthly." - removed
Input schema / properties / main_domain_only / descriptionRemoved value: -"Restrict to the main domain only (true/false). Default: True." - removed
Input schema / properties / metrics / descriptionRemoved value: -"Comma-separated metrics, e.g. visits,pages_per_visit." - added
Input schema / properties / metrics / x-aisa-delimiterAdded value: +"," - added
Input schema / properties / metrics / x-aisa-maxItemsAdded value: +8 - added
Input schema / properties / metrics / x-aisa-minItemsAdded value: +1 - removed
Input schema / properties / mtd / descriptionRemoved value: -"Month-to-date flag (true/false)." - removed
Input schema / properties / start_date / descriptionRemoved value: -"Start month, format YYYY-MM." - removed
Input schema / properties / web_source / descriptionRemoved value: -"Traffic source device split. Allowed: desktop, mobile_web, total." - changed
Input schema / requiredPrevious value: -[ - "domain", - "start_date", - "end_date", - "metrics" -]New value: +[ + "domain", + "end_date", + "metrics", + "start_date" +]
- Changed
get_similarweb_website_top_geographies2 fields changed- changed
Input schema / properties / domain / descriptionPrevious value: -"Target domain, e.g. example.com."New value: +"Bare website hostname without scheme, path, port, or credentials." - added
Input schema / properties / monthAdded value: +{ + "description": "Complete month in YYYY-MM.", + "type": "string", + "x-aisa-default-policy": "previous_complete_utc_month" +}
- Changed
get_similarweb_website_traffic_snapshot4 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan."New value: +"Worldwide data only; values are case-insensitive." - changed
Input schema / properties / country / enumPrevious value: -[ - "us", - "ww" -]New value: +[ + "ww" +] - changed
Input schema / properties / domain / descriptionPrevious value: -"Target domain, e.g. example.com."New value: +"Bare website hostname without scheme, path, port, or credentials." - added
Input schema / properties / monthAdded value: +{ + "description": "Complete month in YYYY-MM.", + "type": "string", + "x-aisa-default-policy": "previous_complete_utc_month" +}
- Changed
get_similarweb_website_traffic_trend6 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"Two-letter country code. Allowed: us, ww. Default: ww. Coverage is limited to ww and us on the current plan."New value: +"Worldwide data only; values are case-insensitive." - changed
Input schema / properties / country / enumPrevious value: -[ - "us", - "ww" -]New value: +[ + "ww" +] - changed
Input schema / properties / domain / descriptionPrevious value: -"Target domain, e.g. example.com."New value: +"Bare website hostname without scheme, path, port, or credentials." - added
Input schema / properties / end_dateAdded value: +{ + "description": "Inclusive last complete UTC month in YYYY-MM.", + "type": "string" +} - added
Input schema / properties / metricsAdded value: +{ + "default": "visits", + "description": "One to four supported Traffic & Engagement metrics.", + "type": "string", + "x-aisa-delimiter": ",", + "x-aisa-item-enum": [ + "average_visit_duration", + "bounce_rate", + "new_users", + "page_views", + "pages_per_visit", + "returning_users", + "unique_visitors", + "visits" + ], + "x-aisa-maxItems": 4 +} - added
Input schema / properties / start_dateAdded value: +{ + "description": "Inclusive first month in YYYY-MM; provide together with end_date.", + "type": "string" +}
- Changed
get_twitter_trends9 fields changed- removed
Input schema / properties / count / defaultRemoved value: -30 - removed
Input schema / properties / count / descriptionRemoved value: -"The number of trends to return. Default is 30." - removed
Input schema / properties / count / formatRemoved value: -"int64" - removed
Input schema / properties / count / minimumRemoved value: -30 - changed
Input schema / properties / count / typePrevious value: -"integer"New value: +"string" - removed
Input schema / properties / woeid / descriptionRemoved value: -"The WOEID of the location. Example: 2418046." - removed
Input schema / properties / woeid / formatRemoved value: -"int64" - changed
Input schema / properties / woeid / typePrevious value: -"integer"New value: +"string" - changed
Input schema / requiredPrevious value: -[ - "woeid" -]New value: +[]
- Changed
get_twitter_tweet_advanced_search9 fields changed- added
Input schema / properties / countAdded value: +{ + "type": "string" +} - removed
Input schema / properties / cursor / descriptionRemoved value: -"The cursor to paginate through the results. First page is empty." - added
Input schema / properties / max_resultsAdded value: +{ + "type": "string" +} - removed
Input schema / properties / query / descriptionRemoved value: -"The query to search for." - removed
Input schema / properties / queryType / defaultRemoved value: -"Latest" - removed
Input schema / properties / queryType / descriptionRemoved value: -"The query type to search for." - removed
Input schema / properties / queryType / enumRemoved value: -[ - "Latest", - "Top" -] - added
Input schema / properties / start_timeAdded value: +{ + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "query", - "queryType" -]New value: +[]
- Changed
get_twitter_tweet_replies3 fields changed- removed
Input schema / properties / cursor / descriptionRemoved value: -"Cursor for pagination." - removed
Input schema / properties / tweetId / descriptionRemoved value: -"The tweet ID to get replies for." - changed
Input schema / requiredPrevious value: -[ - "tweetId" -]New value: +[]
- Changed
get_twitter_user_followers4 fields changed- removed
Input schema / properties / cursor / descriptionRemoved value: -"Cursor for pagination" - removed
Input schema / properties / pageSizeRemoved value: -{ - "default": 200, - "description": "Number of followers per page", - "maximum": 200, - "minimum": 20, - "type": "integer" -} - removed
Input schema / properties / userName / descriptionRemoved value: -"Screen name of the user" - changed
Input schema / requiredPrevious value: -[ - "userName" -]New value: +[]
- Changed
get_twitter_user_info2 fields changed- removed
Input schema / properties / userName / descriptionRemoved value: -"The screen name of the user" - changed
Input schema / requiredPrevious value: -[ - "userName" -]New value: +[]
- Changed
get_twitter_user_last_tweets7 fields changed- added
Input schema / properties / countAdded value: +{ + "type": "string" +} - removed
Input schema / properties / cursor / descriptionRemoved value: -"Cursor for pagination" - removed
Input schema / properties / includeReplies / defaultRemoved value: -false - removed
Input schema / properties / includeReplies / descriptionRemoved value: -"Include replies in the results" - changed
Input schema / properties / includeReplies / typePrevious value: -"boolean"New value: +"string" - removed
Input schema / properties / userId / descriptionRemoved value: -"User ID of the user" - removed
Input schema / properties / userName / descriptionRemoved value: -"Screen name of the user"
- Changed
get_twitter_user_mentions5 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "The cursor to paginate through the results. First page is empty.", - "type": "string" -} - removed
Input schema / properties / sinceTimeRemoved value: -{ - "description": "On or after a specified unix timestamp in seconds.", - "format": "int64", - "type": "integer" -} - removed
Input schema / properties / untilTimeRemoved value: -{ - "description": "Before a specified unix timestamp in seconds.", - "format": "int64", - "type": "integer" -} - removed
Input schema / properties / userName / descriptionRemoved value: -"The user screen name to get mentions for." - changed
Input schema / requiredPrevious value: -[ - "userName" -]New value: +[]
- Changed
get_twitter_user_search3 fields changed- removed
Input schema / properties / cursorRemoved value: -{ - "description": "The cursor to paginate through the results. First page is empty.", - "type": "string" -} - removed
Input schema / properties / query / descriptionRemoved value: -"The keyword to search." - changed
Input schema / requiredPrevious value: -[ - "query" -]New value: +[]
- Changed
post_apollo_people_bulk_match11 fields changed- removed
Input schema / properties / reveal_personal_emailsRemoved value: -{ - "description": "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.", - "type": "boolean" -} - added
Input schema / properties / reveal_phone_number / defaultAdded value: +false - removed
Input schema / properties / reveal_phone_number / descriptionRemoved value: -"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." - added
Input schema / properties / run_waterfall_email / defaultAdded value: +false - removed
Input schema / properties / run_waterfall_email / descriptionRemoved value: -"Set to true to enable email waterfall enrichment" - added
Input schema / properties / run_waterfall_phone / defaultAdded value: +false - removed
Input schema / properties / run_waterfall_phone / descriptionRemoved value: -"Set to true to enable phone waterfall enrichment" - removed
Input schema / properties / webhook_url / descriptionRemoved value: -"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" - added
Input schema / properties / webhook_url / formatAdded value: +"https_url" - added
Input schema / properties / webhook_url / maxLengthAdded value: +2048 - added
Input schema / properties / webhook_url / minLengthAdded value: +1
- Changed
post_apollo_people_match20 fields changed- removed
Input schema / properties / domainRemoved value: -{ - "description": "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", - "type": "string" -} - removed
Input schema / properties / emailRemoved value: -{ - "description": "The email address of the person. Example: example@email.com", - "type": "string" -} - removed
Input schema / properties / first_nameRemoved value: -{ - "description": "The first name of the person. This is typically used in combination with the last_name parameter. Example: tim", - "type": "string" -} - removed
Input schema / properties / hashed_emailRemoved value: -{ - "description": "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)", - "type": "string" -} - removed
Input schema / properties / idRemoved value: -{ - "description": "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", - "type": "string" -} - removed
Input schema / properties / last_nameRemoved value: -{ - "description": "The last name of the person. This is typically used in combination with the first_name parameter. Example: zheng", - "type": "string" -} - removed
Input schema / properties / linkedin_urlRemoved value: -{ - "description": "The URL for the person's LinkedIn profile. Example: http://www.linkedin.com/in/tim-zheng-677ba010", - "type": "string" -} - removed
Input schema / properties / nameRemoved value: -{ - "description": "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", - "type": "string" -} - removed
Input schema / properties / organization_nameRemoved value: -{ - "description": "The name of the person's employer. This can be the current employer or a previous employer. Example: apollo", - "type": "string" -} - removed
Input schema / properties / reveal_personal_emailsRemoved value: -{ - "description": "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.", - "type": "boolean" -} - added
Input schema / properties / reveal_phone_number / defaultAdded value: +false - removed
Input schema / properties / reveal_phone_number / descriptionRemoved value: -"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." - added
Input schema / properties / run_waterfall_email / defaultAdded value: +false - removed
Input schema / properties / run_waterfall_email / descriptionRemoved value: -"Set to true to enable email waterfall enrichment" - added
Input schema / properties / run_waterfall_phone / defaultAdded value: +false - removed
Input schema / properties / run_waterfall_phone / descriptionRemoved value: -"Set to true to enable phone waterfall enrichment" - removed
Input schema / properties / webhook_url / descriptionRemoved value: -"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" - added
Input schema / properties / webhook_url / formatAdded value: +"https_url" - added
Input schema / properties / webhook_url / maxLengthAdded value: +2048 - added
Input schema / properties / webhook_url / minLengthAdded value: +1
- Changed
post_dataforseo_serp_youtube_organic_live7 fields changed- added
Input schema / properties / body / exampleAdded value: +[ + { + "keyword": "audi", + "language_code": "en", + "location_code": 2840 + } +] - added
Input schema / properties / body / items / anyOfAdded value: +[ + { + "example": [ + { + "keyword": "audi", + "language_code": "en", + "location_code": 2840 + } + ], + "properties": { + "block_depth": { + "description": "parsing depth\noptional field\nnumber of blocks of results in SERP\ndefault value: 20\nmax value: 200\nNote: your account will be billed per each SERP containing up to 20 results;\nthus, setting a block depth above 20 may result in additional charges if the search engine returns more than 20 results;\nif the specified block depth is higher than the number of results in the response, the difference will be refunded automatically to your account balance", + "type": [ + "integer", + "null" + ] + }, + "device": { + "description": "device type\noptional field\nreturn results for a specific device type\navailable values: desktop, mobile", + "type": [ + "string", + "null" + ] + }, + "keyword": { + "description": "keyword\nrequired field\nyou can specify up to 700 characters in the keyword field\nall %## will be decoded (plus character ‘+’ will be decoded to a space character)\nif you need to use the “%” character for your keyword, please specify it as “%25”;\nif you need to use the “+” character for your keyword, please specify it as “%2B”;\nlearn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article", + "type": "string" + }, + "language_code": { + "description": "search engine language code\nrequired field if you don't specify language_name\nif you use this field, you don't need to specify language_name\nyou can receive the list of available languages of the search engine with their language_code by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/languages\nexample:\nen", + "type": [ + "string", + "null" + ] + }, + "language_name": { + "description": "full name of search engine language\nrequired field if you don't specify language_code\nif you use this field, you don't need to specify language_code\nyou can receive the list of available languages of the search engine with their language_name by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/languages\nexample:\nEnglish", + "type": [ + "string", + "null" + ] + }, + "location_code": { + "description": "search engine location code\nrequired field if you don't specify location_name \nif you use this field, you don't need to specify location_name\nyou can receive the list of available locations of the search engines with their location_code by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/locations\nexample:\n2840", + "type": [ + "integer", + "null" + ] + }, + "location_name": { + "description": "full name of search engine location\nrequired field if you don't specify location_code\nif you use this field, you don't need to specify location_code\nyou can receive the list of available locations of the search engine with their location_name by making a separate request to the https://api.dataforseo.com/v3/serp/youtube/locations\nexample:\nUnited States", + "type": [ + "string", + "null" + ] + }, + "os": { + "description": "device operating system\noptional field\nif you specify desktop in the device field, choose from the following values: windows, macos\ndefault value: windows\nif you specify mobile in the device field, choose from the following values: android, ios\ndefault value: android", + "type": [ + "string", + "null" + ] + }, + "search_param": { + "description": "additional parameters of the search query\noptional field\nexample:\nsp=EgIQAg%253D%253D", + "type": [ + "string", + "null" + ] + }, + "tag": { + "description": "user-defined task identifier\noptional field\nthe character limit is 255\nyou can use this parameter to identify the task and match it with the result\nyou will find the specified tag value in the data object of the response", + "type": [ + "string", + "null" + ] + } + }, + "type": "object" + } +] - removed
Input schema / properties / body / items / propertiesRemoved value: -{ - "keyword": { - "description": "Keyword to search for", - "type": "string" - }, - "language_code": { - "description": "Search engine language code", - "type": "string" - }, - "language_name": { - "description": "Full name of search engine language", - "type": "string" - }, - "location_code": { - "description": "Search engine location code", - "type": "integer" - }, - "location_name": { - "description": "Full name of search engine location", - "type": "string" - } -} - removed
Input schema / properties / body / items / requiredRemoved value: -[ - "keyword" -] - changed
Input schema / properties / body / items / typePrevious value: -"object"New value: +[ + "object", + "null" +] - changed
Input schema / requiredPrevious value: -[ - "body" -]New value: +[] - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Removed
post_oxylabs_ai_search - Changed
post_waveinflu_email_lookup3 fields changed- removed
Input schema / properties / profile_url / descriptionRemoved value: -"Instagram, TikTok, or YouTube creator profile URL." - removed
Input schema / properties / profile_url / exampleRemoved value: -"https://www.instagram.com/onkimia/" - changed
Input schema / requiredPrevious value: -[ - "profile_url" -]New value: +[]
- Changed
post_waveinflu_similar_creators8 fields changed- changed
Input schema / properties / limit / defaultPrevious value: -40New value: +25 - removed
Input schema / properties / limit / descriptionRemoved value: -"Maximum number of creators to return. Default 40, range 1–100. Caps the billed count." - removed
Input schema / properties / limit / exampleRemoved value: -10 - changed
Input schema / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / platform / defaultAdded value: +"youtube" - removed
Input schema / properties / platform / descriptionRemoved value: -"Target platform." - removed
Input schema / properties / platform / exampleRemoved value: -"instagram" - changed
Input schema / requiredPrevious value: -[ - "platform", - "target_account" -]New value: +[ + "target_account" +]
- Changed
search17 fields changed- added
Input schema / $schemaAdded value: +"https://json-schema.org/draft/2020-12/schema" - removed
Input schema / properties / category / anyOfRemoved value: -[ - { - "enum": [ - "seo", - "finance", - "social", - "search", - "sales", - "mail" - ], - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / category / defaultRemoved value: -null - changed
Input schema / properties / category / descriptionPrevious value: -"Restrict to one category (seo, finance, social, search, sales, mail). Omit to search everything."New value: +"Restrict retrieval to one category. Omit to search everything. (AIsa-only: tool-router has no equivalent.)" - added
Input schema / properties / category / enumAdded value: +[ + "seo", + "finance", + "social", + "search", + "sales", + "mail" +] - added
Input schema / properties / category / typeAdded value: +"string" - added
Input schema / properties / known_fieldsAdded value: +{ + "additionalProperties": true, + "default": {}, + "description": "Known values such as ticker, URL, provider, or identifier that improve retrieval.", + "type": "object" +} - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum candidates, 1-10"New value: +"Maximum number of additional direct tool candidates." - added
Input schema / properties / limit / maximumAdded value: +20 - added
Input schema / properties / limit / minimumAdded value: +1 - added
Input schema / properties / provider_filtersAdded value: +{ + "default": [], + "description": "Optional exact catalog provider keys used to narrow retrieval (for example similarweb). Do not use display brands. Omit this field if the exact key is unknown.", + "items": { + "type": "string" + }, + "maxItems": 50, + "type": "array", + "uniqueItems": true +} - changed
Input schema / properties / query / descriptionPrevious value: -"What you need, in plain language, e.g. 'backlinks of a domain', 'recent tweets by a user', 'insider trades for AAPL'. English works best."New value: +"Natural-language capability or task to discover." - added
Input schema / properties / query / maxLengthAdded value: +2000 - added
Input schema / properties / query / minLengthAdded value: +1 - added
Input schema / properties / session_idAdded value: +{ + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "pattern": "^[A-Za-z0-9_-]*$", + "type": "string" +} - added
Output schema / propertiesAdded value: +{ + "next_steps_guidance": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "plan": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "canonical_use_case": { + "type": "string" + }, + "description": { + "type": "string" + }, + "known_pitfalls": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "plan_ref": { + "type": "string" + }, + "primary_tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "recommended_steps": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "related_tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + } + }, + "required": [ + "canonical_use_case", + "description", + "known_pitfalls", + "plan_ref", + "primary_tools", + "recommended_steps", + "related_tools" + ] + }, + "retrieval_mode": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "string" + } + ] + }, + "search_id": { + "type": "string" + }, + "session_id": { + "description": "Reuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.", + "maxLength": 128, + "minLength": 1, + "pattern": "^[A-Za-z0-9_-]{1,128}$", + "type": "string" + }, + "tools": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "additionalProperties": false, + "properties": { + "arguments_schema": { + "additionalProperties": true, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ] + }, + "description": { + "type": "string" + }, + "execution_supported": { + "description": "Whether this router can execute and quote the operation; false retains documentation and discovery only.", + "type": "boolean" + }, + "execution_unsupported_reason": { + "description": "Why execution and quoting remain unavailable through this router.", + "type": "string" + }, + "has_full_schema": { + "type": "boolean" + }, + "match_reasons": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "array" + } + ], + "items": { + "type": "string" + } + }, + "price": { + "additionalProperties": true, + "type": "object" + }, + "retrieval_debug": { + "additionalProperties": false, + "anyOf": [ + { + "type": "null" + }, + { + "type": "object" + } + ], + "properties": { + "fused_rank": { + "type": "integer" + }, + "fused_score": { + "type": "number" + }, + "lexical_rank": { + "type": "integer" + }, + "lexical_score": { + "type": "number" + }, + "rerank_admission_rank": { + "type": "integer" + }, + "rerank_rank": { + "type": "integer" + }, + "rerank_score": { + "anyOf": [ + { + "type": "null" + }, + { + "type": "number" + } + ] + }, + "runtime_availability": { + "type": "string" + }, + "vector_view_ranks": { + "additionalProperties": { + "type": "integer" + }, + "type": "object" + }, + "vector_view_scores": { + "additionalProperties": { + "type": "number" + }, + "type": "object" + } + }, + "required": [ + "fused_rank", + "fused_score", + "lexical_rank", + "lexical_score", + "rerank_admission_rank", + "rerank_rank", + "runtime_availability", + "vector_view_ranks", + "vector_view_scores" + ] + }, + "summary": { + "type": "string" + }, + "tool": { + "type": "string" + } + }, + "required": [ + "description", + "has_full_schema", + "price", + "summary", + "tool" + ], + "type": "object" + } + } +} - added
Output schema / requiredAdded value: +[ + "next_steps_guidance", + "search_id", + "session_id", + "tools" +]
- Changed
use1 field changed- changed
Input schema / properties / max_price_usd / descriptionPrevious value: -"Refuse the call before any spend if it would cost more than this many USD"New value: +"Refuse the call before any spend if its quoted price is above this many USD"
1 tool update
- Changed
get_details1 field changed- added
Input schema / properties / include_documentationAdded value: +{ + "default": false, + "description": "Include the complete native public OpenAPI document, reference closure and scoped completeness. Existing execution schemas remain unchanged.", + "type": "boolean" +}
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 gradedqualityBmaintenanceAn MCP server that lets agents collect a company's entire public marketing footprint from a single URL — paid ads, organic social, SEO, AI-crawler stance, Reddit and founder activity, tracking pixels, and funnel signals — and return a compact scorecard plus an evidence index with unknowns. It also exposes tools to pull the underlying ad copy, posts and media, retrieve the analysis playbook, diff two runs over time, and validate that a generated report's citations resolve without invented spend.MIT

AfterLaunchofficial
AlicenseNot gradedqualityBmaintenanceGrowth 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.-
Glama MCP Gateway
Add one secure layer between your agents and this server.