Skip to main content
Glama

AIsa Web Search & Research

Server Details

Your agent needs the open web — searched by more than one engine, and read as clean markdown rather than raw HTML.

What you can ask for • "Search this question with two providers and tell me where they disagree." • "Scrape these 40 URLs into markdown, in one batch." • "Crawl this documentation site and give me every page." • "Do deep research on this topic and cite the sources." • "Find the academic papers behind this claim."

How to use it Point any MCP client at https://mcp.aisa.one/search/mcp and sign in with OAuth — there is no key to create or paste. 30 tools across several independent providers: Tavily and Exa search, answers, contents and agent runs; Firecrawl scrape, batch scrape, crawl, map and search; Perplexity Sonar, Sonar Pro, reasoning and deep research; Oxylabs AI search and LLM jobs; OpenAI and Anthropic web search; and scholarly search.

Why this rather than the source Several independent indexes behind one account, because one engine's blind spot is not visible from inside it.

It is also a door to the rest The same login reaches 26 sources and 580+ operations. Find the page here, then ask the same agent who links to it or how much traffic it gets — without adding a second server.

What it costs Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident.

Where else it reaches https://mcp.aisa.one/seo-serp/mcp for the Google results page itself, https://mcp.aisa.one/seo-serp-other-engines/mcp for Bing, Baidu and Naver.

Ownership verified
Status
Healthy
Uptime
94.0% over 42 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

C2.6/5.0

Scored across 35 tools

Disambiguation3/5

The set exposes six-plus web-search tools (byteplus, exa, firecrawl, tavily, scholar_web, scholar_mixed) and four page-fetch tools (byteplus_fetch, exa_contents, tavily_extract, firecrawl_scrape) that do substantially the same thing at different prices, so an agent must deliberate on cost/provider rather than capability. The descriptions do a good job of cross-referencing ('use X when…, use Y when…'), which keeps this from being worse, but the boundaries are provider-based rather than intent-based and remain genuinely overlapping.

Naming Consistency2/5

There is a dominant post_<provider>_<operation> pattern, but it is broken by bare verbs (search, use, account, list_categories), by batch_* tools, and by raw OpenAPI-derived names such as post_exa_apis_v1_exa_agent_runs_jobid_cancel and get_firecrawl_batch_scrape_job. The async-job tools also share a single copy-pasted description, so naming is the only signal distinguishing them — and it is inconsistent.

Tool Count2/5

35 tools is heavy for a search/research server, and much of the count comes from near-duplicate provider variants (four Perplexity tiers, three scholar search tools, two crawl tools, four fetch tools). A curated subset would serve the same domain with far less selection overhead.

Completeness4/5

The lifecycle is well covered: discovery (search, list_categories, batch_get_schema), costing (batch_quote), execution (batch_use), search/answer/deep-research, extraction, map, crawl, and async job get/cancel. Minor gaps remain — no job listing, and the job-lifecycle tools have empty descriptions so their per-provider scope is opaque — but core research workflows have no dead ends.

Available Tools

35 tools
accountShow account and usageA
Read-only
Inspect

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.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 batchA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
toolsYesExact tool names returned by search whose complete contracts are needed. Never invent tool names.
session_idNoReuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.
include_documentationNoReturn the complete immutable public OpenAPI operation, referenced declarations, provenance and scoped completeness. Documentation does not change execution support.
include_response_schemaNoReturn the complete response_schema. Defaults to false.
include_arguments_schemaNoReturn the complete arguments_schema. Defaults to true.

Output Schema

NameRequiredDescription
toolsYes
session_idYesReuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.
error_countYes
total_countYes
success_countYes
next_steps_guidanceYes

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 themA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
callsYes
search_idNoOptional search correlation identifier returned by search.
session_idNoReuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.

Output Schema

NameRequiredDescription
resultsYes
batch_idYes
session_idYesReuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.
error_countYes
total_countYes
success_countYes
next_steps_guidanceYesDeterministic next-step instructions derived from this result. Not an authorization grant.
auto_execute_eligibleNoTrue 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_usdNoConfigured auto-execute threshold in micro-USD. 0 disables automatic execution. Present on quote responses.

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 toolsA
Destructive
Inspect

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.

NameRequiredDescriptionDefault
callsYes
search_idNoOptional search correlation identifier returned by search.
session_idNoReuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.

Output Schema

NameRequiredDescription
resultsYes
batch_idYes
session_idYesReuse the session_id returned by Search in all subsequent tool calls for this task. If omitted, a new session is created.
error_countYes
total_countYes
success_countYes
next_steps_guidanceYesDeterministic next-step instructions derived from this result. Not an authorization grant.

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines5/5

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_exa_agent_runExa Agent Runs detailC
Read-onlyIdempotent
Inspect

Owner-scoped local asynchronous job lifecycle. Disabling new admission does not disable existing job reads or cancellation. Runtime availability and access policy also apply.

A request reference price is not currently available; use a request quote where supported. Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
jobIdYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive). The description adds genuine but cryptic behavior: 'Owner-scoped', reads/cancellation surviving admission disable, and access-policy gating. These are beyond the annotations, but they are vague policy statements rather than actionable behavior for a single-run fetch.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Brief but poorly front-loaded: the opening sentence names a 'lifecycle' rather than the operation, and the tool embeds an irrelevant pricing boilerplate block that consumes space without helping an agent call the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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. However, for a simple get-by-id tool the description still omits the core operation, any hint about jobId, and any usage context, leaving the definition materially incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description says nothing about jobId — not its format, where it comes from, or whether it is owner-scoped/URL-safe. With only one parameter and zero documentation anywhere, the description 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.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description never states the operation. It talks abstractly about 'local asynchronous job lifecycle' and admission policy, but never says it retrieves the details/status of a specific Exa agent run identified by jobId. The title ('Exa Agent Runs detail') carries more purpose than the prose, and an agent cannot distinguish this from sibling getters like get_exa_apis_v1_exa_agent_runs or get_firecrawl_crawl_job.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance and no mention of alternatives. With ~37 siblings including several job-detail getters and a cancel endpoint, the description offers nothing to route the agent between reading a run, listing runs, or cancelling one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_exa_apis_v1_exa_agent_runsExa Agent Runs listC
Read-onlyIdempotent
Inspect

Owner-scoped local asynchronous job lifecycle. Disabling new admission does not disable existing job reads or cancellation. Runtime availability and access policy also apply.

A request reference price is not currently available; use a request quote where supported. Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
limitNo
cursorNoOpaque nextCursor from a previous response.
statusNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.2/5.0
Behavior3/5

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 'owner-scoped' scoping and notes access-policy/runtime constraints, which is some useful context beyond the annotations, but it is vague and partly obscured by unrelated admission-control wording.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is abstract and not front-loaded with the core action, and the definition is padded with an unrelated aisa-pricing boilerplate block that adds no operational value for an agent trying to call the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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. However, for a filtering/paginating list endpoint the description never says what is listed or how limit/cursor/status behave, leaving the call semantics under-specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33% and the description mentions none of the three parameters (limit, cursor, status). With low coverage the description should compensate by explaining filtering/pagination semantics, but it adds nothing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description reads 'Owner-scoped local asynchronous job lifecycle' – an abstract phrase that never states the actual verb+resource (listing agent runs). Only the title/name imply a list operation. It does not distinguish itself from the singular sibling get_exa_agent_run.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance or routing to alternatives such as get_exa_agent_run (single run) or post_exa_agent_runs (create). The sentence about 'disabling new admission' concerns system behavior, not when an agent should select this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_firecrawl_batch_scrape_jobFirecrawl Batch Scrape detailC
Read-onlyIdempotent
Inspect

Owner-scoped local asynchronous job lifecycle. Disabling new admission does not disable existing job reads or cancellation. Runtime availability and access policy also apply.

A request reference price is not currently available; use a request quote where supported. Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
jobIdYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, open-world. The description adds little beyond a note that disabling admission doesn't stop reads, which is marginal. It doesn't say what the detail response contains or whether it's eventually consistent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The pricing block and lifecycle caveats are front-loaded boilerplate that bury the actual purpose. No clear leading sentence identifies the tool's function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even though an output schema exists, the description never says this returns batch scrape job status, leaves the jobId source unclear, and wastes space on unrelated pricing text. Key context for calling correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single jobId parameter is an unlabeled string. The description gives no meaning, format, or source for jobId, so an agent must guess where the identifier comes from.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description says 'Owner-scoped local asynchronous job lifecycle' but never states that this tool retrieves the status/detail of a Firecrawl batch scrape job. The name is essentially restated as abstract jargon rather than a specific verb+resource, so an agent can't tell what the tool returns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no indication of when to use this instead of siblings like get_firecrawl_crawl_job or post_firecrawl_batch_scrape. The admission-disable sentence is about lifecycle semantics, not routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_firecrawl_crawl_jobFirecrawl Crawl detailD
Read-onlyIdempotent
Inspect

Owner-scoped local asynchronous job lifecycle. Disabling new admission does not disable existing job reads or cancellation. Runtime availability and access policy also apply.

A request reference price is not currently available; use a request quote where supported. Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
jobIdYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

D1.9/5.0
Behavior2/5

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 only vague context ('owner-scoped', 'access policy also apply') and includes irrelevant pricing boilerplate, without useful behavioral details like status response contents 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is short but not front-loaded with the tool's actual function, and it includes an irrelevant pricing HTML block that is pure noise. The opening sentence fragment is ambiguous and does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 safety. However, for a low-complexity detail tool the description still fails to establish the tool's core purpose or when to use it, leaving a significant contextual gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description never mentions jobId or explains its expected format or source. The description therefore adds no semantic meaning beyond the bare parameter name in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Owner-scoped local asynchronous job lifecycle' is a vague fragment rather than a specific verb+resource; it never states that the tool retrieves a Firecrawl crawl job by ID. The title 'Firecrawl Crawl detail' helps only marginally and is not reinforced by the description, leaving sibling confusion with post_firecrawl_crawl and get_firecrawl_batch_scrape_job unresolved.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides policy statements such as 'Disabling new admission does not disable existing job reads or cancellation' and 'Runtime availability and access policy also apply,' but these are not when-to-use guidance. There is no explicit comparison to alternatives or instruction on when an agent should call this versus other crawl/job tools.

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 catalogueA
Read-only
Inspect

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.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear alternative: use the category-specific endpoint if you only need one category, rather than going via search. It also notes the tool is free and AIsa-only, but it does not explicitly state when to call list_categories instead of search or use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_byteplus_fetchBytePlus FetchB
Destructive
Inspect

Fetch a single URL and return clean, structured page content — title, body text, and publish time. Url is required. The response wraps ResponseMetadata.RequestId and a Result object with the parsed content. Use it to extract full page content for URLs you already have, typically pairing it with post_byteplus_web_search results. failed requests are not charged.

Published reference price: $0.0008 USD per successful request. Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
bodyYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description frames this as a benign read ('Fetch... return clean, structured page content'), yet the annotations declare readOnlyHint=false, destructiveHint=true and idempotentHint=false, and the description never reconciles that. An agent combining both sources cannot tell whether calling this mutates or destroys anything. Per the contradiction rule, this is scored 1 despite otherwise useful detail about the response envelope and billing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and output are front-loaded in the first sentence, followed by required-argument and usage notes in efficient order. The generated pricing comment block and the double space before 'failed requests' add noise, but the prose itself wastes no sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-URL fetch with an output schema, the description covers the required argument, the response envelope, the billing implication of failures, and a companion tool — enough to invoke it correctly. The one real omission is that it does not address or explain the destructive/readOnly annotations, and it ignores competing scrape/extract siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter at 0% schema description coverage, so the description must carry the load, and it only repeats '`Url` is required' — the same information already in the schema property text. It does not clarify that Url is nested under the required `body` wrapper, nor give accepted URL forms, limits, or timeout/redirect behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Fetch a single URL') plus the concrete output ('title, body text, and publish time'), so an agent knows exactly what it produces. It names one sibling (post_byteplus_web_search) as a companion, but does not distinguish itself from the many other URL-content siblings (post_firecrawl_scrape, post_tavily_extract, post_exa_contents), leaving overlap unresolved.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use it to extract full page content for URLs you already have, typically pairing it with post_byteplus_web_search results' gives a clear triggering condition and a workflow pairing. It provides no when-not guidance and never explains why an agent should pick this over the equivalent scrape/extract siblings, so the routing question is only half answered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_byteplus_web_searchBytePlus Web SearchA
Destructive
Inspect

Run a real-time web search built for AI agents and return a ranked list of titled results with links and snippets. Query is required; narrow the result set with Count (≤ 20), Filter (restrict to Sites or exclude BlockHosts), Language, and TimeRange. The response wraps ResponseMetadata.RequestId and a Result list of web results. Use it for RAG retrieval augmentation, competitive/PR monitoring, fact-checking, and content sourcing; pair each result URL with post_byteplus_fetch to pull full page content. failed requests are not charged.

Published reference price: $0.0048 USD per successful request. Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
bodyYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare openWorldHint=true and destructiveHint=true, so the safety profile is partly covered; the description adds value annotations cannot express: per-request billing ($0.0048) and the fact that failed requests are not charged, plus upstream quirks (silently ignored TimeRange values, array input returning error 10400 in schema). It never addresses what the destructiveHint=true would mean for a search call, leaving a small ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then constraints, then response shape, then use cases and pairing — a sensible order with no filler. It is slightly heavy for a search tool (pricing block, a stray double space and lowercase sentence start before 'failed requests are not charged'), but every sentence carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, yet the description still sketches ResponseMetadata.RequestId and a Result list. With one required nested body parameter and two nested Filter fields, the coverage is adequate; only error/failure behavior beyond billing and rate-limit expectations is left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is reported as 0%, so the description has to carry meaning, and it does enumerate Query (required), Count (≤20), Filter with Sites/BlockHosts, Language, and TimeRange. However it only names them — the pipe-separated domain format, max-5 limit, and custom YYYY-MM-DD..YYYY-MM-DD range syntax live only in the schema, so the description adds little beyond the parameter names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Run a real-time web search') and names the output shape (ranked titled results with links and snippets), which is concrete and actionable. It clearly identifies the companion tool post_byteplus_fetch, but does not distinguish itself from the many other search siblings (post_exa_search, post_tavily_search, post_firecrawl_search), so an agent still needs external judgement to 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete use contexts (RAG augmentation, competitive/PR monitoring, fact-checking, content sourcing) and an explicit follow-up action ('pair each result URL with post_byteplus_fetch to pull full page content'). It stops short of any exclusion or 'use X instead when...' rule versus competing search providers, which is the only missing piece.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_exa_agent_runsExa Agent Runs submitC
Destructive
Inspect

Owner-scoped local asynchronous job lifecycle. Disabling new admission does not disable existing job reads or cancellation. Runtime availability and access policy also apply.

