AIsa Sales
Server Details
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.
- Status
- Healthy
- Uptime
- 93.9% over 42 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 93 tools
Many tools are raw HTTP endpoint wrappers with overlapping Apollo CRUD operations, and the Similarweb tools include opaque hashed names such as get_similarweb_apis_v1_similarweb_keyword_analysi_490801 that an agent cannot reliably distinguish. The deprecated `use` tool also coexists with `batch_use`, and some descriptions are misleading, e.g. patch_apollo_contacts_contact_id is described as viewing a contact.
Names mix provider prefixes, HTTP-method verbs, and inconsistent noun phrasing (get_apollo_accounts_id, post_apollo_contacts_search, patch_apollo_accounts_account_id), alongside generic meta-tools like account, search, use, and list_categories. The long hashed Similarweb suffixes are not predictable or readable, making the overall naming convention weak.
93 tools is far beyond a well-scoped set and appears to expose many low-level API endpoints directly rather than a curated sales workflow surface. This volume creates discovery and selection burden, especially with numerous Similarweb analytics endpoints and Apollo CRUD variants.
The surface is broad for a sales data and outbound platform, covering Apollo CRM records, enrichment, sequences, tasks, calls, reports, Similarweb analytics, and WaveInflu creator search. However, lifecycle coverage is uneven: there are no delete tools for core CRM records, and task/sequence operations lack full create/update/delete symmetry.
Available Tools
93 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_apollo_accounts_idView an AccountARead-onlyIdempotentInspect
View an account by ID. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Account ID |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, openWorld and non-destructive, so the bar is lower; the description still adds two genuinely useful facts not in annotations: the master API key requirement and the per-request price. It stops short of 5 because it says nothing about rate limits or failure modes for a privileged read.
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 operative text is two front-loaded sentences with zero waste. The embedded pricing HTML block is boilerplate rather than explanatory content, which slightly dilutes an otherwise tight definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and the description covers auth and cost. What is missing is routing context against the many sibling account tools, which is the main gap for an agent deciding whether to call this one.
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 a single documented 'Account ID' parameter, so the schema already carries the semantics. The description only restates 'by ID' and adds no format, source, or lookup guidance beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('View an account by ID'), which clearly separates it from the write siblings like patch_apollo_accounts_account_id and post_apollo_accounts_search. It does not explicitly name an alternative, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is the prerequisite 'Requires a master API key'. There is no indication of when to use this versus post_apollo_accounts_search or the other account-related siblings, and no exclusions or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_apollo_account_stagesList Account StagesARead-onlyIdempotentInspect
List account stages. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds the non-obvious 'Requires a master API key' constraint, which is genuinely useful behavioral context beyond the annotations, though it omits any rate-limit or pagination notes.
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 content is front-loaded in one short sentence. The mandated pricing block inflates the text but is boilerplate inject rather than author prose, so it does not materially hurt structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema carrying return-value detail and no input parameters, the description only needs to cover purpose, auth, and scope. Purpose and auth are present; the one real gap is sibling differentiation, which is minor for such a simple read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline for a parameterless schema is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('List account stages'), so the operation is unambiguous. However, it does not distinguish itself from close siblings like get_apollo_contact_stages and get_apollo_opportunity_stages, leaving the agent to infer scope from the name 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?
There is no explicit when-to-use guidance and no mention of alternatives, even though three near-identical stage-listing siblings exist. The agent must infer selection criteria from tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_apollo_contacts_contact_idUpdate or View ContactARead-onlyIdempotentInspect
View a contact by ID. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| contact_id | Yes | Contact ID |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely new operational context the annotations do not: the master API key authorization requirement and the per-request cost of $0.012 for successful calls, both of which affect whether an agent should call it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The operative content is front-loaded in two short sentences with zero waste. The embedded pricing comment block is boilerplate policy noise rather than tool guidance, but it is clearly delimited and does not obscure the primary instruction.
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 annotations cover the safety profile; the description supplies the missing auth and cost context. For a one-parameter lookup tool this is close to complete, with only the sibling-routing guidance 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?
There is a single required parameter (contact_id) documented at 100% schema coverage, so the schema carries the semantics. "by ID" merely restates the parameter in prose and adds no format, sourcing, or validation detail beyond the schema's "Contact ID" description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"View a contact by ID" states a specific verb and resource, and the identifier-based lookup is unambiguous. However, the title ("Update or View Contact") contradicts the read-only framing and the description never distinguishes this tool from the sibling patch_apollo_contacts_contact_id, which is the write path for the same 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?
The description implies the natural usage (direct lookup by a known ID) and states the master API key prerequisite, which is a real gate. But it gives no when-to-use/when-not guidance versus siblings such as post_apollo_contacts_search (find by criteria) or patch_apollo_contacts_contact_id (modify), so routing relies on inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_apollo_contact_stagesList Contact StagesARead-onlyIdempotentInspect
List contact stages. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds one useful non-annotation fact (master API key requirement) and a pricing note, but nothing about rate limits, pagination, or scope of the returned stages.
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 short and front-loaded, with the auth requirement immediately following. The injected pricing block adds bulk but is required boilerplate rather than author 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?
An output schema exists, so return values need not be explained, and there are no parameters to document. The auth requirement is stated; the only real omission is disambiguation from the sibling stage-listing tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. The description adds nothing parameter-related, but none is needed since the schema is empty.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb+resource (list contact stages), so an agent knows what it retrieves. However, it does nothing to distinguish itself from the near-identical siblings get_apollo_account_stages and get_apollo_opportunity_stages, which is exactly the ambiguity that matters for selection here.
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?
"Requires a master API key" is a genuine precondition, which is more than many definitions offer. But there is no guidance on when to choose this over the account/opportunity stage siblings, nor any exclusion or context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_apollo_email_accountsGet a List of Email AccountsARead-onlyIdempotentInspect
Get a list of email accounts. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered. The description adds one piece of non-annotation context, the master API key requirement, but says nothing about pagination, filtering, or result scope. Modest added value beyond the structured hints.
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 operative description is a single efficient sentence with the purpose front-loaded. The appended pricing comment block is injected boilerplate that adds length without aiding tool selection, which slightly dilutes 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 an output schema present, return values need not be explained, and rich annotations cover the behavioral profile. For a zero-parameter read tool, stating purpose plus the auth requirement is sufficient, though a hint about result scope (e.g., all accounts vs. paged) would round it out.
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 and the schema is an empty object, so there is nothing for the description to disambiguate. Baseline 4 applies; no parameter syntax or defaults are needed.
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 a list of email accounts.' An agent can immediately tell this is a read that lists email accounts. However, there are no sibling tools with overlapping naming (no other 'email_accounts' tool), so no explicit differentiation is offered or needed.
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 supplies a prerequisite ('Requires a master API key') but gives no when-to-use/when-not guidance and names no alternatives. Usage is only implied by the tool's name and the plural 'list' framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_apollo_emailer_messages_id_activitiesCheck Email StatsBRead-onlyIdempotentInspect
Check email stats for a specific outreach email. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Emailer message ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false. The description still adds two pieces of non-annotation context an agent needs: it requires a master API key, and it costs $0.012 per successful request, which affects invocation decisions.
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 short and front-loaded, with the auth requirement following immediately. The embedded pricing comment block is boilerplate that consumes roughly half the text but is at least clearly demarcated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the single-parameter read operation is otherwise straightforward. Still, the description never characterizes the scope of 'stats' or positions the tool against its emailer siblings, leaving a gap for an agent choosing among many get_/post_ apollo tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single, fully-documented 'id' parameter, so the baseline is 3. The phrase 'specific outreach email' adds only light framing and no format, source, or ID-resolution guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Check email stats for a specific outreach email'), which is clear enough to act on. It does not, however, differentiate itself from the sibling get_apollo_emailer_messages_search or explain what 'stats' actually covers, and the tool name's 'activities' is not reflected in the description.
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 or when-not-to-use guidance is given, and no alternative is named despite several emailer-related siblings. The only conditional information is the auth prerequisite ('Requires a master API key').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_apollo_emailer_messages_searchSearch for Outreach EmailsCRead-onlyIdempotentInspect
Search for outreach emails. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number. | |
| per_page | No | Results per page. | |
| user_ids | No | Filter by user IDs. | |
| emailer_campaign_ids | No | Only include these sequence IDs. | |
| emailer_message_stats | No | Filter by message stats (e.g., open, click). | |
| not_emailer_campaign_ids | No | Exclude these sequence IDs. | |
| email_account_id_and_aliases | No | Filter by email account and aliases. | |
| emailer_message_reply_classes | No | Filter by reply classes. |
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 the safety profile is fully covered by structured data. The description contributes the master-API-key auth requirement and a per-request price disclosure, which are real additions, but says nothing about pagination behavior, result caps, or ordering despite eight list/filter parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded, with the auth constraint stated immediately. The injected pricing comment block is boilerplate rather than substance, but it is clearly delimited and does not obscure the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and annotations carry the safety profile. Still, for an eight-filter search over a domain-specific resource, the description omits what the results represent, default paging behavior, and how to choose this tool over sibling campaign/message endpoints.
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 eight optional parameters (page, per_page, user_ids, emailer_campaign_ids, emailer_message_stats, not_emailer_campaign_ids, email_account_id_and_aliases, emailer_message_reply_classes) are already documented in the schema. The description adds no syntax, format, or combined-filter semantics beyond that, which is the expected baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a verb+resource ("Search for outreach emails"), but it largely restates the title and never clarifies what an "outreach email" is (emailer messages within a sequence) or how this differs from sibling search tools such as post_apollo_emailer_campaigns_search or get_apollo_emailer_messages_id_activities. Purpose is discernible but vague at the message-vs-campaign level.
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 when-not-to-use, and no mention of alternatives among the many sibling search tools. The only contextual note is an authentication prerequisite ("Requires a master API key"), which is useful but 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_fieldsGet a List of Fields + Create a Custom FieldBRead-onlyIdempotentInspect
Get a list of fields. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds the master API key requirement, which is useful context, but it does not describe field scope, listing behavior, or how it differs from the sibling create/typed-field tools.
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 useful content is front-loaded in two short sentences, and the pricing block is boilerplate rather than explanation. It is appropriately sized overall, though the HTML pricing comment is noise for 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?
The tool is simple, has an output schema, and is covered by annotations, so the description is close to sufficient. However, it omits sibling routing and leaves the title's 'Create a Custom Field' claim unresolved, which could confuse an agent choosing between get_apollo_fields and post_apollo_fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the schema already fully defines the call shape and no parameter semantics are needed. The baseline for a zero-parameter tool is 4; the description adds no parameter detail but does not need to compensate for any schema 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 clear verb and resource: 'Get a list of fields.' It does not, however, distinguish this tool from siblings such as post_apollo_fields or get_apollo_typed_custom_fields. The title's '+ Create a Custom Field' also introduces ambiguity that the description itself does not resolve.
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 only guidance is the prerequisite 'Requires a master API key.' There is no explanation of when to use this tool versus siblings like post_apollo_fields for creation or get_apollo_typed_custom_fields for typed custom fields.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_apollo_labelsGet a List of All ListsARead-onlyIdempotentInspect
Get a list of all lists (labels). Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive, open-world behavior, so the safety profile is covered. The description adds a genuinely useful operational constraint not present in structured data: a master API key is required. It stops short of noting rate limits or result-size behavior, but for a read-only lookup this is solid added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The functional content is a single front-loaded sentence with the auth caveat immediately after, which is efficient. The injected pricing block adds length that does not help tool selection, though it is an appended artifact rather than authored prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, and with zero parameters the schema burden is nil. Purpose plus the master-key requirement covers what an agent needs to invoke this correctly; only when-to-use routing to siblings 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?
The tool takes zero parameters, so the baseline of 4 applies; there is nothing for the description to clarify beyond confirming the call is unfiltered. No syntax or format detail is needed.
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 concrete verb and resource ("Get a list of all lists (labels)") and the parenthetical disambiguates that 'labels' and 'lists' are the same object. It is clear enough to act on, though the phrasing is slightly circular and it never contrasts itself with any sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus alternatives; the only conditional statement is an auth prerequisite ("Requires a master API key"). The agent must infer the use case (discovering label/list IDs) entirely on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_apollo_notesGet a List of NotesBRead-onlyIdempotentInspect
Get a list of notes. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (when supported). At least one filter is required on this endpoint; calling it with none returns HTTP 400 "At least one argument is required". | |
| per_page | No | Results per page (when supported). At least one filter is required on this endpoint; calling it with none returns HTTP 400 "At least one argument is required". | |
| account_id | No | Filter by an account ID. At least one filter is required on this endpoint; calling it with none returns HTTP 400 "At least one argument is required". | |
| contact_id | No | Filter by a contact ID. At least one filter is required on this endpoint; calling it with none returns HTTP 400 "At least one argument is required". | |
| start_date | No | Only include notes created on/after this date (when supported). At least one filter is required on this endpoint; calling it with none returns HTTP 400 "At least one argument is required". | |
| contact_ids | No | Filter by contact IDs. At least one filter is required on this endpoint; calling it with none returns HTTP 400 "At least one argument is required". | |
| opportunity_id | No | Filter by an opportunity ID. At least one filter is required on this endpoint; calling it with none returns HTTP 400 "At least one argument is required". | |
| conversation_id | No | Filter by a conversation ID. At least one filter is required on this endpoint; calling it with none returns HTTP 400 "At least one argument is required". | |
| conversation_ids | No | Filter by conversation IDs. At least one filter is required on this endpoint; calling it with none returns HTTP 400 "At least one argument is required". | |
| calendar_event_id | No | Filter by a calendar event ID. At least one filter is required on this endpoint; calling it with none returns HTTP 400 "At least one argument is required". |
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, destructiveHint=false), so the bar is lower. The description adds one genuinely useful non-annotation fact — a master API key is required — plus pricing context, but omits the behavioral trap that unfiltered calls fail with HTTP 400.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no wasted prose; the auth requirement is stated immediately. The injected pricing comment block adds bulk but is boilerplate rather than authored 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?
An output schema exists, so return values need no explanation, and the schema carries the filter requirement. Still, for a 10-parameter retrieval endpoint with several near-identical siblings, the description is thin — it never mentions filtering, pagination, or how it differs from neighboring search tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 10 parameters, so the schema already documents each filter and the at-least-one-filter rule. The description contributes no parameter meaning beyond that, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get a list of notes'), which is clear on its own. It does not, however, distinguish this tool from the many other Apollo list/retrieval siblings (e.g. get_apollo_emailer_messages_search, get_apollo_users_search), so an agent cannot tell from the text alone why it would pick this one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives, and no hint about the most important usage constraint: that at least one filter argument is required. The only guidance an agent gets is buried in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_apollo_opportunities_opportunity_idView or Update DealARead-onlyIdempotentInspect
View a deal (opportunity) by ID. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| opportunity_id | Yes | Opportunity ID |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds the master-API-key requirement, which is useful operational context beyond the annotations, but says nothing about rate limits, error behavior, or the fact that the title ('View or Update Deal') misleadingly suggests write capability.
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 purpose and auth requirement are front-loaded in a single tight sentence, which is good. The pricing boilerplate that follows does not help an agent select or invoke the tool and is mildly noisy, but it is delimited and clearly ancillary.
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 one-parameter read-by-ID tool with an output schema and full annotation coverage, the description supplies what the agent needs: what it fetches and the auth prerequisite. Return value details are correctly left to the output schema; only the routing vs. sibling tools is unaddressed.
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 a single opportunity_id parameter, so the baseline of 3 applies. The phrase 'by ID' in the description adds no format, encoding, or sourcing detail beyond what the schema already documents.
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: 'View a deal (opportunity) by ID,' which maps cleanly to the get_apollo_opportunities_opportunity_id name. It does not explicitly distinguish itself from get_apollo_opportunities_search or get_apollo_opportunities_opportunity_id's update sibling, but the intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides the prerequisite 'Requires a master API key,' which tells the agent an auth condition must be met before calling. However, it gives no guidance on when to use this single-record fetch vs. get_apollo_opportunities_search or when to use the patch sibling for updating.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_apollo_opportunities_searchList All DealsBRead-onlyIdempotentInspect
List all deals (opportunities). Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number | |
| per_page | No | Items per page | |
| sort_by_field | No | Sort field |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered structurally. The description adds one genuinely useful behavioral fact — 'Requires a master API key' — which is an auth requirement not present in the annotations, but it discloses nothing about pagination behavior, result caps, or why the tool is named 'search' when it claims to return all deals.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is short and front-loaded, but the injected aisa-pricing boilerplate roughly doubles the length with content irrelevant to tool selection. The description is not bloated by the author's own prose, but the effective payload carries dead weight.
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 rich annotations and an output schema present, the description does not need to explain return values, and it covers the auth requirement. However, for a 'search'-named list endpoint over deals, it omits any hint of scope (all deals in the workspace?), paging expectations, or filtering limits, leaving gaps an agent must discover by trial.
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 page, per_page, and sort_by_field are already documented in the schema. The description adds no paging or sort semantics of its own, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List all deals (opportunities)'), which distinguishes it from the single-deal sibling get_apollo_opportunities_opportunity_id and from the write sibling post_apollo_opportunities. It does not call out the 'search' nature implied by its name or name any alternative explicitly, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use context, no prerequisites beyond the API key, and no routing to alternatives such as the opportunity-id getter or the account/contact search siblings. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_apollo_opportunity_stagesList Deal StagesBRead-onlyIdempotentInspect
List deal stages (opportunity stages). Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds one genuinely useful piece of context — the master API key requirement — but says nothing about scope of the returned stage list or account/workspace dependency.
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 and wastes no words, but the embedded aisa-pricing block is boilerplate noise that 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?
With an output schema present, return values need not be described, annotations cover the safety semantics, and there are no parameters. Purpose plus the auth prerequisite is close to sufficient for a simple read-only list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to document; the baseline for a parameterless tool 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 ('List deal stages') and disambiguates the term with the parenthetical '(opportunity stages)', which helps separate it from the nearby account/contact stage tools. It does not, however, explicitly distinguish itself from get_apollo_account_stages or get_apollo_contact_stages.
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 only guidance is the auth prerequisite ('Requires a master API key'). There is no statement of when to call this versus the sibling stage-listing tools or the opportunity search/get tools, so selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_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_idGet Complete Organization InfoARead-onlyIdempotentInspect
The complete Apollo record for one company, by Apollo organization id (not by domain). Returns an organization object carrying everything enrichment returns plus the deeper fields: funding history, technology stack, department headcounts and related organizations. Get the id from get_apollo_organizations_enrich or post_apollo_mixed_companies_search first — this endpoint cannot take a domain.
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 |
|---|---|---|---|
| id | Yes | The Apollo ID for the organization that you want to research. To find organization IDs, call the Organization Search endpoint and identify the organizaton_id value for the organization. Example: 5e66b6381e05b4008c8331b8 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description still adds useful substance by contrasting the payload with enrichment ('everything enrichment returns plus the deeper fields') and by disclosing usage-based billing. It stops short of rate limits or quota behavior, but that is a minor gap against the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The substantive content is two tight sentences with the id-first constraint front-loaded before the supporting detail. Only the auto-injected pricing block bulks it out, so the prose itself earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the return shape need not be re-explained, and annotations carry the safety profile. What remains — how to get the id, what extra fields to expect, and that domains are unsupported — is all supplied, so nothing needed for a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is documented with an example, so the baseline is 3. The description goes further by clarifying the identifier's origin and warning that a domain will not work, which materially reduces the chance of a wrong-value call.
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 — the complete Apollo record for one company — and immediately scopes it to being looked up by Apollo organization id rather than domain. That scoping distinguishes it cleanly from the enrichment and search siblings, so an agent can route without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent how to obtain the required id (via get_apollo_organizations_enrich or post_apollo_mixed_companies_search) and states the exclusion plainly: 'this endpoint cannot take a domain.' Both the positive path and the anti-pattern are covered.
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_apollo_phone_calls_searchSearch for CallsBRead-onlyIdempotentInspect
Search calls. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number. | |
| inbound | No | Inbound or outbound. | |
| per_page | No | Results per page. | |
| user_ids | No | User IDs. | |
| q_keywords | No | Keyword filter. | |
| duration_max | No | Upper bound for duration (seconds). | |
| duration_min | No | Lower bound for duration (seconds). | |
| date_range_max | No | Upper bound for call date range (YYYY-MM-DD). | |
| date_range_min | No | Lower bound for call date range (YYYY-MM-DD). | |
| contact_label_ids | No | Contact label IDs. | |
| phone_call_outcome_ids | No | Outcome IDs. | |
| phone_call_purpose_ids | No | Purpose IDs. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered structurally. The description adds genuinely useful context beyond that: the master API key requirement and per-request pricing, which an agent would not learn from annotations or schema alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The authored content is two short, front-loaded sentences with no waste. The pricing block is boilerplate disclosure rather than tool prose, but it does consume roughly half the visible text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the schema fully documents all 12 optional filters. The gaps are the absence of any usage routing among the many search siblings and no note on pagination semantics, which matters for a 12-param search 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?
All 12 parameters have schema descriptions (100% coverage), including value formats like YYYY-MM-DD and seconds for durations, so the schema does the heavy lifting. The description adds nothing about parameter meaning, which is acceptable at this coverage level but offers no extra 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?
"Search calls" gives a specific verb (search) and resource (phone calls), which distinguishes it from write siblings like post_apollo_phone_calls and put_apollo_phone_calls_id. However, it does not differentiate from other search siblings (e.g., get_apollo_emailer_messages_search, post_apollo_tasks_search) or clarify the scope of what is searchable.
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 only guidance is the prerequisite "Requires a master API key." There is no statement of when to use this tool versus alternatives, no exclusions, and no description of the searchable context (e.g., logged calls in the Apollo account).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_apollo_typed_custom_fieldsGet a List of All Custom FieldsARead-onlyIdempotentInspect
Get a list of all custom fields. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe-read profile (readOnlyHint, idempotentHint, destructiveHint false), so the bar is lower. The description adds a genuinely useful constraint beyond annotations: the operation requires a master API key, which affects whether an agent can call it at all.
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 operative content is two short sentences with the purpose front-loaded and the auth prerequisite immediately after. The injected pricing comment block is boilerplate noise that pads the text but is not under the tool author'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?
For a zero-parameter read tool with an output schema (so return values need no explanation) and full annotation coverage, the description covers purpose and the key auth gate. It falls short only on clarifying what 'typed' means versus the sibling fields 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?
The tool takes zero parameters, which sets the baseline at 4 per the rubric, and the empty schema means there is no parameter semantics to compensate for. The description rightly spends no words on arguments.
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 a list of all custom fields'), so the operation is unambiguous. However, it never distinguishes itself from close siblings such as get_apollo_fields or get_apollo_labels, and the 'typed' qualifier in the tool name is left unexplained.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to choose this tool over get_apollo_fields or the other field/label endpoints. The only clause present ('Requires a master API key') is a prerequisite, not a usage condition or alternative comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_apollo_users_searchGet a List of UsersCRead-onlyIdempotentInspect
Get a list of users. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number. | |
| per_page | No | Results per page. |
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 the safety profile is fully covered by structured data. The description does add one genuinely useful behavioral fact — the master API key authorization requirement — but says nothing about pagination defaults, rate limits, or result size, and an output schema exists so return shape is already covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The tool-authored sentence is one line and front-loads the verb and the auth requirement. That said, the majority of the visible description text is an injected pricing block rather than content that helps an agent select or call the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-optional-parameter, read-only listing tool with an output schema and full annotation coverage, a short description is defensible. Still missing are any statement of what objects are returned, whether filters are supported, and how pagination terminates — gaps that matter given the crowded sibling namespace.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both 'page' and 'per_page' are documented in the schema. The description adds no parameter meaning beyond that, so the baseline 3 applies — the schema carries the full 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?
The verb+resource ('Get a list of users') is stated, but it is generic and gives no sense of what a 'user' is in this API or how this differs from the ~30 sibling search endpoints (contacts, accounts, opportunities). Despite the name ending in '_search', the description never mentions searching, filtering, or querying, so an agent cannot tell how it is distinguished from the other list-style 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?
'Requires a master API key' is a prerequisite, not usage guidance. There is no statement of when to call this versus the many sibling search tools, no exclusion conditions, and no mention of pagination strategy or result scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_ad_networksAd NetworksDRead-onlyIdempotentInspect
Usage-based billing; Default request estimate: $0.225 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, destructiveHint=false, and openWorldHint, so the safety profile is covered without the description. The pricing block does add genuinely useful non-schema context (a $0.225 default request estimate and a $0.075/credit unit rate), which is a real cost disclosure, but the description says nothing about what the call returns, its coverage, or any rate/pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short, but it is not concise in the useful sense: it is boilerplate that occupies the entire description while omitting any functional content, and it leads with raw HTML comment tags rather than a purpose statement. Every sentence is about pricing rather than about the tool.
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 10% schema coverage, an output schema present, and a crowded sibling namespace, the description is functionally empty — an agent cannot determine what data is returned or how to scope the request. Cost information is present, but nothing an agent needs to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 10% across 10 parameters (4 required), so the schema leaves nearly everything undocumented. The description mentions no parameter at all — not domain, date range, limit/offset, web_source, traffic_source, or main_domain_only — and therefore compensates for none of 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 contains no statement of what the tool does; it is entirely a pricing banner wrapped in HTML comment markers. Only the name and title ('Ad Networks') hint at the resource, and the description never says it returns ad-network data for a domain, nor distinguishes it from siblings like get_similarweb_ppc_spend or get_similarweb_marketing_channel_sources_legacy.
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 any alternative tool. The only conditional content is about billing, not about selecting this tool over the many sibling SimilarWeb endpoints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_apis_v1_similarweb_keyword_analysi_490801Keywords OverviewDRead-onlyIdempotentInspect
Usage-based billing; Default request estimate: $1.275 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 | ||
| format | No | ||
| country | No | Worldwide data only; values are case-insensitive. | ww |
| end_date | Yes | ||
| keywords | Yes | ||
| start_date | Yes | ||
| web_source | No | ||
| granularity | Yes | ||
| main_domain_only | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered structurally. The description does add non-obvious cost behavior (usage-based billing, $0.075 per similarweb_credit, estimate not final), which is genuinely useful for an agent deciding whether to call. However it discloses nothing about the read operation itself, result volume, or limits beyond cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short, but the pricing block is the whole description rather than a supporting note, so there is no purpose statement to front-load. The comment markers make it read as machine-injected boilerplate rather than an intentional tool definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A 9-parameter, 5-required analytics tool with 11% schema coverage, no output schema, and an open-world hint needs a description carrying the full functional burden. Instead the description covers only billing, leaving purpose, usage, and parameter meaning completely unaddressed.
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 11% across 9 parameters, and the description compensates for none of it. Required fields such as keywords (comma-delimited, max 20), start_date, end_date, granularity, and limit are left entirely to the bare schema, with no format or constraint explanation added.
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. Its entire content is a pricing boilerplate block ('Usage-based billing; Default request estimate: $1.275 USD...'), with no verb or resource describing keyword analysis. An agent cannot tell from this text that the tool returns keyword overview metrics, nor distinguish it from get_similarweb_keywords or get_similarweb_keyword_competitors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus any alternative. No mention of keyword sets, date ranges, or the sibling keyword tools. The only actionable statement is a cost estimate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_apis_v1_similarweb_segment_analysi_6349feSegments Marketing ChannelsDRead-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 |
|---|---|---|---|
| format | No | ||
| country | No | Worldwide data only; values are case-insensitive. | ww |
| metrics | Yes | ||
| segment | Yes | Replace YOUR_SEGMENT_ID with a real segment ID available to the configured Similarweb account. Obtain it from that account's Similarweb user/predefined segment metadata or ask your AIsa operator. This is an account-dependent template, not a ready-to-run or upstream-verified example. | |
| end_date | Yes | ||
| start_date | Yes | ||
| web_source | No | ||
| granularity | Yes | ||
| main_domain_only | No |
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 adds only a templated pricing estimate ($0.075/credit) — marginally useful cost context, but no operational behavior about the segment-analysis call itself (e.g., what the segment ID requirement implies, latency, or result shape).
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 every sentence is boilerplate pricing metadata that does not earn its place against the tool's actual purpose. Brevity here reflects under-specification, not 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 9-parameter, 5-required analytical tool with no output schema and 22% schema coverage, the description is completely inadequate — it omits purpose, usage, parameter meaning, and return expectations entirely.
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 22% and the description adds nothing about the 9 parameters — not the comma-delimited metrics delimiter, not the date range semantics, not granularity or main_domain_only. The one genuinely tricky parameter (segment ID) is documented only in the schema, not the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description contains no statement of purpose at all — it is exclusively a pricing/billing block. The title 'Segments Marketing Channels' hints at the domain, but the description itself never says what the tool does, and it cannot be distinguished from sibling segment/keyword/website analyst tools from the description 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 guidance, no prerequisites, no exclusions, and no reference to any alternative sibling tool. The agent receives zero routing information from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_apis_v1_similarweb_segment_analysi_64e47cSegments AnalysisDRead-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 |
|---|---|---|---|
| format | No | ||
| country | No | Worldwide data only; values are case-insensitive. | ww |
| metrics | Yes | ||
| segment | Yes | Replace YOUR_SEGMENT_ID with a real segment ID available to the configured Similarweb account. Obtain it from that account's Similarweb user/predefined segment metadata or ask your AIsa operator. This is an account-dependent template, not a ready-to-run or upstream-verified example. | |
| 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?
The annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered by structured data. The description adds only pricing info, and it conspicuously omits the account-dependent segment requirement that the schema hints at.
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 composed entirely of HTML-commented pricing metadata, which is not useful content for tool selection. Brevity here reflects under-specification rather than disciplined editing.
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 a 22%-covered schema, the description should explain purpose, required inputs, and how it differs from the near-identical sibling. Instead it provides only a price estimate, so an agent lacks 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 only 22% and 9 parameters (5 required) are mostly undocumented – metrics, start_date, end_date, granularity, and format have no descriptions at all. The description does nothing to compensate, leaving the agent to guess at the required date and metric formats.
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?
Despite the title 'Segments Analysis', the description text contains only pricing boilerplate and never states what the tool actually does. Nothing in the body distinguishes it from the sibling segment-analysis tools (get_similarweb_apis_v1_similarweb_segment_analysi_6349fe) or from the website/keyword analysis tools, so an agent cannot select it from the description 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?
No usage guidance whatsoever – no when-to-use, no when-not-to-use, and no mention of alternatives such as the closely named sibling segment tool. The only content is a billing disclaimer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_apis_v1_similarweb_website_analysi_7399a9Conversion Rates AggregatedDRead-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 | ||
| 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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/openWorldHint and non-destructive, so the safety profile is covered. The description does add genuine billing context ($0.075 per similarweb_credit, ~$0.375 per request, account-specific settlement), but discloses nothing about the operation itself: no return shape, no granularity/date-range behavior, no explanation of the limit cap.
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 and cleanly delimited, but this is under-specification rather than conciseness: the only sentence present is pricing metadata that does not help an agent invoke the tool correctly.
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 analytical tool with 11% schema coverage and no output schema, the description should carry purpose, parameter semantics and usage context. It delivers none of these, leaving the agent unable to invoke it correctly beyond guessing from the title.
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 11% (effectively just the 'country' enum note), and 5 of 9 parameters are required. The description adds zero parameter meaning — nothing about domain format, date format/ranges, granularity semantics, or the meaning of main_domain_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?
The description contains no statement of purpose at all — it is entirely pricing boilerplate wrapped in HTML comments. Only the tool name fragment and the title 'Conversion Rates Aggregated' hint at what it does (a SimilarWeb conversion-rate report), and neither is part of the description 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 guidance, no mention of alternatives among the many get_similarweb_* siblings, and no prerequisites or exclusions. An agent has no basis for choosing this over get_similarweb_website_traffic_trend or the neighbouring website-analysis tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_apis_v1_similarweb_website_analysi_850464Conversion Rates Over TimeDRead-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 | ||
| 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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so safety behavior is covered structurally. The description adds cost/rate context (usage-based billing, per-credit unit rate, estimate not fixed), which is genuinely useful behavioral information not in the annotations, but it is heavily hedged and says nothing about the operation, data semantics, limits, or side effects.
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 off-topic boilerplate wrapped in HTML comment markers, front-loading billing rather than purpose. Brevity here reflects missing content rather than 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 9-parameter, 5-required analytics endpoint with no output schema and heavy sibling competition, the description is wholly inadequate — it leaves purpose, usage, parameter meaning, and return semantics entirely undocumented.
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), leaving 8 of 9 parameters — including required domain, start_date, end_date, granularity, and limit — unexplained in both schema and description. The description provides zero parameter meaning, 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. Its entire body is a pricing banner (per-credit rate and default request estimate), which conveys nothing about the verb, resource, or scope of a conversion-rate time-series query. Only the separate title/name hint at the actual function, and the description itself is effectively missing.
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 SimilarWeb endpoints (traffic_trend, audience_overlap, etc.). The only 'guidance' is cost-related, which does not help an agent decide whether this analysis is the right one for a given question.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_apis_v1_similarweb_website_analysi_aa2e1fDemographics - Specific GroupsDRead-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 | ||
| format | No | ||
| country | No | Worldwide data only; values are case-insensitive. | ww |
| metrics | Yes | The reference example uses the documented v5 metric share. Metric values are comma-separated. | |
| end_date | Yes | ||
| age_bucket | Yes | Select one age bucket; age_bucket must be provided exactly once. | |
| start_date | Yes | ||
| web_source | No | ||
| granularity | Yes | ||
| main_domain_only | No |
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 adds one genuinely non-annotated fact — usage-based billing at ~$0.45/request and $0.075 per credit — but says nothing about data semantics, aggregation, freshness, latency, or the age-bucket segmentation the title advertises.
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 not concise in a useful sense: two HTML-comment delimited lines of billing metadata with no front-loaded purpose statement. The pricing note earns its place, but the structure serves a pricing pipeline rather than an agent deciding how to call the tool.
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 10 parameters, 6 required, 30% schema coverage, no output schema and no purpose statement, the definition is far from complete for an agent to select and invoke it correctly. Nothing disambiguates it from the many sibling demographics/website-analysis tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 30% across 10 parameters, so the description is expected to compensate — and it provides zero parameter information. Nothing explains metrics syntax, date-range conventions, main_domain_only, or the required single age_bucket beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description never states what the tool does; its entire body is pricing boilerplate inside HTML comments. The only hint of purpose comes from the tool name and title ('Demographics - Specific Groups'), which the description does not restate, expand, or clarify. An agent reading only the description cannot tell this returns age-bucket demographic data for a 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 guidance on when to use this tool, when not to, or how it relates to the many similar siblings (e.g. get_similarweb_demographics, get_similarweb_audience_interest, the other website-analysis variants). The absence is especially costly here because the sibling list contains several near-identical demographics/audience tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_audience_interestAudience InterestDRead-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. The description's only added context is the billing rate ($0.075/credit, ~$0.375 per request), which is genuinely useful behavioral information about cost that annotations do not carry, but it says nothing about latency, auth, rate limits, 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?
It is short and front-loads a clear cost figure, but every sentence is billing boilerplate that does not help an agent select or invoke the tool. Brevity without substance is under-specification, not 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, 4-required tool with a sibling-dense namespace, the description is completely inadequate: no purpose, no parameter guidance, no usage context. The presence of an output schema excuses return-value explanation but nothing else.
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% across 10 parameters, so the description carries the burden of explaining domain, start_date/end_date, limit, offset, web_source, traffic_source, main_domain_only, and granularity — and it explains none of them. Only the 'country' enum is documented in the schema itself.
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 is entirely a pricing/billing notice ('Usage-based billing; Default request estimate: $0.375 USD'), so an agent cannot tell that this tool returns SimilarWeb audience-interest data, nor how it differs from siblings like get_similarweb_demographics or get_similarweb_audience_overlap.
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, when not to, or which sibling it should be preferred over among the ~30 SimilarWeb tools. The only content is cost metadata, which does not route tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_audience_overlapAudience OverlapDRead-onlyIdempotentInspect
Usage-based billing; Default request estimate: $0.75 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 |
|---|---|---|---|
| country | No | Worldwide data only; values are case-insensitive. | ww |
| domains | Yes | ||
| end_date | Yes | ||
| start_date | Yes | ||
| granularity | No | monthly |
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 safety behavior is covered. The pricing block legitimately adds cost context (~$0.75 per default request, $0.075/credit), which is useful, but it discloses nothing about the operation itself or its output.
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 consists of HTML-comment boilerplate that is irrelevant to tool selection. It is not front-loaded with a purpose statement, so its brevity reflects under-specification rather than 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 five-parameter data-retrieval tool with 3 required inputs and only 20% schema coverage, the description omits everything an agent needs to call it correctly. The existence of an output schema excuses return-value documentation but does not excuse the complete absence of functional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20%, so the description is obligated to compensate for undocumented parameters, yet it says nothing about domains (2-5, comma-delimited), date ranges, country, or granularity. The single documented parameter (country) is covered by the schema, not the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description contains only a pricing disclaimer block and never states what the tool does. Nothing distinguishes audience overlap from siblings such as get_similarweb_deduplicated_audience or get_similarweb_audience_interest.
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. An agent must infer the tool's purpose entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_deduplicated_audienceDeduplicated AudienceDRead-onlyIdempotentInspect
Usage-based billing; Default request estimate: $0.525 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, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description's only added behavioral fact is cost: usage-based billing at ~$0.075 per similarweb_credit with a ~$0.525 default request estimate, which is genuinely useful non-schema context. However, nothing is said about the data semantics of 'deduplicated' audience, date-range constraints, or latency, so it falls short of a 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short, but it is not concise in the useful sense: 100% of the content is billing boilerplate wrapped in HTML comment markers, and none of it is front-loaded functional information. It earns no place toward 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?
An output schema exists, so return values need not be described, but for a 7-parameter, 3-required analytics tool the description supplies no purpose, no usage context, and no parameter semantics. The definition is effectively incomplete 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 only 14%, and the description adds zero parameter meaning. Three required parameters (domain, start_date, end_date) and four optional ones (web_source, main_domain_only, granularity, country) are left entirely unexplained in prose, so an agent must guess at date formats and what 'deduplicated' implies for the domain argument.
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 block ('Usage-based billing; Default request estimate: $0.525 USD...'), which gives an agent no way to know this returns a deduplicated audience metric for a domain, let alone how it differs from siblings like get_similarweb_audience_overlap or get_similarweb_demographics.
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 any alternative tool. With ~35 similarweb siblings, the absence of routing guidance is a severe gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_demographicsDemographicsDRead-onlyIdempotentInspect
Usage-based billing; Default request estimate: $0.6 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 | ||
| 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 declare readOnlyHint, idempotentHint, openWorldHint, so the safety profile is covered externally. The description's only added behavioral content is cost transparency (estimated $0.6/request, $0.075 per credit, account-specific settlement), which is genuinely useful for an agent weighing calls. However, it discloses nothing about data scope, auth requirements, rate limits, or result characteristics of a demographics read.
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 short because it contains no functional content at all — a pricing marker block rather than a front-loaded purpose statement. Conciseness here reflects under-specification, not efficiency; the pricing note should follow, not replace, a statement of what the tool does.
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 8-parameter, 4-required data-retrieval tool with an output schema and a large sibling family needs at minimum a purpose statement and usage routing. The description supplies neither, leaving the agent unable to distinguish this from any other SimilarWeb endpoint. The only mitigating factor is that an output schema exists, so return shape need not be described.
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 13% across 8 parameters, with four required (domain, start_date, end_date, granularity) carrying no documented meaning in either schema or description. The description contributes zero parameter semantics — no date format, no granularity semantics, no explanation of main_domain_only or web_source — 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 contains no statement of what the tool does — it is entirely a pricing/billing boilerplate block. Nothing indicates that it returns SimilarWeb demographic data for a domain, and the title 'Demographics' is left to carry the whole purpose. An agent cannot determine the tool's function from the description 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 guidance on when to use this tool, when not to, or how it relates to any of the ~30 siblings such as get_similarweb_audience_interest or get_similarweb_website_top_geographies. No prerequisites, no alternative routing, no exclusions.
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_landing_pagesLanding PagesDRead-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=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered without the description. The only added behavioral information is the usage-based pricing estimate ($0.075 USD per similarweb_credit), which is genuinely useful context not present in annotations, but it says nothing about data scope, rate limits, or result semantics.
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 sentence is off-topic boilerplate about billing rather than the tool's function. It is structurally compact yet fails the 'every sentence earns its place' test because no sentence helps an agent invoke the tool correctly.
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 exists (so return values need not be explained), the description omits the tool's purpose, usage context, and parameter meaning for a 10-parameter tool with 4 required fields. For a complex, expensive, open-world query tool, this is completely inadequate.
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 description must compensate — and it does not. Parameters like domain, start_date/end_date formats, limit, offset, traffic_source, web_source, granularity and main_domain_only are left completely undocumented in both the schema and the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description contains only auto-generated pricing boilerplate and never states what the tool does. Nothing in it indicates that the tool retrieves SimilarWeb landing page data, what a 'landing page' record contains, or how it differs from siblings like get_similarweb_keywords. An agent reading only the description would have no idea what this tool returns.
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 usage guidance of any kind — no when-to-use, no when-not-to-use, and no routing to the many sibling tools (get_similarweb_keywords, get_semrush_url_organic_keywords, etc.). The description gives the agent no basis for choosing this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_marketing_channel_sources_legacyMarketing Channel SourcesDRead-onlyIdempotentInspect
Usage-based billing; Default request estimate: $0.525 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, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered structurally. The description's only added behavior is billing context (usage-based, ~$0.525 per request), which is genuinely useful cost information but says nothing about auth, rate limits, data granularity, or what the 'legacy' designation implies.
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 sentence is pricing boilerplate that does not earn a place in a tool definition's description field. It is not padded, yet the space is spent on the wrong content entirely.
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 7 parameters, a low schema coverage of 14%, and no functional description, the definition is unusable for correct invocation. The presence of an output schema excuses omitting return-value details, but nothing else about this legacy marketing-channel tool is communicated.
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% across 7 parameters, so the schema does not carry the burden — yet the description supplies zero parameter meaning. It never mentions domain, date range, web_source, granularity, or main_domain_only, leaving required and enum parameters effectively undocumented.
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 cannot tell from this text that the tool returns marketing channel source data, or how it differs from siblings like get_similarweb_referrals or get_similarweb_landing_pages.
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, no alternatives named. The only content is a cost estimate, which does not help the agent decide whether to call this tool versus any other SimilarWeb sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_popular_pagesPopular PagesDRead-onlyIdempotentInspect
Usage-based billing; Default request estimate: $0.225 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. The description's only added behavior is usage-based billing (~$0.225 estimate, $0.075/credit), which is genuine but tangential context; it says nothing about rate limits, result caps (limit max 20, offset max 100000) 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?
It is short, but every line is boilerplate pricing markup wrapped in HTML comments rather than front-loaded task information. The space is not earned by anything that helps invoke the tool.
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, 4-required tool with 10% schema coverage, the description supplies zero functional detail. An output schema exists so return values need not be described, but the complete absence of purpose, usage and parameter context leaves the definition inadequate.
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 description must compensate and it does not — it mentions no parameter at all. Required fields (domain, start_date, end_date, limit), enums for web_source/granularity/country, and the traffic_source semantics are left entirely undocumented.
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 block, so an agent learns nothing about 'popular pages' beyond what the name and title already imply. This is a missing-purpose case rather than a clear one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of alternatives among the ~35 similarweb siblings, and no exclusions. The text addresses cost, not selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_ppc_spendPPC SpendDRead-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 |
|---|---|---|---|
| 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?
The annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds billing context (usage-based, estimate, unit rate), but it omits functional behavior such as return content, auth needs, rate limits, and what the PPC spend data represents.
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 billing metadata and is not front-loaded with the tool's purpose or usage guidance. For a tool-selection description, the pricing block does not earn its place as the primary 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?
Given 7 parameters, low schema coverage, and many Similarweb siblings, the description is functionally empty. The output schema may cover return values, but the definition still lacks purpose, usage guidance, and parameter semantics needed 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 only 14%, and the description provides no parameter meaning at all. With 7 parameters including required domain, start_date, end_date, web_source, granularity, and main_domain_only, the description does nothing to compensate for the sparse schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description does not state what the tool does at all; it only contains a pricing/billing block. The title 'PPC Spend' and tool name hint at paid-search spend, but the description itself provides no functional 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 about when to use this tool, when not to use it, or which sibling tool to choose instead. An agent gets no routing information from the description.
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_referralsReferralsDRead-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 |
|---|---|---|---|
| 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 structurally. The pricing block is a genuine behavioral addition (usage-based billing, ~$0.3 estimate, $0.075/credit), which is useful for cost-aware invocation, but it discloses nothing about the operation itself or its result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but every sentence is billing boilerplate rather than tool-relevant content. Conciseness is not achieved by omitting the function; the space is spent on procedural pricing rather than on what the agent needs to select and call the tool.
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 10% schema coverage, the description is wholly inadequate. Although an output schema and annotations exist (reducing the need to describe returns and safety), there is no functional description, no scoping, and no parameter guidance — an agent cannot reliably infer what this endpoint returns or how to parameterize it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 10% across 10 parameters, so the description must compensate — and it provides zero parameter information. Required inputs (domain, start_date, end_date, limit) and the meaning of traffic_source, web_source, main_domain_only, and granularity are left entirely undocumented.
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 is entirely a pricing/billing banner. Nothing tells the agent that this tool retrieves referral traffic data for a domain, so the only signal is the name and title, which the description merely echoes indirectly. It fails to distinguish itself from the ~30 sibling get_similarweb_* 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?
There is no guidance on when to use this tool versus alternatives such as get_similarweb_landing_pages, get_similarweb_similar_sites, or get_similarweb_marketing_channel_sources_legacy. No prerequisites, no date-range or domain constraints, no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_serp_players_aggregatedSERP Players - AggregatedDRead-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 | ||
| offset | No | ||
| country | No | Worldwide data only; values are case-insensitive. | ww |
| end_date | Yes | ||
| keywords | Yes | ||
| start_date | Yes | ||
| granularity | 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, and destructiveHint=false, so the safety profile is covered. The description's only added content is a usage-based price estimate ($0.075), which is genuinely useful operational context but says nothing about aggregation behavior, supported keyword counts, or data scope. Slight credit above the minimum.
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 sentence is billing metadata unrelated to tool selection or invocation, wrapped in HTML comment tags that further bury it. There is no functional content to front-load — the space is misused rather than simply verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, 4-required analytics tool with 14% schema coverage, the description supplies none of the missing piece: what data is returned in aggregate form, what date range/keyword constraints mean, or how it relates to the timeseries sibling. An output schema exists so return format needn't be explained, but the input and purpose gaps leave the definition unusable on its own.
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% across 7 parameters (limit, offset, start_date, end_date, keywords, granularity, country), and the description provides no parameter semantics whatsoever — no date format, no keyword-delimiter behavior, no limit/offset meaning. The description fully 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 contains no statement of what the tool does — only billing boilerplate. The title 'SERP Players - Aggregated' is the sole hint at purpose (aggregated SERP competitor data), and that comes from the title field, not the description, so an agent gets no functional explanation of this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no conditions, and no reference to any of the ~30 siblings such as get_similarweb_serp_players_timeseries, which is the obvious alternative this tool needs to be distinguished from. The agent must guess entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_serp_players_timeseriesSERP Players - Clicks over timeDRead-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 | ||
| offset | No | ||
| country | No | Worldwide data only; values are case-insensitive. | ww |
| end_date | Yes | ||
| keywords | Yes | ||
| start_date | Yes | ||
| granularity | 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, destructiveHint=false and openWorldHint, so the safety profile is covered. The description's only added value is cost transparency (~$0.075 per credit), which is genuinely useful context but says nothing about behavior, constraints, or effects. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is short, but every sentence is off-topic boilerplate rather than tool documentation, so brevity here reflects absence of content, not efficient structure. The pricing note is front-loaded and clearly delimited, which is the only structural merit.
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 7 parameters at 14% coverage, 4 required fields, no parameter documentation, and no purpose statement, the definition is unusable for correct invocation. The existence of an output schema excuses explaining return values but nothing else that is missing here.
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% across 7 parameters, so the description carries a heavy burden — and it communicates nothing about limit, offset, keywords, start_date, end_date, country, or granularity. Required date-range and keyword-delimited params are entirely unexplained.
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 aisa-pricing boilerplate about usage-based billing. An agent gets no verb, resource, or scope from the description body, and even the title's hint ('SERP Players - Clicks over time') is left unelaborated. This is effectively a missing description.
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 guidance of any kind. Nothing distinguishes this tool from sibling 'get_similarweb_serp_players_aggregated' or the many other get_similarweb_* tools, so the agent has no basis for selection.
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_subdomainsWebsite SubdomainsDRead-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 |
|---|---|---|---|
| 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=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description's only added behavioral fact is billing (per-credit pricing and an estimated request cost), which is genuinely useful but is the sole disclosure; nothing is said about rate limits, latency, or result 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 brevity is not the issue: every sentence is billing boilerplate that does not help an agent decide or invoke correctly. There is no front-loaded purpose statement for the pricing block to follow.
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, 4-required analytics tool with only 10% schema coverage, the description is wholly inadequate — it omits purpose, usage, and every parameter's semantics. The existence of an output schema excuses it from explaining return values, but nothing else is covered.
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 (limit, domain, offset, country, end_date, start_date, web_source, granularity, traffic_source, main_domain_only), so the description is required to compensate for date formats, enum meanings, and limit semantics. It provides zero parameter information, leaving the agent to guess at required date formats and the meaning of 'granularity' or 'main_domain_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?
The description contains only an auto-injected pricing block ('Usage-based billing; Default request estimate: $0.15 USD...'). It never states what the tool does. The agent must infer purpose entirely from the tool name and title, and gets no differentiation from the ~30 sibling SimilarWeb 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?
There is no guidance on when to use this tool versus alternatives such as get_similarweb_website_traffic_snapshot, get_similarweb_similar_sites, or the many other SimilarWeb endpoints. No prerequisites, exclusions, or selection criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_technologiesWebsite TechnologiesDRead-onlyIdempotentInspect
Usage-based billing; Default request estimate: $0.75 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 declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful cost behavior (default request estimate $0.75, $0.075 per similarweb_credit, account-specific pricing) but does not disclose other behavioral traits such as data freshness, rate limits, or authentication requirements.
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 front-loads pricing rather than purpose, and the entire description is off-topic for tool selection. The structure is not appropriate for a tool definition because no functional content is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 9 parameters (5 required), 11% schema coverage, and an output schema, the description is completely inadequate. It omits purpose, usage guidance, and parameter semantics; the only context provided is billing metadata.
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 11% across 9 parameters, and the description contains zero parameter information. It does not explain domain, date ranges, granularity, limit, or any other input, so it completely fails to compensate for the sparse schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description never states what the tool does; it contains only a billing estimate and unit rate. The name and title suggest 'website technologies', but the description itself provides no functional verb, resource, or scope, so an agent cannot determine the tool's purpose 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?
No guidance is given on when to use this tool versus siblings such as get_similarweb_website_analysi_7399a9, get_similarweb_technology_* variants, or get_details. The only content is pricing, which does not help tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similarweb_top_sites_rankingTop Sites RankingDRead-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 | ||
| offset | No | ||
| country | No | Worldwide data only; values are case-insensitive. | ww |
| category | 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, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description's only contribution is billing disclosure ($0.075 USD default estimate per similarweb_credit, usage-based, non-fixed), which is a genuine behavioral trait beyond the annotations, though it discloses nothing about the operation itself.
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 consists solely of an HTML-comment pricing block with no front-loaded statement of purpose. Being brief here reflects missing content rather than efficient concision.
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 4-parameter, paid, read-only ranking tool with an output schema (so return values need not be described), the description still omits purpose, parameter semantics, and usage context. It is inadequate for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% across 4 parameters (category, limit, offset, country), and the description adds zero meaning for any of them. Required fields like category and limit are entirely unexplained, and the description does not 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 boilerplate block, so an agent learns nothing about retrieving a SimilarWeb top-sites ranking, what a 'category' means, or how this differs from siblings like get_similarweb_ranking or list_categories.
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 prerequisites or exclusions. With 30+ siblings, the complete absence of routing guidance leaves the agent unable to choose this tool over any other.
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.
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.
patch_apollo_accounts_account_idUpdate an AccountBDestructiveInspect
Update fields on an existing account. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| account_id | Yes | Account ID |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is largely covered. The description contributes the master-API-key auth requirement and pricing note, but omits important behavior for a PATCH: that unspecified fields are left untouched, and any error/partial-failure semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and then the auth requirement, with no redundancy. The injected pricing block adds length but is boilerplate rather than authorial padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations cover destructiveness, so those need not be restated. Still, for a mutation endpoint with a nested custom-fields object, the description never explains PATCH partial-update behavior or that typed_custom_fields requires pre-fetched field IDs, leaving meaningful operational 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?
Top-level schema coverage is 50% (account_id and body), and the description adds no parameter context. However, the nested body properties are documented exhaustively in the schema itself (name, phone, domain, owner_id, raw_address, account_stage_id, typed_custom_fields), so the schema carries the load and a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update fields on an existing account') with clear scope (PATCH semantics implied by 'fields'). However, it does not differentiate from near-siblings such as post_apollo_accounts_bulk_update, post_apollo_accounts_update_owners, or patch_apollo_contacts_contact_id, leaving the agent to infer the distinction from names 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?
Adds one concrete prerequisite, 'Requires a master API key,' which is genuine selection context. But it gives no when-to-use vs when-not guidance and no pointer to the bulk-update or update-owners siblings, so routing relies on inference 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.
patch_apollo_contacts_contact_idUpdate or View ContactDDestructiveInspect
View a contact by ID. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| contact_id | Yes | Contact ID |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description says 'View a contact by ID', implying a read, while annotations declare readOnlyHint=false and destructiveHint=true. This directly contradicts the structured safety signal. The one useful addition is the master API key requirement, but the contradiction dominates.
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 description is a single terse sentence that mischaracterizes the tool, and it is padded with a multi-line pricing boilerplate block that is irrelevant to selecting or invoking the tool. The valuable content (auth requirement) is buried after the core claim.
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 destructive PATCH tool with a nested update payload and a required body, the description never explains that it mutates a contact, what fields are updatable, or that `label_names` overwrites existing lists. An output schema exists so return values need not be explained, but the mutation semantics are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% and the tool has a nested `body` object with a required but undocumented top-level shape. The description contributes nothing about `contact_id` or the update payload, 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 says only 'View a contact by ID', but the tool is a PATCH endpoint whose required `body` object contains update fields (email, title, name, labels, etc.) and whose title is 'Update or View Contact'. The description captures the read half and omits the mutation half, which is the primary operation, making it misleading rather than merely vague.
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 use this tool versus the obvious read sibling `get_apollo_contacts_contact_id`, or versus the bulk update tools like `post_apollo_contacts_bulk_update`. The only condition stated is 'Requires a master API key', which is an auth note, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
patch_apollo_opportunities_opportunity_idView or Update DealDDestructiveInspect
View a deal (opportunity) by ID. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | ||
| opportunity_id | Yes | Opportunity ID |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare readOnlyHint=false and destructiveHint=true, but the description says 'View a deal', implying a read-only operation. This contradicts the mutation/destructive nature of the tool and omits what fields are updated, whether changes are reversible, or what gets destroyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads a functional statement, but that statement is the wrong operation for the tool and is followed by pricing boilerplate rather than necessary update guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive PATCH tool with annotations, nested body parameters, and a required body object, the description is critically incomplete. It omits update semantics entirely and instead describes a read operation, leaving an agent unable to safely invoke the tool 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 coverage is 50%, and the description adds almost no parameter meaning beyond 'by ID'. It does not explain the required body object or any of the update fields, leaving the schema to carry most of the semantic 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?
The description names a resource and ID lookup ('View a deal (opportunity) by ID'), but the tool is a PATCH update tool. It gives the wrong core verb and fails to distinguish itself from the GET sibling get_apollo_opportunities_opportunity_id.
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 only states an authentication prerequisite ('Requires a master API key') and provides no guidance on when to use this PATCH tool versus the GET tool or other update endpoints. The only usage signal it gives is misleading because it frames the operation as viewing rather than updating.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_accountsCreate an AccountADestructiveInspect
Create a new account. Duplicate domains are not allowed. Requires a master API key.
Published reference price: $0.012 USD per successful request. 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 the safety profile (readOnlyHint=false, destructiveHint=true, idempotentHint=false, openWorldHint=true), so the bar is lower. The description still adds genuinely non-annotation context: the master-API-key requirement and the duplicate-domain rejection rule. It omits failure behavior and does not restate anything the annotations already cover, but adds no more.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short front-loaded sentences: action, constraint, prerequisite. The pricing block is boilerplate but separate and ignorable. No wasted text in the substantive portion.
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, and the nested schema fully documents inputs. What remains for the description—auth requirement and domain constraint—is covered, leaving only failure modes unstated for a destructive create.
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 top-level `body` param carries no description (reported coverage 0%), but the nested body schema documents each field extensively (name, domain, owner_id, account_stage_id, typed_custom_fields), so the schema itself carries parameter semantics. The description contributes only the domain-uniqueness constraint, adding marginal value beyond the schema; baseline 3 fits.
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 ('Create a new account') in the first sentence, and the singular 'an account' distinguishes it from post_apollo_accounts_bulk_create and from patch_apollo_accounts_account_id. An agent can place it 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?
The description supplies prerequisites ('Requires a master API key') and a hard constraint ('Duplicate domains are not allowed'), which implies the create use case, but it never names an alternative such as bulk create or the patch endpoint, nor states when not to call it. Usage is implied rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_accounts_bulk_createBulk Create AccountsBDestructiveInspect
Bulk create accounts. Requires a master API key.
Published reference price: $0.012 USD per successful request. 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 destructiveHint=true, idempotentHint=false and openWorldHint=true, so the write/safety profile is covered. The description adds two genuinely useful non-schema facts — the master API key requirement and per-request pricing — but says nothing about partial-failure behavior, duplicate handling, or the all-or-nothing nature of a batch mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences carry the core action and the auth prerequisite with no wasted prose. The embedded pricing marker block is boilerplate noise but is clearly delineated and does not bury the substance.
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 the safety profile. Still missing for a destructive batch mutation: the 100-item limit, whether validation failures abort the whole batch, and what a duplicate match returns — all of which the agent needs before invoking.
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 mentions no parameters at all; its only structured reference is the word "bulk". Reported schema description coverage is 0% at the top level, and the highest-leverage parameter semantics (run_dedupe behavior, the 100-account cap, append_label_names applying to ALL accounts) live only in the nested schema, leaving the description to compensate and it does not.
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 gives a specific verb+resource ("Bulk create accounts"), and "bulk" implicitly distinguishes it from the singular post_apollo_accounts and from post_apollo_accounts_bulk_update. It never names those siblings explicitly, so differentiation is inferable 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?
The only usage-relevant statement is the prerequisite "Requires a master API key". There is no guidance on when to prefer this over post_apollo_accounts (single create), bulk_update, or how to decide on dedupe behavior, and no exclusions or failure conditions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_accounts_bulk_updateBulk Update AccountsBDestructiveInspect
Bulk update accounts. Requires a master API key.
Published reference price: $0.012 USD per successful request. 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 destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description does add one genuinely useful non-annotation fact — the master API key requirement — but says nothing about what is overwritten, whether partial updates are possible, or the semantics of async processing beyond what the schema states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The authored content is two short, front-loaded sentences with no filler. The injected aisa-pricing block adds length but is machine-appended boilerplate rather than authorial verbosity, so it is only a minor deduction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and annotations cover the destructive/idempotency profile. What is missing for a nested-object mutation is the two-mode usage model and any guidance on selecting between uniform and per-account updates, which an agent cannot infer from the wrapper schema 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 reported at 0% for the single top-level 'body' parameter, so the description carries the burden and does not meet it. It never explains the critical account_ids vs account_attributes duality, the async constraint, or the per-account versus uniform-update distinction that determines how the call must be shaped.
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 (bulk update accounts) and the 'bulk' qualifier correctly scopes it against the single-record sibling patch_apollo_accounts_account_id. It does not, however, explicitly name or distinguish itself from post_apollo_accounts_bulk_create, post_apollo_accounts_update_owners, or post_apollo_contacts_bulk_update, which share the same bulk-mutation pattern.
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 only guidance is 'Requires a master API key.' There is no statement of when to use this versus the single-record PATCH, the bulk_create, or the update_owners/update_stages variants, and no mention that two mutually exclusive update modes exist inside the body.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_accounts_searchSearch for AccountsBRead-onlyIdempotentInspect
Search for accounts. Requires a master API key.
Published reference price: $0.012 USD per successful request. 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 readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so safety is covered. The description adds two genuinely non-annotated traits: the master API key auth requirement and a per-request cost ($0.012 per successful request), which an agent weighing cost/credentials needs. It stops short of 5 because it says nothing about result volume or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose front-loaded, no filler. The embedded pricing comment block is boilerplate but is at least clearly delimited and does not obscure the purpose line.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and the nested schema covers all filters and pagination. Against that real complexity (seven filter/sort parameters on a nested body), the description is thin: it never summarizes that this is a filtered/paginated list search or how it relates to the parallel contact and mixed-company search endpoints.
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 contributes zero parameter meaning, and the top-level 'body' parameter has no description (0% coverage by the stated metric), so per the rubric the description should compensate but does not. In practice the nested body properties are documented thoroughly with examples and enum semantics, which keeps this at the baseline 3 rather than lower.
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 gives a clear verb+resource ('Search for accounts'), which an agent can distinguish from the sibling create/patch account tools and from get_apollo_accounts_id. However, it offers no differentiation against the other search endpoints (post_apollo_contacts_search, post_apollo_mixed_companies_search), so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is a prerequisite ('Requires a master API key'), which is auth information rather than a when-to-use statement. Nothing tells the agent when to prefer this over get_apollo_accounts_id, post_apollo_mixed_companies_search, or the create/patch siblings, and there are no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_accounts_update_ownersUpdate Account Owner for Multiple AccountsBDestructiveInspect
Update account owner for multiple accounts. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| owner_id | Yes | New owner ID | |
| account_ids | Yes | Account IDs |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds genuinely new context beyond the structured fields: it requires a master API key, an auth escalation the agent would not otherwise know about. It stops short of saying whether existing owners are replaced or how partial failures are handled.
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 content is two tightly written sentences, front-loaded with the action and followed by the prerequisite. The injected pricing block consumes more words than the actual description, though it is machine-generated boilerplate rather than authorial 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?
An output schema exists, so return values need no explanation, and the master API key requirement is a useful addition. However, for a destructive, non-idempotent bulk mutation, the description gives no indication of overwrite semantics or partial-success behavior, leaving a meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only two self-documenting parameters (owner_id, account_ids), so the schema carries the load. The description adds no syntax, format, or cardinality guidance beyond what the schema already states, making 3 the correct baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource (update account owner) and adds the scope qualifier 'for multiple accounts', which distinguishes it from the single-record sibling patch_apollo_accounts_account_id. It does not, however, contrast itself against the other near-identical bulk siblings such as post_apollo_accounts_bulk_update or post_apollo_contacts_update_owners.
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 explicit when-to-use guidance, no named alternatives, and no exclusions. The 'multiple accounts' phrasing only weakly implies this is the batch variant; an agent must infer from the name which of several bulk-account tools applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_contactsCreate a ContactBDestructiveInspect
Create a new contact. Requires a master API key.
Published reference price: $0.012 USD per successful request. 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 destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds the master API key authentication requirement, which is genuine value beyond the annotations. It does not, however, warn that creating without dedupe can produce duplicates -- that risk is only disclosed inside the run_dedupe property description in the schema, not here.
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 prose is a single front-loaded sentence followed by the auth prerequisite -- no wasted words. The trailing pricing HTML comment block is boilerplate noise that adds length without helping an agent invoke the tool, which keeps this 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 not owed. Still, for a destructive, non-idempotent write tool the description omits the duplicate-creation caveat and any pointer to the bulk or update alternatives, leaving behavioral context thinner than the tool's complexity warrants.
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 contributes no parameter information at all; the wrapper 'body' parameter is undocumented in the description. The reported 0% coverage is largely an artifact of only counting top-level parameters, since the 17 nested properties carry rich descriptions and examples (notably run_dedupe). Net effect: the schema does all the work and the description adds nothing, so a middle score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Create a new contact.' An agent immediately knows this creates one contact record. However, it does nothing to distinguish itself from close siblings such as post_apollo_contacts_bulk_create (creating many) or patch_apollo_contacts_contact_id (updating an existing one), so the agent must infer the distinction from the names 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?
The only guidance is the prerequisite 'Requires a master API key,' which is useful but not a usage condition. There is no statement of when to use this tool versus bulk_create, the search endpoints, or patch for updates. No alternatives or exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_contacts_bulk_createBulk Create ContactsBDestructiveInspect
Bulk create contacts. Requires a master API key.
Published reference price: $0.012 USD per successful request. 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 destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds a genuinely useful non-annotation fact - the master API key requirement - but is silent on the 100-contact cap, dedupe/merge semantics, and partial-failure behavior for a destructive bulk write.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two functional sentences, front-loaded with the purpose, with no wasted prose. The injected pricing comment block consumes structure without helping tool selection, which is the only blemish on an otherwise tight definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and annotations cover the destructive/idempotency profile. Still missing for a destructive batch mutation are the max batch size, what happens on duplicate matches, and whether validation failures are partial or atomic.
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 parameter level, so the description would normally need to compensate, and it says nothing about the body. The nested schema is nevertheless exhaustive - every contact field, owner_id, run_dedupe, and append_label_names carry their own descriptions - so effective semantics are already available. Baseline 3 reflects a description that adds nothing over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Bulk create contacts'), and the 'bulk' qualifier cleanly separates it from the single-record sibling post_apollo_contacts. It never names that alternative, so the agent must still infer the boundary, which keeps this from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use bulk create versus post_apollo_contacts, post_apollo_contacts_bulk_update, or the dedupe-aware path. The one prerequisite given ('Requires a master API key') is an auth condition rather than selection guidance, so the agent gets no routing help beyond the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_contacts_bulk_updateBulk Update ContactsBDestructiveInspect
Bulk update contacts. Requires a master API key.
Published reference price: $0.012 USD per successful request. 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 readOnlyHint=false, destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered externally. The description adds a genuinely useful auth requirement ('Requires a master API key') that annotations omit, but it says nothing about overwrite semantics, whether omitted fields are preserved, or the >100-contact async threshold.
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 short and front-loaded with the verb and resource. The injected pricing block adds length but is a mandated boilerplate element rather than authorial bloat, so the core 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?
For a destructive bulk mutation with a deeply nested, two-mode request body, the description is bare. The output schema removes the need to document return values and the annotations carry the safety profile, but routing between the bulk and single-contact siblings and clarifying the two mutually exclusive update modes are still 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?
Top-level schema coverage is 0% (the single 'body' wrapper is undocumented), but its nested properties are exhaustively described with examples, so the schema does most of the heavy lifting. The description contributes nothing about the anyOf union — that contact_ids applies identical values to many contacts while contact_attributes applies individual updates — which is the key semantic an agent needs.
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?
'Bulk update contacts' names a specific verb and resource, and the word 'bulk' implicitly separates it from the single-record sibling patch_apollo_contacts_contact_id. It does not, however, explicitly name an alternative or contrast itself with post_apollo_contacts_bulk_create, so an agent must infer the distinction.
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 only conditional statement is 'Requires a master API key', which is a prerequisite rather than usage guidance. Nothing says when to prefer this over patch_apollo_contacts_contact_id, post_apollo_contacts_bulk_create, or post_apollo_contacts_update_owners, nor when to choose uniform updates vs per-contact updates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_contacts_searchSearch for ContactsCRead-onlyIdempotentInspect
Search for contacts. Requires a master API key.
Published reference price: $0.012 USD per successful request. 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 readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds two genuinely useful non-schema facts, the master API key requirement and the per-request price, but says nothing about result volume, rate limits, or account scoping. Given annotations carry most of the burden, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core content is two tight sentences with the purpose front-loaded. The pricing block is injected boilerplate rather than authored prose, but it is fenced and does not bury the actual intent.
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 annotations cover the safety profile. What is still missing is routing against the numerous sibling search tools and any hint about the nested body structure, which for a nested-object, open-world search endpoint leaves meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported at 0% for the top-level required parameter 'body', and the description says nothing at all about how to shape the body. Although the nested properties carry their own descriptions in the schema, the description contributes zero additional meaning about pagination, keyword search, sorting, or label/stage filters, 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 names a clear verb and resource ('Search for contacts'), so the basic purpose is legible. However, it gives no differentiation from the many sibling contact/search tools (e.g. get_apollo_contacts_contact_id, post_apollo_mixed_people_api_search), leaving the agent to guess which is appropriate. This lands at the minimum-viable level rather than a specific, distinguishing statement.
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?
Only 'Requires a master API key' is offered, which is a prerequisite rather than guidance on when to use this tool versus alternatives. Nothing tells the agent when this search is preferred over the mixed-people or bulk-match siblings, and there are no exclusions or context cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_contacts_update_ownersUpdate Contact Owner for Multiple ContactsBDestructiveInspect
Update contact owner for multiple contacts. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| owner_id | Yes | New owner ID | |
| contact_ids | Yes | Contact IDs |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnlyHint=false, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds a real behavioral fact in the master API key requirement, but it never explains the destructive effect itself — that existing owner assignments are overwritten — which is the key unknown for an agent calling a destructive bulk mutation.
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 and the auth requirement are front-loaded in two short sentences with no redundancy. The injected pricing block is mandated boilerplate rather than authorial waste, but it does dilute the signal slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering safety and an output schema covering the response, the definition is broadly serviceable. It is still thin for a destructive bulk mutation: no guidance on partial failure, batch limits, or what happens to the previous owner.
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 carry descriptions, so the schema fully documents owner_id and contact_ids. The description contributes no additional parameter meaning (no ID format, no batch size ceiling, no behavior for invalid IDs), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope: reassigning a contact owner across multiple contacts, which implicitly separates it from the single-record patch_apollo_contacts_contact_id and from post_apollo_contacts_update_stages. It does not explicitly name those siblings, so differentiation is inferred from the 'multiple contacts' scope 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?
The prerequisite 'Requires a master API key' is a genuine usage constraint that helps an agent decide whether the call is even possible. However, there is no indication of when to prefer this bulk tool over the single-contact patch, nor any exclusion or limit guidance for the contact_ids set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_contacts_update_stagesUpdate Contact Stage for Multiple ContactsBDestructiveInspect
Update contact stage for multiple contacts. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| contact_ids | Yes | Contact IDs | |
| contact_stage_id | Yes | New contact stage ID |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the risk profile is covered structurally. The description adds one genuinely useful behavior beyond them — the master API key requirement — but says nothing about reversibility, what happens to existing stage assignments, or partial-failure behavior on a batch.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentence is front-loaded and wastes no words. The appended pricing block is templated boilerplate that does not aid tool selection, but it is clearly delimited and does not obscure the 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?
With an output schema present, return values need no explanation, and the annotations carry the safety profile, so the description is close to sufficient. It still omits the one thing an agent would want for a destructive batch mutation: whether the change is reversible and how many contacts can be submitted per 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 100% and both parameters are required, so contact_ids and contact_stage_id are already documented in the schema. The description adds no format, cardinality, or batching-limit detail beyond what the schema states, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource plainly: 'Update contact stage for multiple contacts', which is unambiguous and clearly a bulk stage mutation. It does not, however, distinguish itself from adjacent siblings such as post_apollo_contacts_bulk_update or patch_apollo_contacts_contact_id, so the agent must infer the difference from the name 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?
Other than the requirement of a master API key, there is no when-to-use guidance, no exclusions, and no routing to alternatives like the single-contact patch or the generic bulk update. 'For multiple contacts' implies the batch case but stops short of telling the agent 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_apollo_emailer_campaigns_add_contact_idsAdd Contacts to a SequenceBDestructiveInspect
Add contacts to a sequence. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| contact_ids | No | Contact IDs to add. Provide either contact_ids[] or label_names[] (or both). | |
| label_names | No | Label names for contacts to add. Provide either label_names[] or contact_ids[] (or both). | |
| sequence_id | Yes | Sequence (emailer campaign) ID. | |
| sequence_no_email | No | Allow contacts without email. | |
| emailer_campaign_id | Yes | Sequence ID (same as sequence_id). | |
| sequence_job_change | No | Allow contacts with job change. | |
| sequence_unverified_email | No | Allow contacts with unverified email. | |
| send_email_from_email_address | No | Optional from-address alias. | |
| send_email_from_email_account_id | Yes | Email account ID (or IDs) to send from. | |
| sequence_active_in_other_campaigns | No | Allow contacts active in other sequences. | |
| sequence_finished_in_other_campaigns | No | Allow contacts finished in other sequences. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the mutation/safety profile is covered structurally. The description adds the auth requirement (master API key) and pricing, which is real context, but it never explains the consequence of the destructive hint (e.g., contacts entering an outbound sequence) that the annotations imply.
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 and waste-free, and the auth requirement follows immediately. The embedded pricing comment block is boilerplate noise but is clearly demarcated and does not obscure the core instruction.
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 full output schema and 100% parameter coverage, return values and inputs are covered, so the remaining burden is behavioral. For a destructive 11-parameter mutation the description is minimally adequate: it names the auth requirement but omits consequences, conflict conditions with the remove/stop sibling, and how the several 'allow contacts with...' flags interact.
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 11 parameters including contact_ids/label_names alternation are documented in the schema itself. The description adds nothing about parameter semantics, 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 ('Add contacts to a sequence'), which an agent can map directly to the operation. It does not, however, differentiate itself from the closely named sibling post_apollo_emailer_campaigns_remove_or_stop_contact_ids or explain the contact/label ambiguity that the schema raises.
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 conditions distinguishing adding from removing/stopping contacts, and no note on prerequisites beyond 'Requires a master API key.' The agent is left to infer when this tool is the correct choice vs. siblings like the remove/stop variant or sequence approve/abort.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_emailer_campaigns_remove_or_stop_contact_idsUpdate Contact Status in a SequenceCDestructiveInspect
Update contact status in a sequence. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | One of: mark_as_finished, remove, stop. | |
| contact_ids | Yes | Contact IDs. | |
| emailer_campaign_ids | Yes | Sequence IDs. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description adds the genuinely useful auth constraint (master API key), but is silent on the behavioral consequences of each mode — removing vs stopping vs marking finished — for a bulk destructive operation, which is exactly the context an agent 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?
The operative text is two short sentences and the auth constraint comes early. The injected pricing block is platform boilerplate rather than the author's prose, so it only marginally dilutes an otherwise tight definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, but for a destructive bulk mutation with three semantically distinct modes the description leaves the mode effects, scope of impact, and failure behavior entirely unexplained. The definition is too thin for the operation's risk level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (mode, contact_ids, emailer_campaign_ids) are documented in the schema. The description adds no semantics beyond that, 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?
"Update contact status in a sequence" is essentially a restatement of the title with a different arrangement of the same words. It does not clarify that the tool removes/stops/marks contacts in one or more sequences, nor does it distinguish it from the sibling post_apollo_emailer_campaigns_add_contact_ids. Only the tool name carries the real distinguishing information.
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 only guidance is a prerequisite ("Requires a master API key"); there is no statement of when to prefer this tool over add_contact_ids, nor which of the three modes to choose for a given outcome. The agent must infer the entire decision from the schema's mode list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_emailer_campaigns_searchSearch for SequencesARead-onlyIdempotentInspect
Search for sequences (emailer campaigns) in your Apollo account. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number. | |
| q_name | No | Keywords to match sequence names. | |
| per_page | No | Results per page. |
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), so the bar is lower; the description adds a genuinely useful non-annotation detail, the master-API-key authentication requirement. It still does not describe pagination behaviour or result limits, which the annotations do not cover either.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences with zero filler; purpose comes first, then the auth prerequisite. The injected pricing block is boilerplate noise relative to tool selection but does not bury the operative information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, full parameter coverage in the schema, and annotations carrying the safety profile, the description needs only purpose and prerequisites, both of which it supplies. A note on paging across the page/per_page pair is the only obvious missing piece.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for all three parameters (page, q_name, per_page), so the schema already carries the semantics. The description adds no syntax, defaults, or guidance about paging or keyword matching, 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 (Search) and resource (sequences / emailer campaigns), and resolves the naming ambiguity created by the 'post_' prefix by making clear this is a read-style lookup. It does not name a sibling to differentiate from, though the parenthetical alias quietly separates it from get_apollo_emailer_messages_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"In your Apollo account" plus "Requires a master API key" gives the prerequisite and a general context, but there is no explicit when-to-use guidance or named alternative for searching messages rather than sequences. The agent must infer the boundary from the resource name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_emailer_campaigns_sequence_id_abortDeactivate a SequenceBDestructiveInspect
Deactivate a sequence. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| sequence_id | Yes | Sequence ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered structurally. The description adds the master-API-key authentication requirement, which is real value beyond the annotations, but says nothing about what deactivation actually does to in-flight sequences, enrolled contacts, or how abort differs from archive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The substantive content is two short front-loaded sentences with no padding around the action. The injected pricing block is boilerplate that consumes space without aiding tool selection, keeping it below a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations carrying the safety profile, the description only owes the agent the action and its prerequisites, both of which are present. It falls short of complete because the distinction between deactivating, archiving, and stopping (remove_or_stop_contact_ids) is left for the agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single sequence_id parameter, so the baseline is 3. The description adds no format, sourcing, or semantics for the ID beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Deactivate") and resource ("a sequence"), so the action itself is unambiguous. It does not, however, distinguish itself from the close siblings post_apollo_emailer_campaigns_sequence_id_archive or ..._approve, which an agent reads as adjacent lifecycle operations on the same sequence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no when-not-to-use, and no routing to alternatives such as archive vs abort vs approve. The only actionable instruction is the credential prerequisite ("Requires a master API key"), which is a gate rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_emailer_campaigns_sequence_id_approveActivate a SequenceBDestructiveInspect
Activate a sequence. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| sequence_id | Yes | Sequence ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered externally. The description's one real addition is 'Requires a master API key' — a genuine auth prerequisite not in the annotations. It says nothing about reversibility or what activation does to in-flight contacts.
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 content is two tight sentences with the auth caveat front-loaded alongside the action. The pricing boilerplate is non-behavioral but is clearly delimited as a comment block.
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 carry the destructive/idempotency profile. What is missing is guidance on irreversible activation, which matters for a destructive, non-idempotent mutation.
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 a single parameter, so the baseline is 3. The description adds no format or sourcing detail for sequence_id beyond the schema's 'Sequence ID.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Activate a sequence'), which is much clearer than the name's opaque 'approve' segment. However, it does not differentiate from close siblings like _abort and _archive, so an agent must infer the distinction.
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 no when-to-use guidance and names no alternatives, despite siblings _abort and _archive being obvious confusable options for an emailer campaign sequence. The agent gets no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_emailer_campaigns_sequence_id_archiveArchive a SequenceADestructiveInspect
Archive a sequence (marks it inactive and finishes contacts). Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| sequence_id | Yes | Sequence ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds real value beyond them: what archiving does to the sequence and its contacts, the master-key auth requirement, and per-request cost. It does not cover reversibility or timing, but given the annotation coverage this is a strong disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The operative content is two tight sentences, front-loaded with the action and its effect. The pricing block is boilerplate but is short, clearly delimited, and carries genuine cost 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 destructive single-parameter call with an output schema, the description covers the effect, auth requirement, and cost, so an agent has enough to invoke it correctly. It stops short of stating whether the change is reversible or how in-flight sends are handled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (sequence_id) and schema description coverage is 100%, so the schema already carries the parameter meaning. The description adds nothing about the identifier beyond what is structured, which is the expected baseline 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?
Specific verb ('Archive') and resource ('a sequence'), plus a clarifying gloss of what archiving does ('marks it inactive and finishes contacts'). That effect does implicitly distinguish it from the abort sibling, but no sibling is named, so it falls short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an important prerequisite ('Requires a master API key') and describes the outcome, which implies when this is appropriate. However, it never states when to choose archive over the closely related abort or approve endpoints, leaving the agent to infer the distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_fieldsGet a List of Fields + Create a Custom FieldDDestructiveInspect
Get a list of fields. Requires a master API key.
Published reference price: $0.012 USD per successful request. 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 declare readOnlyHint=false, destructiveHint=true, idempotentHint=false, but the description says only "Get a list of fields," implying a read. This contradicts the annotations and hides the destructive write nature. The only useful extra is the master API key requirement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The two real sentences are terse, but a large auto-generated pricing block occupies much of the text and conveys nothing about tool selection or behavior. The minimal information present is also front-loaded around the wrong (read) action.
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 exists (so return values need not be described), the definition is incomplete for a destructive write tool: it never states it creates a custom field, never covers the required body parameters, and its stated action conflicts with the annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% at the top level and the description mentions no parameters at all. It adds nothing about the nested body fields (type, label, modality, meta) that drive field creation.
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 only says "Get a list of fields," but the tool name (post_), the title ("Get a List of Fields + Create a Custom Field"), and the body schema with type/label/modality all indicate the primary action is creating a custom field. The description omits the create function entirely and is therefore partial/misleading about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not, or alternative guidance is given. Siblings get_apollo_fields and get_apollo_typed_custom_fields appear to be the pure read routes, yet the description does not distinguish this mutating tool from them.
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_opportunitiesCreate DealBDestructiveInspect
Create a deal (opportunity). Requires a master API key.
Published reference price: $0.012 USD per successful request. 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 readOnlyHint=false, destructiveHint=true, idempotentHint=false and openWorldHint=true, so the mutation profile is covered. The description adds the auth requirement (master API key), which annotations do not convey, but says nothing about creation side effects, duplicate handling, or required related entities.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the key precondition, with no wasted prose. The injected pricing comment block is boilerplate noise rather than description 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?
A mutation tool with a required nested body object and no annotation-level detail about creation semantics; an output schema exists so return values need not be explained. The description covers only the action and auth, leaving the agent to infer prerequisite IDs and creation behavior entirely from the nested schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema description coverage is 0% (the single 'body' parameter is undescribed), and the description contributes no parameter meaning at all. The nested body properties are in fact richly documented in the schema, which limits the damage, but the description itself does nothing 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 states a specific verb and resource ('Create a deal (opportunity)') and usefully disambiguates the API's 'opportunity' terminology as a 'deal'. It does not differentiate itself from siblings like patch_apollo_opportunities or get_apollo_opportunities_search, but the create action is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is an authentication prerequisite ('Requires a master API key'), which is a precondition rather than a when-to-use rule. There is no mention of when to create a deal versus updating one, or of what pre-existing entities (stage, account, owner) must be resolved first.
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_apollo_phone_callsCreate Call RecordsBDestructiveInspect
Create call records. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| logged | No | Whether to create an individual record. | |
| status | No | Call status. | |
| user_id | No | Caller user IDs. | |
| duration | No | Duration in seconds. | |
| end_time | No | ISO 8601 end time. | |
| to_number | No | Dialed phone number. | |
| account_id | No | Account ID. | |
| contact_id | No | Contact ID. | |
| start_time | No | ISO 8601 start time. | |
| from_number | No | Caller phone number. | |
| phone_call_outcome_id | No | Outcome ID. | |
| phone_call_purpose_id | No | Purpose ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=true, idempotentHint=false), and the description usefully adds the master-API-key auth requirement and a per-request price. However, it does not disclose side effects, retry/non-idempotency implications, or how duplicate calls are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and auth prerequisite are front-loaded in a single tight sentence, and the pricing note is clearly delimited boilerplate. Slightly padded by the pricing comment block but no wasted prose in the functional 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?
With an output schema present, return values need not be described, and annotations cover mutation risk. Still, for a 12-parameter mutation tool with zero required fields, the description gives no indication of which fields matter, minimum viable payload, or batching behaviour.
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 all 12 parameters, so the schema already carries the field semantics. The description adds no parameter-level meaning (e.g., the relationship between logged, status, and the ID fields), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb plus resource: 'Create call records.' An agent can distinguish this from get_apollo_phone_calls_search (read) and put_apollo_phone_calls_id (update) by the naming pattern, but the description never explicitly differentiates itself from those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is an authentication prerequisite ('Requires a master API key'). There is no statement of when to use this tool versus the search/get/update phone-call siblings, nor any when-not condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_reports_sync_reportQuery Analytics ReportCRead-onlyIdempotentInspect
Query analytics report. Requires a master API key.
Published reference price: $0.012 USD per successful request. 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 readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds one genuinely useful fact not present in structured data — the master API key requirement — plus pricing, but says nothing about result volume, limits, or rate behavior beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the auth requirement; nothing is wasted. The boilerplate pricing block is injected rather than authored, but it is clearly delimited.
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?
This is a high-complexity tool with a deeply nested required body and a documented output schema, yet the description never mentions the reference-document dependency for valid metric/dimension names, the one-entry limits on group_by/date_ranges, or the custom_range interaction with filters. An agent would have to reverse-engineer all of that from the schema 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?
The single top-level parameter (body) carries no description, but the nested schema is unusually thorough, documenting metrics, filters, group_by, pivot_group_by, date_ranges, sorts and their constraints. The description adds nothing about any parameter, so it neither compensates for the coverage gap nor contributes value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says it queries an analytics report, which is a recognizable verb+resource, but it is essentially a restatement of the title and adds no scope detail (e.g. what kind of report, sync vs async). It does not distinguish this tool from siblings such as post_apollo_usage_stats_api_usage_stats or the various search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Requires a master API key" is a prerequisite, not usage guidance. There is no statement of when to use this tool versus the other reporting/search endpoints, and no exclusions or alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_tasksCreate a TaskBDestructiveInspect
Create a task. Requires a master API key.
Published reference price: $0.012 USD per successful request. 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 readOnlyHint=false, destructiveHint=true, openWorldHint=true, and idempotentHint=false, so the write/safety profile is covered. The description adds the master-API-key auth requirement, which is genuinely beyond the annotations, but says nothing about side effects (e.g. notifying the assigned user), error behavior on invalid user_id/contact_id, or why a create is flagged destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The two substantive sentences are front-loaded with the action verb and contain no filler. The trailing aisa-pricing block is injected boilerplate and does not dilute the definition. Brevity is appropriate, though it comes at the cost of the gaps noted elsewhere rather than from trimming genuine value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. What remains missing for a mutation tool with a nested required body object is the wrapper-structure explanation, side effects on the assigned user, and any guidance on single vs. bulk creation. Adequate but clearly incomplete.
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%: the single top-level parameter 'body' has no description, and the tool description says nothing about parameters. It never explains that all task fields (user_id, contact_id, type, status, due_at, note, title, priority) must be nested inside a body object, which is the one non-obvious structural fact an agent needs. The nested property descriptions are rich, but that is the schema doing the work, not the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Create a task.' Combined with the title 'Create a Task' this is unambiguous about what the tool does. It does not, however, distinguish itself from the sibling post_apollo_tasks_bulk_create or explain how it relates to post_apollo_tasks_search, so sibling differentiation is left to the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Requires a master API key' gives one concrete prerequisite, which is more than most descriptions offer. There is no guidance on when to choose this over post_apollo_tasks_bulk_create, no note that this creates exactly one task, and no statement of when not to use it, so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_tasks_bulk_createBulk Create TasksBDestructiveInspect
Bulk create tasks. Requires a master API key.
Published reference price: $0.012 USD per successful request. 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 destructiveHint=true, idempotentHint=false, openWorldHint=true and readOnlyHint=false, so the mutation/write nature is covered without the description. The description adds the master-key auth requirement, which is useful non-schema context. It says nothing about batch-size limits, partial-failure behavior, or reversibility of created tasks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with purpose then requirement, with no author-supplied padding. The trailing pricing comment is injected boilerplate rather than authored content, so it is not heavily penalized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation and annotations cover the safety profile. What remains missing for a bulk mutation tool is whether the batch is atomic, any cap on contact_ids, and the auth scope consequence if the master key is absent — the description stops at naming the requirement.
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?
Measured schema description coverage is 0% at the parameter level (the sole top-level 'body' object is undocumented), and the description supplies no parameter information at all, so it fails to compensate. The nested properties do carry rich inline descriptions (examples, ISO 8601 format, enum values), which keeps this from being a 1, but the description itself contributes nothing.
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 create tasks'), and the 'Bulk' qualifier implicitly separates it from the single-create sibling post_apollo_tasks. It does not name any sibling explicitly, so it lands at clear-but-not-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The prerequisite 'Requires a master API key' is a genuine usage condition, which is more than most. However, there is no guidance on when to prefer this over post_apollo_tasks or post_apollo_tasks_search, so the when-to-use dimension is only implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_tasks_searchSearch for TasksARead-onlyIdempotentInspect
Search tasks. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number. | |
| per_page | No | Results per page. | |
| sort_by_field | No | Sort field. | |
| open_factor_names | No | Optional open factors. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered structurally; the description contributes a genuinely non-annotation detail (master API key required) plus cost-per-request. It does not mention pagination limits or result caps, which would be the next useful disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no filler; the capability statement comes before the auth requirement. The injected pricing comment block adds markup noise, but the prose itself is tight.
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 100% param coverage, the description needn't explain return values, and it correctly flags the auth prerequisite. The remaining gap is that a search tool with no obvious query parameter is not clarified, which could confuse an agent about what the tool actually filters on.
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 four parameters are already documented and the baseline of 3 applies. The description adds no meaning beyond the schema, and notably does not explain what is searched on when no query/filter parameter exists.
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 clear verb+resource ('Search tasks'), which correctly identifies the read/search counterpart to the write siblings post_apollo_tasks and post_apollo_tasks_bulk_create. It does not, however, name any sibling or differentiate itself from the other Apollo search endpoints (contacts/accounts/opportunities), so it stops short of full sibling routing.
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 only guidance is a prerequisite ('Requires a master API key'); there is no when-to-use, when-not-to-use, or named alternative. Given a large family of *_search siblings, an agent gets nothing to decide between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_apollo_usage_stats_api_usage_statsView API Usage Stats and Rate LimitsARead-onlyIdempotentInspect
View API usage stats and rate limits. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so safety is covered. The description contributes beyond them by disclosing the master-API-key authorization prerequisite, a constraint an agent cannot infer from structured fields. It stops short of describing response scope or any rate-limit context of its own.
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 single sentence plus a short auth note, both earning their place. The appended aisa-pricing boilerplate is not authored description content and adds noise, but the core text is tight.
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, an output schema present (so return values need no explanation), and annotations covering the safety profile, the description carries the remaining informational burden adequately by stating the auth requirement. Slightly more context about what stats are returned would be ideal but is not required given the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the documented baseline of 4. There is nothing parameter-wise for the description to compensate for, and schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource: view API usage stats and rate limits. This is the only usage/rate-limit tool among the Apollo siblings, so it is distinguishable by resource even though no sibling is named. Clear, though it lacks explicit contrast with lookalike read tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use (checking usage and rate limits) is implied by the resource name, and the prerequisite 'Requires a master API key' is stated. However, there is no explicit when-to-use trigger and no named alternative or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_waveinflu_ai_searchCreator AI SearchADestructiveInspect
Finds creators from a natural-language brief instead of a seed account. platform and query are required; add limit (1–100, default 40) and the same optional filters as Similar Creators. Describe the creators you want in plain language (for example, "beauty creators in the US") and the response returns matching creators in the same rich shape as Similar Creators — full profile metrics plus AI-inferred gender, ageRange, ethnicity, faceVisibility, accountPositioning, aiDescription, and a relevance score. 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 mark this readOnly=false, destructive=true and idempotent=false, which is unusual for a search tool; the description resolves that by disclosing usage-based billing ('Billing is per delivered creator (data.count)') plus a concrete per-unit rate and estimate. That cost/consumption context is exactly the kind of behavior structured fields cannot convey. It does not spell out auth requirements or rate limits, 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-loads the differentiator and required inputs, then response shape, then billing — a sensible ordering with little filler. The appended pricing comment block is boilerplate rather than author content, but it does lengthen the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the essentials for a billed, non-idempotent search: input meaning, output richness (redundant given the output schema exists), and cost. The one soft spot is that the filter set is described only by cross-reference ('the same optional filters as Similar Creators'), forcing an agent to consult a sibling to know the full filter surface.
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 adds conceptual value (limit 'caps the billed count', the AI-inferred output fields), but it conflicts with the schema on two points: it calls `platform` required when the schema requires only `query` and gives platform a default, and it states `limit` defaults to 40 while the schema says 25. With reported schema coverage at 0% for the top-level `body` wrapper, the description is carrying the burden and these inaccuracies are costly, though the nested filter and platform properties are individually documented.
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?
Names a specific verb and resource ('Finds creators') and immediately states the distinguishing mechanism: a natural-language brief rather than a seed account. This separates it cleanly from the sibling post_waveinflu_similar_creators, which is seed-driven, so an agent can pick between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear condition for use ('Describe the creators you want in plain language') and contrasts it against the seed-account approach, implicitly naming the alternative path. It stops short of an explicit 'when not to use this / use similar_creators instead' instruction, so routing still requires a small inference.
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.
put_apollo_phone_calls_idUpdate Call RecordsCDestructiveInspect
Update call records. Requires a master API key.
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Call record ID. | |
| logged | No | Whether to create an individual record. | |
| status | No | Call status. | |
| user_id | No | Caller user IDs. | |
| duration | No | Duration in seconds. | |
| end_time | No | ISO 8601 end time. | |
| to_number | No | Dialed phone number. | |
| account_id | No | Account ID. | |
| contact_id | No | Contact ID. | |
| start_time | No | ISO 8601 start time. | |
| from_number | No | Caller phone number. | |
| phone_call_outcome_id | No | Outcome ID. | |
| phone_call_purpose_id | No | Purpose ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, idempotentHint=false, and openWorldHint=true, so the safety profile is covered. The description contributes one genuinely non-redundant fact — the master API key requirement — but says nothing about what the destructive update replaces, whether omitted fields are cleared or preserved, or PUT replace-vs-merge semantics.
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 prose is two short, front-loaded sentences with no filler. The injected pricing HTML comment block is noise, but the authored content itself is tight and not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and all parameters are documented in the schema. However, for a 13-parameter destructive mutation with destructiveHint=true and idempotentHint=false, the description omits partial-vs-full update semantics and any effect of the call, leaving the definition only minimally viable.
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 all 13 parameters, so the schema already carries the semantics and the baseline of 3 applies. The description adds no parameter-level meaning (e.g., that only the required id is needed and the rest are optional fields to change), leaving it purely a restatement.
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 ("Update call records"), which is marginally more informative than the name alone, but it adds no detail beyond the title "Update Call Records" and does not distinguish this mutation endpoint from siblings such as post_apollo_phone_calls or get_apollo_phone_calls_search. It is clear but generic.
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 (e.g., post_apollo_phone_calls for creation), and no exclusions. "Requires a master API key" is a prerequisite, not usage guidance, so the agent gets no routing help.
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.
30 tool updates
- Added
account - Removed
get_details - Changed
patch_apollo_accounts_account_id10 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / account_stage_idRemoved value: -{ - "description": "Account stage ID", - "type": "string" -} - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "account_stage_id": { + "description": "The Apollo ID for the account stage to which you want to assign the account. Enter a different ID to update the account stage. <br><br>Call the <a href=\"https://docs.apollo.io/reference/list-account-stages\" target=\"_blank\">list account stages endpoint</a> to retrieve a list of all the account stage IDs available in your Apollo account. <br><br>If you do not specify the account stage, Apollo automatically assigns the account to a stage as determined by your team's Apollo account. To change the order of account stages, launch the Apollo product and go to <b>Settings</b> > <b>Objects</b> > <a href=\"https://app.apollo.io/#/settings/accounts/stages\" target=\"_blank\"><b>Accounts</b></a>. Then, access the <b>Triggers</b> tab and change the stage for when an account is created. <br><br>Example: `61b8e913e0f4d2012e3af74e`", + "type": "string" + }, + "domain": { + "description": "Update the domain name for the account. Do not include `www.` or similar. <br><br>Example: `apollo.io` or `microsoft.com`", + "type": "string" + }, + "name": { + "description": "Update the account's name. This should be a human-readable name. <br><br>Example: `The Fast Irish Copywriters`", + "type": "string" + }, + "owner_id": { + "description": "The ID for the account owner within your team's Apollo account. Enter a different ID to update the owner of the account. <br><br>Use the <a href=\"https://docs.apollo.io/reference/get-a-list-of-users\" target=\"_blank\">get a list of users endpoint</a> to retrieve IDs for all of the users within your Apollo account. <br><br>Example: `66302798d03b9601c7934ebf`", + "type": "string" + }, + "phone": { + "description": "Update the primary phone number for the account. <br><br>This can be the phone number for the corporate headquarters, a branch location, or a direct dial to the primary point of contact for the account. <br><br>Apollo sanitizes phone numbers, so you can enter them in any format. The sanitized number can be viewed in the endpoint response. <br><br>Examples: `555-555-0133`; `+44 7700 900852`", + "type": "string" + }, + "raw_address": { + "description": "Update the corporate location for the account. This can include a city, US state, and country. <br><br>Apollo matches the location you provide to the most applicable pre-defined location. <br><br>Examples: `Belfield, Dublin 4, Ireland`; `Dallas, United States`", + "type": "string" + }, + "typed_custom_fields": { + "additionalProperties": { + "type": "string" + }, + "description": "Add information to <a href=\"https://knowledge.apollo.io/hc/en-us/articles/4412498754445-Create-Custom-Account-Fields\" target=\"_blank\">custom fields</a> in Apollo. <br><br><b>Your custom fields are unique to your team's Apollo account. This means that the examples in this documentation may not work for your testing purposes.</b> <br><br>To utilize this parameter successfully, call the <a href=\"https://docs.apollo.io/reference/get-a-list-of-all-custom-fields\">get a list of all custom fields</a> endpoint and identify the `id` value for the custom field, as well as the appropriate data type. For example, if a custom field accepts picklist entries, you need to pass the accompanying `id` value for the picklist entry that you want to use as the input value. <br><br><b>Example</b>: When the <a href=\"https://docs.apollo.io/reference/get-a-list-of-all-custom-fields\">get a list of all custom fields</a> endpoint returns an `id` of field: \n * `\"60c39ed82bd02f01154c470a\"` (datetime) \n \n\n then the value passed should be: \n\n `{\"60c39ed82bd02f01154c470a\": \"2025-08-07\"}`", + "example": { + "60c39ed82bd02f01154c470a": "2025-08-07" + }, + "type": "object" + } + }, + "type": "object" +} - removed
Input schema / properties / domainRemoved value: -{ - "description": "Account domain", - "type": "string" -} - removed
Input schema / properties / nameRemoved value: -{ - "description": "Account name", - "type": "string" -} - removed
Input schema / properties / owner_idRemoved value: -{ - "description": "Owner ID", - "type": "string" -} - removed
Input schema / properties / phoneRemoved value: -{ - "description": "Phone number", - "type": "string" -} - removed
Input schema / properties / raw_addressRemoved value: -{ - "description": "Raw address", - "type": "string" -} - removed
Input schema / properties / typed_custom_fieldsRemoved value: -{ - "description": "Typed custom fields object", - "type": "object" -} - changed
Input schema / requiredPrevious value: -[ - "account_id" -]New value: +[ + "account_id", + "body" +]
- Changed
patch_apollo_contacts_contact_id19 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / account_idRemoved value: -{ - "description": "Account ID", - "type": "string" -} - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "account_id": { + "description": "Update the account ID. Example: `63f53afe4ceeca00016bdd2f`", + "type": "string" + }, + "contact_stage_id": { + "description": "Update the contact stage ID. Example: `6095a710bd01d100a506d4af`", + "type": "string" + }, + "corporate_phone": { + "description": "Work/office phone.", + "type": "string" + }, + "direct_phone": { + "description": "Primary phone.", + "type": "string" + }, + "email": { + "description": "Update the contact email. Example: `example@email.com`", + "type": "string" + }, + "first_name": { + "description": "Update the contact's first name. Example: `Tim`", + "type": "string" + }, + "home_phone": { + "description": "Home phone.", + "type": "string" + }, + "label_names": { + "description": "Replace lists this contact belongs to. (Passing new values will overwrite existing lists.)", + "items": { + "type": "string" + }, + "type": "array" + }, + "last_name": { + "description": "Update the contact's last name. Example: `Zheng`", + "type": "string" + }, + "mobile_phone": { + "description": "Mobile phone.", + "type": "string" + }, + "organization_name": { + "description": "Update the employer (company) name. Example: `apollo`", + "type": "string" + }, + "other_phone": { + "description": "Alternate phone.", + "type": "string" + }, + "present_raw_address": { + "description": "Update location (city/state/country). Example: `Atlanta, United States`", + "type": "string" + }, + "title": { + "description": "Update the job title. Example: `senior research analyst`", + "type": "string" + }, + "typed_custom_fields": { + "additionalProperties": { + "type": "string" + }, + "description": "Add information to <a href=\"https://knowledge.apollo.io/hc/en-us/articles/4412498825869-Create-Custom-Contact-Fields\" target=\"_blank\">custom fields</a> in Apollo. <br><br><b>Your custom fields are unique to your team's Apollo account. This means that the examples in this documentation may not work for your testing purposes.</b> <br><br>To utilize this parameter successfully, call the <a href=\"https://docs.apollo.io/reference/get-a-list-of-all-custom-fields\">get a list of all custom fields</a> endpoint and identify the `id` value for the custom field, as well as the appropriate data type. For example, if a custom field accepts picklist entries, you need to pass the accompanying `id` value for the picklist entry that you want to use as the input value. <br><br><b>Example</b>: When the <a href=\"https://docs.apollo.io/reference/get-a-list-of-all-custom-fields\">get a list of all custom fields</a> endpoint returns an `id` of field: \n * `\"60c39ed82bd02f01154c470a\"` (datetime) \n \n\n then the value passed should be: \n\n `{\"60c39ed82bd02f01154c470a\": \"2025-08-07\"}`", + "example": { + "60c39ed82bd02f01154c470a": "2025-08-07" + }, + "type": "object" + }, + "website_url": { + "description": "Update the employer website URL. Example: `https://www.apollo.io/`", + "type": "string" + } + }, + "type": "object" +} - removed
Input schema / properties / contact_stage_idRemoved value: -{ - "description": "Contact stage ID", - "type": "string" -} - removed
Input schema / properties / corporate_phoneRemoved value: -{ - "description": "Corporate phone", - "type": "string" -} - removed
Input schema / properties / direct_phoneRemoved value: -{ - "description": "Direct phone", - "type": "string" -} - removed
Input schema / properties / emailRemoved value: -{ - "description": "Email", - "type": "string" -} - removed
Input schema / properties / first_nameRemoved value: -{ - "description": "First name", - "type": "string" -} - removed
Input schema / properties / home_phoneRemoved value: -{ - "description": "Home phone", - "type": "string" -} - removed
Input schema / properties / label_namesRemoved value: -{ - "description": "Labels to set on the contact", - "type": "string" -} - removed
Input schema / properties / last_nameRemoved value: -{ - "description": "Last name", - "type": "string" -} - removed
Input schema / properties / mobile_phoneRemoved value: -{ - "description": "Mobile phone", - "type": "string" -} - removed
Input schema / properties / organization_nameRemoved value: -{ - "description": "Organization name", - "type": "string" -} - removed
Input schema / properties / other_phoneRemoved value: -{ - "description": "Other phone", - "type": "string" -} - removed
Input schema / properties / present_raw_addressRemoved value: -{ - "description": "Raw address", - "type": "string" -} - removed
Input schema / properties / titleRemoved value: -{ - "description": "Title", - "type": "string" -} - removed
Input schema / properties / typed_custom_fieldsRemoved value: -{ - "description": "Typed custom fields object", - "type": "object" -} - removed
Input schema / properties / website_urlRemoved value: -{ - "description": "Website URL", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "contact_id" -]New value: +[ + "contact_id", + "body" +]
- Changed
patch_apollo_opportunities_opportunity_id9 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / amountRemoved value: -{ - "description": "Amount", - "type": "number" -} - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "amount": { + "description": "The monetary value of the deal. Enter a different value to update the deal amount. <br><br>Do not enter commas or currency symbols for the value. The currency is automatically populated by the settings within your Apollo account. Commas are not accepted and result in the deal amount being left blank. <br><br>Example: `55123478` (results in a deal value of `$55,123,478` if the default currency is USD)", + "type": "string" + }, + "closed_date": { + "description": "Update the estimated close date for the deal. This can be a future or past date. <br><br>The date should be formatted as `YYYY-MM-DD`. <br><br>Example: `2025-10-30`", + "format": "date", + "type": "string" + }, + "name": { + "description": "Update the name of the deal. This should be a human-readable name. <br><br>Example: `Massive Q3 Deal`", + "type": "string" + }, + "opportunity_stage_id": { + "description": "The ID for the deal stage within your team's Apollo account. Enter a different ID to update the deal stage. <br><br>Each deal stage is assigned a unique ID. To find deal stage IDs, call the <a href=\"https://docs.apollo.io/reference/list-deal-stages\" target=\"_blank\">list deal stages endpoint</a> and identify the value for `id` for each stage. <br><br>Example: `6095a710bd01d100a506d4bd`", + "type": "string" + }, + "owner_id": { + "description": "The ID for the deal owner within your team's Apollo account. Enter a different ID to update the owner of the deal. <br><br>Use the <a href=\"https://docs.apollo.io/reference/get-a-list-of-users\" target=\"_blank\">get a list of users endpoint</a> to retrieve IDs for all of the users within your Apollo account. <br><br>Example: `66302798d03b9601c7934ebf`", + "type": "string" + }, + "typed_custom_fields": { + "additionalProperties": { + "type": "string" + }, + "description": "Add information to <a href=\"https://knowledge.apollo.io/hc/en-us/articles/4415062486669-Create-a-Deal\" target=\"_blank\">custom fields</a> in Apollo. <br><br><b>Your custom fields are unique to your team's Apollo account. This means that the examples in this documentation may not work for your testing purposes.</b> <br><br>To utilize this parameter successfully, call the <a href=\"https://docs.apollo.io/reference/get-a-list-of-all-custom-fields\">get a list of all custom fields</a> endpoint and identify the `id` value for the custom field, as well as the appropriate data type. For example, if a custom field accepts picklist entries, you need to pass the accompanying `id` value for the picklist entry that you want to use as the input value. <br><br><b>Example</b>: When the <a href=\"https://docs.apollo.io/reference/get-a-list-of-all-custom-fields\">get a list of all custom fields</a> endpoint returns an `id` of field: \n * `\"60c39ed82bd02f01154c470a\"` (datetime) \n \n\n then the value passed should be: \n\n `{\"60c39ed82bd02f01154c470a\": \"2025-08-07\"}`", + "example": { + "60c39ed82bd02f01154c470a": "2025-08-07" + }, + "type": "object" + } + }, + "type": "object" +} - removed
Input schema / properties / closed_dateRemoved value: -{ - "description": "Closed date (date string)", - "type": "string" -} - removed
Input schema / properties / nameRemoved value: -{ - "description": "Opportunity name", - "type": "string" -} - removed
Input schema / properties / opportunity_stage_idRemoved value: -{ - "description": "Stage ID", - "type": "string" -} - removed
Input schema / properties / owner_idRemoved value: -{ - "description": "Owner ID", - "type": "string" -} - removed
Input schema / properties / typed_custom_fieldsRemoved value: -{ - "description": "Typed custom fields object", - "type": "object" -} - changed
Input schema / requiredPrevious value: -[ - "opportunity_id" -]New value: +[ + "opportunity_id", + "body" +]
- Changed
post_apollo_accounts7 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / account_stage_idRemoved value: -{ - "description": "Account stage ID", - "type": "string" -} - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "account_stage_id": { + "description": "The Apollo ID for the account stage to which you want to assign the account. Call the <a href=\"https://docs.apollo.io/reference/list-account-stages\" target=\"_blank\">list account stages endpoint</a> to retrieve a list of all the account stage IDs available in your Apollo account. <br><br>If you do not specify the account stage, Apollo automatically assigns the account to a stage as determined by your team's Apollo account. To change the order of account stages, launch the Apollo product and go to <b>Settings</b> > <b>Objects</b> > <a href=\"https://app.apollo.io/#/settings/accounts/stages\" target=\"_blank\"><b>Accounts</b></a>. Then, access the <b>Triggers</b> tab and change the stage for when an account is created.<br><br>Example: `6095a710bd01d100a506d4b9`", + "type": "string" + }, + "domain": { + "description": "The domain name for the account. <br><br>Do not include `www.` or similar. <br><br>Example: `apollo.io` or `microsoft.com`", + "type": "string" + }, + "name": { + "description": "Name the account that you are creating. This should be a human-readable name. <br><br>Example: `The Irish Copywriters`", + "type": "string" + }, + "owner_id": { + "description": "The ID for the account owner within your team's Apollo account. <br><br>Use the <a href=\"https://docs.apollo.io/reference/get-a-list-of-users\" target=\"_blank\">get a list of users endpoint</a> to retrieve IDs for all of the users within your Apollo account. <br><br>Example: `66302798d03b9601c7934ebf`", + "type": "string" + }, + "phone": { + "description": "The primary phone number for the account. <br><br>This can be the phone number for the corporate headquarters, a branch location, or a direct dial to the primary point of contact for the account. <br><br>Apollo sanitizes phone numbers, so you can enter them in any format. The sanitized number can be viewed in the endpoint response. <br><br>Examples: `555-555-0133`; `+44 7700 900852`", + "type": "string" + }, + "raw_address": { + "description": "The corporate location for the account. This can include a city, US state, and country. <br><br>Apollo matches the location you provide to the most applicable pre-defined location. <br><br>Examples: `Belfield, Dublin 4, Ireland`; `Dallas, United States`", + "type": "string" + }, + "typed_custom_fields": { + "additionalProperties": { + "type": "string" + }, + "description": "Add information to <a href=\"https://knowledge.apollo.io/hc/en-us/articles/4412498754445-Create-Custom-Account-Fields\" target=\"_blank\">custom fields</a> in Apollo. <br><br><b>Your custom fields are unique to your team's Apollo account. This means that the examples in this documentation may not work for your testing purposes.</b> <br><br>To utilize this parameter successfully, call the <a href=\"https://docs.apollo.io/reference/get-a-list-of-all-custom-fields\">get a list of all custom fields</a> endpoint and identify the `id` value for the custom field, as well as the appropriate data type. For example, if a custom field accepts picklist entries, you need to pass the accompanying `id` value for the picklist entry that you want to use as the input value. <br><br><b>Example</b>: When the <a href=\"https://docs.apollo.io/reference/get-a-list-of-all-custom-fields\">get a list of all custom fields</a> endpoint returns an `id` of field: \n * `\"60c39ed82bd02f01154c470a\"` (datetime) \n \n\n then the value passed should be: \n\n `{\"60c39ed82bd02f01154c470a\": \"2025-08-07\"}`", + "example": { + "60c39ed82bd02f01154c470a": "2025-08-07" + }, + "type": "object" + } + }, + "type": "object" +} - removed
Input schema / properties / domainRemoved value: -{ - "description": "Account domain", - "type": "string" -} - removed
Input schema / properties / nameRemoved value: -{ - "description": "Account name", - "type": "string" -} - removed
Input schema / properties / owner_idRemoved value: -{ - "description": "Owner ID", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "name", - "domain" -]New value: +[ + "body" +]
- Changed
post_apollo_accounts_bulk_create6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / accountsRemoved value: -{ - "description": "Array of accounts to create", - "type": "string" -} - removed
Input schema / properties / append_label_namesRemoved value: -{ - "description": "Label names to append to each created account", - "type": "string" -} - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "accounts": { + "description": "Array of account attribute objects (maximum 100 accounts per request)", + "items": { + "properties": { + "account_stage_id": { + "description": "Account stage/pipeline stage ID (BSON::ObjectId format)", + "example": "507f1f77bcf86cd799439014", + "type": "string" + }, + "domain": { + "description": "Company domain (e.g., 'example.com')", + "example": "acme.com", + "type": "string" + }, + "facebook_url": { + "description": "Facebook page URL", + "example": "https://facebook.com/acme", + "type": "string" + }, + "hubspot_id": { + "description": "HubSpot company ID for CRM integration", + "example": "12345678", + "type": "string" + }, + "linkedin_url": { + "description": "LinkedIn company page URL", + "example": "https://linkedin.com/company/acme", + "type": "string" + }, + "merged_crm_ids": { + "description": "Additional CRM IDs for deduplication", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Account name", + "example": "Acme Corporation", + "type": "string" + }, + "organization_id": { + "description": "Apollo organization ID", + "example": "507f1f77bcf86cd799439012", + "type": "string" + }, + "owner_id": { + "description": "Account owner user ID (BSON::ObjectId format). Defaults to current user if not provided", + "example": "507f1f77bcf86cd799439013", + "type": "string" + }, + "parent_account_id": { + "description": "Parent account ID for account hierarchy (BSON::ObjectId format)", + "example": "507f1f77bcf86cd799439016", + "type": "string" + }, + "phone": { + "description": "Company phone number", + "example": "+1-555-0135", + "type": "string" + }, + "phone_status_cd": { + "description": "Phone validation status", + "type": "string" + }, + "raw_address": { + "description": "Company address", + "example": "123 Main St, San Francisco, CA 94105", + "type": "string" + }, + "salesforce_id": { + "description": "Salesforce account ID for CRM integration", + "example": "001pJNj9pix2idKsfj", + "type": "string" + }, + "twitter_url": { + "description": "Twitter profile URL", + "example": "https://twitter.com/acme", + "type": "string" + }, + "typed_custom_fields": { + "additionalProperties": { + "type": "string" + }, + "description": "Custom field values as key-value pairs where key is the field_id and value is the field_value", + "example": { + "507f1f77bcf86cd799439020": "High Value", + "507f1f77bcf86cd799439021": "Q4 2025" + }, + "type": "object" + } + }, + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "append_label_names": { + "description": "Array of label names to add to ALL accounts in this request", + "example": [ + "Enterprise", + "High Priority" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "run_dedupe": { + "default": false, + "description": "Enable aggressive deduplication by domain, organization_id, and name. When false (default), only matches by CRM IDs. When true, also matches by domain, organization_id, and name. Existing accounts are returned without modification in both modes", + "example": true, + "type": "boolean" + } + }, + "required": [ + "accounts" + ], + "type": "object" +} - removed
Input schema / properties / run_dedupeRemoved value: -{ - "description": "Enable deduplication. Default false.", - "type": "boolean" -} - changed
Input schema / requiredPrevious value: -[ - "accounts" -]New value: +[ + "body" +]
- Changed
post_apollo_accounts_bulk_update6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / account_attributesRemoved value: -{ - "items": { - "properties": { - "account_stage_id": { - "description": "Account stage ID", - "type": "string" - }, - "name": { - "description": "Account name", - "type": "string" - }, - "owner_id": { - "description": "Owner ID", - "type": "string" - } - }, - "type": "object" - }, - "type": "array" -} - removed
Input schema / properties / account_idsRemoved value: -{ - "description": "IDs of accounts to update", - "type": "string" -} - removed
Input schema / properties / asyncRemoved value: -{ - "description": "Run asynchronously. Default false.", - "type": "boolean" -} - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "account_attributes": { + "description": "Array of account objects with individual updates. Use this for applying different updates to each account.", + "items": { + "properties": { + "account_stage_id": { + "description": "The Apollo account stage ID", + "example": "6095a710bd01d100a506d4b7", + "type": "string" + }, + "id": { + "description": "The account ID to update", + "example": "66e9abf95ac32901b20d1a0d", + "type": "string" + }, + "name": { + "description": "The account name", + "example": "Acme Corporation", + "type": "string" + }, + "owner_id": { + "description": "The Apollo user ID to assign as owner", + "example": "66302798d03b9601c7934ebf", + "type": "string" + }, + "typed_custom_fields": { + "additionalProperties": { + "type": "string" + }, + "description": "Custom field values as key-value pairs", + "example": { + "60c39ed82bd02f01154c470a": "2025-08-07" + }, + "type": "object" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + "account_ids": { + "description": "Array of account IDs to update with the same values. Use this for applying the same updates to multiple accounts.", + "example": [ + "66e9abf95ac32901b20d1a0d", + "66e9a4db056fe802d331fb8a" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "account_stage_id": { + "description": "When using account_ids, apply this account stage to all accounts", + "example": "6095a710bd01d100a506d4b7", + "type": "string" + }, + "async": { + "description": "Set to true to process updates asynchronously. Only available when using account_ids. Not supported with account_attributes.", + "example": false, + "type": "boolean" + }, + "name": { + "description": "When using account_ids, apply this name to all accounts", + "example": "Updated Account Name", + "type": "string" + }, + "owner_id": { + "description": "When using account_ids, apply this owner to all accounts", + "example": "66302798d03b9601c7934ebf", + "type": "string" + } + }, + "type": "object" +} - changed
Input schema / requiredPrevious value: -[ - "account_ids", - "account_attributes" -]New value: +[ + "body" +]
- Changed
post_apollo_accounts_search10 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / account_label_idsRemoved value: -{ - "description": "Filter by account label IDs", - "type": "string" -} - removed
Input schema / properties / account_stage_idsRemoved value: -{ - "description": "Filter by account stage IDs", - "type": "string" -} - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "account_label_ids": { + "description": "The Apollo IDs for the labels that you want to include in your search results. If you add multiple labels, Apollo will include all accounts connected to any of the labels, along with the other parameters, in the search results. Example: `['6095a710bd01d100a506d4ae']`", + "items": { + "type": "string" + }, + "type": "array" + }, + "account_stage_ids": { + "description": "The Apollo IDs for the account stages that you want to include in your search results. If you add multiple account stages, Apollo will include all accounts that match any of the stages, along with the other parameters, in the search results. Call the [list account stages endpoint](https://docs.apollo.io/reference/list-account-stages) to retrieve a list of all the account stage IDs available in your Apollo account. Example: `61b8e913e0f4d2012e3af74e`", + "items": { + "type": "string" + }, + "type": "array" + }, + "page": { + "description": "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 navigable and improve the performance of the endpoint. Example: `4`", + "format": "int32", + "type": "integer" + }, + "per_page": { + "description": "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 navigate through the different pages of data. Example: `10`", + "format": "int32", + "type": "integer" + }, + "q_organization_name": { + "description": "Add keywords to narrow the search of the accounts in your team's Apollo account. Keywords should directly match at least part of an account's name. For example, searching the keyword `marketing` might return the result `NY Marketing Unlimited`, but not `NY Market Analysts`. This parameter only searches account names, not other account fields. Examples: `apollo`; `microsoft`; `marketing`", + "type": "string" + }, + "sort_ascending": { + "default": false, + "description": "Set to `true` to sort the matching accounts in ascending order. This parameter must be used with `sort_by_field`. Otherwise, the sorting logic is not applied. Example: `true`", + "type": "boolean" + }, + "sort_by_field": { + "description": "Sort the matching accounts by 1 of the following options:\n- `account_last_activity_date`: The most recent activity date recorded first.\n- `account_created_at`: The most recently created first.\n- `account_updated_at`: The most recently updated first.", + "enum": [ + "account_last_activity_date", + "account_created_at", + "account_updated_at" + ], + "type": "string" + } + }, + "type": "object" +} - removed
Input schema / properties / pageRemoved value: -{ - "description": "Page number", - "type": "integer" -} - removed
Input schema / properties / per_pageRemoved value: -{ - "description": "Items per page", - "type": "integer" -} - removed
Input schema / properties / q_organization_nameRemoved value: -{ - "description": "Organization name query", - "type": "string" -} - removed
Input schema / properties / sort_ascendingRemoved value: -{ - "description": "Sort ascending", - "type": "boolean" -} - removed
Input schema / properties / sort_by_fieldRemoved value: -{ - "description": "Sort field (e.g. account_last_activity_date, account_created_at, account_updated_at)", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[]New value: +[ + "body" +]
- Changed
post_apollo_accounts_update_owners3 fields changed- added
Input schema / properties / account_ids / descriptionAdded value: +"Account IDs" - removed
Input schema / properties / account_ids / items / descriptionRemoved value: -"Account IDs" - changed
Input schema / requiredPrevious value: -[ - "owner_id", - "account_ids" -]New value: +[ + "account_ids", + "owner_id" +]
- Changed
post_apollo_contacts20 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / account_idRemoved value: -{ - "description": "Account ID", - "type": "string" -} - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "account_id": { + "description": "The Apollo ID for the account. Example: `63f53afe4ceeca00016bdd2f`", + "type": "string" + }, + "contact_stage_id": { + "description": "The Apollo ID for the contact stage. Example: `6095a710bd01d100a506d4ae`", + "type": "string" + }, + "corporate_phone": { + "description": "The work/office phone number. Example: `+44 7700 900852`", + "type": "string" + }, + "direct_phone": { + "description": "The primary phone number. Example: `555-555-0133`", + "type": "string" + }, + "email": { + "description": "The email address of the contact. Example: `example@email.com`", + "type": "string" + }, + "first_name": { + "description": "The first name of the contact you want to create. Example: `Tim`", + "type": "string" + }, + "home_phone": { + "description": "The home phone number. Example: `555-555-0133`", + "type": "string" + }, + "label_names": { + "description": "Lists to which the contact belongs.", + "items": { + "type": "string" + }, + "type": "array" + }, + "last_name": { + "description": "The last name of the contact you want to create. Example: `Zheng`", + "type": "string" + }, + "mobile_phone": { + "description": "The mobile phone number. Example: `555-555-0133`", + "type": "string" + }, + "organization_name": { + "description": "The name of the contact's employer (company). Example: `apollo`", + "type": "string" + }, + "other_phone": { + "description": "Alternative phone number. Example: `555-555-0133`", + "type": "string" + }, + "present_raw_address": { + "description": "The personal location for the contact. Example: `Atlanta, United States`", + "type": "string" + }, + "run_dedupe": { + "default": false, + "description": "Set to `true` to match against your existing contacts instead of always creating a new one. The default value is `false`. <br><br>When a match is found, Apollo **updates that existing contact in place** with the values you sent and returns it — the `id` in the response belongs to the pre-existing contact, not a new record. Fields you send overwrite the stored values, fields you omit are left untouched, and sending an empty value clears the field. <br><br>Matching is checked in order: `id`, CRM identifiers, `person_id`, `email` (against the contact's primary and additional emails), then name plus company. Because of the last rule, a contact can be matched and updated even when the email differs. <br><br>When deduplication is enabled, performance may be slightly impacted due to the additional matching checks. See the endpoint description for full details.", + "type": "boolean" + }, + "title": { + "description": "The current job title that the contact holds. Example: `senior research analyst`", + "type": "string" + }, + "typed_custom_fields": { + "additionalProperties": { + "type": "string" + }, + "description": "Add information to <a href=\"https://knowledge.apollo.io/hc/en-us/articles/4412498825869-Create-Custom-Contact-Fields\" target=\"_blank\">custom fields</a> in Apollo. <br><br><b>Your custom fields are unique to your team's Apollo account. This means that the examples in this documentation may not work for your testing purposes.</b> <br><br>To utilize this parameter successfully, call the <a href=\"https://docs.apollo.io/reference/get-a-list-of-all-custom-fields\">get a list of all custom fields</a> endpoint and identify the `id` value for the custom field, as well as the appropriate data type. For example, if a custom field accepts picklist entries, you need to pass the accompanying `id` value for the picklist entry that you want to use as the input value. <br><br><b>Example</b>: When the <a href=\"https://docs.apollo.io/reference/get-a-list-of-all-custom-fields\">get a list of all custom fields</a> endpoint returns an `id` of field: \n * `\"60c39ed82bd02f01154c470a\"` (datetime) \n \n\n then the value passed should be: \n\n `{\"60c39ed82bd02f01154c470a\": \"2025-08-07\"}`", + "example": { + "60c39ed82bd02f01154c470a": "2025-08-07" + }, + "type": "object" + }, + "website_url": { + "description": "The corporate website URL. Example: `https://www.apollo.io/`", + "type": "string" + } + }, + "type": "object" +} - removed
Input schema / properties / contact_stage_idRemoved value: -{ - "description": "Contact stage ID", - "type": "string" -} - removed
Input schema / properties / corporate_phoneRemoved value: -{ - "description": "Corporate phone", - "type": "string" -} - removed
Input schema / properties / direct_phoneRemoved value: -{ - "description": "Direct phone", - "type": "string" -} - removed
Input schema / properties / emailRemoved value: -{ - "description": "Email", - "type": "string" -} - removed
Input schema / properties / first_nameRemoved value: -{ - "description": "First name", - "type": "string" -} - removed
Input schema / properties / home_phoneRemoved value: -{ - "description": "Home phone", - "type": "string" -} - removed
Input schema / properties / label_namesRemoved value: -{ - "description": "Labels to set on the contact", - "type": "string" -} - removed
Input schema / properties / last_nameRemoved value: -{ - "description": "Last name", - "type": "string" -} - removed
Input schema / properties / mobile_phoneRemoved value: -{ - "description": "Mobile phone", - "type": "string" -} - removed
Input schema / properties / organization_nameRemoved value: -{ - "description": "Organization name", - "type": "string" -} - removed
Input schema / properties / other_phoneRemoved value: -{ - "description": "Other phone", - "type": "string" -} - removed
Input schema / properties / present_raw_addressRemoved value: -{ - "description": "Raw address", - "type": "string" -} - removed
Input schema / properties / run_dedupeRemoved value: -{ - "description": "Enable deduplication. Default false.", - "type": "boolean" -} - removed
Input schema / properties / titleRemoved value: -{ - "description": "Title", - "type": "string" -} - removed
Input schema / properties / typed_custom_fieldsRemoved value: -{ - "description": "Typed custom fields object", - "type": "object" -} - removed
Input schema / properties / website_urlRemoved value: -{ - "description": "Website URL", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[]New value: +[ + "body" +]
- Changed
post_apollo_contacts_bulk_create6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / append_label_namesRemoved value: -{ - "description": "Label names to append to each created contact", - "type": "string" -} - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "append_label_names": { + "description": "Array of label names to add to ALL contacts in this request", + "example": [ + "Hot Lead", + "Q1 2024" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "contacts": { + "description": "Array of contact objects to create (maximum 100 contacts per request)", + "items": { + "properties": { + "account_id": { + "description": "Associated account ID", + "example": "507f1f77bcf86cd799439011", + "type": "string" + }, + "contact_emails": { + "description": "Array of email objects with position", + "items": { + "properties": { + "email": { + "example": "john.doe@example.com", + "type": "string" + }, + "position": { + "example": 0, + "type": "integer" + } + }, + "type": "object" + }, + "type": "array" + }, + "contact_stage_id": { + "description": "Contact stage ID", + "example": "507f1f77bcf86cd799439014", + "type": "string" + }, + "email": { + "description": "Contact's email address", + "example": "john.doe@example.com", + "type": "string" + }, + "facebook_url": { + "description": "Facebook profile URL", + "example": "https://www.facebook.com/johndoe", + "type": "string" + }, + "first_name": { + "description": "Contact's first name", + "example": "John", + "type": "string" + }, + "hubspot_id": { + "description": "HubSpot ID for matching and deduplication", + "example": "12345678", + "type": "string" + }, + "last_name": { + "description": "Contact's last name", + "example": "Doe", + "type": "string" + }, + "linkedin_url": { + "description": "LinkedIn profile URL", + "example": "https://www.linkedin.com/in/john-doe-3f9a7c21", + "type": "string" + }, + "organization_id": { + "description": "Associated organization ID", + "example": "507f1f77bcf86cd799439012", + "type": "string" + }, + "organization_name": { + "description": "Company/organization name", + "example": "Acme Corporation", + "type": "string" + }, + "outreach_id": { + "description": "Outreach.io ID", + "example": "98765", + "type": "string" + }, + "phone": { + "description": "Phone number", + "example": "+1-555-0135", + "type": "string" + }, + "phone_numbers": { + "description": "Array of phone number objects", + "items": { + "properties": { + "position": { + "example": 0, + "type": "integer" + }, + "raw_number": { + "example": "+1-555-0135", + "type": "string" + } + }, + "type": "object" + }, + "type": "array" + }, + "phone_status_cd": { + "description": "Phone validation status", + "type": "string" + }, + "photo_url": { + "description": "Profile photo URL", + "example": "https://example.com/photo.jpg", + "type": "string" + }, + "present_raw_address": { + "description": "Physical address", + "example": "San Francisco, CA", + "type": "string" + }, + "primary_title": { + "description": "Primary job title (takes precedence over title)", + "example": "VP of Sales", + "type": "string" + }, + "salesforce_account_id": { + "description": "Salesforce Account ID", + "example": "001pJNj9pix2idKsfj", + "type": "string" + }, + "salesforce_contact_id": { + "description": "Salesforce Contact ID for matching", + "example": "003xx000004TmiQAAS", + "type": "string" + }, + "salesforce_id": { + "description": "Salesforce ID for matching and deduplication", + "example": "003xx000004TmiQAAS", + "type": "string" + }, + "salesforce_lead_id": { + "description": "Salesforce Lead ID", + "example": "00Qxx000001abcDEFG", + "type": "string" + }, + "salesloft_id": { + "description": "SalesLoft ID", + "example": "54321", + "type": "string" + }, + "title": { + "description": "Contact's job title", + "example": "Senior Manager", + "type": "string" + }, + "twitter_url": { + "description": "Twitter profile URL", + "example": "https://twitter.com/johndoe", + "type": "string" + }, + "typed_custom_fields": { + "additionalProperties": { + "type": "string" + }, + "description": "Custom field values as key-value pairs where key is the field_id and value is the field_value", + "example": { + "60c39ed82bd02f01154c470a": "2025-08-07" + }, + "type": "object" + } + }, + "type": "object" + }, + "maxItems": 100, + "type": "array" + }, + "owner_id": { + "description": "Owner user ID applied to all contacts in this batch. Defaults to current user if omitted. Returns 422 if the ID does not belong to the current team.", + "example": "507f1f77bcf86cd799439013", + "type": "string" + }, + "run_dedupe": { + "default": false, + "description": "Enable full deduplication across all sources. When false (default), creates duplicates for non-email_import sources and merges with email_import placeholders only. When true, returns existing contacts in `existing_contacts` without modifying them (except email_import placeholders, which are still merged). <br><br>Matching is checked in order: `id`, CRM identifiers, `person_id`, `email` (against the contact's primary and additional emails), then name plus company (matched on email domain, `organization_id`, or `organization_name`). <br><br>Unlike <a href=\"https://docs.apollo.io/reference/create-a-contact\">create a contact</a>, this endpoint never overwrites a matched contact's fields.", + "example": true, + "type": "boolean" + } + }, + "required": [ + "contacts" + ], + "type": "object" +} - removed
Input schema / properties / contactsRemoved value: -{ - "description": "Array of contacts to create", - "type": "string" -} - removed
Input schema / properties / run_dedupeRemoved value: -{ - "description": "Enable deduplication. Default false.", - "type": "boolean" -} - changed
Input schema / requiredPrevious value: -[ - "contacts" -]New value: +[ + "body" +]
- Changed
post_apollo_contacts_bulk_update3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / bodyAdded value: +{ + "anyOf": [ + { + "required": [ + "contact_ids" + ] + }, + { + "required": [ + "contact_attributes" + ] + } + ], + "properties": { + "account_id": { + "description": "When using contact_ids, apply this account ID to all contacts", + "example": "63f53afe4ceeca00016bdd2f", + "type": "string" + }, + "async": { + "description": "Force asynchronous processing. Automatically enabled for >100 contacts.", + "example": false, + "type": "boolean" + }, + "contact_attributes": { + "description": "Array of contact objects with individual updates. Use this for applying different updates to each contact.", + "items": { + "properties": { + "account_id": { + "description": "The Apollo account ID to associate with the contact", + "example": "63f53afe4ceeca00016bdd2f", + "type": "string" + }, + "email": { + "description": "The contact's email address", + "example": "john.doe@example.com", + "type": "string" + }, + "first_name": { + "description": "The contact's first name", + "example": "John", + "type": "string" + }, + "id": { + "description": "The contact ID to update", + "example": "66e34b81740c50074e3d1bd4", + "type": "string" + }, + "last_name": { + "description": "The contact's last name", + "example": "Doe", + "type": "string" + }, + "linkedin_url": { + "description": "The contact's LinkedIn profile URL", + "example": "https://www.linkedin.com/in/john-doe-3f9a7c21", + "type": "string" + }, + "organization_name": { + "description": "The contact's organization name", + "example": "Example Corp", + "type": "string" + }, + "owner_id": { + "description": "The Apollo user ID to assign as owner", + "example": "66302798d03b9601c7934ebf", + "type": "string" + }, + "present_raw_address": { + "description": "The contact's location", + "example": "San Francisco, CA", + "type": "string" + }, + "title": { + "description": "The contact's job title", + "example": "Senior Manager", + "type": "string" + }, + "typed_custom_fields": { + "additionalProperties": { + "type": "string" + }, + "description": "Custom field values as key-value pairs", + "example": { + "60c39ed82bd02f01154c470a": "2025-08-07" + }, + "type": "object" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + "type": "array" + }, + "contact_ids": { + "description": "Array of contact IDs to update with the same values. Use this for applying the same updates to multiple contacts.", + "example": [ + "66e34b81740c50074e3d1bd4", + "66e370fbf5f5c003f0e1d0cf" + ], + "items": { + "type": "string" + }, + "type": "array" + }, + "email": { + "description": "When using contact_ids, apply this email to all contacts", + "example": "updated@example.com", + "type": "string" + }, + "first_name": { + "description": "When using contact_ids, apply this first name to all contacts", + "example": "Updated", + "type": "string" + }, + "last_name": { + "description": "When using contact_ids, apply this last name to all contacts", + "example": "Name", + "type": "string" + }, + "linkedin_url": { + "description": "When using contact_ids, apply this LinkedIn URL to all contacts", + "example": "https://www.linkedin.com/in/updated", + "type": "string" + }, + "organization_name": { + "description": "When using contact_ids, apply this organization name to all contacts", + "example": "Updated Corp", + "type": "string" + }, + "owner_id": { + "description": "When using contact_ids, apply this owner to all contacts", + "example": "66302798d03b9601c7934ebf", + "type": "string" + }, + "present_raw_address": { + "description": "When using contact_ids, apply this address to all contacts", + "example": "New York, NY", + "type": "string" + }, + "title": { + "description": "When using contact_ids, apply this title to all contacts", + "example": "Updated Title", + "type": "string" + }, + "typed_custom_fields": { + "additionalProperties": { + "type": "string" + }, + "description": "When using contact_ids, apply these custom fields to all contacts", + "example": { + "60c39ed82bd02f01154c470a": "2025-08-07" + }, + "type": "object" + }, + "visible_entity_ids": { + "description": "Specific contact IDs to return in the response (for performance)", + "example": [ + "66e34b81740c50074e3d1bd4" + ], + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" +} - changed
Input schema / requiredPrevious value: -[]New value: +[ + "body" +]
- Changed
post_apollo_contacts_search10 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "contact_label_ids": { + "description": "The Apollo IDs for the labels that you want to include in your search results. If you add multiple labels, Apollo will include all contacts connected to any of the labels, along with the other parameters, in the search results. Example: `['6095a710bd01d100a506d4ae']`", + "items": { + "type": "string" + }, + "type": "array" + }, + "contact_stage_ids": { + "description": "The Apollo IDs for the contact stages that you want to include in your search results. If you add multiple contact stages, Apollo will include all contacts that match any of the stages, along with the other parameters, in the search results. Call the [list contact stages endpoint](https://docs.apollo.io/reference/list-contact-stages) to retrieve a list of all the contact stage IDs available in your Apollo account. Example: `6095a710bd01d100a506d4ae`", + "items": { + "type": "string" + }, + "type": "array" + }, + "page": { + "description": "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 navigable and improve the performance of the endpoint. Example: `4`", + "format": "int32", + "type": "integer" + }, + "per_page": { + "description": "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`", + "format": "int32", + "type": "integer" + }, + "q_keywords": { + "description": "Add a keyword search string to narrow the contacts in your team's Apollo account. Keywords should be related to the same search concept and can include names, job titles, employers or company names, or email addresses. Examples: `matthew helm`; `CEO`; `Sumware Software`", + "type": "string" + }, + "sort_ascending": { + "default": false, + "description": "Set to `true` to sort the matching contacts in ascending order. This parameter must be used with `sort_by_field`. Otherwise, the sorting logic is not applied. Example: `true`", + "type": "boolean" + }, + "sort_by_field": { + "description": "Sort the matching contacts by 1 of the following options: \n- `contact_last_activity_date`: The most recent activity date recorded first.\n- `contact_email_last_opened_at`: The most recent email opened date first.\n- `contact_email_last_clicked_at`: The most recent email clicked first.\n- `contact_created_at`: The most recently created first.\n- `contact_updated_at`: The most recently updated first.", + "type": "string" + } + }, + "type": "object" +} - removed
Input schema / properties / contact_label_idsRemoved value: -{ - "description": "Filter by contact label IDs", - "type": "string" -} - removed
Input schema / properties / contact_stage_idsRemoved value: -{ - "description": "Filter by contact stage IDs", - "type": "string" -} - removed
Input schema / properties / pageRemoved value: -{ - "description": "Page number", - "type": "integer" -} - removed
Input schema / properties / per_pageRemoved value: -{ - "description": "Items per page", - "type": "integer" -} - removed
Input schema / properties / q_keywordsRemoved value: -{ - "description": "Keyword query", - "type": "string" -} - removed
Input schema / properties / sort_ascendingRemoved value: -{ - "description": "Sort ascending. Default false.", - "type": "boolean" -} - removed
Input schema / properties / sort_by_fieldRemoved value: -{ - "description": "Sort field (e.g. contact_last_activity_date, contact_created_at, contact_updated_at)", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[]New value: +[ + "body" +]
- Changed
post_apollo_contacts_update_owners3 fields changed- added
Input schema / properties / contact_ids / descriptionAdded value: +"Contact IDs" - removed
Input schema / properties / contact_ids / items / descriptionRemoved value: -"Contact IDs" - changed
Input schema / requiredPrevious value: -[ - "owner_id", - "contact_ids" -]New value: +[ + "contact_ids", + "owner_id" +]
- Changed
post_apollo_contacts_update_stages3 fields changed- added
Input schema / properties / contact_ids / descriptionAdded value: +"Contact IDs" - removed
Input schema / properties / contact_ids / items / descriptionRemoved value: -"Contact IDs" - changed
Input schema / requiredPrevious value: -[ - "contact_stage_id", - "contact_ids" -]New value: +[ + "contact_ids", + "contact_stage_id" +]
- Changed
post_apollo_emailer_campaigns_remove_or_stop_contact_ids1 field changed- changed
Input schema / requiredPrevious value: -[ - "mode", - "contact_ids", - "emailer_campaign_ids" -]New value: +[ + "contact_ids", + "emailer_campaign_ids", + "mode" +]
- Changed
post_apollo_fields7 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "label": { + "description": "Name of the custom field you want to create. Example: `Test Name`", + "type": "string" + }, + "meta": { + "properties": { + "max_length": { + "type": "number" + } + }, + "type": "object" + }, + "modality": { + "description": "The modality of the custom field you want to create. Example: `contact`", + "enum": [ + "contact", + "account", + "opportunity" + ], + "type": "string" + }, + "type": { + "description": "What kind of custom field you want to create. Example: `textarea`", + "enum": [ + "string", + "textarea", + "number", + "date", + "datetime", + "boolean" + ], + "type": "string" + } + }, + "type": "object" +} - removed
Input schema / properties / labelRemoved value: -{ - "description": "Field label.", - "type": "string" -} - removed
Input schema / properties / metaRemoved value: -{ - "description": "Additional field config.", - "type": "object" -} - removed
Input schema / properties / modalityRemoved value: -{ - "description": "Entity modality (e.g., contact).", - "type": "string" -} - removed
Input schema / properties / typeRemoved value: -{ - "description": "Field type (e.g., textarea).", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[]New value: +[ + "body" +]
- 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_opportunities10 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / account_idRemoved value: -{ - "description": "Account ID", - "type": "string" -} - removed
Input schema / properties / amountRemoved value: -{ - "description": "Deal amount", - "type": "number" -} - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "account_id": { + "description": "The ID for the account within your Apollo instance. This is the company that you are targeting as part of the deal being created. <br><br>Each company in the Apollo database is assigned a unique ID. To find IDs, call the <a href=\"https://docs.apollo.io/reference/organization-search\" target=\"_blank\">organization search endpoint</a> and identify the values for `organization_id`. <br><br>Example: `5e66b6381e05b4008c8331b8`", + "type": "string" + }, + "amount": { + "description": "The monetary value of the deal being created. <br><br>Do not enter commas or currency symbols for the value. The currency is automatically populated by the settings within your Apollo account. Commas are not accepted and result in the deal amount being left blank. <br><br>Example: `55123478` (results in a deal value of `$55,123,478` if the default currency is USD)", + "type": "string" + }, + "closed_date": { + "description": "The estimated close date for the deal. This can be a future or past date. <br><br>The date should be formatted as `YYYY-MM-DD`. <br><br>Example: `2025-10-30`", + "format": "date", + "type": "string" + }, + "name": { + "description": "Name the deal you are creating. This should be a human-readable name. <br><br>Example: `Massive Q3 Deal`", + "type": "string" + }, + "opportunity_stage_id": { + "description": "The ID for the deal stage within your team's Apollo account. <br><br>Each deal stage is assigned a unique ID. To find deal stage IDs, call the <a href=\"https://docs.apollo.io/reference/list-deal-stages\" target=\"_blank\">list deal stages endpoint</a> and identify the value for `id` for each stage. <br><br>Example: `6095a710bd01d100a506d4bd`", + "type": "string" + }, + "owner_id": { + "description": "The ID for the deal owner within your team's Apollo account. <br><br>Use the <a href=\"https://docs.apollo.io/reference/get-a-list-of-users\" target=\"_blank\">get a list of users endpoint</a> to retrieve IDs for all of the users within your Apollo account. <br><br>Example: `66302798d03b9601c7934ebf`", + "type": "string" + }, + "typed_custom_fields": { + "additionalProperties": { + "type": "string" + }, + "description": "Add information to <a href=\"https://knowledge.apollo.io/hc/en-us/articles/4415062486669-Create-a-Deal\" target=\"_blank\">custom fields</a> in Apollo. <br><br><b>Your custom fields are unique to your team's Apollo account. This means that the examples in this documentation may not work for your testing purposes.</b> <br><br>To utilize this parameter successfully, call the <a href=\"https://docs.apollo.io/reference/get-a-list-of-all-custom-fields\">get a list of all custom fields</a> endpoint and identify the `id` value for the custom field, as well as the appropriate data type. For example, if a custom field accepts picklist entries, you need to pass the accompanying `id` value for the picklist entry that you want to use as the input value. <br><br><b>Example</b>: When the <a href=\"https://docs.apollo.io/reference/get-a-list-of-all-custom-fields\">get a list of all custom fields</a> endpoint returns an `id` of field: \n * `\"60c39ed82bd02f01154c470a\"` (datetime) \n \n\n then the value passed should be: \n\n `{\"60c39ed82bd02f01154c470a\": \"2025-08-07\"}`", + "example": { + "60c39ed82bd02f01154c470a": "2025-08-07" + }, + "type": "object" + } + }, + "required": [ + "name" + ], + "type": "object" +} - removed
Input schema / properties / closed_dateRemoved value: -{ - "description": "Closed date (date string)", - "type": "string" -} - removed
Input schema / properties / nameRemoved value: -{ - "description": "Deal name", - "type": "string" -} - removed
Input schema / properties / opportunity_stage_idRemoved value: -{ - "description": "Deal stage ID", - "type": "string" -} - removed
Input schema / properties / owner_idRemoved value: -{ - "description": "Owner ID", - "type": "string" -} - removed
Input schema / properties / typed_custom_fieldsRemoved value: -{ - "description": "Typed custom fields object", - "type": "object" -} - changed
Input schema / requiredPrevious value: -[ - "name" -]New value: +[ + "body" +]
- 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_apollo_reports_sync_report9 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "date_ranges": { + "description": "The time window for the query. Provide one object with a <code>modality</code> preset. For a custom date range, set <code>modality</code> to <code>custom_range</code> and add a <code>smart_datetime_range</code> key in <code>filters</code> with <code>{\"min\": \"YYYY-MM-DD\", \"max\": \"YYYY-MM-DD\"}</code>.", + "items": { + "properties": { + "modality": { + "description": "Date range preset. Valid values: <code>today</code>, <code>yesterday</code>, <code>current_week</code>, <code>current_month</code>, <code>current_quarter</code>, <code>current_year</code>, <code>last_7_days</code>, <code>last_2_weeks</code>, <code>last_30_days</code>, <code>last_3_months</code>, <code>last_6_months</code>, <code>last_12_months</code>, <code>last_4_quarters</code>, <code>last_2_years</code>, <code>previous_week</code>, <code>previous_month</code>, <code>previous_quarter</code>, <code>previous_year</code>, <code>all_time</code>, <code>custom_range</code> (requires <code>smart_datetime_range</code> in <code>filters</code>).", + "type": "string" + } + }, + "required": [ + "modality" + ], + "type": "object" + }, + "maxItems": 1, + "type": "array" + }, + "filters": { + "additionalProperties": true, + "description": "Key/value filter map to narrow the result set. Pass an empty object <code>{}</code> for no filters. Common filter keys are documented in the <code>properties</code> below; additional dimension-based filters may also be passed using the same key names as <code>group_by[].name</code> values. Refer to the <a href=\"https://docs.apollo.io/reference/sync-report-metrics\" target=\"_blank\">Metrics and Dimensions Reference</a> for a complete list.", + "properties": { + "account_stage_ids": { + "description": "Filter to specific account stage IDs.", + "items": { + "type": "string" + }, + "type": "array" + }, + "contact_stage_ids": { + "description": "Filter to specific contact stage IDs.", + "items": { + "type": "string" + }, + "type": "array" + }, + "email_account_ids": { + "description": "Filter to specific sender mailbox IDs.", + "items": { + "type": "string" + }, + "type": "array" + }, + "emailer_campaign_ids": { + "description": "Filter to specific sequence IDs.", + "items": { + "type": "string" + }, + "type": "array" + }, + "opportunity_stage_ids": { + "description": "Filter to specific opportunity stage IDs.", + "items": { + "type": "string" + }, + "type": "array" + }, + "smart_datetime_range": { + "description": "Required when <code>date_ranges[].modality</code> is <code>custom_range</code>. Specifies the exact date window as ISO 8601 date strings.", + "properties": { + "max": { + "description": "End date (inclusive). Format: <code>YYYY-MM-DD</code>. <br><br>Example: <code>2024-03-31</code>", + "type": "string" + }, + "min": { + "description": "Start date (inclusive). Format: <code>YYYY-MM-DD</code>. <br><br>Example: <code>2024-01-01</code>", + "type": "string" + } + }, + "required": [ + "min", + "max" + ], + "type": "object" + }, + "smart_subteam_id": { + "description": "Filter to specific sub-team IDs.", + "items": { + "type": "string" + }, + "type": "array" + }, + "smart_user_id": { + "description": "Filter to specific team member IDs. Use <code>\"current\"</code> for the authenticated user. <br><br>Example: <code>[\"current\"]</code>", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "group_by": { + "description": "The dimension to group results by (row dimension). Pass one object to break results down by that dimension. Pass an empty array <code>[]</code> for flat totals with no grouping. <br><br>Only one entry is supported. Refer to the <a href=\"https://docs.apollo.io/reference/sync-report-metrics\" target=\"_blank\">Metrics and Dimensions Reference</a> for valid dimension names.", + "items": { + "properties": { + "limit": { + "description": "Maximum number of dimension values to return.", + "type": "integer" + }, + "name": { + "description": "The dimension name. <br><br>Example: <code>smart_user_id</code>", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "maxItems": 1, + "type": "array" + }, + "group_by_totals_selected": { + "description": "When <code>true</code>, the response includes an aggregated totals row in addition to the per-dimension-value rows.", + "type": "boolean" + }, + "metrics": { + "description": "The metrics to query. Each object specifies which metric to measure and which date and user columns the engine should use for that metric. The <code>smart_datetime_reference</code> and <code>smart_user_id_reference</code> values are metric-specific — using the wrong values will return no data. Refer to the <a href=\"https://docs.apollo.io/reference/sync-report-metrics\" target=\"_blank\">Metrics and Dimensions Reference</a> for valid metric names and the correct reference fields for each. <br><br>Pass an empty array <code>[]</code> to return a response with no metric columns.", + "items": { + "properties": { + "display_name": { + "description": "Optional label override for this metric's column in the response.", + "type": "string" + }, + "smart_datetime_reference": { + "description": "The date column name to use for this metric time range. Valid values depend on the metric. See the smart reference field values table for supported values by metric type. Unsupported values may cause the related date or user filter not to apply. <br><br>Example: <code>activity_datetime</code>", + "type": "string" + }, + "smart_user_id_reference": { + "description": "The user column name that filters per user. Many metrics use <code>user_id</code>. See the smart reference field values table for supported values by metric family. Unsupported values may cause the related date or user filter not to apply. <br><br>Example: <code>user_id</code>", + "type": "string" + }, + "value": { + "description": "The metric identifier. For built-in metrics, use the metric name (e.g. <code>num_emails_sent</code>). For team-defined custom metrics, use the format <code>custom_metric_{id}</code> where <code>{id}</code> is the custom metric's id.", + "type": "string" + } + }, + "required": [ + "value", + "smart_datetime_reference", + "smart_user_id_reference" + ], + "type": "object" + }, + "type": "array" + }, + "min_ratio_denominator": { + "default": 0, + "description": "Minimum denominator threshold for ratio metrics. Rows where the denominator falls below this value are excluded from ratio calculations.", + "type": "integer" + }, + "pivot_group_by": { + "description": "The dimension to pivot on (column dimension). Used together with <code>group_by</code> to produce a two-dimensional cross-tab table: <code>group_by</code> defines the row dimension and <code>pivot_group_by</code> defines the column dimension. Pass an empty array <code>[]</code> for non-pivot queries. <br><br>Only one entry is supported.", + "items": { + "properties": { + "limit": { + "description": "Maximum number of pivot column values to return.", + "type": "integer" + }, + "name": { + "description": "The dimension name to pivot on. <br><br>Example: <code>emailer_campaign_id</code>", + "type": "string" + } + }, + "required": [ + "name" + ], + "type": "object" + }, + "maxItems": 1, + "type": "array" + }, + "pivot_group_by_totals_selected": { + "description": "When <code>true</code>, the pivot response includes an aggregated totals column in addition to the per-pivot-value columns.", + "type": "boolean" + }, + "skip_group_by_values": { + "description": "Exclude specific dimension values from the result rows. Values must match the raw <code>key</code> field returned in bucket responses for the active <code>group_by</code> dimension (e.g. a contact stage ID string, a user ID string, or a date string for datetime dimensions). Maximum 500 entries.", + "items": { + "type": "string" + }, + "maxItems": 500, + "type": "array" + }, + "sorts": { + "description": "Sort order for the result rows. Only the first entry is applied. Pass an empty array <code>[]</code> to use the default order. <br><br>Sorting is supported by metric value — provide the <code>metric</code> field with the same structure as an entry in the <code>metrics</code> array. The <code>asc</code> field controls direction (<code>true</code> = ascending, <code>false</code> = descending). <br><br>Sorting by dimension value (e.g. alphabetically by user name) is not supported via the API.", + "items": { + "properties": { + "asc": { + "description": "Sort ascending (<code>true</code>) or descending (<code>false</code>).", + "type": "boolean" + }, + "metric": { + "description": "Sort by a metric column. Provide the same structure as a metric entry in the <code>metrics</code> array.", + "properties": { + "smart_datetime_reference": { + "type": "string" + }, + "smart_user_id_reference": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + } + }, + "required": [ + "asc" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "metrics", + "group_by", + "sorts", + "filters", + "group_by_totals_selected", + "pivot_group_by_totals_selected", + "date_ranges" + ], + "type": "object" +} - removed
Input schema / properties / date_rangeRemoved value: -{ - "description": "Date range filter (when supported).", - "type": "object" -} - removed
Input schema / properties / filtersRemoved value: -{ - "description": "Filter specs.", - "type": "string" -} - removed
Input schema / properties / group_byRemoved value: -{ - "description": "Dimensions to group by.", - "items": { - "type": "string" - }, - "type": "array" -} - removed
Input schema / properties / metricsRemoved value: -{ - "description": "Metrics to compute.", - "items": { - "type": "string" - }, - "type": "array" -} - removed
Input schema / properties / pivot_group_byRemoved value: -{ - "description": "Optional pivot dimensions.", - "items": { - "type": "string" - }, - "type": "array" -} - removed
Input schema / properties / sortsRemoved value: -{ - "description": "Sort specs.", - "items": { - "type": "string" - }, - "type": "array" -} - changed
Input schema / requiredPrevious value: -[]New value: +[ + "body" +]
- Changed
post_apollo_tasks10 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "contact_id": { + "description": "The Apollo ID for the contact that you want to be on the receiving end of the action. <br><br>To find contact IDs, call the <a href=\"https://docs.apollo.io/reference/search-for-contacts\" target=\"_blank\">search for contacts endpoint</a> and identify the `id` value for the contact. <br><br>Example: `66e34b81740c50074e3d1bd4`", + "type": "string" + }, + "due_at": { + "description": "The full date and time when the task will be due. <br><br>Your entry should adhere to the <a href=\"https://www.rfc-editor.org/rfc/rfc3339#section-5.6\" target=\"_blank\">ISO 8601 date-time format</a>. Apollo uses Greenwich Mean Time (GMT) by default. If you do not account for time zone differences, you could add a task due date that falls on a different day than you intended. <br><br>The value you enter can either adhere to GMT, or you can adjust the time manually by specifying in hours and minutes how much you want to offset GMT.<br><br>Example: `2025-02-15T08:10:30Z`; `2025-03-25T10:15:30+05:00`", + "format": "date-time", + "type": "string" + }, + "note": { + "description": "Add a description for the task. This should be a human-readable message. <br><br>This parameter is not required, but it is recommended as it provides the task owner with more context on the action they need to take. <br><br>Example: `This contact expressed interest in the Sequences feature specifically. Be prepared to discuss.`", + "type": "string" + }, + "priority": { + "default": "medium", + "description": "Assign a priority to the task you are creating: <ul> <li> `high` </li> <li> `medium` </li> <li> `low` </li> </ul>", + "type": "string" + }, + "status": { + "description": "The status of the task being created. For future-facing tasks, you should use the `scheduled` status. <br><br>For tasks that are already completed, you can use `completed` or `skipped`. <br><br>Example: `scheduled`", + "type": "string" + }, + "title": { + "description": "A title for the task. If omitted, Apollo will display an auto-generated title based on the task type and contact name. <br><br>Example: `Follow up on demo request`", + "type": "string" + }, + "type": { + "description": "Set the task to be 1 of the following task types. This enables the task owner to know the type of action they need to take. <ul> <li> `call`: Call the contact. </li> <li> `outreach_manual_email`: Email the contact. </li> <li> `linkedin_step_connect`: Send a LinkedIn invitation to connect with the contact. </li> <li> `linkedin_step_message`: Send a direct message to the contact's LinkedIn profile. </li> <li> `linkedin_step_view_profile`: View the contact's LinkedIn profile. </li> <li> `linkedin_step_interact_post`: Interact with the contact's recent LinkedIn posts. </li> <li> `action_item`: Take generic action for the contact. If you use this task type, Apollo recommends using the `note` parameter too. </li> </ul>", + "type": "string" + }, + "user_id": { + "description": "The ID for the task owner within your team's Apollo account. This is the user that will take action on the contacts. <br><br>Use the <a href=\"https://docs.apollo.io/reference/get-a-list-of-users\" target=\"_blank\">get a list of users endpoint</a> to retrieve IDs for all of the users within your Apollo account. <br><br>Example: `66302798d03b9601c7934ebf`", + "type": "string" + } + }, + "required": [ + "user_id", + "contact_id", + "type", + "status", + "due_at" + ], + "type": "object" +} - removed
Input schema / properties / contact_idRemoved value: -{ - "description": "Contact ID.", - "type": "string" -} - removed
Input schema / properties / due_atRemoved value: -{ - "description": "ISO 8601 due datetime.", - "type": "string" -} - removed
Input schema / properties / priorityRemoved value: -{ - "description": "Task priority (default: medium).", - "type": "string" -} - removed
Input schema / properties / statusRemoved value: -{ - "description": "Task status.", - "type": "string" -} - removed
Input schema / properties / titleRemoved value: -{ - "description": "Optional title.", - "type": "string" -} - removed
Input schema / properties / typeRemoved value: -{ - "description": "Task type.", - "type": "string" -} - removed
Input schema / properties / user_idRemoved value: -{ - "description": "Task owner user ID.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "user_id", - "contact_id", - "type", - "status", - "due_at" -]New value: +[ + "body" +]
- Changed
post_apollo_tasks_bulk_create10 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / bodyAdded value: +{ + "properties": { + "contact_ids": { + "description": "The Apollo IDs for the contacts that you want to be on the receiving end of the action. <br><br>If you add multiple contact IDs, individual tasks will be created for each of the contacts using the same task type, due date, and other details. <br><br>To find contact IDs, call the <a href=\"https://docs.apollo.io/reference/search-for-contacts\" target=\"_blank\">search for contacts endpoint</a> and identify the `id` value for the contact. <br><br>Example: `66e34b81740c50074e3d1bd4`", + "items": { + "type": "string" + }, + "type": "array" + }, + "due_at": { + "description": "The full date and time when the task will be due. <br><br>Your entry should adhere to the <a href=\"https://www.rfc-editor.org/rfc/rfc3339#section-5.6\" target=\"_blank\">ISO 8601 date-time format</a>. Apollo uses Greenwich Mean Time (GMT) by default. If you do not account for time zone differences, you could add a task due date that falls on a different day than you intended. <br><br>The value you enter can either adhere to GMT, or you can adjust the time manually by specifying in hours and minutes how much you want to offset GMT.<br><br>Example: `2025-02-15T08:10:30Z`; `2025-03-25T10:15:30+05:00`", + "format": "date-time", + "type": "string" + }, + "note": { + "description": "Add a description for the task. This should be a human-readable message. <br><br>This parameter is not required, but it is recommended as it provides the task owner with more context on the action they need to take. <br><br>Example: `This contact expressed interest in the Sequences feature specifically. Be prepared to discuss.`", + "type": "string" + }, + "priority": { + "default": "medium", + "description": "Assign a priority to the task you are creating: <ul> <li> `high` </li> <li> `medium` </li> <li> `low` </li> </ul>", + "type": "string" + }, + "status": { + "description": "The status of the task being created. For future-facing tasks, you should use the `scheduled` status. <br><br>For tasks that are already completed, you can use `completed` or `skipped`. <br><br>Example: `scheduled`", + "type": "string" + }, + "type": { + "description": "Set the task to be 1 of the following task types. This enables the task owner to know the type of action they need to take. <ul> <li> `call`: Call the contacts. </li> <li> `outreach_manual_email`: Email the contacts. </li> <li> `linkedin_step_connect`: Send a LinkedIn invitation to connect with the contacts. </li> <li> `linkedin_step_message`: Send a direct message to the contacts' LinkedIn profiles. </li> <li> `linkedin_step_view_profile`: View the contacts' LinkedIn profiles. </li> <li> `linkedin_step_interact_post`: Interact with the contacts' recent LinkedIn posts. </li> <li> `action_item`: Take generic action for the contacts. If you use this task type, Apollo recommends using the `note` parameter too. </li> </ul>", + "type": "string" + }, + "user_id": { + "description": "The ID for the task owner within your team's Apollo account. This is the user that will take action on the contacts. <br><br>Use the <a href=\"https://docs.apollo.io/reference/get-a-list-of-users\" target=\"_blank\">get a list of users endpoint</a> to retrieve IDs for all of the users within your Apollo account. <br><br>Example: `66302798d03b9601c7934ebf`", + "type": "string" + } + }, + "required": [ + "user_id", + "contact_ids", + "type", + "status", + "due_at" + ], + "type": "object" +} - removed
Input schema / properties / contact_idsRemoved value: -{ - "description": "Contact IDs.", - "items": { - "type": "string" - }, - "type": "array" -} - removed
Input schema / properties / due_atRemoved value: -{ - "description": "ISO 8601 due datetime.", - "type": "string" -} - removed
Input schema / properties / priorityRemoved value: -{ - "description": "Task priority (default: medium).", - "type": "string" -} - removed
Input schema / properties / statusRemoved value: -{ - "description": "Task status.", - "type": "string" -} - removed
Input schema / properties / titleRemoved value: -{ - "description": "Optional title.", - "type": "string" -} - removed
Input schema / properties / typeRemoved value: -{ - "description": "Task type.", - "type": "string" -} - removed
Input schema / properties / user_idRemoved value: -{ - "description": "Task owner user ID.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "user_id", - "contact_ids", - "type", - "status", - "due_at" -]New value: +[ + "body" +]
- Changed
post_waveinflu_ai_search7 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" + }, + "query": { + "description": "Natural-language description of the creators you are looking for.", + "example": "beauty creators in the US", + "type": "string" + } + }, + "required": [ + "query" + ], + "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 / queryRemoved value: -{ - "description": "Natural-language description of the creators you are looking for.", - "example": "beauty creators in the US", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "query" -]New value: +[ + "body" +]
- 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" +]
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_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_similarweb_ad_networks18 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: -"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" +]
- Added
get_similarweb_apis_v1_similarweb_keyword_analysi_490801 - Added
get_similarweb_apis_v1_similarweb_segment_analysi_6349fe - Added
get_similarweb_apis_v1_similarweb_segment_analysi_64e47c - Added
get_similarweb_apis_v1_similarweb_website_analysi_7399a9 - Added
get_similarweb_apis_v1_similarweb_website_analysi_850464 - Added
get_similarweb_apis_v1_similarweb_website_analysi_aa2e1f - Changed
get_similarweb_audience_interest18 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: -"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_audience_overlap10 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 / domains / descriptionRemoved value: -"Two to five target domains, comma-separated (e.g. cnn.com,bbc.com)." - added
Input schema / properties / domains / x-aisa-delimiterAdded value: +"," - added
Input schema / properties / domains / x-aisa-maxItemsAdded value: +5 - added
Input schema / properties / domains / x-aisa-minItemsAdded value: +2 - 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 / start_date / descriptionRemoved value: -"Start month, format YYYY-MM." - changed
Input schema / requiredPrevious value: -[ - "domains", - "start_date", - "end_date" -]New value: +[ + "domains", + "end_date", + "start_date" +]
- Changed
get_similarweb_deduplicated_audience11 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_demographics12 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 / 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" -]New value: +[ + "domain", + "end_date", + "granularity", + "start_date" +]
- 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_landing_pages18 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: -"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_marketing_channel_sources_legacy11 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_popular_pages18 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: -"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_ppc_spend11 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_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_referrals18 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: -"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_serp_players_aggregated14 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 / end_date / descriptionRemoved value: -"End month, format YYYY-MM." - removed
Input schema / properties / granularity / descriptionRemoved value: -"Time granularity. Allowed: monthly." - removed
Input schema / properties / keywordRemoved value: -{ - "description": "Target keyword.", - "type": "string" -} - added
Input schema / properties / keywordsAdded value: +{ + "type": "string", + "x-aisa-delimiter": ",", + "x-aisa-maxItems": 1, + "x-aisa-minItems": 1 +} - 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 / 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." - changed
Input schema / requiredPrevious value: -[ - "keyword", - "start_date", - "end_date", - "limit" -]New value: +[ + "end_date", + "keywords", + "limit", + "start_date" +]
- Changed
get_similarweb_serp_players_timeseries14 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 / end_date / descriptionRemoved value: -"End month, format YYYY-MM." - removed
Input schema / properties / granularity / descriptionRemoved value: -"Time granularity. Allowed: monthly." - removed
Input schema / properties / keywordRemoved value: -{ - "description": "Target keyword.", - "type": "string" -} - added
Input schema / properties / keywordsAdded value: +{ + "type": "string", + "x-aisa-delimiter": ",", + "x-aisa-maxItems": 1, + "x-aisa-minItems": 1 +} - 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 / 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." - changed
Input schema / requiredPrevious value: -[ - "keyword", - "start_date", - "end_date", - "limit" -]New value: +[ + "end_date", + "keywords", + "limit", + "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_subdomains18 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: -"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_technologies15 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_top_sites_ranking11 fields changed- removed
Input schema / properties / category / descriptionRemoved value: -"Industry category, e.g. Finance." - added
Input schema / properties / category / maxLengthAdded value: +191 - added
Input schema / properties / category / minLengthAdded value: +1 - 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 / 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 / offset / descriptionRemoved value: -"Row offset for pagination." - added
Input schema / properties / offset / maximumAdded value: +100000 - added
Input schema / properties / offset / minimumAdded value: +0
- 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
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_waveinflu_ai_search8 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", - "query" -]New value: +[ + "query" +]
- 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_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_similarweb_ad_networks18 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: +"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" +]
- Removed
get_similarweb_apis_v1_similarweb_keyword_analysi_490801 - Removed
get_similarweb_apis_v1_similarweb_segment_analysi_6349fe - Removed
get_similarweb_apis_v1_similarweb_segment_analysi_64e47c - Removed
get_similarweb_apis_v1_similarweb_website_analysi_7399a9 - Removed
get_similarweb_apis_v1_similarweb_website_analysi_850464 - Removed
get_similarweb_apis_v1_similarweb_website_analysi_aa2e1f - Changed
get_similarweb_audience_interest18 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: +"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_audience_overlap10 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 / domains / descriptionAdded value: +"Two to five target domains, comma-separated (e.g. cnn.com,bbc.com)." - removed
Input schema / properties / domains / x-aisa-delimiterRemoved value: -"," - removed
Input schema / properties / domains / x-aisa-maxItemsRemoved value: -5 - removed
Input schema / properties / domains / x-aisa-minItemsRemoved value: -2 - 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 / start_date / descriptionAdded value: +"Start month, format YYYY-MM." - changed
Input schema / requiredPrevious value: -[ - "domains", - "end_date", - "start_date" -]New value: +[ + "domains", + "start_date", + "end_date" +]
- Changed
get_similarweb_deduplicated_audience11 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_demographics12 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 / 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", - "start_date" -]New value: +[ + "domain", + "start_date", + "end_date", + "granularity" +]
- 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_landing_pages18 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: +"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_marketing_channel_sources_legacy11 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_popular_pages18 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: +"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_ppc_spend11 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_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_referrals18 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: +"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_serp_players_aggregated14 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 / end_date / descriptionAdded value: +"End month, format YYYY-MM." - added
Input schema / properties / granularity / descriptionAdded value: +"Time granularity. Allowed: monthly." - added
Input schema / properties / keywordAdded value: +{ + "description": "Target keyword.", + "type": "string" +} - removed
Input schema / properties / keywordsRemoved value: -{ - "type": "string", - "x-aisa-delimiter": ",", - "x-aisa-maxItems": 1, - "x-aisa-minItems": 1 -} - 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 / 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." - changed
Input schema / requiredPrevious value: -[ - "end_date", - "keywords", - "limit", - "start_date" -]New value: +[ + "keyword", + "start_date", + "end_date", + "limit" +]
- Changed
get_similarweb_serp_players_timeseries14 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 / end_date / descriptionAdded value: +"End month, format YYYY-MM." - added
Input schema / properties / granularity / descriptionAdded value: +"Time granularity. Allowed: monthly." - added
Input schema / properties / keywordAdded value: +{ + "description": "Target keyword.", + "type": "string" +} - removed
Input schema / properties / keywordsRemoved value: -{ - "type": "string", - "x-aisa-delimiter": ",", - "x-aisa-maxItems": 1, - "x-aisa-minItems": 1 -} - 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 / 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." - changed
Input schema / requiredPrevious value: -[ - "end_date", - "keywords", - "limit", - "start_date" -]New value: +[ + "keyword", + "start_date", + "end_date", + "limit" +]
- 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_subdomains18 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: +"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_technologies15 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_top_sites_ranking11 fields changed- added
Input schema / properties / category / descriptionAdded value: +"Industry category, e.g. Finance." - removed
Input schema / properties / category / maxLengthRemoved value: -191 - removed
Input schema / properties / category / minLengthRemoved value: -1 - 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 / 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 / offset / descriptionAdded value: +"Row offset for pagination." - removed
Input schema / properties / offset / maximumRemoved value: -100000 - removed
Input schema / properties / offset / minimumRemoved value: -0
- 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
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_waveinflu_ai_search8 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: -[ - "query" -]New value: +[ + "platform", + "query" +]
- 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_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_similarweb_ad_networks18 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: -"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" +]
- Added
get_similarweb_apis_v1_similarweb_keyword_analysi_490801 - Added
get_similarweb_apis_v1_similarweb_segment_analysi_6349fe - Added
get_similarweb_apis_v1_similarweb_segment_analysi_64e47c - Added
get_similarweb_apis_v1_similarweb_website_analysi_7399a9 - Added
get_similarweb_apis_v1_similarweb_website_analysi_850464 - Added
get_similarweb_apis_v1_similarweb_website_analysi_aa2e1f - Changed
get_similarweb_audience_interest18 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: -"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_audience_overlap10 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 / domains / descriptionRemoved value: -"Two to five target domains, comma-separated (e.g. cnn.com,bbc.com)." - added
Input schema / properties / domains / x-aisa-delimiterAdded value: +"," - added
Input schema / properties / domains / x-aisa-maxItemsAdded value: +5 - added
Input schema / properties / domains / x-aisa-minItemsAdded value: +2 - 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 / start_date / descriptionRemoved value: -"Start month, format YYYY-MM." - changed
Input schema / requiredPrevious value: -[ - "domains", - "start_date", - "end_date" -]New value: +[ + "domains", + "end_date", + "start_date" +]
- Changed
get_similarweb_deduplicated_audience11 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_demographics12 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 / 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" -]New value: +[ + "domain", + "end_date", + "granularity", + "start_date" +]
- 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_landing_pages18 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: -"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_marketing_channel_sources_legacy11 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_popular_pages18 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: -"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_ppc_spend11 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_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_referrals18 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: -"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_serp_players_aggregated14 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 / end_date / descriptionRemoved value: -"End month, format YYYY-MM." - removed
Input schema / properties / granularity / descriptionRemoved value: -"Time granularity. Allowed: monthly." - removed
Input schema / properties / keywordRemoved value: -{ - "description": "Target keyword.", - "type": "string" -} - added
Input schema / properties / keywordsAdded value: +{ + "type": "string", + "x-aisa-delimiter": ",", + "x-aisa-maxItems": 1, + "x-aisa-minItems": 1 +} - 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 / 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." - changed
Input schema / requiredPrevious value: -[ - "keyword", - "start_date", - "end_date", - "limit" -]New value: +[ + "end_date", + "keywords", + "limit", + "start_date" +]
- Changed
get_similarweb_serp_players_timeseries14 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 / end_date / descriptionRemoved value: -"End month, format YYYY-MM." - removed
Input schema / properties / granularity / descriptionRemoved value: -"Time granularity. Allowed: monthly." - removed
Input schema / properties / keywordRemoved value: -{ - "description": "Target keyword.", - "type": "string" -} - added
Input schema / properties / keywordsAdded value: +{ + "type": "string", + "x-aisa-delimiter": ",", + "x-aisa-maxItems": 1, + "x-aisa-minItems": 1 +} - 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 / 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." - changed
Input schema / requiredPrevious value: -[ - "keyword", - "start_date", - "end_date", - "limit" -]New value: +[ + "end_date", + "keywords", + "limit", + "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_subdomains18 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: -"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_technologies15 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_top_sites_ranking11 fields changed- removed
Input schema / properties / category / descriptionRemoved value: -"Industry category, e.g. Finance." - added
Input schema / properties / category / maxLengthAdded value: +191 - added
Input schema / properties / category / minLengthAdded value: +1 - 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 / 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 / offset / descriptionRemoved value: -"Row offset for pagination." - added
Input schema / properties / offset / maximumAdded value: +100000 - added
Input schema / properties / offset / minimumAdded value: +0
- 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
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_waveinflu_ai_search8 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", - "query" -]New value: +[ + "query" +]
- 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" +}
3 tool updates
- Added
post_waveinflu_ai_search - 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" +]
84 tool updates
- First observed
batch_use - First observed
get_apollo_account_stages - First observed
get_apollo_accounts_id - First observed
get_apollo_contact_stages - First observed
get_apollo_contacts_contact_id - First observed
get_apollo_email_accounts - First observed
get_apollo_emailer_messages_id_activities - First observed
get_apollo_emailer_messages_search - First observed
get_apollo_fields - First observed
get_apollo_labels - First observed
get_apollo_notes - First observed
get_apollo_opportunities_opportunity_id - First observed
get_apollo_opportunities_search - First observed
get_apollo_opportunity_stages - First observed
get_apollo_organizations_enrich - First observed
get_apollo_organizations_id - First observed
get_apollo_organizations_organization_id_job_postings - First observed
get_apollo_phone_calls_search - First observed
get_apollo_typed_custom_fields - First observed
get_apollo_users_search - First observed
get_details - First observed
get_similarweb_ad_networks - First observed
get_similarweb_audience_interest - First observed
get_similarweb_audience_overlap - First observed
get_similarweb_deduplicated_audience - First observed
get_similarweb_demographics - First observed
get_similarweb_keyword_competitors - First observed
get_similarweb_keywords - First observed
get_similarweb_landing_pages - First observed
get_similarweb_marketing_channel_sources_legacy - First observed
get_similarweb_popular_pages - First observed
get_similarweb_ppc_spend - First observed
get_similarweb_ranking - First observed
get_similarweb_referrals - First observed
get_similarweb_serp_players_aggregated - First observed
get_similarweb_serp_players_timeseries - First observed
get_similarweb_similar_sites - First observed
get_similarweb_subdomains - First observed
get_similarweb_technologies - First observed
get_similarweb_top_sites_ranking - 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
list_categories - First observed
patch_apollo_accounts_account_id - First observed
patch_apollo_contacts_contact_id - First observed
patch_apollo_opportunities_opportunity_id - First observed
post_apollo_accounts - First observed
post_apollo_accounts_bulk_create - First observed
post_apollo_accounts_bulk_update - First observed
post_apollo_accounts_search - First observed
post_apollo_accounts_update_owners - First observed
post_apollo_contacts - First observed
post_apollo_contacts_bulk_create - First observed
post_apollo_contacts_bulk_update - First observed
post_apollo_contacts_search - First observed
post_apollo_contacts_update_owners - First observed
post_apollo_contacts_update_stages - First observed
post_apollo_emailer_campaigns_add_contact_ids - First observed
post_apollo_emailer_campaigns_remove_or_stop_contact_ids - First observed
post_apollo_emailer_campaigns_search - First observed
post_apollo_emailer_campaigns_sequence_id_abort - First observed
post_apollo_emailer_campaigns_sequence_id_approve - First observed
post_apollo_emailer_campaigns_sequence_id_archive - First observed
post_apollo_fields - 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_opportunities - First observed
post_apollo_organizations_bulk_enrich - First observed
post_apollo_people_bulk_match - First observed
post_apollo_people_match - First observed
post_apollo_phone_calls - First observed
post_apollo_reports_sync_report - First observed
post_apollo_tasks - First observed
post_apollo_tasks_bulk_create - First observed
post_apollo_tasks_search - First observed
post_apollo_usage_stats_api_usage_stats - First observed
post_waveinflu_email_lookup - First observed
post_waveinflu_similar_creators - First observed
put_apollo_phone_calls_id - 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 B2B contacts and the pipeline objects around them — find the company, find the person, get the email, then write it back where your team works. **What you can ask for** • "Find heads of engineering at Series-B SaaS companies in the Nordics, with emails." • "Enrich these companies with headcount, industry and funding." • "What roles is this company hiring for right now?" • "Create an account and a contact, then log this opportunity." • "Search our sequences for messages sent to this domain." **How to use it** Point any MCP client at https://mcp.aisa.one/apollo/mcp and sign in with OAuth — there is no key to create or paste. 54 tools: people and organisation search and enrichment, job postings, accounts, contacts, opportunities and their stages, custom fields, labels, notes, users, email accounts, sequence messages and phone-call search — reads and writes. **Why this rather than the source** The full object model, not just a search endpoint, so an agent can finish the job rather than hand you a CSV. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Find the person here, then ask the same agent what their company's traffic looks like or what they rank for — 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 adds Similarweb and creator discovery around it.
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.
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 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.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceApollo.io MCP server for prospecting, lead enrichment, sales intelligence, and outreach workflows. Integrates Apollo.io go-to-market data into MCP-compatible AI applications.30MIT- AlicenseAqualityDmaintenanceGive your AI agent access to 60M+ companies and 300M+ verified contacts. Enrich leads, find work emails, discover tech stacks, and identify buying intent — directly from Claude, Cursor, Windsurf, or any MCP-compatible AI agent.116 npmMIT
- AlicenseNot gradedqualityCmaintenanceArgorant MCP Server — give your AI agent direct access to 614M verified B2B contacts. Query by industry, role, geography, and 100+ filters, then export emails verified by a live SMTP probe at request time (catch-alls flagged, invalids free). OAuth-secured. Works with Claude, ChatGPT, Cursor, and any MCP client. Endpoint: https://mcp.argorant.com/mcp1MIT
- AlicenseNot gradedqualityDmaintenanceA unified MCP server that connects HubSpot, Clay, Apollo, Slack, and email to enable AI agents to execute multi-step GTM workflows such as prospecting, enrichment, CRM updates, and notifications.6 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.