Default request estimate: $0.1 USD (not a fixed price). Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
bodyYes
Idempotency-KeyYesTrimmed UTF-8 length must be 1 through 191 bytes.
X-AISA-Cost-ModeNoReturn a read-only cost quote instead of submitting a job.
X-AISA-Max-Price-USDNoOptional maximum customer authorization in USD, validated by the runtime price parser.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag this as a destructive, non-idempotent, open-world write, so the description adds genuine extra context: owner scoping, admission-control behavior (disabling admission doesn't affect existing reads/cancellation), runtime availability and access-policy gating, and a cost estimate (~$0.10 default, not a fixed price). That is meaningful operational disclosure beyond structured fields, though it omits the read-only quote mode implied by the X-AISA-Cost-Mode parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short and contains no padding, but it front-loads the least useful sentence (abstract lifecycle/admission boilerplate) instead of the purpose. The pricing block is clearly delimited, and every sentence is terse, so structure is acceptable but misprioritized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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. However, for a job-submission tool with a required Idempotency-Key and a quote-only cost mode, the description leaves out what the job actually does, how the quote mode interacts with submission, and how this differs from the sibling get/cancel endpoints.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75%, so the schema already documents query, effort, Idempotency-Key, and cost-mode parameters. The description adds nothing about any parameter, including the required Idempotency-Key or the quote mode; baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Owner-scoped local asynchronous job lifecycle', an abstract governance phrase rather than a verb+resource statement. It never says this tool submits/starts an Exa agent run for a query, and it does not distinguish itself from siblings like get_exa_agent_run, get_exa_apis_v1_exa_agent_runs, or post_exa_apis_v1_exa_agent_runs_jobid_cancel. Only the title ('submit') carries the actual purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance. The sentence 'Disabling new admission does not disable existing job reads or cancellation' weakly implies this tool is the 'new admission' path and that reads/cancel live elsewhere, but it never names an alternative or states a condition for choosing this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_exa_answerAnswerA
Destructive
Inspect

Ask a question and get a written answer with citations. query is required; text includes the source text and outputSchema shapes a structured reply. Returns requestId, answer as prose, citations[] with id, title and url, and costDollars. Measured at 2.1 seconds with 8 citations. Use current endpoint pricing and a fresh quote for this request. It sits between a search and a research run: faster and cheaper than post_exa_agent_runs, and more direct than reading post_exa_search results yourself. Reach for Exa when the retrieval needs to be semantic; compare current quotes when choosing a provider.

Usage-based billing; Default request estimate: $0.005 USD (not a fixed price). Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
bodyYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

It discloses return fields (requestId, answer, citations[], costDollars) and a latency figure, which the annotations do not cover. However, the annotations declare readOnlyHint=false and destructiveHint=true for what the description frames as a plain retrieval/answer operation, and the description never reconciles or even acknowledges that mutability/safety profile. The pricing sentence is hedged boilerplate ('not a fixed price'), so the added behavioral value is moderate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded well: purpose, key params, and return shape come first. But several sentences are promotional or boilerplate ('Measured at 2.1 seconds with 8 citations', 'Use current endpoint pricing and a fresh quote', 'compare current quotes when choosing a provider') and do not help an agent invoke the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description is not obligated to enumerate return values, yet it still summarizes them concisely. The nested request body's enum and streaming options are the main uncovered area, and the mismatch between the destructive annotation and the read-style operation is left unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 'body' wrapper, so the description carries extra weight, and it does document query (required), text (includes source text) and outputSchema (shapes a structured reply). It says nothing about the important 'type' retrieval-mode enum (auto/fast/instant/deep-lite/deep/deep-reasoning) or the 'stream' flag, leaving the highest-variance parameter undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb and resource: 'Ask a question and get a written answer with citations.' It also explicitly positions the tool against named siblings ('between a search and a research run'), so an agent can tell it apart from post_exa_search and post_exa_agent_runs 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear selection context with named alternatives: faster/cheaper than post_exa_agent_runs and more direct than reading post_exa_search results yourself. It also adds a domain cue ('when the retrieval needs to be semantic'). It stops short of explicit when-not conditions, and the closing 'compare current quotes' line is provider-shopping filler 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_exa_apis_v1_exa_agent_runs_jobid_cancelExa Agent Runs cancelC
Destructive
Inspect

Owner-scoped local asynchronous job lifecycle. Disabling new admission does not disable existing job reads or cancellation. Runtime availability and access policy also apply.

A request reference price is not currently available; use a request quote where supported. Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
jobIdYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.2/5.0
Behavior3/5

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 some beyond-annotation context (owner scoping, admission-disable not affecting existing reads/cancellation, runtime/access-policy constraints), but it never explains what cancellation actually does or whether it is reversible, so the added value is thin and somewhat cryptic.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description leads with a vague lifecycle statement rather than the cancel action, and it appends boilerplate pricing markup irrelevant to invoking the tool. Structure is not front-loaded and includes waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema and annotations exist, so return values and safety need not be restated, but for a destructive, non-idempotent cancel operation the description still omits what it destroys and any prerequisites beyond a vague access-policy note.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single jobId parameter, and the description says nothing about it (e.g., format, where the ID comes from). With low coverage the description is expected to compensate, and it does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description never states that this tool cancels a job; it only says 'Owner-scoped local asynchronous job lifecycle,' which describes a domain, not an action. Only the tool name/title ('cancel') convey the verb+resource, so an agent must infer purpose from metadata rather than the description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no comparison to siblings like get_exa_agent_run or post_exa_agent_runs. The line about disabling new admission is a policy nuance, not a usage condition, so the agent gets no routing signal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_exa_contentsContentsA
Destructive
Inspect

Fetch page text and metadata for URLs you already have. ids is required and takes the id values from post_exa_search — which are plain URLs, so any URL works. Toggle text, highlights, summary, subpages and livecrawl. Returns results[] with id, title, url, author and text, plus a statuses[] array giving per-URL status and source — read it, because a URL that could not be fetched is reported there rather than raising. Cached results are served instantly; a miss falls back to a live crawl. Measured at 1.2 seconds. Use current endpoint pricing and a fresh quote for this request. For a whole site rather than a URL list, post_firecrawl_crawl.

Usage-based billing; Default request estimate: $0.002 USD (not a fixed price). Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
bodyYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real context beyond the annotations: cache-hit vs. live-crawl fallback semantics, a measured latency figure, and the important failure-mode disclosure that unfetchable URLs surface in `statuses[]` instead of raising. It does not, however, reconcile the surprising destructiveHint=true / readOnlyHint=false annotations for what is nominally a fetch operation, which would have been valuable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and the required parameter, then behavior, then the sibling alternative. The trailing pricing sentences ('Use current endpoint pricing and a fresh quote') and the injected pricing block are boilerplate that dilutes an otherwise tight description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested-schema fetch tool with an output schema, the description covers what matters: inputs, cache/livecrawl behavior, and the non-obvious `statuses[]` error channel. Return-field detail slightly duplicates the output schema, but the failure-mode explanation is genuinely additive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Reported schema coverage is 0% at the top level (the `body` wrapper is undescribed), so the description carries the burden and does it well: it names `ids` as required, explains its origin and format, and enumerates the `text`, `highlights`, `summary`, `subpages` and `livecrawl` toggles in prose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a precise verb+resource+scope: 'Fetch page text and metadata for URLs you already have.' It explicitly positions itself relative to post_exa_search (source of the `id` values) and post_firecrawl_crawl (whole-site alternative), so an agent can distinguish it from siblings without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the precondition ('URLs you already have', `ids` required) and clarifies that ids are plain URLs so any URL works. It also names the alternative and the condition that selects it: 'For a whole site rather than a URL list, post_firecrawl_crawl.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_exa_searchSearchA
Destructive
Inspect

Search the web by meaning rather than by keyword. query is required; narrow with category, includeDomains, excludeDomains, startPublishedDate, endPublishedDate, and set numResults. Returns requestId, resolvedSearchType, searchTime, costDollars and results[] with id, title and url. id is the URL, and it is what post_exa_contents takes. Measured at 1.4 seconds — the fastest search here. Use current endpoint pricing and a fresh quote for this request. ⚠️ Results carry no page text unless you ask: pass contents, or follow up with post_exa_contents. Choose it over post_tavily_search when the query is a description rather than keywords; choose Tavily when you want the text in the same call, and post_exa_answer when you want a written answer rather than a list.

Usage-based billing; Default request estimate: $0.017 USD (not a fixed price). Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
bodyYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare the safety/cost profile (readOnlyHint=false, destructiveHint=true, openWorldHint=true), but the description adds genuinely useful context the annotations cannot convey: results carry no page text unless `contents` is passed, measured latency of ~1.4s, and per-request billing. It does not explain the unusual destructive/chargeable nature flagged by annotations, leaving a small gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads what the tool is, then constraints, then routing, with the pricing caveat fenced into a block. It is dense and mostly earns its space, though the return-field enumeration is partly redundant with the output schema and could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search endpoint with an output schema present, the description need not enumerate return fields, yet it does, and it covers the critical gotcha (no page text by default) plus cost and latency. Missing only a note on the remaining body options and why the endpoint is billed/destructive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With reported schema coverage at 0%, the description must carry parameter meaning, and it does name `query` as required plus the filter set (category, includeDomains, excludeDomains, date bounds, numResults) and the `contents` option. However `type`, `stream`, `outputSchema`, and `systemPrompt` go unexplained, so the coverage gap is only partially closed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search the web by meaning rather than by keyword') and immediately differentiates its retrieval mode from keyword search. It names the sibling tools it competes with (post_tavily_search, post_exa_answer) so an agent can place it in the toolset 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing guidance: 'Choose it over post_tavily_search when the query is a description rather than keywords; choose Tavily when you want the text in the same call, and post_exa_answer when you want a written answer rather than a list.' It also states when to pass `contents` versus following up with post_exa_contents.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_firecrawl_batch_scrapeFirecrawl Batch Scrape submitD
Destructive
Inspect

Owner-scoped local asynchronous job lifecycle. Disabling new admission does not disable existing job reads or cancellation. Runtime availability and access policy also apply.

A request reference price is not currently available; use a request quote where supported. Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
bodyYes
Idempotency-KeyYesTrimmed UTF-8 length must be 1 through 191 bytes.
X-AISA-Cost-ModeNoReturn a read-only cost quote instead of submitting a job.
X-AISA-Max-Price-USDNoOptional maximum customer authorization in USD, validated by the runtime price parser.

Output Schema

NameRequiredDescription

No output parameters

TDQS

D1.8/5.0
Behavior2/5

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 structurally. The description's only real addition is implying the call is asynchronous and owner-scoped; it says nothing about what gets consumed, auth requirements, or the meaning of the required Idempotency-Key given idempotentHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is short but dominated by a generic pricing boilerplate block that carries no tool-specific information. The one substantive sentence is front-loaded but vague, so brevity here reflects under-specification rather than conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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. Everything else is missing: the tool's actual operation, how the submitted job is tracked, sibling routing, and any semantics for its four parameters in a nested body.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75%, below the 80% threshold, so the description needs to compensate and does not. None of urls, maxAge, minAge, timeout, includeTags/excludeTags, maxConcurrency or onlyMainContent is clarified beyond the schema, and the nested body structure is never mentioned.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description never states that this tool submits a batch scrape job for a list of URLs; 'Owner-scoped local asynchronous job lifecycle' restates a category rather than a verb+resource. An agent must fall back to the tool name and title to infer the actual action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance and no routing to siblings. It never distinguishes this from post_firecrawl_scrape (single URL) or from get_firecrawl_batch_scrape_job, which is the tool an agent would need to poll after submitting. The admission-control sentence is unrelated to selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_firecrawl_crawlFirecrawl Crawl submitC
Destructive
Inspect

Owner-scoped local asynchronous job lifecycle. Disabling new admission does not disable existing job reads or cancellation. Runtime availability and access policy also apply.

A request reference price is not currently available; use a request quote where supported. Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
bodyYes
Idempotency-KeyYesTrimmed UTF-8 length must be 1 through 191 bytes.
X-AISA-Cost-ModeNoReturn a read-only cost quote instead of submitting a job.
X-AISA-Max-Price-USDNoOptional maximum customer authorization in USD, validated by the runtime price parser.

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, openWorldHint=true, readOnlyHint=false and idempotentHint=false, so the safety profile is covered elsewhere. The description adds only vague async-lifecycle and pricing boilerplate, and says nothing specific about job creation, polling via get_firecrawl_crawl_job, rate/limits, or the quote path even though a cost-mode parameter exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short, but the opening sentence is not front-loaded with the tool's purpose, and the aisa-pricing HTML comment block is filler that does not earn its place for an invocation decision. Structure prioritizes platform boilerplate over the crawl action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex, nested-object crawl submission with a required Idempotency-Key and an output schema, the description omits purpose, usage, return-job semantics, and how to retrieve results. An agent has essentially nothing usable beyond the name and title.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75%, so the schema already documents most parameters (url, limits, path filters, scrapeOptions, Idempotency-Key, X-AISA-Cost-Mode). The description adds no parameter meaning whatsoever; the pricing note gestures at cost mode but with no actionable detail. Baseline 3 applies given the strong schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description never states that this tool submits a web crawl. 'Owner-scoped local asynchronous job lifecycle' is generic platform boilerplate that names no verb or resource tied to crawling, so an agent must fall back on the tool name/title to guess the purpose. It is at best vague and arguably misleading about what the tool actually computes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance is given, nor any routing to alternatives such as post_firecrawl_scrape, post_firecrawl_map, post_firecrawl_batch_scrape, or post_tavily_crawl. The admission-control sentence ('Disabling new admission does not disable existing job reads or cancellation') is a policy note, not a usage condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_firecrawl_mapFirecrawl MapD
Destructive
Inspect

Usage-based billing; Default request estimate: $0.001071 USD (not a fixed price). Declared unit rate: $0.001071 USD per firecrawl_credit. Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
bodyYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

D1.1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, destructiveHint=true, idempotentHint=false, and openWorldHint=true, but the description discloses nothing about behavior, side effects, permissions, or rate limits. The only content is pricing boilerplate, which does not add any behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is short, but every word is pricing boilerplate that does not help select or invoke the tool. Brevity here reflects absent content rather than efficient communication of the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world POST tool with a nested object parameter and zero schema descriptions, the description supplies none of the required context. An output schema exists, so return values need not be explained, but purpose, usage, and parameter meaning are all missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single nested body parameter (with url and limit) has 0% schema description coverage, so the description must compensate and does not. It gives no hint about what url or limit mean, valid ranges, or expected formats, leaving the parameter effectively undocumented everywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

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 billing metadata ('Usage-based billing; Default request estimate: $0.001071 USD'), which is a pricing note rather than a purpose statement. The agent must infer the function purely from the name 'post_firecrawl_map'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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 such as post_tavily_map, post_firecrawl_crawl, or post_firecrawl_scrape, and no preconditions. Nothing in the text helps an agent decide between this tool and its numerous siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_firecrawl_scrapeFirecrawl ScrapeD
Destructive
Inspect

Usage-based billing; Default request estimate: $0.001071 USD (not a fixed price). Declared unit rate: $0.001071 USD per firecrawl_credit. Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
bodyYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

D1.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The only behavioral content is a cost estimate ($0.001071 USD per firecrawl_credit), which is genuinely useful budget context not present in the annotations. However, it says nothing about what the operation actually does to the target URL, rate limits, or response behavior, and the provided annotations (destructiveHint=true, openWorldHint=true) receive no elaboration or corroboration.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short, but every sentence is billing boilerplate wrapped in HTML comment markers rather than tool-relevant content. Nothing meaningful is front-loaded, so length efficiency buys nothing here.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

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 remaining burden is entirely unmet: for a single-URL fetch tool sitting in a dense family of Firecrawl and other search/extract siblings, the agent gets no statement of purpose, scope, or selection criteria. This is inadequate for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single 'body' parameter is a nested object with required 'url' and 'proxy' fields and constrained 'formats'/'onlyCleanContent' enums. The description supplies no parameter meaning at all — not even that a URL is required or that PDF targets are forbidden — so it fails to compensate for the zero coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

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 an auto-injected pricing/billing block. Nothing in the text indicates that this fetches and extracts content from a single URL, or distinguishes it from siblings like post_firecrawl_crawl, post_firecrawl_map, or post_firecrawl_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no usage guidance whatsoever: no when-to-use, no when-not-to-use, and no mention of the many sibling tools (crawl, map, batch_scrape, search) that an agent must choose between. The agent is left to infer everything from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_firecrawl_searchFirecrawl SearchD
Destructive
Inspect

Usage-based billing; Default request estimate: $0.002142 USD (not a fixed price). Declared unit rate: $0.001071 USD per firecrawl_credit. Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
bodyYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

D1.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, readOnlyHint=false, and openWorldHint=true, so the safety profile is externally supplied. The description adds only pricing-per-call context, which is useful operational context but does not explain what 'destructive' means for a search or describe authentication, rate limits, 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is short, but it is front-loaded with billing boilerplate rather than the tool's purpose. None of its sentences help an agent decide to select or correctly invoke this tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with a nested request body, several sibling alternatives, and an output schema, the description omits purpose, usage, and parameter semantics entirely. It is not remotely complete enough to guide correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage and a nested body object, but the description provides no parameter meaning at all. Neither the required query field nor the limit, sources, or enterprise options are explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

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 billing/pricing boilerplate, leaving the agent to infer 'search' from the name and title alone. Sibling tools include many competing search endpoints, so no differentiation is provided.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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 search tool versus alternatives such as post_exa_search, post_tavily_search, or post_perplexity_sonar. No prerequisites, query constraints, or exclusion 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_perplexity_sonarSonarA
Destructive
Inspect

Ask a question and get a written answer with web citations, rather than a list of links to read yourself. Body is OpenAI chat-completions shaped: model (required, sonar) and messages. Returns choices[0].message.content as prose, plus citations (an array of URL strings) and search_results[] with title, url, snippet, date and source, and a usage block. Measured at about 3 seconds. This is the cheapest and fastest of the four Perplexity endpoints — use it for a single factual question. Step up to post_perplexity_sonar_pro for multi-part questions, or post_perplexity_sonar_reasoning_pro when the answer requires working through steps. If you need results you can iterate over rather than prose, use post_tavily_search;

Usage-based billing; Default request estimate: $0.12783 USD (not a fixed price). Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
bodyYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds valuable context beyond the annotations: ~3 second latency, that it is the cheapest/fastest of the four Perplexity endpoints, and the full response shape (choices[0].message.content, citations array, search_results fields, usage block). It does not discuss the odd destructiveHint=true annotation, auth needs, 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core capability and output form, then routing guidance, then cost. Dense but nearly every sentence is load-bearing; the response-field enumeration is slightly long given an output schema exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-body parameter tool with an output schema, annotations, and sibling alternatives, the description covers purpose, output shape, latency, cost, and routing. Nothing an agent needs to choose or invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The top-level 'body' parameter has no schema description (coverage reported as 0%), and the description compensates by explaining the body is OpenAI chat-completions shaped with `model` (required, `sonar`) and `messages`. Nested properties are documented in the schema itself, so this is above baseline without being exhaustive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action and output form: 'Ask a question and get a written answer with web citations, rather than a list of links to read yourself.' That last clause sharply distinguishes it from link-returning siblings like post_tavily_search, and it names the resource family (Sonar/Perplexity) explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing guidance: 'use it for a single factual question,' step up to post_perplexity_sonar_pro for multi-part questions, 'post_perplexity_sonar_reasoning_pro' when steps are needed, and post_tavily_search when you need iterable results. This is a full when/when-not/alternative map.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_perplexity_sonar_deep_researchSonar Deep ResearchA
Destructive
Inspect

Commission a report: this endpoint runs many searches and writes a long, cited document. model (required, sonar-deep-research) and messages in; choices[0].message.content, citations, search_results[] and usage out, where usage also reports num_search_queries and reasoning_tokens. Many clients time out well before it answers, so call it only when a report is genuinely the deliverable, and never in a loop. For anything you would read in one sitting, the other three Perplexity endpoints answer in seconds.

Usage-based billing; Default request estimate: $0.23932 USD (not a fixed price). Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
bodyYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds behavior beyond the annotations: the operation takes long enough that 'many clients time out well before it answers', must not be looped, and carries usage-based billing with a concrete default estimate. It does not explain why the tool is flagged destructiveHint=true (a surprising trait for a research call) or address auth requirements, so it falls just short of full disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then scope limits, then alternatives — dense and largely waste-free. The sentence enumerating `choices[0].message.content`, `citations`, `search_results[]` and `usage` is partly redundant given an output schema exists, which costs a little tightness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a high-latency, high-cost, open-world POST with an output schema and rich annotations, the description covers purpose, inputs, outputs, latency, cost, and routing alternatives. Nothing an agent needs before deciding to call it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single top-level `body` parameter and reported 0% schema coverage, the description compensates by naming the required inputs and pinning the model choice to `sonar-deep-research` — a constraint the schema's four-value enum does not enforce. It stays silent on the sampling, search-context, and domain-filter sub-parameters, which are the ones most likely to be mis-set.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and artifact: 'Commission a report: this endpoint runs many searches and writes a long, cited document.' It also differentiates from siblings by contrasting with 'the other three Perplexity endpoints' that 'answer in seconds', so an agent can place it relative to post_perplexity_sonar, sonar_pro, and sonar_reasoning_pro 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use and when-not: 'call it only when a report is genuinely the deliverable, and never in a loop', with a named alternative class for lighter needs. Both the positive condition and the exclusion are stated, which is exactly what routing between four near-identical Sonar siblings requires.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_perplexity_sonar_proSonar ProA
Destructive
Inspect

Ask a question that needs more than one search pass and get a written answer with citations. Same request and response shape as post_perplexity_sonar — model (required, sonar-pro) and messages in, choices[0].message.content, citations, search_results[] and usage out. Use it for questions with several parts or follow-ups. For a single lookup sonar answers in a third of the time at the same price; when the difficulty is reasoning rather than retrieval, post_perplexity_sonar_reasoning_pro shows its working.

Usage-based billing; Default request estimate: $0.11273 USD (not a fixed price). Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
bodyYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real context beyond annotations: a per-request cost estimate, a latency comparison against the sibling, and the required model value. Annotations declare openWorldHint=true and destructiveHint=true, which the description never explains, so the odd safety profile is left unexplained — but the description does not claim the operation is read-only, so this is an omission rather than a contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then the request/response contract, then the selection criteria — three dense sentences with no filler. The pricing block is machine-generated boilerplate rather than authorial padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return fields need not be explained, yet the description still names choices[0].message.content, citations, search_results[] and usage, which helps the agent consume the result. Cost and routing are covered; streaming behavior and the missing param guidance are the residual gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description usefully pins down `model` as required and `sonar-pro`, which the enum of four models in the schema does not. However with schema description coverage reported at 0% for the request, the remaining fields (search_context, return_citations, stream, filters) get no guidance from either source, so the description only partially compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Ask a question that needs more than one search pass and get a written answer with citations') and explicitly positions it against two named siblings, post_perplexity_sonar and post_perplexity_sonar_reasoning_pro. An agent can route without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('questions with several parts or follow-ups'), names the cheaper/faster alternative for single lookups ('sonar answers in a third of the time at the same price'), and names the alternative for reasoning-heavy work. Conditions for each branch are spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_perplexity_sonar_reasoning_proSonar Reasoning ProA
Destructive
Inspect

Ask a question that has to be worked through, not just looked up, and get a step-by-step answer backed by web search. Same shape as the other Perplexity endpoints — model (required, sonar-reasoning-pro) and messages in; choices[0].message.content, citations, search_results[] and usage out. Use it for comparison, causation and analysis. When the question is simply what is the case, post_perplexity_sonar is faster; when you need a long report over many sources rather than an answer, post_perplexity_sonar_deep_research.

Usage-based billing; Default request estimate: $0.03499 USD (not a fixed price). Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
bodyYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the open-world, non-idempotent, destructive-cost profile, so the bar is lower; the description still adds the input contract (model must be `sonar-reasoning-pro`, messages in) and the output contract (`choices[0].message.content`, `citations`, `search_results[]`, `usage`). The embedded pricing note also flags usage-based billing. It stops short of auth, rate-limit, or streaming behavior details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose, then I/O shape, then sibling routing — a front-loaded ordering with no throwaway sentences. The only non-authored text is the vendor pricing block, which is boilerplate the author cannot condense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description is not obligated to document returns, yet it does so briefly, and annotations carry the safety profile. For a nested 13-property body it names only the required pair, but combined with schema descriptions and the sibling routing it is sufficient to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Top-level schema coverage is reported at 0% (the `body` wrapper is undocumented), so the description must compensate, and it does by pinning the required enum value for `model` and describing the `messages` input shape. It adds no guidance on the optional tuning knobs (`search_context`, `top_k`, `return_citations`), which the nested schema does document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource — ask a question that requires reasoning and receive a step-by-step, web-search-backed answer — rather than a generic 'query' framing. It explicitly distinguishes itself from two siblings by naming them (`post_perplexity_sonar` for lookups, `post_perplexity_sonar_deep_research` for long reports), so an agent can place it precisely in the family.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives positive use cases (comparison, causation, analysis) and explicit exclusions with the routing alternative for each: simple factual questions go to `post_perplexity_sonar`, long multi-source reports go to `post_perplexity_sonar_deep_research`. A negation and its counterpart tool are both stated, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_scholar_search_explainExplain Search ResultsA
Destructive
Inspect

Explain a result set you already fetched. Unlike the three search endpoints this one takes a JSON body: search_id (required — the id returned by post_scholar_search_web, post_scholar_search_scholar or post_scholar_search_mixed), plus detail_level (BRIEF / MODERATE / DETAILED), language, and response_mode. ⚠️ Use response_mode: NON_STREAMING. It returns {"message": "…"} as JSON, measured at about 2 KB. The COMPLETE and INCREMENTAL modes emit server-sent events in which each event repeats the whole answer so far — the identical explanation measured 177 KB that way, roughly 90 times larger, and a tool call cannot consume a stream incrementally anyway. It only ever explains an existing search; it cannot run one.

Published reference price: $0.01 USD per successful request. Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
bodyYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without relying on annotations it discloses the return shape and size (~2 KB JSON vs ~177 KB for the SSE modes), explains that each streamed event repeats the whole answer so a tool call cannot consume it incrementally, and states the cost ($0.01). That is far more than the annotations provide. It does not, however, reconcile the declared destructiveHint=true / readOnlyHint=false for an operation the description frames as a pure explanation, so the mutation profile of this call is left unexplained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Key constraint is front-loaded, and the SSE-size comparison earns its length by justifying the response_mode recommendation. Some sentences restate schema content (the enum meanings of COMPLETE/INCREMENTAL/NON_STREAMING), and the pricing block plus emoji/bold add visual noise, but overall it is proportionate to the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a nested-body tool with streaming modes and a cost, the description covers purpose, inputs, response format, cost, and the hard limitation. An output schema exists, so it need not detail return values, and it briefly does anyway. The only uncovered area is the destructive/read-only behavior the annotations assert, which the description never addresses.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Reported schema coverage is 0% (the top-level 'body' wrapper carries no description), so the description has to compensate, and it does: it enumerates search_id (with its origin), detail_level, language, and response_mode, and adds non-obvious meaning by prescribing NON_STREAMING and tieing search_id to a prior search call. The one gap is that, like the schema, it enumerates nothing about defaults for language/detail_level.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ('Explain a result set you already fetched') and immediately differentiates itself from the sibling search endpoints by noting they produce the search_id it consumes. An agent can tell what this does and how it differs from post_scholar_search_web/scholar/mixed 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the precondition explicitly ('a result set you already fetched'), names the three sibling tools that generate the required search_id, and states the exclusion 'it cannot run one.' It also gives concrete selection guidance for response_mode ('Use response_mode: NON_STREAMING'). This is explicit when/when-not/alternative coverage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_scholar_search_mixedSearch Mixed ContentA
Destructive
Inspect

Search the web and academic sources together, for questions that straddle both. ⚠️ Parameters go in the query string: query (required), max_num_results, as_ylo/as_yhi. Returns a search id and results[]; the entry shape varies by source — every result has title, link and snippet, and academic ones additionally carry authors and number_of_citations, so treat those two as optional rather than assuming they are there. Measured at about 3 seconds. Use it when you do not know in advance which kind of source will answer. When you do, post_scholar_search_web or post_scholar_search_scholar is more predictable. Keep the id for post_scholar_search_explain.

Published reference price: $0.01 USD per successful request. Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
queryYesSearch query for scholarly materials
as_yhiNoYear of publication upper bound
as_yloNoYear of publication lower bound
max_num_resultsNoMaximum number of search results to return, up to 100

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real operational context beyond the annotations: parameters belong in the query string, entry shape varies by source with authors/number_of_citations being optional, and latency is ~3 seconds. It does not, however, reconcile the surprising destructiveHint=true / readOnlyHint=false annotations with what is presented as a retrieval call, which is a genuine transparency gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and scoping in the first sentence, then return shape, latency, and routing. The parameter-location warning and the pricing boilerplate make it denser than ideal, but every sentence carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 fully restated, yet the description usefully summarizes the variable result entry shape. With annotations and schema present, the only missing piece is any explanation of the destructive/non-read-only flags.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds something the schema does not: that all four parameters are passed in the query string, with query required and as_ylo/as_yhi as bounds. It also flags that result fields authors and number_of_citations should be treated as optional.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and combined resource ('Search the web and academic sources together') plus the scenario it serves ('questions that straddle both'). It explicitly names the two siblings it is not, so an agent can differentiate 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit positive condition ('when you do not know in advance which kind of source will answer') and the negative routing ('post_scholar_search_web or post_scholar_search_scholar is more predictable'), plus a follow-up rule to keep the id for post_scholar_search_explain. 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_scholar_search_scholarSearch Scholarly ArticlesA
Destructive
Inspect

Search academic literature. ⚠️ Parameters go in the query string, not a body: query (required), max_num_results, and as_ylo/as_yhi to bound publication years. Returns a search id and results[] with title, link, snippet, authors and number_of_citations — that last field is what a general web search cannot give you. Measured at under 2 seconds. Use it when the question calls for peer-reviewed sources or when citation counts matter. For current events and product pages a general engine is better: post_tavily_search. To cover both at once, post_scholar_search_mixed. Keep the id for post_scholar_search_explain.

Published reference price: $0.01 USD per successful request. Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
queryYesSearch query for scholarly materials
as_yhiNoYear of publication upper bound
as_yloNoYear of publication lower bound
max_num_resultsNoMaximum number of search results to return, up to 100

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false and destructiveHint=true, but the description presents a non-destructive search that returns an id and results and says nothing about destructive side effects. This directly contradicts the safety profile encoded in annotations, so the score is 1 and the contradiction flag is set.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is dense but front-loaded: purpose, parameter placement warning, return fields, timing, usage guidance, and sibling routing. The embedded pricing footnote is extraneous and adds length, but overall the structure is efficient and each main sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 details are not strictly required, though the description helpfully summarizes key fields. It covers alternatives, timing, and follow-up id handling, but it leaves a serious behavioral gap by omitting any mention of the destructive/non-readOnly annotation. For a tool whose annotations contradict its apparent search behavior, the description is not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 a meaningful invocation detail absent from the schema: parameters go in the query string, not a body, and it groups the year-bound parameters as as_ylo/as_yhi. That extra transport guidance raises the score to 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Search academic literature') and distinguishes the tool from siblings by naming general web search and the mixed-mode alternative. An agent can tell this is the scholarly-article search tool 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance ('peer-reviewed sources or when citation counts matter') and when-not guidance ('current events and product pages a general engine is better: post_tavily_search'). It also routes combined scholarly/web needs to post_scholar_search_mixed and follow-up explanation to post_scholar_search_explain.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_scholar_search_webSearch Web ContentA
Destructive
Inspect

Search the open web and get back a lean result list. ⚠️ Despite being a POST, parameters go in the query string — query (required), max_num_results (default 10, max 100), and as_ylo/as_yhi for a year range. A JSON body is not accepted. Returns a search id and results[] carrying only title, link and snippet. Measured at about 4 seconds for a roughly 600-byte response. Its virtue is how little it returns, which suits an agent that only needs to know what exists. It gives you no page text — if you need the content, post_tavily_search returns it in the same call. Keep the id: it is what post_scholar_search_explain needs.

Published reference price: $0.01 USD per successful request. Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
queryYesSearch query for scholarly materials
as_yhiNoYear of publication upper bound
as_yloNoYear of publication lower bound
max_num_resultsNoMaximum number of search results to return, up to 100

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses a non-obvious transport quirk (POST but parameters in the query string, JSON body rejected), the exact return shape (id plus results[] with title/link/snippet only), approximate latency and payload size, and the absence of page text. Annotations declare destructiveHint=true and readOnlyHint=false, and the description is consistent with a network-calling search rather than contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and the transport warning, and the routing hint to post_tavily_search lands early. A few sentences are stylistic filler ("Its virtue is how little it returns") and the pricing comment block adds noise, so it is efficient but not waste-free.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still pins down the practical contract: transport method, required query, result fields, the returned id and its downstream use, cost, and expected latency. Nothing an agent needs in order to invoke and chain this call correctly is left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuinely useful calling-convention detail: the parameters must go in the query string, a body is not accepted, and it restates the default (10) and ceiling (100) in prose. That is meaningfully beyond the schema's field-level descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Search the open web and get back a lean result list") and characterizes the output shape, so the agent knows this is a lightweight web search rather than a content-fetching tool. It does not differentiate itself from the similarly-named siblings post_scholar_search_scholar and post_scholar_search_mixed, which an agent would otherwise confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear selection rule: use this when you only need to know what exists, and use post_tavily_search when you need page content, plus a follow-up hook (keep the id for post_scholar_search_explain). It stops short of explicit when-not guidance against the other scholar search variants listed as siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_tavily_crawlStart Crawl ProcessA
Destructive
Inspect

Walk a site from a root url and return the content of the pages it finds. Steer it with natural-language instructions plus regex path and domain filters, and bound it with max_depth, max_breadth and limit. Returns base_url and results[] with url and raw_content. Measured at about 4.5 seconds for a 3-page limit; cost and time grow with the bounds you set, so set them. Use it for broad coverage of one site — documentation, a catalogue, a competitor's blog. It answers synchronously, which post_firecrawl_crawl does not: that one runs as a background job and suits crawls too large to wait on. For a handful of known pages post_tavily_extract is far cheaper; to size a site before paying to crawl it, run post_tavily_map first.

Usage-based billing; Default request estimate: $0.024 USD (not a fixed price). Declared unit rate: $0.008 USD per tavily_credit. Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
bodyYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the safety profile (readOnly=false, destructive=true, openWorld=true, idempotent=false). The description goes well beyond that: it discloses synchronous vs background execution, an observed latency (~4.5s at a 3-page limit), that cost and time scale with the bounds, and even billing rates. No contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then steering, then bounds, then alternatives — a good information hierarchy. It is dense with several parallel clauses and a boilerplate pricing block, but essentially every sentence carries routing or cost information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a high-parameter, open-world, cost-incurring crawl tool this covers the decision-relevant surface: what it does, how to steer and bound it, how long it takes, what it costs, and which sibling to use instead. An output schema exists, so return values need not be re-explained, and the description still sketches them usefully.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Reported schema coverage is 0% at the top level, so the description carries real burden and does so for the steering and bounding parameters: url, instructions, regex path/domain filters, max_depth, max_breadth and limit, with their roles explained. It does not touch format, timeout, extract_depth, chunks_per_source or the include_* toggles, so it does not fully compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Walk a site from a root url and return the content of the pages it finds') and immediately distinguishes itself from siblings by naming post_firecrawl_crawl, post_tavily_extract and post_tavily_map with the conditions that select each. An agent can route correctly without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('broad coverage of one site — documentation, a catalogue, a competitor's blog') and explicit alternatives: extract for a handful of known pages, map to size a site first, firecrawl_crawl when the crawl is too large to wait on synchronously. When-not guidance is effectively present via the sibling comparisons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_tavily_extractExtract DataA
Destructive
Inspect

Fetch clean, parsed content for URLs you already have — from a search result, a sitemap, or a user. urls is required and takes several at once. Returns results[] with url, title, raw_content and images, plus a failed_results[] array — read that one, because a page that could not be fetched is reported there rather than raising an error. Choose format (markdown or text) and extract_depth. Measured at about 1 second for one page. Use this instead of post_tavily_search whenever you can already name the pages; searching for pages you can name costs more and may not return them. For a long list that can wait, post_firecrawl_batch_scrape runs it as a background job. To discover the URLs of a whole site first, use post_tavily_map.

Usage-based billing; Default request estimate: $0.024 USD (not a fixed price). Declared unit rate: $0.008 USD per tavily_credit. Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
bodyYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond annotations by disclosing that unfetchable pages land in failed_results[] rather than raising an error, that one page takes about 1 second, and the cost basis of the call. The verb 'Fetch' reads as read-only while annotations declare destructiveHint=true/readOnlyHint=false, but the description never asserts a safety profile, so this is a mismatch rather than a stated contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core verb and resource, then proceeds through input, output, tuning, latency, and alternatives in a logical order. Dense but nearly every sentence carries decision-relevant information; the appended pricing block is boilerplate that adds length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value explanation is optional, yet the description still surfaces the one operational hazard an agent must know: failures are reported in failed_results[] instead of surfacing as errors. With usage routing, latency, and billing all covered, nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is reported as 0% at the wrapping level, so the description must carry parameter meaning; it covers urls (required, multi-valued), format, and extract_depth. It says nothing about query, timeout, chunks_per_source, include_images, include_favicon, or include_usage, so it only partially compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — fetch clean, parsed content for URLs you already have — and immediately scopes the input source (a search result, sitemap, or user). It is clearly distinguishable from post_tavily_search and post_tavily_map, which are named as different operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it ('whenever you can already name the pages'), why the alternative is worse ('searching for pages you can name costs more and may not return them'), and routes two other cases to named siblings: post_firecrawl_batch_scrape for long async lists and post_tavily_map for URL discovery.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_tavily_mapGet Map DataA
Destructive
Inspect

List a site's URLs from a root url without fetching any page content. Steer it with natural-language instructions and regex select_paths / exclude_paths / select_domains filters. Returns base_url and results — a flat array of URL strings, not objects — with response_time and request_id. Fast and cheap: measured at about 1.5 seconds. Use it to size a site before committing to a crawl, then fetch only the parts that matter with post_tavily_extract. When you want the content rather than the shape, post_tavily_crawl does both in one call.

Usage-based billing; Default request estimate: $0.064 USD (not a fixed price). Declared unit rate: $0.008 USD per tavily_credit. Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
bodyYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds real behavioral context beyond the annotations: no page content is fetched, ~1.5s latency, and a usage-based cost. However, it never reconciles the annotation profile (readOnlyHint=false, destructiveHint=true) — the text reads as a harmless listing while the annotations warn of a destructive, non-idempotent operation, and the agent gets no guidance on which to trust.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded: the core operation and its scope land in the first clause, then filters, return shape, cost/speed, and sibling routing. Dense but every sentence carries information; the only dead weight is the boilerplate pricing block.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description helpfully pre-empts the biggest return-value pitfall ('a flat array of URL strings, not objects') and names the envelope fields. With that plus sibling routing and latency/cost disclosure, little is missing except guidance reconciling the destructive annotation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Reported top-level schema coverage is 0% (the `body` wrapper is undocumented), though the nested properties all carry descriptions. The description reinforces the interaction model for `instructions` and the regex filter families (`select_paths`/`exclude_paths`/`select_domains`) but is silent on the cost-controlling knobs (limit, max_depth, max_breadth, timeout, allow_external), which matter for a billed tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource ('List a site's URLs from a root url') with an explicit scope qualifier ('without fetching any page content'), and it names the sibling tools it is not (post_tavily_extract, post_tavily_crawl). An agent can distinguish it from the other ~30 tools without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit workflow condition: 'Use it to size a site before committing to a crawl, then fetch only the parts that matter with post_tavily_extract', plus the contrasting case 'When you want the content rather than the shape, post_tavily_crawl does both in one call.' When-to-use and alternatives are both stated outright.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

post_tavily_searchSearch Tavily DataA
Destructive
Inspect

Search the web and get back ranked results with the page text already extracted, so there is no second call to fetch content. query is required. Returns results[] with url, title, content (the extracted excerpt), score and optionally raw_content, alongside query, images, response_time and request_id; set include_answer to also get a one-paragraph answer. Filter with topic (general/news/finance), time_range or explicit start_date/end_date, and trade cost against depth with search_depth. Measured at roughly 6 seconds for 2 results. This is the default choice for open-web research, and the only search here that returns ranked results and page text in one call. Reach past it when: you already know the URLs — post_tavily_extract is cheaper and exact; the query is a description rather than keywords — post_exa_search matches on meaning; you want a written answer rather than a list to iterate — post_perplexity_sonar; you want peer-reviewed papers — post_scholar_search_scholar.

Usage-based billing; Default request estimate: $0.016 USD (not a fixed price). Declared unit rate: $0.008 USD per tavily_credit. Account-specific pricing and final settlement may differ.

NameRequiredDescriptionDefault
bodyYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds meaningful behavioral context beyond the structured fields: ~6 second latency at 2 results, the cost-vs-depth tradeoff exposed by search_depth, and the usage-based billing note. It also pre-empts a common follow-up by stating page text is already extracted. One gap: it never reconciles the destructiveHint=true/readOnlyHint=false annotations with what is plainly a read-only retrieval, so an agent reading the annotations alone would be misled; the description does not correct that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded correctly: capability and return shape first, then filtering/depth knobs, then latency, then sibling routing. Every sentence carries information. It is, however, a dense single block packing five distinct concerns (returns, params, latency, routing, billing) without visual separation, which slightly raises scan cost for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, yet the description names the key response fields (results[], query, images, response_time, request_id) for extra safety. Combined with filtering knobs, latency, cost, and explicit sibling routing, an agent has everything needed to choose and call this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The top-level schema exposes only the wrapper `body` object (coverage metric 0% at that level), yet the nested properties are individually documented. The description still adds selection guidance beyond the raw field docs: `query` is required, `topic`/`time_range`/`start_date`/`end_date` for filtering, `search_depth` framed as a cost-vs-depth dial, and `include_answer` framed as the way to get a one-paragraph answer. That is useful decision-level semantics rather than restated field text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (search the web) and immediately scopes it: ranked results with page text already extracted so no second fetch call is needed. It explicitly differentiates from siblings, claiming it is 'the only search here that returns ranked results and page text in one call,' which lets an agent separate it from post_exa_search, post_tavily_extract and post_firecrawl_search 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names itself as the 'default choice for open-web research' and then gives an explicit routing table: known URLs -> post_tavily_extract, descriptive/semantic query -> post_exa_search, want a written answer -> post_perplexity_sonar, peer-reviewed papers -> post_scholar_search_scholar. When-to-use and when-to-reach-past are both stated with the selecting condition for each alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

useRun an AIsa operationC
Destructive
Inspect

deprecated, use batch_use instead

NameRequiredDescriptionDefault
argumentsNoArguments matching input_schema / arguments_schema
search_idNosearch_id from the search that found this operation
operation_idYesoperation_id as returned by search
max_price_usdNoRefuse the call before any spend if its quoted price is above this many USD

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose2/5

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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly routes the agent to the alternative ('use batch_use instead'), which is exactly the guidance needed for a deprecated tool. It doesn't explain when, if ever, this tool should still be called (e.g., during a migration window), so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • Removedany_search_apis_v1_search_full
    • Removedany_search_apis_v1_search_smart
  2. 24 tool updates
    • Addedaccount
    • Removedget_details
    • Removedpost_anthropic_websearch_search
    • Changedpost_byteplus_fetch4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / Url
        Removed value: -{
        -  "description": "The URL to fetch. Required.",
        -  "example": "https://example.com",
        -  "type": "string"
        -}
      • addedInput schema / properties / body
        Added value: +{
        +  "properties": {
        +    "Url": {
        +      "description": "The URL to fetch. Required.",
        +      "example": "https://example.com",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "Url"
        +  ],
        +  "type": "object"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "Url"
        -]New value: +[
        +  "body"
        +]
    • Changedpost_byteplus_web_search8 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / Count
        Removed value: -{
        -  "default": 10,
        -  "description": "Number of results to return. Optional; default 10, maximum 20.",
        -  "example": 10,
        -  "maximum": 20,
        -  "type": "integer"
        -}
      • removedInput schema / properties / Filter
        Removed value: -{
        -  "description": "Optional result filter. Both fields are pipe-separated strings of full domains (max 5 each).",
        -  "properties": {
        -    "BlockHosts": {
        -      "description": "Exclude results from these full domains. Pipe-separated, max 5, e.g. \"reddit.com|quora.com\".",
        -      "example": "reddit.com|quora.com",
        -      "type": "string"
        -    },
        -    "Sites": {
        -      "description": "Restrict results to these full domains. Pipe-separated, max 5, e.g. \"bytedance.com|byteplus.com\". (Sending an array returns 10400 Invalid Parameter.)",
        -      "example": "bytedance.com|byteplus.com",
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
      • removedInput schema / properties / Language
        Removed value: -{
        -  "description": "Optional language hint in the upstream format, e.g. EN, ZH-HANS, ZH-HANT.",
        -  "example": "EN",
        -  "type": "string"
        -}
      • removedInput schema / properties / Query
        Removed value: -{
        -  "description": "The search query. Required. Max 400 characters; the upstream engine also effectively caps around 50 words.",
        -  "example": "OpenAI news",
        -  "maxLength": 400,
        -  "type": "string"
        -}
      • removedInput schema / properties / TimeRange
        Removed value: -{
        -  "description": "Optional recency window. One of the named windows OneDay / OneWeek / OneMonth / OneYear, or a custom range \"YYYY-MM-DD..YYYY-MM-DD\". Omit for no time filter. NOTE: values like \"week\"/\"month\" are silently ignored upstream.",
        -  "example": "OneWeek",
        -  "oneOf": [
        -    {
        -      "enum": [
        -        "OneDay",
        -        "OneWeek",
        -        "OneMonth",
        -        "OneYear"
        -      ],
        -      "type": "string"
        -    },
        -    {
        -      "description": "Custom range, e.g. 2026-08-01..2026-09-01.",
        -      "pattern": "^\\d{4}-\\d{2}-\\d{2}\\.\\.\\d{4}-\\d{2}-\\d{2}$",
        -      "type": "string"
        -    }
        -  ]
        -}
      • addedInput schema / properties / body
        Added value: +{
        +  "properties": {
        +    "Count": {
        +      "default": 10,
        +      "description": "Number of results to return. Optional; default 10, maximum 20.",
        +      "example": 10,
        +      "maximum": 20,
        +      "type": "integer"
        +    },
        +    "Filter": {
        +      "description": "Optional result filter. Both fields are pipe-separated strings of full domains (max 5 each).",
        +      "properties": {
        +        "BlockHosts": {
        +          "description": "Exclude results from these full domains. Pipe-separated, max 5, e.g. \"reddit.com|quora.com\".",
        +          "example": "reddit.com|quora.com",
        +          "type": "string"
        +        },
        +        "Sites": {
        +          "description": "Restrict results to these full domains. Pipe-separated, max 5, e.g. \"bytedance.com|byteplus.com\". (Sending an array returns 10400 Invalid Parameter.)",
        +          "example": "bytedance.com|byteplus.com",
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "Language": {
        +      "description": "Optional language hint in the upstream format, e.g. EN, ZH-HANS, ZH-HANT.",
        +      "example": "EN",
        +      "type": "string"
        +    },
        +    "Query": {
        +      "description": "The search query. Required. Max 400 characters; the upstream engine also effectively caps around 50 words.",
        +      "example": "OpenAI news",
        +      "maxLength": 400,
        +      "type": "string"
        +    },
        +    "TimeRange": {
        +      "description": "Optional recency window. One of the named windows OneDay / OneWeek / OneMonth / OneYear, or a custom range \"YYYY-MM-DD..YYYY-MM-DD\". Omit for no time filter. NOTE: values like \"week\"/\"month\" are silently ignored upstream.",
        +      "example": "OneWeek",
        +      "oneOf": [
        +        {
        +          "enum": [
        +            "OneDay",
        +            "OneWeek",
        +            "OneMonth",
        +            "OneYear"
        +          ],
        +          "type": "string"
        +        },
        +        {
        +          "description": "Custom range, e.g. 2026-08-01..2026-09-01.",
        +          "pattern": "^\\d{4}-\\d{2}-\\d{2}\\.\\.\\d{4}-\\d{2}-\\d{2}$",
        +          "type": "string"
        +        }
        +      ]
        +    }
        +  },
        +  "required": [
        +    "Query"
        +  ],
        +  "type": "object"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "Query"
        -]New value: +[
        +  "body"
        +]
    • Changedpost_exa_agent_runs6 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / body
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "effort": {
        +      "default": "minimal",
        +      "description": "Only minimal effort is supported; omitted, empty and null values normalize to minimal.",
        +      "enum": [
        +        null,
        +        "",
        +        "minimal"
        +      ],
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "query": {
        +      "description": "Non-empty query after trimming whitespace.",
        +      "pattern": "\\S",
        +      "type": "string"
        +    },
        +    "systemPrompt": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "query"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / effort
        Removed value: -{
        -  "default": "minimal",
        -  "description": "Only minimal effort is supported; omitted, empty and null values normalize to minimal.",
        -  "enum": [
        -    null,
        -    "",
        -    "minimal"
        -  ],
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • removedInput schema / properties / query
        Removed value: -{
        -  "description": "Non-empty query after trimming whitespace.",
        -  "pattern": "\\S",
        -  "type": "string"
        -}
      • removedInput schema / properties / systemPrompt
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • changedInput schema / required
        Previous value: -[
        -  "Idempotency-Key",
        -  "query"
        -]New value: +[
        +  "Idempotency-Key",
        +  "body"
        +]
    • Changedpost_exa_answer8 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / body
        Added value: +{
        +  "properties": {
        +    "outputSchema": {
        +      "description": "JSON Schema for a structured answer output.",
        +      "type": "object"
        +    },
        +    "query": {
        +      "description": "The question to answer.",
        +      "example": "Which manufacturers had the top three global EV sales in 2025?",
        +      "type": "string"
        +    },
        +    "stream": {
        +      "default": false,
        +      "enum": [
        +        false
        +      ],
        +      "type": "boolean"
        +    },
        +    "text": {
        +      "description": "Include the full page text of each citation.",
        +      "type": "boolean"
        +    },
        +    "type": {
        +      "description": "Retrieval mode used to gather sources before answering.",
        +      "enum": [
        +        "auto",
        +        "fast",
        +        "instant",
        +        "deep-lite",
        +        "deep",
        +        "deep-reasoning"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "query"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / outputSchema
        Removed value: -{
        -  "description": "JSON Schema for a structured answer output.",
        -  "type": "object"
        -}
      • removedInput schema / properties / query
        Removed value: -{
        -  "description": "The question to answer.",
        -  "example": "Which manufacturers had the top three global EV sales in 2025?",
        -  "type": "string"
        -}
      • removedInput schema / properties / stream
        Removed value: -{
        -  "default": false,
        -  "enum": [
        -    false
        -  ],
        -  "type": "boolean"
        -}
      • removedInput schema / properties / text
        Removed value: -{
        -  "description": "Include the full page text of each citation.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / type
        Removed value: -{
        -  "description": "Retrieval mode used to gather sources before answering.",
        -  "enum": [
        -    "auto",
        -    "fast",
        -    "instant",
        -    "deep-lite",
        -    "deep",
        -    "deep-reasoning"
        -  ],
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "body"
        +]
    • Changedpost_exa_contents10 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / body
        Added value: +{
        +  "properties": {
        +    "highlights": {
        +      "description": "Return highlighted relevant snippets.",
        +      "type": "boolean"
        +    },
        +    "ids": {
        +      "description": "The URLs (or Exa result ids) to fetch contents for.",
        +      "example": [
        +        "https://example.com/article"
        +      ],
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "livecrawl": {
        +      "description": "Freshness policy: always live-crawl, fall back to live crawl on cache miss, or never live-crawl.",
        +      "enum": [
        +        "always",
        +        "fallback",
        +        "never"
        +      ],
        +      "type": "string"
        +    },
        +    "stream": {
        +      "default": false,
        +      "enum": [
        +        false
        +      ],
        +      "type": "boolean"
        +    },
        +    "subpages": {
        +      "description": "Number of linked subpages to also fetch.",
        +      "type": "integer"
        +    },
        +    "summary": {
        +      "description": "Return an AI-generated summary of the page.",
        +      "type": "boolean"
        +    },
        +    "text": {
        +      "description": "Return the full page text.",
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "ids"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / highlights
        Removed value: -{
        -  "description": "Return highlighted relevant snippets.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / ids
        Removed value: -{
        -  "description": "The URLs (or Exa result ids) to fetch contents for.",
        -  "example": [
        -    "https://example.com/article"
        -  ],
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / livecrawl
        Removed value: -{
        -  "description": "Freshness policy: always live-crawl, fall back to live crawl on cache miss, or never live-crawl.",
        -  "enum": [
        -    "always",
        -    "fallback",
        -    "never"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / stream
        Removed value: -{
        -  "default": false,
        -  "enum": [
        -    false
        -  ],
        -  "type": "boolean"
        -}
      • removedInput schema / properties / subpages
        Removed value: -{
        -  "description": "Number of linked subpages to also fetch.",
        -  "type": "integer"
        -}
      • removedInput schema / properties / summary
        Removed value: -{
        -  "description": "Return an AI-generated summary of the page.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / text
        Removed value: -{
        -  "description": "Return the full page text.",
        -  "type": "boolean"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "ids"
        -]New value: +[
        +  "body"
        +]
    • Changedpost_exa_search15 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / body
        Added value: +{
        +  "properties": {
        +    "category": {
        +      "description": "Optional hint about the kind of pages to prioritize.",
        +      "enum": [
        +        "company",
        +        "research paper",
        +        "news",
        +        "personal site",
        +        "financial report",
        +        "people"
        +      ],
        +      "type": "string"
        +    },
        +    "contents": {
        +      "description": "Content options to return alongside each result.",
        +      "properties": {
        +        "highlights": {
        +          "description": "Return highlighted relevant snippets.",
        +          "type": "boolean"
        +        },
        +        "summary": {
        +          "description": "Return an AI-generated summary of the page.",
        +          "type": "boolean"
        +        },
        +        "text": {
        +          "description": "Return the full page text.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "endPublishedDate": {
        +      "description": "Only return results published on or before this ISO 8601 date.",
        +      "format": "date-time",
        +      "type": "string"
        +    },
        +    "excludeDomains": {
        +      "description": "Exclude results from these domains.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "includeDomains": {
        +      "description": "Only return results from these domains.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "numResults": {
        +      "default": 10,
        +      "description": "Number of results to return.",
        +      "maximum": 100,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "outputSchema": {
        +      "description": "JSON Schema used to synthesize a structured output from the results.",
        +      "type": "object"
        +    },
        +    "query": {
        +      "description": "The natural-language search query.",
        +      "example": "latest evaluation frameworks for AI agents",
        +      "type": "string"
        +    },
        +    "startPublishedDate": {
        +      "description": "Only return results published on or after this ISO 8601 date.",
        +      "format": "date-time",
        +      "type": "string"
        +    },
        +    "stream": {
        +      "default": false,
        +      "enum": [
        +        false
        +      ],
        +      "type": "boolean"
        +    },
        +    "systemPrompt": {
        +      "description": "Instruction that guides how the structured output is generated.",
        +      "type": "string"
        +    },
        +    "type": {
        +      "default": "auto",
        +      "description": "Search mode. auto lets Exa choose; the deep modes trade latency for higher-quality retrieval.",
        +      "enum": [
        +        "auto",
        +        "fast",
        +        "instant",
        +        "deep-lite",
        +        "deep",
        +        "deep-reasoning"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "query"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / category
        Removed value: -{
        -  "description": "Optional hint about the kind of pages to prioritize.",
        -  "enum": [
        -    "company",
        -    "research paper",
        -    "news",
        -    "personal site",
        -    "financial report",
        -    "people"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / contents
        Removed value: -{
        -  "description": "Content options to return alongside each result.",
        -  "properties": {
        -    "highlights": {
        -      "description": "Return highlighted relevant snippets.",
        -      "type": "boolean"
        -    },
        -    "summary": {
        -      "description": "Return an AI-generated summary of the page.",
        -      "type": "boolean"
        -    },
        -    "text": {
        -      "description": "Return the full page text.",
        -      "type": "boolean"
        -    }
        -  },
        -  "type": "object"
        -}
      • removedInput schema / properties / endPublishedDate
        Removed value: -{
        -  "description": "Only return results published on or before this ISO 8601 date.",
        -  "format": "date-time",
        -  "type": "string"
        -}
      • removedInput schema / properties / excludeDomains
        Removed value: -{
        -  "description": "Exclude results from these domains.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / includeDomains
        Removed value: -{
        -  "description": "Only return results from these domains.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / numResults
        Removed value: -{
        -  "default": 10,
        -  "description": "Number of results to return.",
        -  "maximum": 100,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • removedInput schema / properties / outputSchema
        Removed value: -{
        -  "description": "JSON Schema used to synthesize a structured output from the results.",
        -  "type": "object"
        -}
      • removedInput schema / properties / query
        Removed value: -{
        -  "description": "The natural-language search query.",
        -  "example": "latest evaluation frameworks for AI agents",
        -  "type": "string"
        -}
      • removedInput schema / properties / startPublishedDate
        Removed value: -{
        -  "description": "Only return results published on or after this ISO 8601 date.",
        -  "format": "date-time",
        -  "type": "string"
        -}
      • removedInput schema / properties / stream
        Removed value: -{
        -  "default": false,
        -  "enum": [
        -    false
        -  ],
        -  "type": "boolean"
        -}
      • removedInput schema / properties / systemPrompt
        Removed value: -{
        -  "description": "Instruction that guides how the structured output is generated.",
        -  "type": "string"
        -}
      • removedInput schema / properties / type
        Removed value: -{
        -  "default": "auto",
        -  "description": "Search mode. auto lets Exa choose; the deep modes trade latency for higher-quality retrieval.",
        -  "enum": [
        -    "auto",
        -    "fast",
        -    "instant",
        -    "deep-lite",
        -    "deep",
        -    "deep-reasoning"
        -  ],
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "body"
        +]
    • Changedpost_firecrawl_batch_scrape11 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / body
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "excludeTags": {
        +      "items": {
        +        "description": "Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded.",
        +        "pattern": "^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])",
        +        "type": "string",
        +        "x-aisa-max-utf8-bytes": 128
        +      },
        +      "maxItems": 50,
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "includeTags": {
        +      "items": {
        +        "description": "Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded.",
        +        "pattern": "^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])",
        +        "type": "string",
        +        "x-aisa-max-utf8-bytes": 128
        +      },
        +      "maxItems": 50,
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "maxAge": {
        +      "maximum": 31536000000,
        +      "minimum": 0,
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "maxConcurrency": {
        +      "maximum": 20,
        +      "minimum": 1,
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "minAge": {
        +      "maximum": 31536000000,
        +      "minimum": 0,
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "onlyMainContent": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "timeout": {
        +      "maximum": 300000,
        +      "minimum": 1000,
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "urls": {
        +      "description": "URLs must also be unique after trimming whitespace and trailing slashes.",
        +      "items": {
        +        "description": "HTTPS URL with a hostname, without credentials or fragment. Trimmed input ending in .pdf (case insensitive) is not supported.",
        +        "pattern": "^\\s*[hH][tT][tT][pP][sS]://",
        +        "type": "string"
        +      },
        +      "maxItems": 1000,
        +      "minItems": 1,
        +      "type": "array",
        +      "uniqueItems": true
        +    }
        +  },
        +  "required": [
        +    "urls"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / excludeTags
        Removed value: -{
        -  "items": {
        -    "description": "Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded.",
        -    "pattern": "^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])",
        -    "type": "string",
        -    "x-aisa-max-utf8-bytes": 128
        -  },
        -  "maxItems": 50,
        -  "type": [
        -    "array",
        -    "null"
        -  ]
        -}
      • removedInput schema / properties / includeTags
        Removed value: -{
        -  "items": {
        -    "description": "Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded.",
        -    "pattern": "^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])",
        -    "type": "string",
        -    "x-aisa-max-utf8-bytes": 128
        -  },
        -  "maxItems": 50,
        -  "type": [
        -    "array",
        -    "null"
        -  ]
        -}
      • removedInput schema / properties / maxAge
        Removed value: -{
        -  "maximum": 31536000000,
        -  "minimum": 0,
        -  "type": [
        -    "integer",
        -    "null"
        -  ]
        -}
      • removedInput schema / properties / maxConcurrency
        Removed value: -{
        -  "maximum": 20,
        -  "minimum": 1,
        -  "type": [
        -    "integer",
        -    "null"
        -  ]
        -}
      • removedInput schema / properties / minAge
        Removed value: -{
        -  "maximum": 31536000000,
        -  "minimum": 0,
        -  "type": [
        -    "integer",
        -    "null"
        -  ]
        -}
      • removedInput schema / properties / onlyMainContent
        Removed value: -{
        -  "type": [
        -    "boolean",
        -    "null"
        -  ]
        -}
      • removedInput schema / properties / timeout
        Removed value: -{
        -  "maximum": 300000,
        -  "minimum": 1000,
        -  "type": [
        -    "integer",
        -    "null"
        -  ]
        -}
      • removedInput schema / properties / urls
        Removed value: -{
        -  "description": "URLs must also be unique after trimming whitespace and trailing slashes.",
        -  "items": {
        -    "description": "HTTPS URL with a hostname, without credentials or fragment. Trimmed input ending in .pdf (case insensitive) is not supported.",
        -    "pattern": "^\\s*[hH][tT][tT][pP][sS]://",
        -    "type": "string"
        -  },
        -  "maxItems": 1000,
        -  "minItems": 1,
        -  "type": "array",
        -  "uniqueItems": true
        -}
      • changedInput schema / required
        Previous value: -[
        -  "Idempotency-Key",
        -  "urls"
        -]New value: +[
        +  "Idempotency-Key",
        +  "body"
        +]
    • Changedpost_firecrawl_crawl16 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / allowExternalLinks
        Removed value: -{
        -  "type": [
        -    "boolean",
        -    "null"
        -  ]
        -}
      • removedInput schema / properties / allowSubdomains
        Removed value: -{
        -  "type": [
        -    "boolean",
        -    "null"
        -  ]
        -}
      • addedInput schema / properties / body
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "allowExternalLinks": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "allowSubdomains": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "crawlEntireDomain": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "delay": {
        +      "maximum": 30,
        +      "minimum": 0,
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "excludePaths": {
        +      "items": {
        +        "description": "Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded.",
        +        "pattern": "^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])",
        +        "type": "string",
        +        "x-aisa-max-utf8-bytes": 256
        +      },
        +      "maxItems": 20,
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "ignoreQueryParameters": {
        +      "type": [
        +        "boolean",
        +        "null"
        +      ]
        +    },
        +    "includePaths": {
        +      "items": {
        +        "description": "Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded.",
        +        "pattern": "^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])",
        +        "type": "string",
        +        "x-aisa-max-utf8-bytes": 256
        +      },
        +      "maxItems": 20,
        +      "type": [
        +        "array",
        +        "null"
        +      ]
        +    },
        +    "limit": {
        +      "maximum": 1000,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "maxConcurrency": {
        +      "maximum": 20,
        +      "minimum": 1,
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "maxDiscoveryDepth": {
        +      "maximum": 10,
        +      "minimum": 0,
        +      "type": [
        +        "integer",
        +        "null"
        +      ]
        +    },
        +    "scrapeOptions": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "excludeTags": {
        +          "items": {
        +            "description": "Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded.",
        +            "pattern": "^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])",
        +            "type": "string",
        +            "x-aisa-max-utf8-bytes": 128
        +          },
        +          "maxItems": 50,
        +          "type": [
        +            "array",
        +            "null"
        +          ]
        +        },
        +        "includeTags": {
        +          "items": {
        +            "description": "Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded.",
        +            "pattern": "^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])",
        +            "type": "string",
        +            "x-aisa-max-utf8-bytes": 128
        +          },
        +          "maxItems": 50,
        +          "type": [
        +            "array",
        +            "null"
        +          ]
        +        },
        +        "maxAge": {
        +          "maximum": 31536000000,
        +          "minimum": 0,
        +          "type": [
        +            "integer",
        +            "null"
        +          ]
        +        },
        +        "minAge": {
        +          "maximum": 31536000000,
        +          "minimum": 0,
        +          "type": [
        +            "integer",
        +            "null"
        +          ]
        +        },
        +        "onlyMainContent": {
        +          "type": [
        +            "boolean",
        +            "null"
        +          ]
        +        },
        +        "timeout": {
        +          "maximum": 300000,
        +          "minimum": 1000,
        +          "type": [
        +            "integer",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": [
        +        "object",
        +        "null"
        +      ]
        +    },
        +    "sitemap": {
        +      "enum": [
        +        null,
        +        "skip",
        +        "include",
        +        "only"
        +      ],
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "url": {
        +      "description": "HTTPS URL with a hostname, without credentials or fragment. Trimmed input ending in .pdf (case insensitive) is not supported.",
        +      "pattern": "^\\s*[hH][tT][tT][pP][sS]://",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "url",
        +    "limit"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / crawlEntireDomain
        Removed value: -{
        -  "type": [
        -    "boolean",
        -    "null"
        -  ]
        -}
      • removedInput schema / properties / delay
        Removed value: -{
        -  "maximum": 30,
        -  "minimum": 0,
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedInput schema / properties / excludePaths
        Removed value: -{
        -  "items": {
        -    "description": "Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded.",
        -    "pattern": "^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])",
        -    "type": "string",
        -    "x-aisa-max-utf8-bytes": 256
        -  },
        -  "maxItems": 20,
        -  "type": [
        -    "array",
        -    "null"
        -  ]
        -}
      • removedInput schema / properties / ignoreQueryParameters
        Removed value: -{
        -  "type": [
        -    "boolean",
        -    "null"
        -  ]
        -}
      • removedInput schema / properties / includePaths
        Removed value: -{
        -  "items": {
        -    "description": "Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded.",
        -    "pattern": "^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])",
        -    "type": "string",
        -    "x-aisa-max-utf8-bytes": 256
        -  },
        -  "maxItems": 20,
        -  "type": [
        -    "array",
        -    "null"
        -  ]
        -}
      • removedInput schema / properties / limit
        Removed value: -{
        -  "maximum": 1000,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • removedInput schema / properties / maxConcurrency
        Removed value: -{
        -  "maximum": 20,
        -  "minimum": 1,
        -  "type": [
        -    "integer",
        -    "null"
        -  ]
        -}
      • removedInput schema / properties / maxDiscoveryDepth
        Removed value: -{
        -  "maximum": 10,
        -  "minimum": 0,
        -  "type": [
        -    "integer",
        -    "null"
        -  ]
        -}
      • removedInput schema / properties / scrapeOptions
        Removed value: -{
        -  "additionalProperties": {
        -    "not": {}
        -  },
        -  "properties": {
        -    "excludeTags": {
        -      "items": {
        -        "description": "Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded.",
        -        "pattern": "^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])",
        -        "type": "string",
        -        "x-aisa-max-utf8-bytes": 128
        -      },
        -      "maxItems": 50,
        -      "type": [
        -        "array",
        -        "null"
        -      ]
        -    },
        -    "includeTags": {
        -      "items": {
        -        "description": "Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded.",
        -        "pattern": "^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])",
        -        "type": "string",
        -        "x-aisa-max-utf8-bytes": 128
        -      },
        -      "maxItems": 50,
        -      "type": [
        -        "array",
        -        "null"
        -      ]
        -    },
        -    "maxAge": {
        -      "maximum": 31536000000,
        -      "minimum": 0,
        -      "type": [
        -        "integer",
        -        "null"
        -      ]
        -    },
        -    "minAge": {
        -      "maximum": 31536000000,
        -      "minimum": 0,
        -      "type": [
        -        "integer",
        -        "null"
        -      ]
        -    },
        -    "onlyMainContent": {
        -      "type": [
        -        "boolean",
        -        "null"
        -      ]
        -    },
        -    "timeout": {
        -      "maximum": 300000,
        -      "minimum": 1000,
        -      "type": [
        -        "integer",
        -        "null"
        -      ]
        -    }
        -  },
        -  "type": [
        -    "object",
        -    "null"
        -  ]
        -}
      • removedInput schema / properties / sitemap
        Removed value: -{
        -  "enum": [
        -    null,
        -    "skip",
        -    "include",
        -    "only"
        -  ],
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • removedInput schema / properties / url
        Removed value: -{
        -  "description": "HTTPS URL with a hostname, without credentials or fragment. Trimmed input ending in .pdf (case insensitive) is not supported.",
        -  "pattern": "^\\s*[hH][tT][tT][pP][sS]://",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "Idempotency-Key",
        -  "url",
        -  "limit"
        -]New value: +[
        +  "Idempotency-Key",
        +  "body"
        +]
    • Changedpost_firecrawl_map5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / body
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "limit": {
        +      "maximum": 100000,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "url": {
        +      "format": "https_url",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "limit",
        +    "url"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / limit
        Removed value: -{
        -  "maximum": 100000,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • removedInput schema / properties / url
        Removed value: -{
        -  "format": "https_url",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "limit",
        -  "url"
        -]New value: +[
        +  "body"
        +]
    • Changedpost_firecrawl_scrape7 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / body
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "formats": {
        +      "enum": [
        +        [
        +          "markdown"
        +        ]
        +      ],
        +      "items": {
        +        "type": "string"
        +      },
        +      "maxItems": 1,
        +      "minItems": 1,
        +      "type": "array"
        +    },
        +    "onlyCleanContent": {
        +      "enum": [
        +        false
        +      ],
        +      "type": "boolean"
        +    },
        +    "proxy": {
        +      "enum": [
        +        "basic"
        +      ],
        +      "type": "string"
        +    },
        +    "url": {
        +      "format": "https_url",
        +      "type": "string",
        +      "x-aisa-forbidden-suffixes": [
        +        ".pdf"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "proxy",
        +    "url"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / formats
        Removed value: -{
        -  "enum": [
        -    [
        -      "markdown"
        -    ]
        -  ],
        -  "items": {
        -    "type": "string"
        -  },
        -  "maxItems": 1,
        -  "minItems": 1,
        -  "type": "array"
        -}
      • removedInput schema / properties / onlyCleanContent
        Removed value: -{
        -  "enum": [
        -    false
        -  ],
        -  "type": "boolean"
        -}
      • removedInput schema / properties / proxy
        Removed value: -{
        -  "enum": [
        -    "basic"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / url
        Removed value: -{
        -  "format": "https_url",
        -  "type": "string",
        -  "x-aisa-forbidden-suffixes": [
        -    ".pdf"
        -  ]
        -}
      • changedInput schema / required
        Previous value: -[
        -  "proxy",
        -  "url"
        -]New value: +[
        +  "body"
        +]
    • Changedpost_firecrawl_search7 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / body
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "enterprise": {
        +      "default": false,
        +      "enum": [
        +        false
        +      ],
        +      "type": "boolean"
        +    },
        +    "limit": {
        +      "default": 10,
        +      "maximum": 100,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "query": {
        +      "maxLength": 2000,
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "sources": {
        +      "default": [
        +        "web"
        +      ],
        +      "enum": [
        +        [
        +          "web"
        +        ]
        +      ],
        +      "items": {
        +        "type": "string"
        +      },
        +      "maxItems": 1,
        +      "minItems": 1,
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "query"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / enterprise
        Removed value: -{
        -  "default": false,
        -  "enum": [
        -    false
        -  ],
        -  "type": "boolean"
        -}
      • removedInput schema / properties / limit
        Removed value: -{
        -  "default": 10,
        -  "maximum": 100,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • removedInput schema / properties / query
        Removed value: -{
        -  "maxLength": 2000,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • removedInput schema / properties / sources
        Removed value: -{
        -  "default": [
        -    "web"
        -  ],
        -  "enum": [
        -    [
        -      "web"
        -    ]
        -  ],
        -  "items": {
        -    "type": "string"
        -  },
        -  "maxItems": 1,
        -  "minItems": 1,
        -  "type": "array"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "body"
        +]
    • Removedpost_openai_websearch_search
    • Changedpost_perplexity_sonar16 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / body
        Added value: +{
        +  "properties": {
        +    "frequency_penalty": {
        +      "default": 1,
        +      "description": "Penalizes new tokens based on their existing frequency in the text so far. Positive values decrease the likelihood of repeating the same line verbatim.",
        +      "maximum": 2,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "max_tokens": {
        +      "description": "The maximum number of tokens to generate in the response.",
        +      "type": "integer"
        +    },
        +    "messages": {
        +      "description": "A list of messages comprising the conversation so far.",
        +      "items": {
        +        "properties": {
        +          "content": {
        +            "description": "The content of the message.",
        +            "type": "string"
        +          },
        +          "role": {
        +            "description": "The role of the message author.",
        +            "enum": [
        +              "system",
        +              "user",
        +              "assistant"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "role",
        +          "content"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "model": {
        +      "description": "The Sonar model to use.",
        +      "enum": [
        +        "sonar",
        +        "sonar-pro",
        +        "sonar-reasoning-pro",
        +        "sonar-deep-research"
        +      ],
        +      "type": "string"
        +    },
        +    "presence_penalty": {
        +      "default": 0,
        +      "description": "Penalizes new tokens based on whether they appear in the text so far. Positive values increase the likelihood of talking about new topics.",
        +      "maximum": 2,
        +      "minimum": -2,
        +      "type": "number"
        +    },
        +    "return_citations": {
        +      "default": true,
        +      "description": "Whether to return citations and search results in the response.",
        +      "type": "boolean"
        +    },
        +    "search_context": {
        +      "default": "low",
        +      "description": "Controls how much search context to use. Affects per-request cost.",
        +      "enum": [
        +        "low",
        +        "medium",
        +        "high"
        +      ],
        +      "type": "string"
        +    },
        +    "search_domain_filter": {
        +      "description": "Limit search to specific domains.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "search_recency_filter": {
        +      "description": "Filter search results by recency.",
        +      "enum": [
        +        "month",
        +        "week",
        +        "day",
        +        "hour"
        +      ],
        +      "type": "string"
        +    },
        +    "stream": {
        +      "default": false,
        +      "description": "Whether to stream the response using server-sent events.",
        +      "type": "boolean"
        +    },
        +    "temperature": {
        +      "default": 0.2,
        +      "description": "Sampling temperature between 0 and 2. Lower values make output more focused and deterministic.",
        +      "maximum": 2,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "top_k": {
        +      "default": 0,
        +      "description": "The number of tokens to keep for top-k filtering.",
        +      "maximum": 2048,
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "top_p": {
        +      "default": 0.9,
        +      "description": "Nucleus sampling parameter. The model considers tokens with top_p probability mass.",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "model",
        +    "messages"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / frequency_penalty
        Removed value: -{
        -  "default": 1,
        -  "description": "Penalizes new tokens based on their existing frequency in the text so far. Positive values decrease the likelihood of repeating the same line verbatim.",
        -  "maximum": 2,
        -  "minimum": 0,
        -  "type": "number"
        -}
      • removedInput schema / properties / max_tokens
        Removed value: -{
        -  "description": "The maximum number of tokens to generate in the response.",
        -  "type": "integer"
        -}
      • removedInput schema / properties / messages
        Removed value: -{
        -  "description": "A list of messages comprising the conversation so far.",
        -  "items": {
        -    "properties": {
        -      "content": {
        -        "description": "The content of the message.",
        -        "type": "string"
        -      },
        -      "role": {
        -        "description": "The role of the message author.",
        -        "enum": [
        -          "system",
        -          "user",
        -          "assistant"
        -        ],
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "role",
        -      "content"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / model
        Removed value: -{
        -  "description": "The Sonar model to use.",
        -  "enum": [
        -    "sonar",
        -    "sonar-pro",
        -    "sonar-reasoning-pro",
        -    "sonar-deep-research"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / presence_penalty
        Removed value: -{
        -  "default": 0,
        -  "description": "Penalizes new tokens based on whether they appear in the text so far. Positive values increase the likelihood of talking about new topics.",
        -  "maximum": 2,
        -  "minimum": -2,
        -  "type": "number"
        -}
      • removedInput schema / properties / return_citations
        Removed value: -{
        -  "default": true,
        -  "description": "Whether to return citations and search results in the response.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / search_context
        Removed value: -{
        -  "default": "low",
        -  "description": "Controls how much search context to use. Affects per-request cost.",
        -  "enum": [
        -    "low",
        -    "medium",
        -    "high"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / search_domain_filter
        Removed value: -{
        -  "description": "Limit search to specific domains.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / search_recency_filter
        Removed value: -{
        -  "description": "Filter search results by recency.",
        -  "enum": [
        -    "month",
        -    "week",
        -    "day",
        -    "hour"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / stream
        Removed value: -{
        -  "default": false,
        -  "description": "Whether to stream the response using server-sent events.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / temperature
        Removed value: -{
        -  "default": 0.2,
        -  "description": "Sampling temperature between 0 and 2. Lower values make output more focused and deterministic.",
        -  "maximum": 2,
        -  "minimum": 0,
        -  "type": "number"
        -}
      • removedInput schema / properties / top_k
        Removed value: -{
        -  "default": 0,
        -  "description": "The number of tokens to keep for top-k filtering.",
        -  "maximum": 2048,
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedInput schema / properties / top_p
        Removed value: -{
        -  "default": 0.9,
        -  "description": "Nucleus sampling parameter. The model considers tokens with top_p probability mass.",
        -  "maximum": 1,
        -  "minimum": 0,
        -  "type": "number"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "model",
        -  "messages"
        -]New value: +[
        +  "body"
        +]
    • Changedpost_perplexity_sonar_deep_research16 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / body
        Added value: +{
        +  "properties": {
        +    "frequency_penalty": {
        +      "default": 1,
        +      "description": "Penalizes new tokens based on their existing frequency in the text so far. Positive values decrease the likelihood of repeating the same line verbatim.",
        +      "maximum": 2,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "max_tokens": {
        +      "description": "The maximum number of tokens to generate in the response.",
        +      "type": "integer"
        +    },
        +    "messages": {
        +      "description": "A list of messages comprising the conversation so far.",
        +      "items": {
        +        "properties": {
        +          "content": {
        +            "description": "The content of the message.",
        +            "type": "string"
        +          },
        +          "role": {
        +            "description": "The role of the message author.",
        +            "enum": [
        +              "system",
        +              "user",
        +              "assistant"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "role",
        +          "content"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "model": {
        +      "description": "The Sonar model to use.",
        +      "enum": [
        +        "sonar",
        +        "sonar-pro",
        +        "sonar-reasoning-pro",
        +        "sonar-deep-research"
        +      ],
        +      "type": "string"
        +    },
        +    "presence_penalty": {
        +      "default": 0,
        +      "description": "Penalizes new tokens based on whether they appear in the text so far. Positive values increase the likelihood of talking about new topics.",
        +      "maximum": 2,
        +      "minimum": -2,
        +      "type": "number"
        +    },
        +    "return_citations": {
        +      "default": true,
        +      "description": "Whether to return citations and search results in the response.",
        +      "type": "boolean"
        +    },
        +    "search_context": {
        +      "default": "low",
        +      "description": "Controls how much search context to use. Affects per-request cost.",
        +      "enum": [
        +        "low",
        +        "medium",
        +        "high"
        +      ],
        +      "type": "string"
        +    },
        +    "search_domain_filter": {
        +      "description": "Limit search to specific domains.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "search_recency_filter": {
        +      "description": "Filter search results by recency.",
        +      "enum": [
        +        "month",
        +        "week",
        +        "day",
        +        "hour"
        +      ],
        +      "type": "string"
        +    },
        +    "stream": {
        +      "default": false,
        +      "description": "Whether to stream the response using server-sent events.",
        +      "type": "boolean"
        +    },
        +    "temperature": {
        +      "default": 0.2,
        +      "description": "Sampling temperature between 0 and 2. Lower values make output more focused and deterministic.",
        +      "maximum": 2,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "top_k": {
        +      "default": 0,
        +      "description": "The number of tokens to keep for top-k filtering.",
        +      "maximum": 2048,
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "top_p": {
        +      "default": 0.9,
        +      "description": "Nucleus sampling parameter. The model considers tokens with top_p probability mass.",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "model",
        +    "messages"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / frequency_penalty
        Removed value: -{
        -  "default": 1,
        -  "description": "Penalizes new tokens based on their existing frequency in the text so far. Positive values decrease the likelihood of repeating the same line verbatim.",
        -  "maximum": 2,
        -  "minimum": 0,
        -  "type": "number"
        -}
      • removedInput schema / properties / max_tokens
        Removed value: -{
        -  "description": "The maximum number of tokens to generate in the response.",
        -  "type": "integer"
        -}
      • removedInput schema / properties / messages
        Removed value: -{
        -  "description": "A list of messages comprising the conversation so far.",
        -  "items": {
        -    "properties": {
        -      "content": {
        -        "description": "The content of the message.",
        -        "type": "string"
        -      },
        -      "role": {
        -        "description": "The role of the message author.",
        -        "enum": [
        -          "system",
        -          "user",
        -          "assistant"
        -        ],
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "role",
        -      "content"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / model
        Removed value: -{
        -  "description": "The Sonar model to use.",
        -  "enum": [
        -    "sonar",
        -    "sonar-pro",
        -    "sonar-reasoning-pro",
        -    "sonar-deep-research"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / presence_penalty
        Removed value: -{
        -  "default": 0,
        -  "description": "Penalizes new tokens based on whether they appear in the text so far. Positive values increase the likelihood of talking about new topics.",
        -  "maximum": 2,
        -  "minimum": -2,
        -  "type": "number"
        -}
      • removedInput schema / properties / return_citations
        Removed value: -{
        -  "default": true,
        -  "description": "Whether to return citations and search results in the response.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / search_context
        Removed value: -{
        -  "default": "low",
        -  "description": "Controls how much search context to use. Affects per-request cost.",
        -  "enum": [
        -    "low",
        -    "medium",
        -    "high"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / search_domain_filter
        Removed value: -{
        -  "description": "Limit search to specific domains.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / search_recency_filter
        Removed value: -{
        -  "description": "Filter search results by recency.",
        -  "enum": [
        -    "month",
        -    "week",
        -    "day",
        -    "hour"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / stream
        Removed value: -{
        -  "default": false,
        -  "description": "Whether to stream the response using server-sent events.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / temperature
        Removed value: -{
        -  "default": 0.2,
        -  "description": "Sampling temperature between 0 and 2. Lower values make output more focused and deterministic.",
        -  "maximum": 2,
        -  "minimum": 0,
        -  "type": "number"
        -}
      • removedInput schema / properties / top_k
        Removed value: -{
        -  "default": 0,
        -  "description": "The number of tokens to keep for top-k filtering.",
        -  "maximum": 2048,
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedInput schema / properties / top_p
        Removed value: -{
        -  "default": 0.9,
        -  "description": "Nucleus sampling parameter. The model considers tokens with top_p probability mass.",
        -  "maximum": 1,
        -  "minimum": 0,
        -  "type": "number"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "model",
        -  "messages"
        -]New value: +[
        +  "body"
        +]
    • Changedpost_perplexity_sonar_pro16 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / body
        Added value: +{
        +  "properties": {
        +    "frequency_penalty": {
        +      "default": 1,
        +      "description": "Penalizes new tokens based on their existing frequency in the text so far. Positive values decrease the likelihood of repeating the same line verbatim.",
        +      "maximum": 2,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "max_tokens": {
        +      "description": "The maximum number of tokens to generate in the response.",
        +      "type": "integer"
        +    },
        +    "messages": {
        +      "description": "A list of messages comprising the conversation so far.",
        +      "items": {
        +        "properties": {
        +          "content": {
        +            "description": "The content of the message.",
        +            "type": "string"
        +          },
        +          "role": {
        +            "description": "The role of the message author.",
        +            "enum": [
        +              "system",
        +              "user",
        +              "assistant"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "role",
        +          "content"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "model": {
        +      "description": "The Sonar model to use.",
        +      "enum": [
        +        "sonar",
        +        "sonar-pro",
        +        "sonar-reasoning-pro",
        +        "sonar-deep-research"
        +      ],
        +      "type": "string"
        +    },
        +    "presence_penalty": {
        +      "default": 0,
        +      "description": "Penalizes new tokens based on whether they appear in the text so far. Positive values increase the likelihood of talking about new topics.",
        +      "maximum": 2,
        +      "minimum": -2,
        +      "type": "number"
        +    },
        +    "return_citations": {
        +      "default": true,
        +      "description": "Whether to return citations and search results in the response.",
        +      "type": "boolean"
        +    },
        +    "search_context": {
        +      "default": "low",
        +      "description": "Controls how much search context to use. Affects per-request cost.",
        +      "enum": [
        +        "low",
        +        "medium",
        +        "high"
        +      ],
        +      "type": "string"
        +    },
        +    "search_domain_filter": {
        +      "description": "Limit search to specific domains.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "search_recency_filter": {
        +      "description": "Filter search results by recency.",
        +      "enum": [
        +        "month",
        +        "week",
        +        "day",
        +        "hour"
        +      ],
        +      "type": "string"
        +    },
        +    "stream": {
        +      "default": false,
        +      "description": "Whether to stream the response using server-sent events.",
        +      "type": "boolean"
        +    },
        +    "temperature": {
        +      "default": 0.2,
        +      "description": "Sampling temperature between 0 and 2. Lower values make output more focused and deterministic.",
        +      "maximum": 2,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "top_k": {
        +      "default": 0,
        +      "description": "The number of tokens to keep for top-k filtering.",
        +      "maximum": 2048,
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "top_p": {
        +      "default": 0.9,
        +      "description": "Nucleus sampling parameter. The model considers tokens with top_p probability mass.",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "model",
        +    "messages"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / frequency_penalty
        Removed value: -{
        -  "default": 1,
        -  "description": "Penalizes new tokens based on their existing frequency in the text so far. Positive values decrease the likelihood of repeating the same line verbatim.",
        -  "maximum": 2,
        -  "minimum": 0,
        -  "type": "number"
        -}
      • removedInput schema / properties / max_tokens
        Removed value: -{
        -  "description": "The maximum number of tokens to generate in the response.",
        -  "type": "integer"
        -}
      • removedInput schema / properties / messages
        Removed value: -{
        -  "description": "A list of messages comprising the conversation so far.",
        -  "items": {
        -    "properties": {
        -      "content": {
        -        "description": "The content of the message.",
        -        "type": "string"
        -      },
        -      "role": {
        -        "description": "The role of the message author.",
        -        "enum": [
        -          "system",
        -          "user",
        -          "assistant"
        -        ],
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "role",
        -      "content"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / model
        Removed value: -{
        -  "description": "The Sonar model to use.",
        -  "enum": [
        -    "sonar",
        -    "sonar-pro",
        -    "sonar-reasoning-pro",
        -    "sonar-deep-research"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / presence_penalty
        Removed value: -{
        -  "default": 0,
        -  "description": "Penalizes new tokens based on whether they appear in the text so far. Positive values increase the likelihood of talking about new topics.",
        -  "maximum": 2,
        -  "minimum": -2,
        -  "type": "number"
        -}
      • removedInput schema / properties / return_citations
        Removed value: -{
        -  "default": true,
        -  "description": "Whether to return citations and search results in the response.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / search_context
        Removed value: -{
        -  "default": "low",
        -  "description": "Controls how much search context to use. Affects per-request cost.",
        -  "enum": [
        -    "low",
        -    "medium",
        -    "high"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / search_domain_filter
        Removed value: -{
        -  "description": "Limit search to specific domains.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / search_recency_filter
        Removed value: -{
        -  "description": "Filter search results by recency.",
        -  "enum": [
        -    "month",
        -    "week",
        -    "day",
        -    "hour"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / stream
        Removed value: -{
        -  "default": false,
        -  "description": "Whether to stream the response using server-sent events.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / temperature
        Removed value: -{
        -  "default": 0.2,
        -  "description": "Sampling temperature between 0 and 2. Lower values make output more focused and deterministic.",
        -  "maximum": 2,
        -  "minimum": 0,
        -  "type": "number"
        -}
      • removedInput schema / properties / top_k
        Removed value: -{
        -  "default": 0,
        -  "description": "The number of tokens to keep for top-k filtering.",
        -  "maximum": 2048,
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedInput schema / properties / top_p
        Removed value: -{
        -  "default": 0.9,
        -  "description": "Nucleus sampling parameter. The model considers tokens with top_p probability mass.",
        -  "maximum": 1,
        -  "minimum": 0,
        -  "type": "number"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "model",
        -  "messages"
        -]New value: +[
        +  "body"
        +]
    • Changedpost_perplexity_sonar_reasoning_pro16 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / body
        Added value: +{
        +  "properties": {
        +    "frequency_penalty": {
        +      "default": 1,
        +      "description": "Penalizes new tokens based on their existing frequency in the text so far. Positive values decrease the likelihood of repeating the same line verbatim.",
        +      "maximum": 2,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "max_tokens": {
        +      "description": "The maximum number of tokens to generate in the response.",
        +      "type": "integer"
        +    },
        +    "messages": {
        +      "description": "A list of messages comprising the conversation so far.",
        +      "items": {
        +        "properties": {
        +          "content": {
        +            "description": "The content of the message.",
        +            "type": "string"
        +          },
        +          "role": {
        +            "description": "The role of the message author.",
        +            "enum": [
        +              "system",
        +              "user",
        +              "assistant"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "role",
        +          "content"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "model": {
        +      "description": "The Sonar model to use.",
        +      "enum": [
        +        "sonar",
        +        "sonar-pro",
        +        "sonar-reasoning-pro",
        +        "sonar-deep-research"
        +      ],
        +      "type": "string"
        +    },
        +    "presence_penalty": {
        +      "default": 0,
        +      "description": "Penalizes new tokens based on whether they appear in the text so far. Positive values increase the likelihood of talking about new topics.",
        +      "maximum": 2,
        +      "minimum": -2,
        +      "type": "number"
        +    },
        +    "return_citations": {
        +      "default": true,
        +      "description": "Whether to return citations and search results in the response.",
        +      "type": "boolean"
        +    },
        +    "search_context": {
        +      "default": "low",
        +      "description": "Controls how much search context to use. Affects per-request cost.",
        +      "enum": [
        +        "low",
        +        "medium",
        +        "high"
        +      ],
        +      "type": "string"
        +    },
        +    "search_domain_filter": {
        +      "description": "Limit search to specific domains.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "search_recency_filter": {
        +      "description": "Filter search results by recency.",
        +      "enum": [
        +        "month",
        +        "week",
        +        "day",
        +        "hour"
        +      ],
        +      "type": "string"
        +    },
        +    "stream": {
        +      "default": false,
        +      "description": "Whether to stream the response using server-sent events.",
        +      "type": "boolean"
        +    },
        +    "temperature": {
        +      "default": 0.2,
        +      "description": "Sampling temperature between 0 and 2. Lower values make output more focused and deterministic.",
        +      "maximum": 2,
        +      "minimum": 0,
        +      "type": "number"
        +    },
        +    "top_k": {
        +      "default": 0,
        +      "description": "The number of tokens to keep for top-k filtering.",
        +      "maximum": 2048,
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "top_p": {
        +      "default": 0.9,
        +      "description": "Nucleus sampling parameter. The model considers tokens with top_p probability mass.",
        +      "maximum": 1,
        +      "minimum": 0,
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "model",
        +    "messages"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / frequency_penalty
        Removed value: -{
        -  "default": 1,
        -  "description": "Penalizes new tokens based on their existing frequency in the text so far. Positive values decrease the likelihood of repeating the same line verbatim.",
        -  "maximum": 2,
        -  "minimum": 0,
        -  "type": "number"
        -}
      • removedInput schema / properties / max_tokens
        Removed value: -{
        -  "description": "The maximum number of tokens to generate in the response.",
        -  "type": "integer"
        -}
      • removedInput schema / properties / messages
        Removed value: -{
        -  "description": "A list of messages comprising the conversation so far.",
        -  "items": {
        -    "properties": {
        -      "content": {
        -        "description": "The content of the message.",
        -        "type": "string"
        -      },
        -      "role": {
        -        "description": "The role of the message author.",
        -        "enum": [
        -          "system",
        -          "user",
        -          "assistant"
        -        ],
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "role",
        -      "content"
        -    ],
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / model
        Removed value: -{
        -  "description": "The Sonar model to use.",
        -  "enum": [
        -    "sonar",
        -    "sonar-pro",
        -    "sonar-reasoning-pro",
        -    "sonar-deep-research"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / presence_penalty
        Removed value: -{
        -  "default": 0,
        -  "description": "Penalizes new tokens based on whether they appear in the text so far. Positive values increase the likelihood of talking about new topics.",
        -  "maximum": 2,
        -  "minimum": -2,
        -  "type": "number"
        -}
      • removedInput schema / properties / return_citations
        Removed value: -{
        -  "default": true,
        -  "description": "Whether to return citations and search results in the response.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / search_context
        Removed value: -{
        -  "default": "low",
        -  "description": "Controls how much search context to use. Affects per-request cost.",
        -  "enum": [
        -    "low",
        -    "medium",
        -    "high"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / search_domain_filter
        Removed value: -{
        -  "description": "Limit search to specific domains.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / search_recency_filter
        Removed value: -{
        -  "description": "Filter search results by recency.",
        -  "enum": [
        -    "month",
        -    "week",
        -    "day",
        -    "hour"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / stream
        Removed value: -{
        -  "default": false,
        -  "description": "Whether to stream the response using server-sent events.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / temperature
        Removed value: -{
        -  "default": 0.2,
        -  "description": "Sampling temperature between 0 and 2. Lower values make output more focused and deterministic.",
        -  "maximum": 2,
        -  "minimum": 0,
        -  "type": "number"
        -}
      • removedInput schema / properties / top_k
        Removed value: -{
        -  "default": 0,
        -  "description": "The number of tokens to keep for top-k filtering.",
        -  "maximum": 2048,
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedInput schema / properties / top_p
        Removed value: -{
        -  "default": 0.9,
        -  "description": "Nucleus sampling parameter. The model considers tokens with top_p probability mass.",
        -  "maximum": 1,
        -  "minimum": 0,
        -  "type": "number"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "model",
        -  "messages"
        -]New value: +[
        +  "body"
        +]
    • Changedpost_scholar_search_explain7 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / body
        Added value: +{
        +  "properties": {
        +    "detail_level": {
        +      "default": "MODERATE",
        +      "description": "Level of detail in the explanation",
        +      "enum": [
        +        "BRIEF",
        +        "MODERATE",
        +        "DETAILED"
        +      ],
        +      "type": "string"
        +    },
        +    "language": {
        +      "default": "en",
        +      "description": "Language code for the explanation (e.g., en, zh, ar)",
        +      "example": "ar",
        +      "type": "string"
        +    },
        +    "response_mode": {
        +      "default": "NON_STREAMING",
        +      "description": "Format of the explanation response. COMPLETE and INCREMENTAL stream server-sent events; NON_STREAMING returns a JSON response.",
        +      "enum": [
        +        "COMPLETE",
        +        "INCREMENTAL",
        +        "NON_STREAMING"
        +      ],
        +      "type": "string"
        +    },
        +    "search_id": {
        +      "description": "ID of the search to explain",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "search_id"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / detail_level
        Removed value: -{
        -  "default": "MODERATE",
        -  "description": "Level of detail in the explanation",
        -  "enum": [
        -    "BRIEF",
        -    "MODERATE",
        -    "DETAILED"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / language
        Removed value: -{
        -  "default": "en",
        -  "description": "Language code for the explanation (e.g., en, zh, ar)",
        -  "example": "ar",
        -  "type": "string"
        -}
      • removedInput schema / properties / response_mode
        Removed value: -{
        -  "default": "NON_STREAMING",
        -  "description": "Format of the explanation response. COMPLETE and INCREMENTAL stream server-sent events; NON_STREAMING returns a JSON response.",
        -  "enum": [
        -    "COMPLETE",
        -    "INCREMENTAL",
        -    "NON_STREAMING"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / search_id
        Removed value: -{
        -  "description": "ID of the search to explain",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "search_id"
        -]New value: +[
        +  "body"
        +]
    • Changedpost_tavily_crawl20 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / allow_external
        Removed value: -{
        -  "default": true,
        -  "description": "Include external domain links in the final results list.",
        -  "type": "boolean"
        -}
      • addedInput schema / properties / body
        Added value: +{
        +  "properties": {
        +    "allow_external": {
        +      "default": true,
        +      "description": "Include external domain links in the final results list.",
        +      "type": "boolean"
        +    },
        +    "chunks_per_source": {
        +      "default": 3,
        +      "description": "Maximum number of relevant chunks returned per source.",
        +      "maximum": 5,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "exclude_domains": {
        +      "description": "Regex patterns to exclude specific domains or subdomains from crawling.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "exclude_paths": {
        +      "description": "Regex patterns to exclude URLs with specific path patterns.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "extract_depth": {
        +      "default": "basic",
        +      "description": "Depth of the extraction process.",
        +      "enum": [
        +        "basic",
        +        "advanced"
        +      ],
        +      "type": "string"
        +    },
        +    "format": {
        +      "default": "markdown",
        +      "description": "Format of the extracted web page content.",
        +      "enum": [
        +        "markdown",
        +        "text"
        +      ],
        +      "type": "string"
        +    },
        +    "include_favicon": {
        +      "default": false,
        +      "description": "Include the favicon URL for each result.",
        +      "type": "boolean"
        +    },
        +    "include_images": {
        +      "default": false,
        +      "description": "Include images in the crawl results.",
        +      "type": "boolean"
        +    },
        +    "include_usage": {
        +      "default": false,
        +      "description": "Include credit usage information in the response.",
        +      "type": "boolean"
        +    },
        +    "instructions": {
        +      "description": "Natural language instructions for the crawler.",
        +      "type": "string"
        +    },
        +    "limit": {
        +      "default": 50,
        +      "description": "Total number of links the crawler will process before stopping.",
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "max_breadth": {
        +      "default": 20,
        +      "description": "Max number of links to follow per level of the tree.",
        +      "maximum": 500,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "max_depth": {
        +      "default": 1,
        +      "description": "Max depth of the crawl.",
        +      "maximum": 5,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "select_domains": {
        +      "description": "Regex patterns to select crawling to specific domains or subdomains.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "select_paths": {
        +      "description": "Regex patterns to select only URLs with specific path patterns.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeout": {
        +      "default": 150,
        +      "description": "Maximum time in seconds to wait for the crawl operation.",
        +      "format": "float",
        +      "maximum": 150,
        +      "minimum": 10,
        +      "type": "number"
        +    },
        +    "url": {
        +      "description": "The root URL to begin the crawl.",
        +      "example": "docs.tavily.com",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "url"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / chunks_per_source
        Removed value: -{
        -  "default": 3,
        -  "description": "Maximum number of relevant chunks returned per source.",
        -  "maximum": 5,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • removedInput schema / properties / exclude_domains
        Removed value: -{
        -  "description": "Regex patterns to exclude specific domains or subdomains from crawling.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / exclude_paths
        Removed value: -{
        -  "description": "Regex patterns to exclude URLs with specific path patterns.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / extract_depth
        Removed value: -{
        -  "default": "basic",
        -  "description": "Depth of the extraction process.",
        -  "enum": [
        -    "basic",
        -    "advanced"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / format
        Removed value: -{
        -  "default": "markdown",
        -  "description": "Format of the extracted web page content.",
        -  "enum": [
        -    "markdown",
        -    "text"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / include_favicon
        Removed value: -{
        -  "default": false,
        -  "description": "Include the favicon URL for each result.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / include_images
        Removed value: -{
        -  "default": false,
        -  "description": "Include images in the crawl results.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / include_usage
        Removed value: -{
        -  "default": false,
        -  "description": "Include credit usage information in the response.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / instructions
        Removed value: -{
        -  "description": "Natural language instructions for the crawler.",
        -  "type": "string"
        -}
      • removedInput schema / properties / limit
        Removed value: -{
        -  "default": 50,
        -  "description": "Total number of links the crawler will process before stopping.",
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • removedInput schema / properties / max_breadth
        Removed value: -{
        -  "default": 20,
        -  "description": "Max number of links to follow per level of the tree.",
        -  "maximum": 500,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • removedInput schema / properties / max_depth
        Removed value: -{
        -  "default": 1,
        -  "description": "Max depth of the crawl.",
        -  "maximum": 5,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • removedInput schema / properties / select_domains
        Removed value: -{
        -  "description": "Regex patterns to select crawling to specific domains or subdomains.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / select_paths
        Removed value: -{
        -  "description": "Regex patterns to select only URLs with specific path patterns.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / timeout
        Removed value: -{
        -  "default": 150,
        -  "description": "Maximum time in seconds to wait for the crawl operation.",
        -  "format": "float",
        -  "maximum": 150,
        -  "minimum": 10,
        -  "type": "number"
        -}
      • removedInput schema / properties / url
        Removed value: -{
        -  "description": "The root URL to begin the crawl.",
        -  "example": "docs.tavily.com",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "body"
        +]
    • Changedpost_tavily_extract12 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / body
        Added value: +{
        +  "properties": {
        +    "chunks_per_source": {
        +      "default": 3,
        +      "description": "Maximum number of relevant chunks returned per source. Available only when query is provided.",
        +      "maximum": 5,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "extract_depth": {
        +      "default": "basic",
        +      "description": "Depth of the extraction process.",
        +      "enum": [
        +        "basic",
        +        "advanced"
        +      ],
        +      "type": "string"
        +    },
        +    "format": {
        +      "default": "markdown",
        +      "description": "Format of the extracted web page content.",
        +      "enum": [
        +        "markdown",
        +        "text"
        +      ],
        +      "type": "string"
        +    },
        +    "include_favicon": {
        +      "default": false,
        +      "description": "Include the favicon URL for each result.",
        +      "type": "boolean"
        +    },
        +    "include_images": {
        +      "default": false,
        +      "description": "Include a list of images extracted from the URLs.",
        +      "type": "boolean"
        +    },
        +    "include_usage": {
        +      "default": false,
        +      "description": "Include credit usage information in the response.",
        +      "type": "boolean"
        +    },
        +    "query": {
        +      "description": "User intent for reranking extracted content chunks.",
        +      "type": "string"
        +    },
        +    "timeout": {
        +      "description": "Maximum time in seconds to wait for URL extraction. If omitted, default timeouts depend on extract_depth: 10 seconds for basic and 30 seconds for advanced.",
        +      "format": "float",
        +      "maximum": 60,
        +      "minimum": 1,
        +      "type": "number"
        +    },
        +    "urls": {
        +      "description": "The URL or URLs to extract content from. A single URL string and an array of URL strings are both accepted.",
        +      "example": [
        +        "https://en.wikipedia.org/wiki/Artificial_intelligence"
        +      ],
        +      "oneOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        }
        +      ]
        +    }
        +  },
        +  "required": [
        +    "urls"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / chunks_per_source
        Removed value: -{
        -  "default": 3,
        -  "description": "Maximum number of relevant chunks returned per source. Available only when query is provided.",
        -  "maximum": 5,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • removedInput schema / properties / extract_depth
        Removed value: -{
        -  "default": "basic",
        -  "description": "Depth of the extraction process.",
        -  "enum": [
        -    "basic",
        -    "advanced"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / format
        Removed value: -{
        -  "default": "markdown",
        -  "description": "Format of the extracted web page content.",
        -  "enum": [
        -    "markdown",
        -    "text"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / include_favicon
        Removed value: -{
        -  "default": false,
        -  "description": "Include the favicon URL for each result.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / include_images
        Removed value: -{
        -  "default": false,
        -  "description": "Include a list of images extracted from the URLs.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / include_usage
        Removed value: -{
        -  "default": false,
        -  "description": "Include credit usage information in the response.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / query
        Removed value: -{
        -  "description": "User intent for reranking extracted content chunks.",
        -  "type": "string"
        -}
      • removedInput schema / properties / timeout
        Removed value: -{
        -  "description": "Maximum time in seconds to wait for URL extraction. If omitted, default timeouts depend on extract_depth: 10 seconds for basic and 30 seconds for advanced.",
        -  "format": "float",
        -  "maximum": 60,
        -  "minimum": 1,
        -  "type": "number"
        -}
      • removedInput schema / properties / urls
        Removed value: -{
        -  "description": "The URL or URLs to extract content from. A single URL string and an array of URL strings are both accepted.",
        -  "example": [
        -    "https://en.wikipedia.org/wiki/Artificial_intelligence"
        -  ],
        -  "oneOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    }
        -  ]
        -}
      • changedInput schema / required
        Previous value: -[
        -  "urls"
        -]New value: +[
        +  "body"
        +]
    • Changedpost_tavily_map15 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / allow_external
        Removed value: -{
        -  "default": true,
        -  "description": "Include external domain links in the final results list.",
        -  "type": "boolean"
        -}
      • addedInput schema / properties / body
        Added value: +{
        +  "properties": {
        +    "allow_external": {
        +      "default": true,
        +      "description": "Include external domain links in the final results list.",
        +      "type": "boolean"
        +    },
        +    "exclude_domains": {
        +      "description": "Regex patterns to exclude specific domains or subdomains from mapping.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "exclude_paths": {
        +      "description": "Regex patterns to exclude URLs with specific path patterns.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "include_usage": {
        +      "default": false,
        +      "description": "Include credit usage information in the response.",
        +      "type": "boolean"
        +    },
        +    "instructions": {
        +      "description": "Natural language instructions for the crawler.",
        +      "type": "string"
        +    },
        +    "limit": {
        +      "default": 50,
        +      "description": "Total number of links the crawler will process before stopping.",
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "max_breadth": {
        +      "default": 20,
        +      "description": "Max number of links to follow per level of the tree.",
        +      "maximum": 500,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "max_depth": {
        +      "default": 1,
        +      "description": "Max depth of the mapping.",
        +      "maximum": 5,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "select_domains": {
        +      "description": "Regex patterns to select crawling to specific domains or subdomains.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "select_paths": {
        +      "description": "Regex patterns to select only URLs with specific path patterns.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "timeout": {
        +      "default": 150,
        +      "description": "Maximum time in seconds to wait for the map operation.",
        +      "format": "float",
        +      "maximum": 150,
        +      "minimum": 10,
        +      "type": "number"
        +    },
        +    "url": {
        +      "description": "The root URL to begin the mapping.",
        +      "example": "docs.tavily.com",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "url"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / exclude_domains
        Removed value: -{
        -  "description": "Regex patterns to exclude specific domains or subdomains from mapping.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / exclude_paths
        Removed value: -{
        -  "description": "Regex patterns to exclude URLs with specific path patterns.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / include_usage
        Removed value: -{
        -  "default": false,
        -  "description": "Include credit usage information in the response.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / instructions
        Removed value: -{
        -  "description": "Natural language instructions for the crawler.",
        -  "type": "string"
        -}
      • removedInput schema / properties / limit
        Removed value: -{
        -  "default": 50,
        -  "description": "Total number of links the crawler will process before stopping.",
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • removedInput schema / properties / max_breadth
        Removed value: -{
        -  "default": 20,
        -  "description": "Max number of links to follow per level of the tree.",
        -  "maximum": 500,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • removedInput schema / properties / max_depth
        Removed value: -{
        -  "default": 1,
        -  "description": "Max depth of the mapping.",
        -  "maximum": 5,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • removedInput schema / properties / select_domains
        Removed value: -{
        -  "description": "Regex patterns to select crawling to specific domains or subdomains.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / select_paths
        Removed value: -{
        -  "description": "Regex patterns to select only URLs with specific path patterns.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / timeout
        Removed value: -{
        -  "default": 150,
        -  "description": "Maximum time in seconds to wait for the map operation.",
        -  "format": "float",
        -  "maximum": 150,
        -  "minimum": 10,
        -  "type": "number"
        -}
      • removedInput schema / properties / url
        Removed value: -{
        -  "description": "The root URL to begin the mapping.",
        -  "example": "docs.tavily.com",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "url"
        -]New value: +[
        +  "body"
        +]
    • Changedpost_tavily_search22 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / auto_parameters
        Removed value: -{
        -  "default": false,
        -  "description": "Automatically configure search parameters based on query content.",
        -  "type": "boolean"
        -}
      • addedInput schema / properties / body
        Added value: +{
        +  "properties": {
        +    "auto_parameters": {
        +      "default": false,
        +      "description": "Automatically configure search parameters based on query content.",
        +      "type": "boolean"
        +    },
        +    "chunks_per_source": {
        +      "default": 3,
        +      "description": "Maximum number of relevant chunks returned per source.",
        +      "maximum": 3,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "country": {
        +      "description": "Boost search results from a specific country. Available only when topic is general.",
        +      "enum": [
        +        "afghanistan",
        +        "albania",
        +        "algeria",
        +        "andorra",
        +        "angola",
        +        "argentina",
        +        "armenia",
        +        "australia",
        +        "austria",
        +        "azerbaijan",
        +        "bahamas",
        +        "bahrain",
        +        "bangladesh",
        +        "barbados",
        +        "belarus",
        +        "belgium",
        +        "belize",
        +        "benin",
        +        "bhutan",
        +        "bolivia",
        +        "bosnia and herzegovina",
        +        "botswana",
        +        "brazil",
        +        "brunei",
        +        "bulgaria",
        +        "burkina faso",
        +        "burundi",
        +        "cambodia",
        +        "cameroon",
        +        "canada",
        +        "cape verde",
        +        "central african republic",
        +        "chad",
        +        "chile",
        +        "china",
        +        "colombia",
        +        "comoros",
        +        "congo",
        +        "costa rica",
        +        "croatia",
        +        "cuba",
        +        "cyprus",
        +        "czech republic",
        +        "denmark",
        +        "djibouti",
        +        "dominican republic",
        +        "ecuador",
        +        "egypt",
        +        "el salvador",
        +        "equatorial guinea",
        +        "eritrea",
        +        "estonia",
        +        "ethiopia",
        +        "fiji",
        +        "finland",
        +        "france",
        +        "gabon",
        +        "gambia",
        +        "georgia",
        +        "germany",
        +        "ghana",
        +        "greece",
        +        "guatemala",
        +        "guinea",
        +        "haiti",
        +        "honduras",
        +        "hungary",
        +        "iceland",
        +        "india",
        +        "indonesia",
        +        "iran",
        +        "iraq",
        +        "ireland",
        +        "israel",
        +        "italy",
        +        "jamaica",
        +        "japan",
        +        "jordan",
        +        "kazakhstan",
        +        "kenya",
        +        "kuwait",
        +        "kyrgyzstan",
        +        "latvia",
        +        "lebanon",
        +        "lesotho",
        +        "liberia",
        +        "libya",
        +        "liechtenstein",
        +        "lithuania",
        +        "luxembourg",
        +        "madagascar",
        +        "malawi",
        +        "malaysia",
        +        "maldives",
        +        "mali",
        +        "malta",
        +        "mauritania",
        +        "mauritius",
        +        "mexico",
        +        "moldova",
        +        "monaco",
        +        "mongolia",
        +        "montenegro",
        +        "morocco",
        +        "mozambique",
        +        "myanmar",
        +        "namibia",
        +        "nepal",
        +        "netherlands",
        +        "new zealand",
        +        "nicaragua",
        +        "niger",
        +        "nigeria",
        +        "north korea",
        +        "north macedonia",
        +        "norway",
        +        "oman",
        +        "pakistan",
        +        "panama",
        +        "papua new guinea",
        +        "paraguay",
        +        "peru",
        +        "philippines",
        +        "poland",
        +        "portugal",
        +        "qatar",
        +        "romania",
        +        "russia",
        +        "rwanda",
        +        "saudi arabia",
        +        "senegal",
        +        "serbia",
        +        "singapore",
        +        "slovakia",
        +        "slovenia",
        +        "somalia",
        +        "south africa",
        +        "south korea",
        +        "south sudan",
        +        "spain",
        +        "sri lanka",
        +        "sudan",
        +        "sweden",
        +        "switzerland",
        +        "syria",
        +        "taiwan",
        +        "tajikistan",
        +        "tanzania",
        +        "thailand",
        +        "togo",
        +        "trinidad and tobago",
        +        "tunisia",
        +        "turkey",
        +        "turkmenistan",
        +        "uganda",
        +        "ukraine",
        +        "united arab emirates",
        +        "united kingdom",
        +        "united states",
        +        "uruguay",
        +        "uzbekistan",
        +        "venezuela",
        +        "vietnam",
        +        "yemen",
        +        "zambia",
        +        "zimbabwe"
        +      ],
        +      "type": "string"
        +    },
        +    "end_date": {
        +      "description": "Return results before the specified end date.",
        +      "example": "2025-12-29",
        +      "format": "date",
        +      "type": "string"
        +    },
        +    "exclude_domains": {
        +      "description": "List of domains to specifically exclude from the search results.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "maxItems": 150,
        +      "type": "array"
        +    },
        +    "include_answer": {
        +      "default": false,
        +      "description": "Include an LLM-generated answer. true uses the default answer mode; basic or advanced selects the answer generation mode.",
        +      "oneOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "enum": [
        +            "basic",
        +            "advanced"
        +          ],
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    "include_domains": {
        +      "description": "List of domains to specifically include in the search results.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "maxItems": 300,
        +      "type": "array"
        +    },
        +    "include_favicon": {
        +      "default": false,
        +      "description": "Include the favicon URL for each result.",
        +      "type": "boolean"
        +    },
        +    "include_image_descriptions": {
        +      "default": false,
        +      "description": "Add descriptive text for each image when include_images is true.",
        +      "type": "boolean"
        +    },
        +    "include_images": {
        +      "default": false,
        +      "description": "Perform an image search and include results.",
        +      "type": "boolean"
        +    },
        +    "include_raw_content": {
        +      "default": false,
        +      "description": "Include cleaned and parsed content for each search result. true or markdown returns markdown; text returns plain text and may increase latency.",
        +      "oneOf": [
        +        {
        +          "type": "boolean"
        +        },
        +        {
        +          "enum": [
        +            "markdown",
        +            "text"
        +          ],
        +          "type": "string"
        +        }
        +      ]
        +    },
        +    "include_usage": {
        +      "default": false,
        +      "description": "Include credit usage information in the response.",
        +      "type": "boolean"
        +    },
        +    "max_results": {
        +      "default": 5,
        +      "description": "Maximum number of search results to return.",
        +      "maximum": 20,
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    "query": {
        +      "description": "The search query to execute with Tavily.",
        +      "example": "Who is Leo Messi?",
        +      "type": "string"
        +    },
        +    "safe_search": {
        +      "default": false,
        +      "description": "Filter out adult or unsafe content from search results. Enterprise only; not supported when search_depth is fast or ultra-fast.",
        +      "type": "boolean"
        +    },
        +    "search_depth": {
        +      "default": "basic",
        +      "description": "Controls the latency vs. relevance tradeoff. advanced gives the highest relevance with higher latency and cost; basic is balanced; fast and ultra-fast optimize for lower latency.",
        +      "enum": [
        +        "advanced",
        +        "basic",
        +        "fast",
        +        "ultra-fast"
        +      ],
        +      "type": "string"
        +    },
        +    "start_date": {
        +      "description": "Return results after the specified start date.",
        +      "example": "2025-02-09",
        +      "format": "date",
        +      "type": "string"
        +    },
        +    "time_range": {
        +      "description": "Time range to filter results based on publish date.",
        +      "enum": [
        +        "day",
        +        "week",
        +        "month",
        +        "year",
        +        "d",
        +        "w",
        +        "m",
        +        "y"
        +      ],
        +      "type": "string"
        +    },
        +    "topic": {
        +      "default": "general",
        +      "description": "Category of the search.",
        +      "enum": [
        +        "general",
        +        "news",
        +        "finance"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "query"
        +  ],
        +  "type": "object"
        +}
      • removedInput schema / properties / chunks_per_source
        Removed value: -{
        -  "default": 3,
        -  "description": "Maximum number of relevant chunks returned per source.",
        -  "maximum": 3,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • removedInput schema / properties / country
        Removed value: -{
        -  "description": "Boost search results from a specific country. Available only when topic is general.",
        -  "enum": [
        -    "afghanistan",
        -    "albania",
        -    "algeria",
        -    "andorra",
        -    "angola",
        -    "argentina",
        -    "armenia",
        -    "australia",
        -    "austria",
        -    "azerbaijan",
        -    "bahamas",
        -    "bahrain",
        -    "bangladesh",
        -    "barbados",
        -    "belarus",
        -    "belgium",
        -    "belize",
        -    "benin",
        -    "bhutan",
        -    "bolivia",
        -    "bosnia and herzegovina",
        -    "botswana",
        -    "brazil",
        -    "brunei",
        -    "bulgaria",
        -    "burkina faso",
        -    "burundi",
        -    "cambodia",
        -    "cameroon",
        -    "canada",
        -    "cape verde",
        -    "central african republic",
        -    "chad",
        -    "chile",
        -    "china",
        -    "colombia",
        -    "comoros",
        -    "congo",
        -    "costa rica",
        -    "croatia",
        -    "cuba",
        -    "cyprus",
        -    "czech republic",
        -    "denmark",
        -    "djibouti",
        -    "dominican republic",
        -    "ecuador",
        -    "egypt",
        -    "el salvador",
        -    "equatorial guinea",
        -    "eritrea",
        -    "estonia",
        -    "ethiopia",
        -    "fiji",
        -    "finland",
        -    "france",
        -    "gabon",
        -    "gambia",
        -    "georgia",
        -    "germany",
        -    "ghana",
        -    "greece",
        -    "guatemala",
        -    "guinea",
        -    "haiti",
        -    "honduras",
        -    "hungary",
        -    "iceland",
        -    "india",
        -    "indonesia",
        -    "iran",
        -    "iraq",
        -    "ireland",
        -    "israel",
        -    "italy",
        -    "jamaica",
        -    "japan",
        -    "jordan",
        -    "kazakhstan",
        -    "kenya",
        -    "kuwait",
        -    "kyrgyzstan",
        -    "latvia",
        -    "lebanon",
        -    "lesotho",
        -    "liberia",
        -    "libya",
        -    "liechtenstein",
        -    "lithuania",
        -    "luxembourg",
        -    "madagascar",
        -    "malawi",
        -    "malaysia",
        -    "maldives",
        -    "mali",
        -    "malta",
        -    "mauritania",
        -    "mauritius",
        -    "mexico",
        -    "moldova",
        -    "monaco",
        -    "mongolia",
        -    "montenegro",
        -    "morocco",
        -    "mozambique",
        -    "myanmar",
        -    "namibia",
        -    "nepal",
        -    "netherlands",
        -    "new zealand",
        -    "nicaragua",
        -    "niger",
        -    "nigeria",
        -    "north korea",
        -    "north macedonia",
        -    "norway",
        -    "oman",
        -    "pakistan",
        -    "panama",
        -    "papua new guinea",
        -    "paraguay",
        -    "peru",
        -    "philippines",
        -    "poland",
        -    "portugal",
        -    "qatar",
        -    "romania",
        -    "russia",
        -    "rwanda",
        -    "saudi arabia",
        -    "senegal",
        -    "serbia",
        -    "singapore",
        -    "slovakia",
        -    "slovenia",
        -    "somalia",
        -    "south africa",
        -    "south korea",
        -    "south sudan",
        -    "spain",
        -    "sri lanka",
        -    "sudan",
        -    "sweden",
        -    "switzerland",
        -    "syria",
        -    "taiwan",
        -    "tajikistan",
        -    "tanzania",
        -    "thailand",
        -    "togo",
        -    "trinidad and tobago",
        -    "tunisia",
        -    "turkey",
        -    "turkmenistan",
        -    "uganda",
        -    "ukraine",
        -    "united arab emirates",
        -    "united kingdom",
        -    "united states",
        -    "uruguay",
        -    "uzbekistan",
        -    "venezuela",
        -    "vietnam",
        -    "yemen",
        -    "zambia",
        -    "zimbabwe"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / end_date
        Removed value: -{
        -  "description": "Return results before the specified end date.",
        -  "example": "2025-12-29",
        -  "format": "date",
        -  "type": "string"
        -}
      • removedInput schema / properties / exclude_domains
        Removed value: -{
        -  "description": "List of domains to specifically exclude from the search results.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "maxItems": 150,
        -  "type": "array"
        -}
      • removedInput schema / properties / include_answer
        Removed value: -{
        -  "default": false,
        -  "description": "Include an LLM-generated answer. true uses the default answer mode; basic or advanced selects the answer generation mode.",
        -  "oneOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "enum": [
        -        "basic",
        -        "advanced"
        -      ],
        -      "type": "string"
        -    }
        -  ]
        -}
      • removedInput schema / properties / include_domains
        Removed value: -{
        -  "description": "List of domains to specifically include in the search results.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "maxItems": 300,
        -  "type": "array"
        -}
      • removedInput schema / properties / include_favicon
        Removed value: -{
        -  "default": false,
        -  "description": "Include the favicon URL for each result.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / include_image_descriptions
        Removed value: -{
        -  "default": false,
        -  "description": "Add descriptive text for each image when include_images is true.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / include_images
        Removed value: -{
        -  "default": false,
        -  "description": "Perform an image search and include results.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / include_raw_content
        Removed value: -{
        -  "default": false,
        -  "description": "Include cleaned and parsed content for each search result. true or markdown returns markdown; text returns plain text and may increase latency.",
        -  "oneOf": [
        -    {
        -      "type": "boolean"
        -    },
        -    {
        -      "enum": [
        -        "markdown",
        -        "text"
        -      ],
        -      "type": "string"
        -    }
        -  ]
        -}
      • removedInput schema / properties / include_usage
        Removed value: -{
        -  "default": false,
        -  "description": "Include credit usage information in the response.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / max_results
        Removed value: -{
        -  "default": 5,
        -  "description": "Maximum number of search results to return.",
        -  "maximum": 20,
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedInput schema / properties / query
        Removed value: -{
        -  "description": "The search query to execute with Tavily.",
        -  "example": "Who is Leo Messi?",
        -  "type": "string"
        -}
      • removedInput schema / properties / safe_search
        Removed value: -{
        -  "default": false,
        -  "description": "Filter out adult or unsafe content from search results. Enterprise only; not supported when search_depth is fast or ultra-fast.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / search_depth
        Removed value: -{
        -  "default": "basic",
        -  "description": "Controls the latency vs. relevance tradeoff. advanced gives the highest relevance with higher latency and cost; basic is balanced; fast and ultra-fast optimize for lower latency.",
        -  "enum": [
        -    "advanced",
        -    "basic",
        -    "fast",
        -    "ultra-fast"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / start_date
        Removed value: -{
        -  "description": "Return results after the specified start date.",
        -  "example": "2025-02-09",
        -  "format": "date",
        -  "type": "string"
        -}
      • removedInput schema / properties / time_range
        Removed value: -{
        -  "description": "Time range to filter results based on publish date.",
        -  "enum": [
        -    "day",
        -    "week",
        -    "month",
        -    "year",
        -    "d",
        -    "w",
        -    "m",
        -    "y"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / topic
        Removed value: -{
        -  "default": "general",
        -  "description": "Category of the search.",
        -  "enum": [
        -    "general",
        -    "news",
        -    "finance"
        -  ],
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "body"
        +]
  3. 3 tool updates
    • Changedpost_byteplus_web_search2 fields changed
      • removedInput schema / properties / TimeRange / anyOf
        Removed value: -[
        -  {
        -    "enum": [
        -      "OneDay",
        -      "OneWeek",
        -      "OneMonth",
        -      "OneYear"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "description": "Custom range, e.g. 2026-08-01..2026-09-01.",
        -    "pattern": "^\\d{4}-\\d{2}-\\d{2}\\.\\.\\d{4}-\\d{2}-\\d{2}$",
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / TimeRange / oneOf
        Added value: +[
        +  {
        +    "enum": [
        +      "OneDay",
        +      "OneWeek",
        +      "OneMonth",
        +      "OneYear"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "description": "Custom range, e.g. 2026-08-01..2026-09-01.",
        +    "pattern": "^\\d{4}-\\d{2}-\\d{2}\\.\\.\\d{4}-\\d{2}-\\d{2}$",
        +    "type": "string"
        +  }
        +]
    • Changedpost_tavily_extract2 fields changed
      • removedInput schema / properties / urls / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  }
        -]
      • addedInput schema / properties / urls / oneOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  }
        +]
    • Changedpost_tavily_search4 fields changed
      • removedInput schema / properties / include_answer / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "enum": [
        -      "basic",
        -      "advanced"
        -    ],
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / include_answer / oneOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "basic",
        +      "advanced"
        +    ],
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / include_raw_content / anyOf
        Removed value: -[
        -  {
        -    "type": "boolean"
        -  },
        -  {
        -    "enum": [
        -      "markdown",
        -      "text"
        -    ],
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / include_raw_content / oneOf
        Added value: +[
        +  {
        +    "type": "boolean"
        +  },
        +  {
        +    "enum": [
        +      "markdown",
        +      "text"
        +    ],
        +    "type": "string"
        +  }
        +]
  4. 28 tool updates
    • Addedany_search_apis_v1_search_full
    • Addedany_search_apis_v1_search_smart
    • Addedbatch_get_schema
    • Addedbatch_quote
    • Changedbatch_use18 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / properties / calls / description
        Removed value: -"Up to 20 items of {call_id, operation_id, arguments}; steps at the same execution_level of a plan go in one batch"
      • addedInput schema / properties / calls / items / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • changedInput schema / properties / calls / items / additionalProperties
        Previous value: -trueNew value: +false
      • addedInput schema / properties / calls / items / properties
        Added 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"
        +  }
        +}
      • addedInput schema / properties / calls / items / required
        Added value: +[
        +  "call_id",
        +  "tool",
        +  "arguments"
        +]
      • addedInput schema / properties / calls / maxItems
        Added value: +20
      • addedInput schema / properties / calls / minItems
        Added value: +1
      • removedInput schema / properties / max_price_usd
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "number"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Per-call price cap applied to every item"
        -}
      • removedInput schema / properties / search_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / search_id / default
        Removed value: -null
      • changedInput schema / properties / search_id / description
        Previous value: -"search_id from the search that found these operations"New value: +"Optional search correlation identifier returned by search."
      • addedInput schema / properties / search_id / type
        Added value: +"string"
      • addedInput schema / properties / session_id
        Added 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"
        +}
      • addedOutput schema / $defs
        Added 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."
        +  }
        +}
      • addedOutput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / properties
        Added 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"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "session_id",
        +  "batch_id",
        +  "total_count",
        +  "success_count",
        +  "error_count",
        +  "results",
        +  "next_steps_guidance"
        +]
    • Changedget_details13 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / properties / arguments
        Removed 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."
        -}
      • addedInput schema / properties / include_arguments_schema
        Added value: +{
        +  "default": true,
        +  "description": "Return the complete arguments_schema. Defaults to true.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / include_documentation / description
        Previous 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."
      • addedInput schema / properties / include_response_schema
        Added value: +{
        +  "default": false,
        +  "description": "Return the complete response_schema. Defaults to false.",
        +  "type": "boolean"
        +}
      • removedInput schema / properties / operation_id
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One operation_id from search"
        -}
      • removedInput schema / properties / operation_ids
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Up to 20 operation_ids, for a batch"
        -}
      • addedInput schema / properties / session_id
        Added 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"
        +}
      • addedInput schema / properties / tools
        Added 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
        +}
      • removedInput schema / properties / with_quote
        Removed value: -{
        -  "default": true,
        -  "description": "Whether each operation is priced for this account before the answer. One round trip per operation; spends nothing.",
        -  "type": "boolean"
        -}
      • addedInput schema / required
        Added value: +[
        +  "tools"
        +]
      • addedOutput schema / properties
        Added 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"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "error_count",
        +  "next_steps_guidance",
        +  "session_id",
        +  "success_count",
        +  "tools",
        +  "total_count"
        +]
    • Changedget_exa_agent_run1 field changed
      • removedInput schema / properties / jobId / description
        Removed value: -"The job id returned by the submit call."
    • Addedget_exa_apis_v1_exa_agent_runs
    • Changedget_firecrawl_batch_scrape_job1 field changed
      • removedInput schema / properties / jobId / description
        Removed value: -"The job id returned by the submit call."
    • Changedget_firecrawl_crawl_job1 field changed
      • removedInput schema / properties / jobId / description
        Removed value: -"The job id returned by the submit call."
    • Removedget_oxylabs_llm_job
    • Addedpost_byteplus_fetch
    • Addedpost_byteplus_web_search
    • Changedpost_exa_agent_runs17 fields changed
      • changedInput schema / properties / Idempotency-Key / description
        Previous value: -"Unique key (1 to 191 characters) that makes the submit idempotent. Re-submitting with the same key and request fingerprint returns the original run."New value: +"Trimmed UTF-8 length must be 1 through 191 bytes."
      • removedInput schema / properties / Idempotency-Key / maxLength
        Removed value: -191
      • addedInput schema / properties / Idempotency-Key / pattern
        Added value: +"\\S"
      • addedInput schema / properties / X-AISA-Cost-Mode
        Added value: +{
        +  "description": "Return a read-only cost quote instead of submitting a job.",
        +  "enum": [
        +    "quote"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / X-AISA-Max-Price-USD
        Added value: +{
        +  "description": "Optional maximum customer authorization in USD, validated by the runtime price parser.",
        +  "type": "string"
        +}
      • removedInput schema / properties / dataSources
        Removed value: -{
        -  "description": "Third-party data sources (Exa Connect) the Agent is granted access to.",
        -  "items": {},
        -  "type": "array"
        -}
      • addedInput schema / properties / effort / default
        Added value: +"minimal"
      • changedInput schema / properties / effort / description
        Previous value: -"Compute/depth tier for the run."New value: +"Only minimal effort is supported; omitted, empty and null values normalize to minimal."
      • addedInput schema / properties / effort / enum
        Added value: +[
        +  null,
        +  "",
        +  "minimal"
        +]
      • changedInput schema / properties / effort / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • removedInput schema / properties / input
        Removed value: -{
        -  "description": "Row-processing input: rows to process and exclusions.",
        -  "properties": {
        -    "data": {
        -      "description": "Input rows for the run.",
        -      "items": {},
        -      "type": "array"
        -    },
        -    "exclusion": {
        -      "description": "Items to exclude from processing."
        -    }
        -  },
        -  "type": "object"
        -}
      • removedInput schema / properties / outputSchema
        Removed value: -{
        -  "description": "JSON Schema used to validate the structured output.",
        -  "type": "object"
        -}
      • removedInput schema / properties / previousRunId
        Removed value: -{
        -  "description": "Continue from a previously completed run.",
        -  "type": "string"
        -}
      • changedInput schema / properties / query / description
        Previous value: -"The natural-language research query."New value: +"Non-empty query after trimming whitespace."
      • removedInput schema / properties / query / example
        Removed value: -"Summarize the main changes in RAG evaluation methods over the past year as a bullet list."
      • addedInput schema / properties / query / pattern
        Added value: +"\\S"
      • addedInput schema / properties / systemPrompt
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedpost_exa_answer1 field changed
      • addedInput schema / properties / stream
        Added value: +{
        +  "default": false,
        +  "enum": [
        +    false
        +  ],
        +  "type": "boolean"
        +}
    • Addedpost_exa_apis_v1_exa_agent_runs_jobid_cancel
    • Changedpost_exa_contents1 field changed
      • addedInput schema / properties / stream
        Added value: +{
        +  "default": false,
        +  "enum": [
        +    false
        +  ],
        +  "type": "boolean"
        +}
    • Changedpost_exa_search1 field changed
      • addedInput schema / properties / stream
        Added value: +{
        +  "default": false,
        +  "enum": [
        +    false
        +  ],
        +  "type": "boolean"
        +}
    • Changedpost_firecrawl_batch_scrape34 fields changed
      • changedInput schema / properties / Idempotency-Key / description
        Previous value: -"Unique key (1 to 191 characters) that makes the submit idempotent. Re-submitting with the same key returns the original job."New value: +"Trimmed UTF-8 length must be 1 through 191 bytes."
      • removedInput schema / properties / Idempotency-Key / maxLength
        Removed value: -191
      • addedInput schema / properties / Idempotency-Key / pattern
        Added value: +"\\S"
      • addedInput schema / properties / X-AISA-Cost-Mode
        Added value: +{
        +  "description": "Return a read-only cost quote instead of submitting a job.",
        +  "enum": [
        +    "quote"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / X-AISA-Max-Price-USD
        Added value: +{
        +  "description": "Optional maximum customer authorization in USD, validated by the runtime price parser.",
        +  "type": "string"
        +}
      • removedInput schema / properties / excludeTags / description
        Removed value: -"HTML tags/selectors to drop."
      • addedInput schema / properties / excludeTags / items / description
        Added value: +"Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded."
      • removedInput schema / properties / excludeTags / items / maxLength
        Removed value: -128
      • addedInput schema / properties / excludeTags / items / pattern
        Added value: +"^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])"
      • addedInput schema / properties / excludeTags / items / x-aisa-max-utf8-bytes
        Added value: +128
      • changedInput schema / properties / excludeTags / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • removedInput schema / properties / includeTags / description
        Removed value: -"HTML tags/selectors to keep."
      • addedInput schema / properties / includeTags / items / description
        Added value: +"Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded."
      • removedInput schema / properties / includeTags / items / maxLength
        Removed value: -128
      • addedInput schema / properties / includeTags / items / pattern
        Added value: +"^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])"
      • addedInput schema / properties / includeTags / items / x-aisa-max-utf8-bytes
        Added value: +128
      • changedInput schema / properties / includeTags / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • removedInput schema / properties / maxAge / description
        Removed value: -"Maximum acceptable cache age in milliseconds."
      • changedInput schema / properties / maxAge / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • removedInput schema / properties / maxConcurrency / description
        Removed value: -"Maximum number of concurrent scrapes (1 to 20)."
      • changedInput schema / properties / maxConcurrency / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • removedInput schema / properties / minAge / description
        Removed value: -"Minimum cache age in milliseconds before a page is refetched."
      • changedInput schema / properties / minAge / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • removedInput schema / properties / onlyMainContent / default
        Removed value: -true
      • removedInput schema / properties / onlyMainContent / description
        Removed value: -"Return only the main content of each page."
      • changedInput schema / properties / onlyMainContent / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • removedInput schema / properties / timeout / description
        Removed value: -"Per-page timeout in milliseconds."
      • changedInput schema / properties / timeout / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedInput schema / properties / urls / description
        Previous value: -"1 to 1000 unique HTTPS URLs to scrape. PDF URLs are not supported."New value: +"URLs must also be unique after trimming whitespace and trailing slashes."
      • removedInput schema / properties / urls / example
        Removed value: -[
        -  "https://docs.firecrawl.dev",
        -  "https://docs.firecrawl.dev/introduction"
        -]
      • addedInput schema / properties / urls / items / description
        Added value: +"HTTPS URL with a hostname, without credentials or fragment. Trimmed input ending in .pdf (case insensitive) is not supported."
      • removedInput schema / properties / urls / items / format
        Removed value: -"uri"
      • addedInput schema / properties / urls / items / pattern
        Added value: +"^\\s*[hH][tT][tT][pP][sS]://"
      • addedInput schema / properties / urls / uniqueItems
        Added value: +true
    • Changedpost_firecrawl_crawl64 fields changed
      • changedInput schema / properties / Idempotency-Key / description
        Previous value: -"Unique key (1 to 191 characters) that makes the submit idempotent. Re-submitting with the same key returns the original job."New value: +"Trimmed UTF-8 length must be 1 through 191 bytes."
      • removedInput schema / properties / Idempotency-Key / maxLength
        Removed value: -191
      • addedInput schema / properties / Idempotency-Key / pattern
        Added value: +"\\S"
      • addedInput schema / properties / X-AISA-Cost-Mode
        Added value: +{
        +  "description": "Return a read-only cost quote instead of submitting a job.",
        +  "enum": [
        +    "quote"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / X-AISA-Max-Price-USD
        Added value: +{
        +  "description": "Optional maximum customer authorization in USD, validated by the runtime price parser.",
        +  "type": "string"
        +}
      • removedInput schema / properties / allowExternalLinks / description
        Removed value: -"Follow links to external domains."
      • changedInput schema / properties / allowExternalLinks / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • removedInput schema / properties / allowSubdomains / description
        Removed value: -"Follow links into subdomains of the root domain."
      • changedInput schema / properties / allowSubdomains / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • removedInput schema / properties / crawlEntireDomain / description
        Removed value: -"Crawl the whole domain rather than only the subtree under the root URL."
      • changedInput schema / properties / crawlEntireDomain / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • removedInput schema / properties / delay / description
        Removed value: -"Delay in seconds between requests (0 to 30)."
      • changedInput schema / properties / delay / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • removedInput schema / properties / excludePaths / description
        Removed value: -"Skip URLs whose path matches one of these patterns."
      • addedInput schema / properties / excludePaths / items / description
        Added value: +"Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded."
      • removedInput schema / properties / excludePaths / items / maxLength
        Removed value: -256
      • addedInput schema / properties / excludePaths / items / pattern
        Added value: +"^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])"
      • addedInput schema / properties / excludePaths / items / x-aisa-max-utf8-bytes
        Added value: +256
      • changedInput schema / properties / excludePaths / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • removedInput schema / properties / ignoreQueryParameters / description
        Removed value: -"Treat URLs that differ only by query string as the same page."
      • changedInput schema / properties / ignoreQueryParameters / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • removedInput schema / properties / includePaths / description
        Removed value: -"Only crawl URLs whose path matches one of these patterns."
      • addedInput schema / properties / includePaths / items / description
        Added value: +"Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded."
      • removedInput schema / properties / includePaths / items / maxLength
        Removed value: -256
      • addedInput schema / properties / includePaths / items / pattern
        Added value: +"^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])"
      • addedInput schema / properties / includePaths / items / x-aisa-max-utf8-bytes
        Added value: +256
      • changedInput schema / properties / includePaths / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • removedInput schema / properties / limit / description
        Removed value: -"Maximum number of pages to crawl."
      • removedInput schema / properties / limit / example
        Removed value: -50
      • removedInput schema / properties / maxConcurrency / description
        Removed value: -"Maximum number of concurrent page fetches (1 to 20)."
      • changedInput schema / properties / maxConcurrency / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • removedInput schema / properties / maxDiscoveryDepth / description
        Removed value: -"Maximum link-discovery depth from the root URL."
      • changedInput schema / properties / maxDiscoveryDepth / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • addedInput schema / properties / scrapeOptions / additionalProperties
        Added value: +{
        +  "not": {}
        +}
      • removedInput schema / properties / scrapeOptions / description
        Removed value: -"Per-page scrape options applied while crawling. On the metered profile output is always markdown."
      • removedInput schema / properties / scrapeOptions / properties / excludeTags / description
        Removed value: -"HTML tags/selectors to drop."
      • addedInput schema / properties / scrapeOptions / properties / excludeTags / items / description
        Added value: +"Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded."
      • removedInput schema / properties / scrapeOptions / properties / excludeTags / items / maxLength
        Removed value: -128
      • addedInput schema / properties / scrapeOptions / properties / excludeTags / items / pattern
        Added value: +"^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])"
      • addedInput schema / properties / scrapeOptions / properties / excludeTags / items / x-aisa-max-utf8-bytes
        Added value: +128
      • changedInput schema / properties / scrapeOptions / properties / excludeTags / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • removedInput schema / properties / scrapeOptions / properties / includeTags / description
        Removed value: -"HTML tags/selectors to keep."
      • addedInput schema / properties / scrapeOptions / properties / includeTags / items / description
        Added value: +"Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded."
      • removedInput schema / properties / scrapeOptions / properties / includeTags / items / maxLength
        Removed value: -128
      • addedInput schema / properties / scrapeOptions / properties / includeTags / items / pattern
        Added value: +"^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])"
      • addedInput schema / properties / scrapeOptions / properties / includeTags / items / x-aisa-max-utf8-bytes
        Added value: +128
      • changedInput schema / properties / scrapeOptions / properties / includeTags / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • removedInput schema / properties / scrapeOptions / properties / maxAge / description
        Removed value: -"Maximum acceptable cache age in milliseconds."
      • changedInput schema / properties / scrapeOptions / properties / maxAge / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • removedInput schema / properties / scrapeOptions / properties / minAge / description
        Removed value: -"Minimum cache age in milliseconds before a page is refetched."
      • changedInput schema / properties / scrapeOptions / properties / minAge / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • removedInput schema / properties / scrapeOptions / properties / onlyMainContent / default
        Removed value: -true
      • removedInput schema / properties / scrapeOptions / properties / onlyMainContent / description
        Removed value: -"Return only the main content of each page."
      • changedInput schema / properties / scrapeOptions / properties / onlyMainContent / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • removedInput schema / properties / scrapeOptions / properties / timeout / description
        Removed value: -"Per-page timeout in milliseconds."
      • changedInput schema / properties / scrapeOptions / properties / timeout / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedInput schema / properties / scrapeOptions / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • removedInput schema / properties / sitemap / description
        Removed value: -"How the site's sitemap is used during discovery."
      • changedInput schema / properties / sitemap / enum
        Previous value: -[
        -  "skip",
        -  "include",
        -  "only"
        -]New value: +[
        +  null,
        +  "skip",
        +  "include",
        +  "only"
        +]
      • changedInput schema / properties / sitemap / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedInput schema / properties / url / description
        Previous value: -"The HTTPS root URL to crawl. PDF URLs are not supported."New value: +"HTTPS URL with a hostname, without credentials or fragment. Trimmed input ending in .pdf (case insensitive) is not supported."
      • removedInput schema / properties / url / example
        Removed value: -"https://docs.firecrawl.dev"
      • removedInput schema / properties / url / format
        Removed value: -"uri"
      • addedInput schema / properties / url / pattern
        Added value: +"^\\s*[hH][tT][tT][pP][sS]://"
    • Changedpost_firecrawl_map6 fields changed
      • removedInput schema / properties / limit / description
        Removed value: -"Maximum number of links to discover. Required on the metered profile."
      • removedInput schema / properties / limit / example
        Removed value: -100
      • removedInput schema / properties / url / description
        Removed value: -"The HTTPS URL to map."
      • removedInput schema / properties / url / example
        Removed value: -"https://docs.firecrawl.dev"
      • changedInput schema / properties / url / format
        Previous value: -"uri"New value: +"https_url"
      • changedInput schema / required
        Previous value: -[
        -  "url",
        -  "limit"
        -]New value: +[
        +  "limit",
        +  "url"
        +]
    • Changedpost_firecrawl_scrape14 fields changed
      • removedInput schema / properties / formats / description
        Removed value: -"Optional output formats. When present it must be exactly [\"markdown\"]."
      • addedInput schema / properties / formats / enum
        Added value: +[
        +  [
        +    "markdown"
        +  ]
        +]
      • removedInput schema / properties / formats / example
        Removed value: -[
        -  "markdown"
        -]
      • removedInput schema / properties / formats / items / enum
        Removed value: -[
        -  "markdown"
        -]
      • addedInput schema / properties / formats / maxItems
        Added value: +1
      • addedInput schema / properties / formats / minItems
        Added value: +1
      • addedInput schema / properties / onlyCleanContent
        Added value: +{
        +  "enum": [
        +    false
        +  ],
        +  "type": "boolean"
        +}
      • removedInput schema / properties / proxy / description
        Removed value: -"Proxy tier. Must be explicitly set to \"basic\" on the metered profile."
      • removedInput schema / properties / proxy / example
        Removed value: -"basic"
      • removedInput schema / properties / url / description
        Removed value: -"The HTTPS URL to scrape. PDF URLs are not supported on the metered profile."
      • removedInput schema / properties / url / example
        Removed value: -"https://docs.firecrawl.dev"
      • changedInput schema / properties / url / format
        Previous value: -"uri"New value: +"https_url"
      • addedInput schema / properties / url / x-aisa-forbidden-suffixes
        Added value: +[
        +  ".pdf"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "url",
        -  "proxy"
        -]New value: +[
        +  "proxy",
        +  "url"
        +]
    • Changedpost_firecrawl_search7 fields changed
      • addedInput schema / properties / enterprise
        Added value: +{
        +  "default": false,
        +  "enum": [
        +    false
        +  ],
        +  "type": "boolean"
        +}
      • removedInput schema / properties / limit / description
        Removed value: -"Maximum number of results to return."
      • removedInput schema / properties / query / description
        Removed value: -"The search query. Must be non-empty and at most 500 characters."
      • removedInput schema / properties / query / example
        Removed value: -"firecrawl web scraping api"
      • changedInput schema / properties / query / maxLength
        Previous value: -500New value: +2000
      • addedInput schema / properties / query / minLength
        Added value: +1
      • addedInput schema / properties / sources
        Added value: +{
        +  "default": [
        +    "web"
        +  ],
        +  "enum": [
        +    [
        +      "web"
        +    ]
        +  ],
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 1,
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Removedpost_oxylabs_ai_search
    • Removedpost_oxylabs_llm
    • Removedpost_oxylabs_llm_cancel
    • Changedsearch17 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / properties / category / anyOf
        Removed value: -[
        -  {
        -    "enum": [
        -      "seo",
        -      "finance",
        -      "social",
        -      "search",
        -      "sales",
        -      "mail"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / category / default
        Removed value: -null
      • changedInput schema / properties / category / description
        Previous 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.)"
      • addedInput schema / properties / category / enum
        Added value: +[
        +  "seo",
        +  "finance",
        +  "social",
        +  "search",
        +  "sales",
        +  "mail"
        +]
      • addedInput schema / properties / category / type
        Added value: +"string"
      • addedInput schema / properties / known_fields
        Added value: +{
        +  "additionalProperties": true,
        +  "default": {},
        +  "description": "Known values such as ticker, URL, provider, or identifier that improve retrieval.",
        +  "type": "object"
        +}
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum candidates, 1-10"New value: +"Maximum number of additional direct tool candidates."
      • addedInput schema / properties / limit / maximum
        Added value: +20
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • addedInput schema / properties / provider_filters
        Added 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
        +}
      • changedInput schema / properties / query / description
        Previous 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."
      • addedInput schema / properties / query / maxLength
        Added value: +2000
      • addedInput schema / properties / query / minLength
        Added value: +1
      • addedInput schema / properties / session_id
        Added 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"
        +}
      • addedOutput schema / properties
        Added 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"
        +    }
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "next_steps_guidance",
        +  "search_id",
        +  "session_id",
        +  "tools"
        +]
    • Changeduse1 field changed
      • changedInput schema / properties / max_price_usd / description
        Previous 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"
  5. 28 tool updates
    • Removedany_search_apis_v1_search_full
    • Removedany_search_apis_v1_search_smart
    • Removedbatch_get_schema
    • Removedbatch_quote
    • Changedbatch_use18 fields changed
      • removedInput schema / $schema
        Removed value: -"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / calls / description
        Added value: +"Up to 20 items of {call_id, operation_id, arguments}; steps at the same execution_level of a plan go in one batch"
      • removedInput schema / properties / calls / items / $schema
        Removed value: -"https://json-schema.org/draft/2020-12/schema"
      • changedInput schema / properties / calls / items / additionalProperties
        Previous value: -falseNew value: +true
      • removedInput schema / properties / calls / items / properties
        Removed 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"
        -  }
        -}
      • removedInput schema / properties / calls / items / required
        Removed value: -[
        -  "call_id",
        -  "tool",
        -  "arguments"
        -]
      • removedInput schema / properties / calls / maxItems
        Removed value: -20
      • removedInput schema / properties / calls / minItems
        Removed value: -1
      • addedInput schema / properties / max_price_usd
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Per-call price cap applied to every item"
        +}
      • addedInput schema / properties / search_id / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / search_id / default
        Added value: +null
      • changedInput schema / properties / search_id / description
        Previous value: -"Optional search correlation identifier returned by search."New value: +"search_id from the search that found these operations"
      • removedInput schema / properties / search_id / type
        Removed value: -"string"
      • removedInput schema / properties / session_id
        Removed 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"
        -}
      • removedOutput schema / $defs
        Removed 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."
        -  }
        -}
      • removedOutput schema / $schema
        Removed value: -"https://json-schema.org/draft/2020-12/schema"
      • removedOutput schema / properties
        Removed 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"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "session_id",
        -  "batch_id",
        -  "total_count",
        -  "success_count",
        -  "error_count",
        -  "results",
        -  "next_steps_guidance"
        -]
    • Changedget_details13 fields changed
      • removedInput schema / $schema
        Removed value: -"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / arguments
        Added 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."
        +}
      • removedInput schema / properties / include_arguments_schema
        Removed value: -{
        -  "default": true,
        -  "description": "Return the complete arguments_schema. Defaults to true.",
        -  "type": "boolean"
        -}
      • changedInput schema / properties / include_documentation / description
        Previous 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."
      • removedInput schema / properties / include_response_schema
        Removed value: -{
        -  "default": false,
        -  "description": "Return the complete response_schema. Defaults to false.",
        -  "type": "boolean"
        -}
      • addedInput schema / properties / operation_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "One operation_id from search"
        +}
      • addedInput schema / properties / operation_ids
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Up to 20 operation_ids, for a batch"
        +}
      • removedInput schema / properties / session_id
        Removed 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"
        -}
      • removedInput schema / properties / tools
        Removed 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
        -}
      • addedInput schema / properties / with_quote
        Added value: +{
        +  "default": true,
        +  "description": "Whether each operation is priced for this account before the answer. One round trip per operation; spends nothing.",
        +  "type": "boolean"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "tools"
        -]
      • removedOutput schema / properties
        Removed 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"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "error_count",
        -  "next_steps_guidance",
        -  "session_id",
        -  "success_count",
        -  "tools",
        -  "total_count"
        -]
    • Changedget_exa_agent_run1 field changed
      • addedInput schema / properties / jobId / description
        Added value: +"The job id returned by the submit call."
    • Removedget_exa_apis_v1_exa_agent_runs
    • Changedget_firecrawl_batch_scrape_job1 field changed
      • addedInput schema / properties / jobId / description
        Added value: +"The job id returned by the submit call."
    • Changedget_firecrawl_crawl_job1 field changed
      • addedInput schema / properties / jobId / description
        Added value: +"The job id returned by the submit call."
    • Addedget_oxylabs_llm_job
    • Removedpost_byteplus_fetch
    • Removedpost_byteplus_web_search
    • Changedpost_exa_agent_runs17 fields changed
      • changedInput schema / properties / Idempotency-Key / description
        Previous value: -"Trimmed UTF-8 length must be 1 through 191 bytes."New value: +"Unique key (1 to 191 characters) that makes the submit idempotent. Re-submitting with the same key and request fingerprint returns the original run."
      • addedInput schema / properties / Idempotency-Key / maxLength
        Added value: +191
      • removedInput schema / properties / Idempotency-Key / pattern
        Removed value: -"\\S"
      • removedInput schema / properties / X-AISA-Cost-Mode
        Removed value: -{
        -  "description": "Return a read-only cost quote instead of submitting a job.",
        -  "enum": [
        -    "quote"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / X-AISA-Max-Price-USD
        Removed value: -{
        -  "description": "Optional maximum customer authorization in USD, validated by the runtime price parser.",
        -  "type": "string"
        -}
      • addedInput schema / properties / dataSources
        Added value: +{
        +  "description": "Third-party data sources (Exa Connect) the Agent is granted access to.",
        +  "items": {},
        +  "type": "array"
        +}
      • removedInput schema / properties / effort / default
        Removed value: -"minimal"
      • changedInput schema / properties / effort / description
        Previous value: -"Only minimal effort is supported; omitted, empty and null values normalize to minimal."New value: +"Compute/depth tier for the run."
      • removedInput schema / properties / effort / enum
        Removed value: -[
        -  null,
        -  "",
        -  "minimal"
        -]
      • changedInput schema / properties / effort / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +"string"
      • addedInput schema / properties / input
        Added value: +{
        +  "description": "Row-processing input: rows to process and exclusions.",
        +  "properties": {
        +    "data": {
        +      "description": "Input rows for the run.",
        +      "items": {},
        +      "type": "array"
        +    },
        +    "exclusion": {
        +      "description": "Items to exclude from processing."
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / outputSchema
        Added value: +{
        +  "description": "JSON Schema used to validate the structured output.",
        +  "type": "object"
        +}
      • addedInput schema / properties / previousRunId
        Added value: +{
        +  "description": "Continue from a previously completed run.",
        +  "type": "string"
        +}
      • changedInput schema / properties / query / description
        Previous value: -"Non-empty query after trimming whitespace."New value: +"The natural-language research query."
      • addedInput schema / properties / query / example
        Added value: +"Summarize the main changes in RAG evaluation methods over the past year as a bullet list."
      • removedInput schema / properties / query / pattern
        Removed value: -"\\S"
      • removedInput schema / properties / systemPrompt
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
    • Changedpost_exa_answer1 field changed
      • removedInput schema / properties / stream
        Removed value: -{
        -  "default": false,
        -  "enum": [
        -    false
        -  ],
        -  "type": "boolean"
        -}
    • Removedpost_exa_apis_v1_exa_agent_runs_jobid_cancel
    • Changedpost_exa_contents1 field changed
      • removedInput schema / properties / stream
        Removed value: -{
        -  "default": false,
        -  "enum": [
        -    false
        -  ],
        -  "type": "boolean"
        -}
    • Changedpost_exa_search1 field changed
      • removedInput schema / properties / stream
        Removed value: -{
        -  "default": false,
        -  "enum": [
        -    false
        -  ],
        -  "type": "boolean"
        -}
    • Changedpost_firecrawl_batch_scrape34 fields changed
      • changedInput schema / properties / Idempotency-Key / description
        Previous value: -"Trimmed UTF-8 length must be 1 through 191 bytes."New value: +"Unique key (1 to 191 characters) that makes the submit idempotent. Re-submitting with the same key returns the original job."
      • addedInput schema / properties / Idempotency-Key / maxLength
        Added value: +191
      • removedInput schema / properties / Idempotency-Key / pattern
        Removed value: -"\\S"
      • removedInput schema / properties / X-AISA-Cost-Mode
        Removed value: -{
        -  "description": "Return a read-only cost quote instead of submitting a job.",
        -  "enum": [
        -    "quote"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / X-AISA-Max-Price-USD
        Removed value: -{
        -  "description": "Optional maximum customer authorization in USD, validated by the runtime price parser.",
        -  "type": "string"
        -}
      • addedInput schema / properties / excludeTags / description
        Added value: +"HTML tags/selectors to drop."
      • removedInput schema / properties / excludeTags / items / description
        Removed value: -"Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded."
      • addedInput schema / properties / excludeTags / items / maxLength
        Added value: +128
      • removedInput schema / properties / excludeTags / items / pattern
        Removed value: -"^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])"
      • removedInput schema / properties / excludeTags / items / x-aisa-max-utf8-bytes
        Removed value: -128
      • changedInput schema / properties / excludeTags / type
        Previous value: -[
        -  "array",
        -  "null"
        -]New value: +"array"
      • addedInput schema / properties / includeTags / description
        Added value: +"HTML tags/selectors to keep."
      • removedInput schema / properties / includeTags / items / description
        Removed value: -"Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded."
      • addedInput schema / properties / includeTags / items / maxLength
        Added value: +128
      • removedInput schema / properties / includeTags / items / pattern
        Removed value: -"^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])"
      • removedInput schema / properties / includeTags / items / x-aisa-max-utf8-bytes
        Removed value: -128
      • changedInput schema / properties / includeTags / type
        Previous value: -[
        -  "array",
        -  "null"
        -]New value: +"array"
      • addedInput schema / properties / maxAge / description
        Added value: +"Maximum acceptable cache age in milliseconds."
      • changedInput schema / properties / maxAge / type
        Previous value: -[
        -  "integer",
        -  "null"
        -]New value: +"integer"
      • addedInput schema / properties / maxConcurrency / description
        Added value: +"Maximum number of concurrent scrapes (1 to 20)."
      • changedInput schema / properties / maxConcurrency / type
        Previous value: -[
        -  "integer",
        -  "null"
        -]New value: +"integer"
      • addedInput schema / properties / minAge / description
        Added value: +"Minimum cache age in milliseconds before a page is refetched."
      • changedInput schema / properties / minAge / type
        Previous value: -[
        -  "integer",
        -  "null"
        -]New value: +"integer"
      • addedInput schema / properties / onlyMainContent / default
        Added value: +true
      • addedInput schema / properties / onlyMainContent / description
        Added value: +"Return only the main content of each page."
      • changedInput schema / properties / onlyMainContent / type
        Previous value: -[
        -  "boolean",
        -  "null"
        -]New value: +"boolean"
      • addedInput schema / properties / timeout / description
        Added value: +"Per-page timeout in milliseconds."
      • changedInput schema / properties / timeout / type
        Previous value: -[
        -  "integer",
        -  "null"
        -]New value: +"integer"
      • changedInput schema / properties / urls / description
        Previous value: -"URLs must also be unique after trimming whitespace and trailing slashes."New value: +"1 to 1000 unique HTTPS URLs to scrape. PDF URLs are not supported."
      • addedInput schema / properties / urls / example
        Added value: +[
        +  "https://docs.firecrawl.dev",
        +  "https://docs.firecrawl.dev/introduction"
        +]
      • removedInput schema / properties / urls / items / description
        Removed value: -"HTTPS URL with a hostname, without credentials or fragment. Trimmed input ending in .pdf (case insensitive) is not supported."
      • addedInput schema / properties / urls / items / format
        Added value: +"uri"
      • removedInput schema / properties / urls / items / pattern
        Removed value: -"^\\s*[hH][tT][tT][pP][sS]://"
      • removedInput schema / properties / urls / uniqueItems
        Removed value: -true
    • Changedpost_firecrawl_crawl64 fields changed
      • changedInput schema / properties / Idempotency-Key / description
        Previous value: -"Trimmed UTF-8 length must be 1 through 191 bytes."New value: +"Unique key (1 to 191 characters) that makes the submit idempotent. Re-submitting with the same key returns the original job."
      • addedInput schema / properties / Idempotency-Key / maxLength
        Added value: +191
      • removedInput schema / properties / Idempotency-Key / pattern
        Removed value: -"\\S"
      • removedInput schema / properties / X-AISA-Cost-Mode
        Removed value: -{
        -  "description": "Return a read-only cost quote instead of submitting a job.",
        -  "enum": [
        -    "quote"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / X-AISA-Max-Price-USD
        Removed value: -{
        -  "description": "Optional maximum customer authorization in USD, validated by the runtime price parser.",
        -  "type": "string"
        -}
      • addedInput schema / properties / allowExternalLinks / description
        Added value: +"Follow links to external domains."
      • changedInput schema / properties / allowExternalLinks / type
        Previous value: -[
        -  "boolean",
        -  "null"
        -]New value: +"boolean"
      • addedInput schema / properties / allowSubdomains / description
        Added value: +"Follow links into subdomains of the root domain."
      • changedInput schema / properties / allowSubdomains / type
        Previous value: -[
        -  "boolean",
        -  "null"
        -]New value: +"boolean"
      • addedInput schema / properties / crawlEntireDomain / description
        Added value: +"Crawl the whole domain rather than only the subtree under the root URL."
      • changedInput schema / properties / crawlEntireDomain / type
        Previous value: -[
        -  "boolean",
        -  "null"
        -]New value: +"boolean"
      • addedInput schema / properties / delay / description
        Added value: +"Delay in seconds between requests (0 to 30)."
      • changedInput schema / properties / delay / type
        Previous value: -[
        -  "number",
        -  "null"
        -]New value: +"number"
      • addedInput schema / properties / excludePaths / description
        Added value: +"Skip URLs whose path matches one of these patterns."
      • removedInput schema / properties / excludePaths / items / description
        Removed value: -"Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded."
      • addedInput schema / properties / excludePaths / items / maxLength
        Added value: +256
      • removedInput schema / properties / excludePaths / items / pattern
        Removed value: -"^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])"
      • removedInput schema / properties / excludePaths / items / x-aisa-max-utf8-bytes
        Removed value: -256
      • changedInput schema / properties / excludePaths / type
        Previous value: -[
        -  "array",
        -  "null"
        -]New value: +"array"
      • addedInput schema / properties / ignoreQueryParameters / description
        Added value: +"Treat URLs that differ only by query string as the same page."
      • changedInput schema / properties / ignoreQueryParameters / type
        Previous value: -[
        -  "boolean",
        -  "null"
        -]New value: +"boolean"
      • addedInput schema / properties / includePaths / description
        Added value: +"Only crawl URLs whose path matches one of these patterns."
      • removedInput schema / properties / includePaths / items / description
        Removed value: -"Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded."
      • addedInput schema / properties / includePaths / items / maxLength
        Added value: +256
      • removedInput schema / properties / includePaths / items / pattern
        Removed value: -"^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])"
      • removedInput schema / properties / includePaths / items / x-aisa-max-utf8-bytes
        Removed value: -256
      • changedInput schema / properties / includePaths / type
        Previous value: -[
        -  "array",
        -  "null"
        -]New value: +"array"
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of pages to crawl."
      • addedInput schema / properties / limit / example
        Added value: +50
      • addedInput schema / properties / maxConcurrency / description
        Added value: +"Maximum number of concurrent page fetches (1 to 20)."
      • changedInput schema / properties / maxConcurrency / type
        Previous value: -[
        -  "integer",
        -  "null"
        -]New value: +"integer"
      • addedInput schema / properties / maxDiscoveryDepth / description
        Added value: +"Maximum link-discovery depth from the root URL."
      • changedInput schema / properties / maxDiscoveryDepth / type
        Previous value: -[
        -  "integer",
        -  "null"
        -]New value: +"integer"
      • removedInput schema / properties / scrapeOptions / additionalProperties
        Removed value: -{
        -  "not": {}
        -}
      • addedInput schema / properties / scrapeOptions / description
        Added value: +"Per-page scrape options applied while crawling. On the metered profile output is always markdown."
      • addedInput schema / properties / scrapeOptions / properties / excludeTags / description
        Added value: +"HTML tags/selectors to drop."
      • removedInput schema / properties / scrapeOptions / properties / excludeTags / items / description
        Removed value: -"Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded."
      • addedInput schema / properties / scrapeOptions / properties / excludeTags / items / maxLength
        Added value: +128
      • removedInput schema / properties / scrapeOptions / properties / excludeTags / items / pattern
        Removed value: -"^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])"
      • removedInput schema / properties / scrapeOptions / properties / excludeTags / items / x-aisa-max-utf8-bytes
        Removed value: -128
      • changedInput schema / properties / scrapeOptions / properties / excludeTags / type
        Previous value: -[
        -  "array",
        -  "null"
        -]New value: +"array"
      • addedInput schema / properties / scrapeOptions / properties / includeTags / description
        Added value: +"HTML tags/selectors to keep."
      • removedInput schema / properties / scrapeOptions / properties / includeTags / items / description
        Removed value: -"Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded."
      • addedInput schema / properties / scrapeOptions / properties / includeTags / items / maxLength
        Added value: +128
      • removedInput schema / properties / scrapeOptions / properties / includeTags / items / pattern
        Removed value: -"^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])"
      • removedInput schema / properties / scrapeOptions / properties / includeTags / items / x-aisa-max-utf8-bytes
        Removed value: -128
      • changedInput schema / properties / scrapeOptions / properties / includeTags / type
        Previous value: -[
        -  "array",
        -  "null"
        -]New value: +"array"
      • addedInput schema / properties / scrapeOptions / properties / maxAge / description
        Added value: +"Maximum acceptable cache age in milliseconds."
      • changedInput schema / properties / scrapeOptions / properties / maxAge / type
        Previous value: -[
        -  "integer",
        -  "null"
        -]New value: +"integer"
      • addedInput schema / properties / scrapeOptions / properties / minAge / description
        Added value: +"Minimum cache age in milliseconds before a page is refetched."
      • changedInput schema / properties / scrapeOptions / properties / minAge / type
        Previous value: -[
        -  "integer",
        -  "null"
        -]New value: +"integer"
      • addedInput schema / properties / scrapeOptions / properties / onlyMainContent / default
        Added value: +true
      • addedInput schema / properties / scrapeOptions / properties / onlyMainContent / description
        Added value: +"Return only the main content of each page."
      • changedInput schema / properties / scrapeOptions / properties / onlyMainContent / type
        Previous value: -[
        -  "boolean",
        -  "null"
        -]New value: +"boolean"
      • addedInput schema / properties / scrapeOptions / properties / timeout / description
        Added value: +"Per-page timeout in milliseconds."
      • changedInput schema / properties / scrapeOptions / properties / timeout / type
        Previous value: -[
        -  "integer",
        -  "null"
        -]New value: +"integer"
      • changedInput schema / properties / scrapeOptions / type
        Previous value: -[
        -  "object",
        -  "null"
        -]New value: +"object"
      • addedInput schema / properties / sitemap / description
        Added value: +"How the site's sitemap is used during discovery."
      • changedInput schema / properties / sitemap / enum
        Previous value: -[
        -  null,
        -  "skip",
        -  "include",
        -  "only"
        -]New value: +[
        +  "skip",
        +  "include",
        +  "only"
        +]
      • changedInput schema / properties / sitemap / type
        Previous value: -[
        -  "string",
        -  "null"
        -]New value: +"string"
      • changedInput schema / properties / url / description
        Previous value: -"HTTPS URL with a hostname, without credentials or fragment. Trimmed input ending in .pdf (case insensitive) is not supported."New value: +"The HTTPS root URL to crawl. PDF URLs are not supported."
      • addedInput schema / properties / url / example
        Added value: +"https://docs.firecrawl.dev"
      • addedInput schema / properties / url / format
        Added value: +"uri"
      • removedInput schema / properties / url / pattern
        Removed value: -"^\\s*[hH][tT][tT][pP][sS]://"
    • Changedpost_firecrawl_map6 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of links to discover. Required on the metered profile."
      • addedInput schema / properties / limit / example
        Added value: +100
      • addedInput schema / properties / url / description
        Added value: +"The HTTPS URL to map."
      • addedInput schema / properties / url / example
        Added value: +"https://docs.firecrawl.dev"
      • changedInput schema / properties / url / format
        Previous value: -"https_url"New value: +"uri"
      • changedInput schema / required
        Previous value: -[
        -  "limit",
        -  "url"
        -]New value: +[
        +  "url",
        +  "limit"
        +]
    • Changedpost_firecrawl_scrape14 fields changed
      • addedInput schema / properties / formats / description
        Added value: +"Optional output formats. When present it must be exactly [\"markdown\"]."
      • removedInput schema / properties / formats / enum
        Removed value: -[
        -  [
        -    "markdown"
        -  ]
        -]
      • addedInput schema / properties / formats / example
        Added value: +[
        +  "markdown"
        +]
      • addedInput schema / properties / formats / items / enum
        Added value: +[
        +  "markdown"
        +]
      • removedInput schema / properties / formats / maxItems
        Removed value: -1
      • removedInput schema / properties / formats / minItems
        Removed value: -1
      • removedInput schema / properties / onlyCleanContent
        Removed value: -{
        -  "enum": [
        -    false
        -  ],
        -  "type": "boolean"
        -}
      • addedInput schema / properties / proxy / description
        Added value: +"Proxy tier. Must be explicitly set to \"basic\" on the metered profile."
      • addedInput schema / properties / proxy / example
        Added value: +"basic"
      • addedInput schema / properties / url / description
        Added value: +"The HTTPS URL to scrape. PDF URLs are not supported on the metered profile."
      • addedInput schema / properties / url / example
        Added value: +"https://docs.firecrawl.dev"
      • changedInput schema / properties / url / format
        Previous value: -"https_url"New value: +"uri"
      • removedInput schema / properties / url / x-aisa-forbidden-suffixes
        Removed value: -[
        -  ".pdf"
        -]
      • changedInput schema / required
        Previous value: -[
        -  "proxy",
        -  "url"
        -]New value: +[
        +  "url",
        +  "proxy"
        +]
    • Changedpost_firecrawl_search7 fields changed
      • removedInput schema / properties / enterprise
        Removed value: -{
        -  "default": false,
        -  "enum": [
        -    false
        -  ],
        -  "type": "boolean"
        -}
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of results to return."
      • addedInput schema / properties / query / description
        Added value: +"The search query. Must be non-empty and at most 500 characters."
      • addedInput schema / properties / query / example
        Added value: +"firecrawl web scraping api"
      • changedInput schema / properties / query / maxLength
        Previous value: -2000New value: +500
      • removedInput schema / properties / query / minLength
        Removed value: -1
      • removedInput schema / properties / sources
        Removed value: -{
        -  "default": [
        -    "web"
        -  ],
        -  "enum": [
        -    [
        -      "web"
        -    ]
        -  ],
        -  "items": {
        -    "type": "string"
        -  },
        -  "maxItems": 1,
        -  "minItems": 1,
        -  "type": "array"
        -}
    • Addedpost_oxylabs_ai_search
    • Addedpost_oxylabs_llm
    • Addedpost_oxylabs_llm_cancel
    • Changedsearch17 fields changed
      • removedInput schema / $schema
        Removed value: -"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / properties / category / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "seo",
        +      "finance",
        +      "social",
        +      "search",
        +      "sales",
        +      "mail"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / category / default
        Added value: +null
      • changedInput schema / properties / category / description
        Previous 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."
      • removedInput schema / properties / category / enum
        Removed value: -[
        -  "seo",
        -  "finance",
        -  "social",
        -  "search",
        -  "sales",
        -  "mail"
        -]
      • removedInput schema / properties / category / type
        Removed value: -"string"
      • removedInput schema / properties / known_fields
        Removed value: -{
        -  "additionalProperties": true,
        -  "default": {},
        -  "description": "Known values such as ticker, URL, provider, or identifier that improve retrieval.",
        -  "type": "object"
        -}
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of additional direct tool candidates."New value: +"Maximum candidates, 1-10"
      • removedInput schema / properties / limit / maximum
        Removed value: -20
      • removedInput schema / properties / limit / minimum
        Removed value: -1
      • removedInput schema / properties / provider_filters
        Removed 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
        -}
      • changedInput schema / properties / query / description
        Previous 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."
      • removedInput schema / properties / query / maxLength
        Removed value: -2000
      • removedInput schema / properties / query / minLength
        Removed value: -1
      • removedInput schema / properties / session_id
        Removed 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"
        -}
      • removedOutput schema / properties
        Removed 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"
        -    }
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "next_steps_guidance",
        -  "search_id",
        -  "session_id",
        -  "tools"
        -]
    • Changeduse1 field changed
      • changedInput schema / properties / max_price_usd / description
        Previous 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"
  6. 28 tool updates
    • Addedany_search_apis_v1_search_full
    • Addedany_search_apis_v1_search_smart
    • Addedbatch_get_schema
    • Addedbatch_quote
    • Changedbatch_use18 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / properties / calls / description
        Removed value: -"Up to 20 items of {call_id, operation_id, arguments}; steps at the same execution_level of a plan go in one batch"
      • addedInput schema / properties / calls / items / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • changedInput schema / properties / calls / items / additionalProperties
        Previous value: -trueNew value: +false
      • addedInput schema / properties / calls / items / properties
        Added 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"
        +  }
        +}
      • addedInput schema / properties / calls / items / required
        Added value: +[
        +  "call_id",
        +  "tool",
        +  "arguments"
        +]
      • addedInput schema / properties / calls / maxItems
        Added value: +20
      • addedInput schema / properties / calls / minItems
        Added value: +1
      • removedInput schema / properties / max_price_usd
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "number"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Per-call price cap applied to every item"
        -}
      • removedInput schema / properties / search_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / search_id / default
        Removed value: -null
      • changedInput schema / properties / search_id / description
        Previous value: -"search_id from the search that found these operations"New value: +"Optional search correlation identifier returned by search."
      • addedInput schema / properties / search_id / type
        Added value: +"string"
      • addedInput schema / properties / session_id
        Added 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"
        +}
      • addedOutput schema / $defs
        Added 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."
        +  }
        +}
      • addedOutput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / properties
        Added 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"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "session_id",
        +  "batch_id",
        +  "total_count",
        +  "success_count",
        +  "error_count",
        +  "results",
        +  "next_steps_guidance"
        +]
    • Changedget_details13 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / properties / arguments
        Removed 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."
        -}
      • addedInput schema / properties / include_arguments_schema
        Added value: +{
        +  "default": true,
        +  "description": "Return the complete arguments_schema. Defaults to true.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / include_documentation / description
        Previous 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."
      • addedInput schema / properties / include_response_schema
        Added value: +{
        +  "default": false,
        +  "description": "Return the complete response_schema. Defaults to false.",
        +  "type": "boolean"
        +}
      • removedInput schema / properties / operation_id
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "One operation_id from search"
        -}
      • removedInput schema / properties / operation_ids
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "description": "Up to 20 operation_ids, for a batch"
        -}
      • addedInput schema / properties / session_id
        Added 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"
        +}
      • addedInput schema / properties / tools
        Added 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
        +}
      • removedInput schema / properties / with_quote
        Removed value: -{
        -  "default": true,
        -  "description": "Whether each operation is priced for this account before the answer. One round trip per operation; spends nothing.",
        -  "type": "boolean"
        -}
      • addedInput schema / required
        Added value: +[
        +  "tools"
        +]
      • addedOutput schema / properties
        Added 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"
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "error_count",
        +  "next_steps_guidance",
        +  "session_id",
        +  "success_count",
        +  "tools",
        +  "total_count"
        +]
    • Changedget_exa_agent_run1 field changed
      • removedInput schema / properties / jobId / description
        Removed value: -"The job id returned by the submit call."
    • Addedget_exa_apis_v1_exa_agent_runs
    • Changedget_firecrawl_batch_scrape_job1 field changed
      • removedInput schema / properties / jobId / description
        Removed value: -"The job id returned by the submit call."
    • Changedget_firecrawl_crawl_job1 field changed
      • removedInput schema / properties / jobId / description
        Removed value: -"The job id returned by the submit call."
    • Removedget_oxylabs_llm_job
    • Addedpost_byteplus_fetch
    • Addedpost_byteplus_web_search
    • Changedpost_exa_agent_runs17 fields changed
      • changedInput schema / properties / Idempotency-Key / description
        Previous value: -"Unique key (1 to 191 characters) that makes the submit idempotent. Re-submitting with the same key and request fingerprint returns the original run."New value: +"Trimmed UTF-8 length must be 1 through 191 bytes."
      • removedInput schema / properties / Idempotency-Key / maxLength
        Removed value: -191
      • addedInput schema / properties / Idempotency-Key / pattern
        Added value: +"\\S"
      • addedInput schema / properties / X-AISA-Cost-Mode
        Added value: +{
        +  "description": "Return a read-only cost quote instead of submitting a job.",
        +  "enum": [
        +    "quote"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / X-AISA-Max-Price-USD
        Added value: +{
        +  "description": "Optional maximum customer authorization in USD, validated by the runtime price parser.",
        +  "type": "string"
        +}
      • removedInput schema / properties / dataSources
        Removed value: -{
        -  "description": "Third-party data sources (Exa Connect) the Agent is granted access to.",
        -  "items": {},
        -  "type": "array"
        -}
      • addedInput schema / properties / effort / default
        Added value: +"minimal"
      • changedInput schema / properties / effort / description
        Previous value: -"Compute/depth tier for the run."New value: +"Only minimal effort is supported; omitted, empty and null values normalize to minimal."
      • addedInput schema / properties / effort / enum
        Added value: +[
        +  null,
        +  "",
        +  "minimal"
        +]
      • changedInput schema / properties / effort / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • removedInput schema / properties / input
        Removed value: -{
        -  "description": "Row-processing input: rows to process and exclusions.",
        -  "properties": {
        -    "data": {
        -      "description": "Input rows for the run.",
        -      "items": {},
        -      "type": "array"
        -    },
        -    "exclusion": {
        -      "description": "Items to exclude from processing."
        -    }
        -  },
        -  "type": "object"
        -}
      • removedInput schema / properties / outputSchema
        Removed value: -{
        -  "description": "JSON Schema used to validate the structured output.",
        -  "type": "object"
        -}
      • removedInput schema / properties / previousRunId
        Removed value: -{
        -  "description": "Continue from a previously completed run.",
        -  "type": "string"
        -}
      • changedInput schema / properties / query / description
        Previous value: -"The natural-language research query."New value: +"Non-empty query after trimming whitespace."
      • removedInput schema / properties / query / example
        Removed value: -"Summarize the main changes in RAG evaluation methods over the past year as a bullet list."
      • addedInput schema / properties / query / pattern
        Added value: +"\\S"
      • addedInput schema / properties / systemPrompt
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedpost_exa_answer1 field changed
      • addedInput schema / properties / stream
        Added value: +{
        +  "default": false,
        +  "enum": [
        +    false
        +  ],
        +  "type": "boolean"
        +}
    • Addedpost_exa_apis_v1_exa_agent_runs_jobid_cancel
    • Changedpost_exa_contents1 field changed
      • addedInput schema / properties / stream
        Added value: +{
        +  "default": false,
        +  "enum": [
        +    false
        +  ],
        +  "type": "boolean"
        +}
    • Changedpost_exa_search1 field changed
      • addedInput schema / properties / stream
        Added value: +{
        +  "default": false,
        +  "enum": [
        +    false
        +  ],
        +  "type": "boolean"
        +}
    • Changedpost_firecrawl_batch_scrape34 fields changed
      • changedInput schema / properties / Idempotency-Key / description
        Previous value: -"Unique key (1 to 191 characters) that makes the submit idempotent. Re-submitting with the same key returns the original job."New value: +"Trimmed UTF-8 length must be 1 through 191 bytes."
      • removedInput schema / properties / Idempotency-Key / maxLength
        Removed value: -191
      • addedInput schema / properties / Idempotency-Key / pattern
        Added value: +"\\S"
      • addedInput schema / properties / X-AISA-Cost-Mode
        Added value: +{
        +  "description": "Return a read-only cost quote instead of submitting a job.",
        +  "enum": [
        +    "quote"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / X-AISA-Max-Price-USD
        Added value: +{
        +  "description": "Optional maximum customer authorization in USD, validated by the runtime price parser.",
        +  "type": "string"
        +}
      • removedInput schema / properties / excludeTags / description
        Removed value: -"HTML tags/selectors to drop."
      • addedInput schema / properties / excludeTags / items / description
        Added value: +"Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded."
      • removedInput schema / properties / excludeTags / items / maxLength
        Removed value: -128
      • addedInput schema / properties / excludeTags / items / pattern
        Added value: +"^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])"
      • addedInput schema / properties / excludeTags / items / x-aisa-max-utf8-bytes
        Added value: +128
      • changedInput schema / properties / excludeTags / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • removedInput schema / properties / includeTags / description
        Removed value: -"HTML tags/selectors to keep."
      • addedInput schema / properties / includeTags / items / description
        Added value: +"Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded."
      • removedInput schema / properties / includeTags / items / maxLength
        Removed value: -128
      • addedInput schema / properties / includeTags / items / pattern
        Added value: +"^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])"
      • addedInput schema / properties / includeTags / items / x-aisa-max-utf8-bytes
        Added value: +128
      • changedInput schema / properties / includeTags / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • removedInput schema / properties / maxAge / description
        Removed value: -"Maximum acceptable cache age in milliseconds."
      • changedInput schema / properties / maxAge / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • removedInput schema / properties / maxConcurrency / description
        Removed value: -"Maximum number of concurrent scrapes (1 to 20)."
      • changedInput schema / properties / maxConcurrency / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • removedInput schema / properties / minAge / description
        Removed value: -"Minimum cache age in milliseconds before a page is refetched."
      • changedInput schema / properties / minAge / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • removedInput schema / properties / onlyMainContent / default
        Removed value: -true
      • removedInput schema / properties / onlyMainContent / description
        Removed value: -"Return only the main content of each page."
      • changedInput schema / properties / onlyMainContent / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • removedInput schema / properties / timeout / description
        Removed value: -"Per-page timeout in milliseconds."
      • changedInput schema / properties / timeout / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedInput schema / properties / urls / description
        Previous value: -"1 to 1000 unique HTTPS URLs to scrape. PDF URLs are not supported."New value: +"URLs must also be unique after trimming whitespace and trailing slashes."
      • removedInput schema / properties / urls / example
        Removed value: -[
        -  "https://docs.firecrawl.dev",
        -  "https://docs.firecrawl.dev/introduction"
        -]
      • addedInput schema / properties / urls / items / description
        Added value: +"HTTPS URL with a hostname, without credentials or fragment. Trimmed input ending in .pdf (case insensitive) is not supported."
      • removedInput schema / properties / urls / items / format
        Removed value: -"uri"
      • addedInput schema / properties / urls / items / pattern
        Added value: +"^\\s*[hH][tT][tT][pP][sS]://"
      • addedInput schema / properties / urls / uniqueItems
        Added value: +true
    • Changedpost_firecrawl_crawl64 fields changed
      • changedInput schema / properties / Idempotency-Key / description
        Previous value: -"Unique key (1 to 191 characters) that makes the submit idempotent. Re-submitting with the same key returns the original job."New value: +"Trimmed UTF-8 length must be 1 through 191 bytes."
      • removedInput schema / properties / Idempotency-Key / maxLength
        Removed value: -191
      • addedInput schema / properties / Idempotency-Key / pattern
        Added value: +"\\S"
      • addedInput schema / properties / X-AISA-Cost-Mode
        Added value: +{
        +  "description": "Return a read-only cost quote instead of submitting a job.",
        +  "enum": [
        +    "quote"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / X-AISA-Max-Price-USD
        Added value: +{
        +  "description": "Optional maximum customer authorization in USD, validated by the runtime price parser.",
        +  "type": "string"
        +}
      • removedInput schema / properties / allowExternalLinks / description
        Removed value: -"Follow links to external domains."
      • changedInput schema / properties / allowExternalLinks / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • removedInput schema / properties / allowSubdomains / description
        Removed value: -"Follow links into subdomains of the root domain."
      • changedInput schema / properties / allowSubdomains / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • removedInput schema / properties / crawlEntireDomain / description
        Removed value: -"Crawl the whole domain rather than only the subtree under the root URL."
      • changedInput schema / properties / crawlEntireDomain / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • removedInput schema / properties / delay / description
        Removed value: -"Delay in seconds between requests (0 to 30)."
      • changedInput schema / properties / delay / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • removedInput schema / properties / excludePaths / description
        Removed value: -"Skip URLs whose path matches one of these patterns."
      • addedInput schema / properties / excludePaths / items / description
        Added value: +"Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded."
      • removedInput schema / properties / excludePaths / items / maxLength
        Removed value: -256
      • addedInput schema / properties / excludePaths / items / pattern
        Added value: +"^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])"
      • addedInput schema / properties / excludePaths / items / x-aisa-max-utf8-bytes
        Added value: +256
      • changedInput schema / properties / excludePaths / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • removedInput schema / properties / ignoreQueryParameters / description
        Removed value: -"Treat URLs that differ only by query string as the same page."
      • changedInput schema / properties / ignoreQueryParameters / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • removedInput schema / properties / includePaths / description
        Removed value: -"Only crawl URLs whose path matches one of these patterns."
      • addedInput schema / properties / includePaths / items / description
        Added value: +"Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded."
      • removedInput schema / properties / includePaths / items / maxLength
        Removed value: -256
      • addedInput schema / properties / includePaths / items / pattern
        Added value: +"^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])"
      • addedInput schema / properties / includePaths / items / x-aisa-max-utf8-bytes
        Added value: +256
      • changedInput schema / properties / includePaths / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • removedInput schema / properties / limit / description
        Removed value: -"Maximum number of pages to crawl."
      • removedInput schema / properties / limit / example
        Removed value: -50
      • removedInput schema / properties / maxConcurrency / description
        Removed value: -"Maximum number of concurrent page fetches (1 to 20)."
      • changedInput schema / properties / maxConcurrency / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • removedInput schema / properties / maxDiscoveryDepth / description
        Removed value: -"Maximum link-discovery depth from the root URL."
      • changedInput schema / properties / maxDiscoveryDepth / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • addedInput schema / properties / scrapeOptions / additionalProperties
        Added value: +{
        +  "not": {}
        +}
      • removedInput schema / properties / scrapeOptions / description
        Removed value: -"Per-page scrape options applied while crawling. On the metered profile output is always markdown."
      • removedInput schema / properties / scrapeOptions / properties / excludeTags / description
        Removed value: -"HTML tags/selectors to drop."
      • addedInput schema / properties / scrapeOptions / properties / excludeTags / items / description
        Added value: +"Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded."
      • removedInput schema / properties / scrapeOptions / properties / excludeTags / items / maxLength
        Removed value: -128
      • addedInput schema / properties / scrapeOptions / properties / excludeTags / items / pattern
        Added value: +"^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])"
      • addedInput schema / properties / scrapeOptions / properties / excludeTags / items / x-aisa-max-utf8-bytes
        Added value: +128
      • changedInput schema / properties / scrapeOptions / properties / excludeTags / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • removedInput schema / properties / scrapeOptions / properties / includeTags / description
        Removed value: -"HTML tags/selectors to keep."
      • addedInput schema / properties / scrapeOptions / properties / includeTags / items / description
        Added value: +"Non-empty after trimming; no CR/LF; UTF-8 byte length is bounded."
      • removedInput schema / properties / scrapeOptions / properties / includeTags / items / maxLength
        Removed value: -128
      • addedInput schema / properties / scrapeOptions / properties / includeTags / items / pattern
        Added value: +"^[^\\r\\n]*\\S[^\\r\\n]*$(?![\\s\\S])"
      • addedInput schema / properties / scrapeOptions / properties / includeTags / items / x-aisa-max-utf8-bytes
        Added value: +128
      • changedInput schema / properties / scrapeOptions / properties / includeTags / type
        Previous value: -"array"New value: +[
        +  "array",
        +  "null"
        +]
      • removedInput schema / properties / scrapeOptions / properties / maxAge / description
        Removed value: -"Maximum acceptable cache age in milliseconds."
      • changedInput schema / properties / scrapeOptions / properties / maxAge / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • removedInput schema / properties / scrapeOptions / properties / minAge / description
        Removed value: -"Minimum cache age in milliseconds before a page is refetched."
      • changedInput schema / properties / scrapeOptions / properties / minAge / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • removedInput schema / properties / scrapeOptions / properties / onlyMainContent / default
        Removed value: -true
      • removedInput schema / properties / scrapeOptions / properties / onlyMainContent / description
        Removed value: -"Return only the main content of each page."
      • changedInput schema / properties / scrapeOptions / properties / onlyMainContent / type
        Previous value: -"boolean"New value: +[
        +  "boolean",
        +  "null"
        +]
      • removedInput schema / properties / scrapeOptions / properties / timeout / description
        Removed value: -"Per-page timeout in milliseconds."
      • changedInput schema / properties / scrapeOptions / properties / timeout / type
        Previous value: -"integer"New value: +[
        +  "integer",
        +  "null"
        +]
      • changedInput schema / properties / scrapeOptions / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • removedInput schema / properties / sitemap / description
        Removed value: -"How the site's sitemap is used during discovery."
      • changedInput schema / properties / sitemap / enum
        Previous value: -[
        -  "skip",
        -  "include",
        -  "only"
        -]New value: +[
        +  null,
        +  "skip",
        +  "include",
        +  "only"
        +]
      • changedInput schema / properties / sitemap / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedInput schema / properties / url / description
        Previous value: -"The HTTPS root URL to crawl. PDF URLs are not supported."New value: +"HTTPS URL with a hostname, without credentials or fragment. Trimmed input ending in .pdf (case insensitive) is not supported."
      • removedInput schema / properties / url / example
        Removed value: -"https://docs.firecrawl.dev"
      • removedInput schema / properties / url / format
        Removed value: -"uri"
      • addedInput schema / properties / url / pattern
        Added value: +"^\\s*[hH][tT][tT][pP][sS]://"
    • Changedpost_firecrawl_map6 fields changed
      • removedInput schema / properties / limit / description
        Removed value: -"Maximum number of links to discover. Required on the metered profile."
      • removedInput schema / properties / limit / example
        Removed value: -100
      • removedInput schema / properties / url / description
        Removed value: -"The HTTPS URL to map."
      • removedInput schema / properties / url / example
        Removed value: -"https://docs.firecrawl.dev"
      • changedInput schema / properties / url / format
        Previous value: -"uri"New value: +"https_url"
      • changedInput schema / required
        Previous value: -[
        -  "url",
        -  "limit"
        -]New value: +[
        +  "limit",
        +  "url"
        +]
    • Changedpost_firecrawl_scrape14 fields changed
      • removedInput schema / properties / formats / description
        Removed value: -"Optional output formats. When present it must be exactly [\"markdown\"]."
      • addedInput schema / properties / formats / enum
        Added value: +[
        +  [
        +    "markdown"
        +  ]
        +]
      • removedInput schema / properties / formats / example
        Removed value: -[
        -  "markdown"
        -]
      • removedInput schema / properties / formats / items / enum
        Removed value: -[
        -  "markdown"
        -]
      • addedInput schema / properties / formats / maxItems
        Added value: +1
      • addedInput schema / properties / formats / minItems
        Added value: +1
      • addedInput schema / properties / onlyCleanContent
        Added value: +{
        +  "enum": [
        +    false
        +  ],
        +  "type": "boolean"
        +}
      • removedInput schema / properties / proxy / description
        Removed value: -"Proxy tier. Must be explicitly set to \"basic\" on the metered profile."
      • removedInput schema / properties / proxy / example
        Removed value: -"basic"
      • removedInput schema / properties / url / description
        Removed value: -"The HTTPS URL to scrape. PDF URLs are not supported on the metered profile."
      • removedInput schema / properties / url / example
        Removed value: -"https://docs.firecrawl.dev"
      • changedInput schema / properties / url / format
        Previous value: -"uri"New value: +"https_url"
      • addedInput schema / properties / url / x-aisa-forbidden-suffixes
        Added value: +[
        +  ".pdf"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "url",
        -  "proxy"
        -]New value: +[
        +  "proxy",
        +  "url"
        +]
    • Changedpost_firecrawl_search7 fields changed
      • addedInput schema / properties / enterprise
        Added value: +{
        +  "default": false,
        +  "enum": [
        +    false
        +  ],
        +  "type": "boolean"
        +}
      • removedInput schema / properties / limit / description
        Removed value: -"Maximum number of results to return."
      • removedInput schema / properties / query / description
        Removed value: -"The search query. Must be non-empty and at most 500 characters."
      • removedInput schema / properties / query / example
        Removed value: -"firecrawl web scraping api"
      • changedInput schema / properties / query / maxLength
        Previous value: -500New value: +2000
      • addedInput schema / properties / query / minLength
        Added value: +1
      • addedInput schema / properties / sources
        Added value: +{
        +  "default": [
        +    "web"
        +  ],
        +  "enum": [
        +    [
        +      "web"
        +    ]
        +  ],
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 1,
        +  "minItems": 1,
        +  "type": "array"
        +}
    • Removedpost_oxylabs_ai_search
    • Removedpost_oxylabs_llm
    • Removedpost_oxylabs_llm_cancel
    • Changedsearch17 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • removedInput schema / properties / category / anyOf
        Removed value: -[
        -  {
        -    "enum": [
        -      "seo",
        -      "finance",
        -      "social",
        -      "search",
        -      "sales",
        -      "mail"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • removedInput schema / properties / category / default
        Removed value: -null
      • changedInput schema / properties / category / description
        Previous 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.)"
      • addedInput schema / properties / category / enum
        Added value: +[
        +  "seo",
        +  "finance",
        +  "social",
        +  "search",
        +  "sales",
        +  "mail"
        +]
      • addedInput schema / properties / category / type
        Added value: +"string"
      • addedInput schema / properties / known_fields
        Added value: +{
        +  "additionalProperties": true,
        +  "default": {},
        +  "description": "Known values such as ticker, URL, provider, or identifier that improve retrieval.",
        +  "type": "object"
        +}
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum candidates, 1-10"New value: +"Maximum number of additional direct tool candidates."
      • addedInput schema / properties / limit / maximum
        Added value: +20
      • addedInput schema / properties / limit / minimum
        Added value: +1
      • addedInput schema / properties / provider_filters
        Added 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
        +}
      • changedInput schema / properties / query / description
        Previous 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."
      • addedInput schema / properties / query / maxLength
        Added value: +2000
      • addedInput schema / properties / query / minLength
        Added value: +1
      • addedInput schema / properties / session_id
        Added 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"
        +}
      • addedOutput schema / properties
        Added 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"
        +    }
        +  }
        +}
      • addedOutput schema / required
        Added value: +[
        +  "next_steps_guidance",
        +  "search_id",
        +  "session_id",
        +  "tools"
        +]
    • Changeduse1 field changed
      • changedInput schema / properties / max_price_usd / description
        Previous 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"
  7. 1 tool update
    • Changedget_details1 field changed
      • addedInput schema / properties / include_documentation
        Added value: +{
        +  "default": false,
        +  "description": "Include the complete native public OpenAPI document, reference closure and scoped completeness. Existing execution schemas remain unchanged.",
        +  "type": "boolean"
        +}
  8. 4 tool updates
    • Addedget_oxylabs_llm_job
    • Changedpost_oxylabs_ai_search5 fields changed
      • removedInput schema / properties / prompt
        Removed value: -{
        -  "description": "The natural-language prompt. Used by `chatgpt` (max 4000 chars), `gemini` (max 8000 chars), and `perplexity`. Use `query` instead for the Google-type sources.",
        -  "example": "best noise cancelling headphones 2026",
        -  "type": "string"
        -}
      • changedInput schema / properties / query / description
        Previous value: -"The search query. Used by `google_search` and `google_ai_mode`. Use `prompt` instead for chatgpt/gemini/perplexity."New value: +"The search query. Required for `google_search` and `google_ai_mode`."
      • removedInput schema / properties / search
        Removed value: -{
        -  "description": "For `chatgpt`, set to true to have ChatGPT browse the web before answering.",
        -  "example": true,
        -  "type": "boolean"
        -}
      • changedInput schema / properties / source / description
        Previous value: -"The AI answer engine to query. `google_search` returns Google AI Overviews. Each source expects a specific subset of the parameters below."New value: +"The Google AI answer engine to query. `google_search` returns Google AI Overviews; `google_ai_mode` returns Google AI Mode. For ChatGPT/Gemini/Perplexity use the async endpoint `post_oxylabs_llm` instead."
      • changedInput schema / properties / source / enum
        Previous value: -[
        -  "chatgpt",
        -  "gemini",
        -  "perplexity",
        -  "google_search",
        -  "google_ai_mode"
        -]New value: +[
        +  "google_search",
        +  "google_ai_mode"
        +]
    • Addedpost_oxylabs_llm
    • Addedpost_oxylabs_llm_cancel
  9. 32 tool updates
    • First observedbatch_use
    • First observedget_details
    • First observedget_exa_agent_run
    • First observedget_firecrawl_batch_scrape_job
    • First observedget_firecrawl_crawl_job
    • First observedlist_categories
    • First observedpost_anthropic_websearch_search
    • First observedpost_exa_agent_runs
    • First observedpost_exa_answer
    • First observedpost_exa_contents
    • First observedpost_exa_search
    • First observedpost_firecrawl_batch_scrape
    • First observedpost_firecrawl_crawl
    • First observedpost_firecrawl_map
    • First observedpost_firecrawl_scrape
    • First observedpost_firecrawl_search
    • First observedpost_openai_websearch_search
    • First observedpost_oxylabs_ai_search
    • First observedpost_perplexity_sonar
    • First observedpost_perplexity_sonar_deep_research
    • First observedpost_perplexity_sonar_pro
    • First observedpost_perplexity_sonar_reasoning_pro
    • First observedpost_scholar_search_explain
    • First observedpost_scholar_search_mixed
    • First observedpost_scholar_search_scholar
    • First observedpost_scholar_search_web
    • First observedpost_tavily_crawl
    • First observedpost_tavily_extract
    • First observedpost_tavily_map
    • First observedpost_tavily_search
    • First observedsearch
    • First observeduse

Publisher details

Operator
AIsa · Publisher source
Operator website
https://aisa.one
Vendor relationship
Independent
Trust center
Not available
Restrictions
No paid plan, admin approval, regional limit or custom OAuth app is needed to connect. Sign-in is OAuth against auth.aisa.one with dynamic client registration (RFC 7591), or an Authorization: Bearer AIsa API key. search, get_details and list_categories are free. use and batch_use are billed per call to the caller's own AIsa key, and max_price_usd refuses anything above a cap before any spend. Some operations are subscription-only on the gateway and answer 402 without the Hive GTM Growth plan.

Related MCP Connectors

  • Your agent needs live data — a competitor's traffic, who to contact there, what people are saying, what Google and ChatGPT answer about you, a company's filings. Normally that is six vendor accounts, six sets of keys and six SDKs. This is one URL. **What you can ask for** • "How much traffic does stripe.com get, where does it come from, and who competes for the same keywords?" • "Find 20 Series-B fintech companies in Germany and the heads of marketing there, with emails." • "Does ChatGPT mention our brand when someone asks for the best CRM — and what does it cite?" • "What is X saying about $NVDA today, and what did the stock actually do?" • "Search the web for this, then scrape the three best pages into markdown." **How to use it** Point any MCP client at https://mcp.aisa.one/mcp and sign in with OAuth — there is no key to create or paste. Then just ask: the agent calls search to find the right operation and use to run it. **Why this rather than the source** 26 sources behind one account and one bill — DataForSEO, Semrush, Ahrefs, Similarweb, Apollo, X/Twitter, Instagram, Reddit, Pinterest, YouTube, Tavily, Exa, Perplexity, Firecrawl, CoinGecko, Kalshi, Polymarket, AgentMail and more, 580+ operations. tools/list returns five tools, not 580, so the introduction does not eat your context window. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** One slice at a time: https://mcp.aisa.one/seo/mcp · /finance/mcp · /social/mcp · /search/mcp · /sales/mcp · /mail/mcp · /gtm/mcp, or a single provider like /twitter-api/mcp. Same account, fewer tools listed, and search still reaches everything. Full list at https://mcp.aisa.one/servers

  • Your agent needs the Google results page as it actually renders — organic and paid, the AI overview, maps, images, news, jobs and the finance panel — not a scraped guess. **What you can ask for** • "What does the SERP for this keyword look like in Germany, on mobile?" • "Does this query trigger an AI overview, and what does it say?" • "Who is advertising against our brand name?" • "Find local results and the map pack for this phrase." • "Search Google by this image and tell me where else it appears." **How to use it** Point any MCP client at https://mcp.aisa.one/seo-serp/mcp and sign in with OAuth — there is no key to create or paste. 38 tools across Google's surfaces: organic, ads and advertisers, AI mode, autocomplete, images, news, maps and local, events, jobs, datasets, scholar, finance quotes and markets, plus Semrush's organic and paid result sets. **Why this rather than the source** Location and language are parameters, so you can read the page a customer in another country sees. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Read the SERP here, then ask the same agent who links to the winner or how much traffic they get — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/seo-serp-other-engines/mcp for Bing, Yahoo, Baidu, Naver, Seznam and YouTube. https://mcp.aisa.one/seo/mcp for all of it at once — rankings, keywords, backlinks, site health and AI-answer visibility across DataForSEO, Semrush and Ahrefs.

  • Google is not the whole market. Your agent needs Bing, Yahoo, Baidu, Naver, Seznam and YouTube results — the engines that decide whether you exist in China, Korea, Japan or Central Europe. **What you can ask for** • "What ranks for this term on Baidu, and how different is it from Google?" • "Check Naver results for our Korean brand name." • "Compare Bing and Yahoo results for the same query." • "What comes up on YouTube search for this phrase in Japanese?" • "Take a screenshot of the results page as a user there sees it." **How to use it** Point any MCP client at https://mcp.aisa.one/seo-serp-other-engines/mcp and sign in with OAuth — there is no key to create or paste. 34 tools: organic results from Bing, Yahoo, Baidu, Naver and Seznam in live, regular and raw-HTML forms, YouTube search, an AI summary of a result set, and a rendered screenshot. **Why this rather than the source** The engines that matter outside the US, with the same call shape as the Google ones. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Check the local engine here, then ask the same agent what the site's traffic or backlinks look like in that market — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/seo-serp/mcp for Google itself. https://mcp.aisa.one/seo/mcp for all of it at once — rankings, keywords, backlinks, site health and AI-answer visibility across DataForSEO, Semrush and Ahrefs.

  • Your agent needs marketplace data — what a product costs on Amazon and Google Shopping, who the sellers are, what reviewers actually complain about. **What you can ask for** • "What is this ASIN's price history, rating and seller list?" • "Who else sells this product, and at what price?" • "Pull the reviews for this product and group the complaints." • "What comes up on Google Shopping for this query in the UK?" • "Compare these products across both marketplaces." **How to use it** Point any MCP client at https://mcp.aisa.one/seo-merchant/mcp and sign in with OAuth — there is no key to create or paste. 22 tools: Amazon products, ASIN detail and sellers; Google Shopping products, product info, sellers and reviews; live and queued forms, with raw HTML where you need it. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Price the product here, then ask the same agent what the brand's site traffic or ad spend looks like — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/seo/mcp for all of it at once — rankings, keywords, backlinks, site health and AI-answer visibility across DataForSEO, Semrush and Ahrefs.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP tool server that gives any AI agent the ability to search, scrape, and analyze content across the internet.
    42
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    This MCP server enables AI agents to search configured providers in parallel and crawl individual pages or entire sites into clean Markdown or JSON, including authenticated pages via saved sessions.
    -
  • A
    license
    A
    quality
    A
    maintenance
    A local-first MCP server that lets AI agents read any webpage as clean Markdown, crawl whole sites within configured limits, search without API keys, and solve supported captchas locally — all without cloud services or third-party keys.
    30
    20
    AGPL 3.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources