Skip to main content
Glama

AIsa AI Visibility

Server Details

Your brand is now answered about, not just ranked. Your agent needs to know whether ChatGPT, Claude, Gemini and Perplexity name you when someone asks about your category — and what they cite instead.

What you can ask for • "Ask ChatGPT, Claude, Gemini and Perplexity 'best CRM for startups' and tell me who gets named." • "How often is our brand mentioned across AI answers this month, and is it rising?" • "Which domains get cited most in answers about this topic?" • "Which of our pages do the models quote?" • "How much search volume sits behind the prompts people actually type?"

How to use it Point any MCP client at https://mcp.aisa.one/seo-ai-visibility/mcp and sign in with OAuth — there is no key to create or paste. 23 tools: live responses from ChatGPT, Claude, Gemini and Perplexity, the raw scraped answer page where you need it, plus brand-mention search, aggregated and cross metrics, top cited domains and top cited pages, and AI keyword volume.

Why this rather than the source Four engines measured the same way, so the comparison is between models rather than between vendors' methodologies.

It is also a door to the rest The same login reaches 26 sources and 580+ operations. Find who the models cite here, then ask the same agent for that domain's backlinks or traffic to see why — 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.

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

TDQS

B3.4/5.0

Scored across 30 tools

Disambiguation4/5

Most tools are distinctly named based on the AI model they target or the type of data they provide (e.g., scraper vs. live response). However, the sheer number of highly similar API endpoints creates a risk of misselection.

Naming Consistency2/5

The naming conventions are highly inconsistent across the tool set. The server mixes general utility names (`account`, `search`) with standardized prefixes (`post_dataforseo_ai_`) and varying verb structures (`get_dataforseo_ai_` vs. `post_dataforseo_ai_`).

Tool Count5/5

Given the complexity of the DataForSEO AI Visibility domain—covering multiple LLMs, billing, and multiple types of visibility metrics—30 tools are well-justified and detailed.

Completeness5/5

The server provides near-complete coverage for its stated domain, including pricing, usage tracking, model listing, live responses, scraper outputs, and detailed mention metrics.

Available Tools

30 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_dataforseo_ai_chat_gpt_llm_responses_modelsList of ChatGPT models for LLM ResponsesB
Read-onlyIdempotent
Inspect

You will receive the list of available Chat GPT AI models by calling this API.   As a response of the API server, you will receive JSON-encoded data containing a tasks array with the information specific to the set tasks.

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

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/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, openWorld). The description adds genuine behavioral context via the billing note ($0.012 estimate, not fixed price), which is useful for a paid endpoint. However, it spends its remaining words restating the response envelope, which is redundant given an output schema exists.

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 pricing line is compact and earns its place. The second sentence about a JSON tasks array is generic boilerplate that repeats what the output schema already provides and adds no decision value.

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 trivial no-parameter discovery endpoint with a full output schema, the description covers what the tool returns and its cost. Nothing an agent needs to call it correctly is missing, though the usage context could be richer.

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?

Zero parameters, so there is no parameter semantics to explain; nothing is missing. Baseline 4 applies.

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 the specific resource clearly: the list of available ChatGPT models. The ChatGPT scope lets an agent distinguish it from the claude, gemini, and perplexity models siblings. It stops short of a crisp 'list/returns' verb framing, opening with 'You will receive', but the resource is unambiguous.

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, when-not, or alternative guidance. The agent must infer from sibling names that this is the discovery call preceding post_dataforseo_ai_chat_gpt_llm_responses_live; the description never says so.

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

get_dataforseo_ai_claude_llm_responses_modelsList of Claude Models for LLM ResponsesA
Read-onlyIdempotent
Inspect

You will receive the list of available Claude AI models by calling this API.   As a response of the API server, you will receive JSON-encoded data containing a tasks array with the information specific to the set tasks.

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

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered elsewhere. The description adds that the response is JSON with a tasks array and discloses usage-based billing (~$0.012 default estimate), which is genuinely useful cost context not present in the annotations or schema.

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

Conciseness3/5

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

The first sentence is front-loaded and useful. The second sentence is generic API boilerplate about a 'tasks array' that adds little, and the pricing block is verbosity that a lean definition would compress.

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?

With an output schema present and annotations covering the safety profile, the description only needs to convey purpose and cost. It does both, but omits any pointer to the live-response sibling that consumes these model IDs, leaving a workflow gap for a discovery tool.

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 there is nothing for the description to disambiguate; baseline 4 applies. The description correctly implies a no-argument enumeration call.

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+resource: retrieve the list of available Claude AI models via this API. Against siblings like get_dataforseo_ai_chat_gpt_llm_responses_models and get_dataforseo_ai_gemini_llm_responses_models, the provider scope (Claude) makes it unambiguous which one to pick.

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 or companion tools. The natural use case — calling this to discover model IDs before invoking post_dataforseo_ai_claude_llm_responses_live — is left entirely to inference from the sibling name.

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

get_dataforseo_ai_gemini_llm_responses_modelsList of Gemini models for LLM ResponsesB
Read-onlyIdempotent
Inspect

You will receive the list of available Gemini AI models by calling this API.   As a response of the API server, you will receive JSON-encoded data containing a tasks array with the information specific to the set tasks.

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

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds a billing/cost estimate, which is genuinely new context, but its claim about receiving 'a tasks array' merely restates what the output schema likely encodes.

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 first sentence is front-loaded and useful. The second sentence is generic API boilerplate about JSON and a tasks array that is repeated across sibling tools and adds little, and the inline pricing comment is meta-noise in the description field.

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 need not enumerate return values, and annotations cover the safety profile. The one meaningful gap is that the description never explains how the returned model list is consumed by the live-response siblings.

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 no parameters, so there are no parameter semantics to document; the baseline for a zero-parameter tool applies. Nothing in the description contradicts or confuses the empty schema.

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: retrieving the list of available Gemini AI models. The Gemini qualifier plus the 'LLM Responses' framing distinguishes it from sibling model-listing tools for ChatGPT, Claude, and Perplexity, though the description never explicitly contrasts them.

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 indication of when this discovery call should be made versus alternatives, nor that its result is presumably a prerequisite for the sibling post_dataforseo_ai_gemini_llm_responses_live call. The agent must infer the workflow from the name alone.

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

get_dataforseo_ai_gemini_llm_scraper_languagesGemini LLM Scraper Languages ListB
Read-onlyIdempotent
Inspect

You will receive the list of languages by calling this API.

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

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description does add a genuinely useful behavioral fact that structured fields lack: it is usage-billed at roughly $0.012 per request. That cost disclosure is the only added value, and it is templated boilerplate rather than tool-specific behavior.

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 core sentence is short and front-loaded, but the appended pricing block with HTML-comment markers is template noise unrelated to tool selection. Roughly half the text does not earn its place for an agent deciding whether to call this 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?

With no parameters, an output schema present, and rich annotations, the description does not need to explain returns or safety. Only the missing scoping context (which scraper's language set this is) keeps it from being 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?

There are zero parameters and 100% schema description coverage, so the baseline of 4 applies. Nothing in the description is needed to explain parameter usage.

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

Purpose3/5

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

The description says only that you 'will receive the list of languages,' which is a vague restatement of the tool name rather than a precise statement of what resource is returned and under what framing (e.g., languages supported by the Gemini LLM scraper). It does not distinguish this tool from the closely named sibling get_dataforseo_ai_gemini_llm_scraper_locations.

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 guidance on when to call this versus the many sibling lookup endpoints (scraper_locations, responses_models, llm_mentions_locales, etc.). The agent must infer usage entirely from the tool name.

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

get_dataforseo_ai_gemini_llm_scraper_locationsGemini LLM Scraper Locations ListB
Read-onlyIdempotent
Inspect

You will receive the list of locations by this API call. You can filter the list of locations by country when setting a task.

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

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds the usage-based billing estimate ($0.012 default) and the fact that location filtering happens at task-setting time, which is useful value beyond the annotations, but it says nothing about response size, caching, or the openWorld implication.

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?

Two short sentences with the resource stated first, plus an injected pricing block that carries genuinely useful cost information. No redundancy or padding beyond the slightly filler opening clause.

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?

With an output schema present, return values need no explanation, and a zero-parameter lookup tool does not demand much. However, for an agent choosing among ~30 DataForSEO endpoints, the description never clarifies that this list feeds the 'location' field of post_dataforseo_ai_gemini_llm_scraper_live tasks or how it differs from the languages sibling, leaving a real routing gap.

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?

Parameter count is 0, so the baseline is 4. The mention of country filtering does not map to any input parameter of this call (it applies when setting a task), so the description neither helps nor misleads on parameters.

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

Purpose3/5

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

The description states the resource ('list of locations') for the Gemini LLM scraper, which distinguishes it loosely from the sibling languages tool, but the framing 'You will receive the list of locations by this API call' is passive and largely restates the tool name rather than naming a specific action (retrieve/fetch). It is understandable but not sharp.

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?

The only usage hint is 'You can filter the list of locations by country when setting a task,' which describes downstream task behavior rather than when to call this tool or how it relates to siblings like get_dataforseo_ai_gemini_llm_scraper_languages. No exclusions, prerequisites, or alternatives are given.

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

get_dataforseo_ai_keyword_localesList of Locations and Languages for AI Keyword Data APIA
Read-onlyIdempotent
Inspect

‌ Using this endpoint you can get the full list of locations and languages supported in AI Keyword Data API.

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

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description adds genuinely useful billing context (default estimate $0.012 USD, not a fixed price), which is value beyond the annotations, but it discloses nothing about response shape or pagination.

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 core purpose sentence is appropriately short and front-loaded, but the definition is padded with an injected zero-width character and a pricing HTML-comment block that, while informative, is boilerplate rather than tool-specific guidance.

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 no-parameter metadata-listing endpoint with an output schema present, the definition covers what is needed; return-value explanation is unnecessary since the output schema carries it. Only sibling differentiation is absent.

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 schema has nothing to describe and the baseline is 4. No parameter meaning is needed or missing.

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 clearly: retrieve the full list of locations and languages supported in the AI Keyword Data API. However, it does not distinguish itself from the similar sibling get_dataforseo_ai_llm_mentions_locales, leaving the agent to infer which locale list applies to which API.

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

Usage Guidelines3/5

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

Usage is only implied: this is a metadata endpoint presumably called before issuing AI Keyword queries to discover valid locations/languages. No explicit when-to-use or when-not guidance is given relative to the sibling locales tool.

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

get_dataforseo_ai_llm_mentions_available_filtersFilters for AI Optimization LLM Mentions APIB
Read-onlyIdempotent
Inspect

‌‌ Here you will find all the necessary information about filters that can be used with AI Optimization LLM Mentions API endpoints.

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

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so safety is covered. The description adds real behavioral value by disclosing usage-based billing with a $0.012 default request estimate, but says nothing about the shape or volume of what is returned.

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

Conciseness3/5

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

The core sentence is short and front-loaded, but the text is padded with hidden markup artifacts in the string and an HTML-comment-wrapped pricing block. The billing disclosure earns its place; the artifacts do not.

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 values need not be explained. Still, for a reference tool feeding filter construction into the llm_mentions endpoints, the description never connects the filters to those callers or hints at how the filters are applied, leaving a gap an agent must bridge on its own.

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 baseline of 4 applies. There is nothing for the description to clarify about arguments beyond what the empty schema already conveys.

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

Purpose3/5

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

The description states the resource clearly: filter information for the AI Optimization LLM Mentions API endpoints. However, the verb is weak and passive ('Here you will find'), and it does not distinguish this filter-metadata tool from the sibling get_dataforseo_ai_llm_mentions_locales, which is a different kind of filter-value lookup.

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 guidance on when to call this versus the five post_dataforseo_ai_llm_mentions_*_live endpoints it presumably supports. An agent is left to infer that this should be consulted before constructing a filtered mentions request.

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

get_dataforseo_ai_llm_mentions_localesList of Locations and Languages for AI Optimization LLM Mentions APIB
Read-onlyIdempotent
Inspect

‌ Using this endpoint you can get the full list of locations and languages supported in AI Optimization LLM Mentions API.

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

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds billing context (usage-based, ~$0.012 estimate, not a fixed price), which is genuinely useful behavioral information, though it says nothing about rate limits or response characteristics.

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 in a single sentence and the pricing note is compact. There is minor noise (a leading zero-width character and an HTML-comment pricing wrapper), but no wasted prose.

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 no-parameter metadata endpoint with an output schema present, the description needn't explain return values, and annotations cover the safety profile. The only real omission is any link to how the returned locales are consumed downstream.

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 baseline of 4 applies. The description correctly implies no input is needed and adds nothing that conflicts with the empty schema.

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 (get) and resource (full list of locations and languages supported in AI Optimization LLM Mentions API), so the agent knows exactly what it returns. It scopes itself to the LLM Mentions API, which differentiates it somewhat from sibling locale tools like get_dataforseo_ai_keyword_locales, but it never explicitly contrasts with those siblings.

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?

The description says only what the endpoint returns; it gives no when-to-use context, no prerequisites, and no routing against the many similar locale/language/location sibling tools. The natural guidance ('call this to discover valid codes before invoking the LLM Mentions search endpoints') is absent.

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

get_dataforseo_ai_perplexity_llm_responses_modelsList of Perplexity models for LLM ResponsesB
Read-onlyIdempotent
Inspect

You will receive the list of available Perplexity AI models by calling this API.   As a response of the API server, you will receive JSON-encoded data containing a tasks array with the information specific to the set tasks.

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

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds the usage-based billing estimate ($0.012), which is genuine behavioral context beyond the annotations, but it discloses nothing about output shape or rate limits beyond the redundant tasks-array note.

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 core statement is front-loaded, but the second sentence describing JSON-encoded tasks-array output duplicates what the output schema already provides and is written in verbose boilerplate prose. The pricing aside is useful; the return-format sentence is not.

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 no parameters and an output schema present, the description does not need to explain return values, and it correctly avoids elaborating beyond a brief mention. Its only shortfall is the absence of any usage routing, but against the structured fields it is otherwise adequate.

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 schema carries no semantics to compensate for; baseline 4 applies. There is nothing parameter-related the description could add.

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 resource (available Perplexity AI models) and distinguishes itself from the GPT/Claude/Gemini model-listing siblings by naming Perplexity. The phrasing is passive ('You will receive... by calling this API') rather than a crisp verb, but the intent is unambiguous.

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

Usage Guidelines2/5

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

No guidance on when to call this versus the sibling model-listing tools or the corresponding post_dataforseo_ai_perplexity_llm_responses_live tool. The agent must infer that this is a discovery/prerequisite step from context alone.

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_dataforseo_ai_chat_gpt_llm_responses_liveLive ChatGPT LLM ResponsesC
Destructive
Inspect

‌‌ Live ChatGPT LLM Responses endpoint allows you to retrieve structured responses from a specific ChatGPT AI model, based on the input parameters.

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

NameRequiredDescriptionDefault
bodyNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

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

Annotations already declare the operation as openWorld, destructive, non-idempotent, and not read-only, so the description's main addition is the usage-based pricing estimate. It does not explain cost triggers (e.g., which parameters affect billing) or confirm side-effect behavior beyond what annotations already state.

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 short and front-loads the purpose before the pricing note. It contains leading zero-width characters and an HTML comment block, but overall it is appropriately sized and easy to parse.

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?

For a live LLM endpoint with many optional behavioral parameters and a rich output schema, the description omits nearly all operational context. It does not guide model selection, web-search flags, token limits, or conversation history usage, making it incomplete despite the pricing note.

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% at the top level, and the description provides no parameter details whatsoever. It says only 'based on the input parameters' and does not compensate for the coverage gap, leaving the required model_name and user_prompt fields unmentioned.

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 states a specific verb (retrieve) and resource (structured responses from a ChatGPT AI model). It identifies the ChatGPT variant, distinguishing it from sibling Claude, Gemini, and Perplexity endpoints, but does not explicitly name those alternatives.

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?

The description offers no when-to-use guidance, no prerequisites, and no alternatives to consider. It only says responses are based on input parameters, leaving the agent to infer context entirely.

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

post_dataforseo_ai_chat_gpt_llm_scraper_liveLive ChatGPT LLM ScraperB
Destructive
Inspect

‌‌ Live ChatGPT LLM Scraper endpoint provides results from ChatGPT searches. The results are specific to the selected location (see the List of Locations) and language (see the List of Languages) parameters.

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

NameRequiredDescriptionDefault
bodyNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare the safety profile (destructiveHint=true, openWorldHint=true, idempotentHint=false). The description adds one genuinely useful behavioral fact not in the annotations: usage-based billing with a ~$0.004 default request estimate. However, it does not explain what makes this call 'destructive', nor auth/rate-limit behavior, so it only modestly exceeds the annotation baseline.

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 body is short and the core purpose is front-loaded before the location/language qualifier and the billing note. The only noise is the stray zero-width/whitespace characters prefixed to the text and the HTML-comment pricing wrapper.

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 values needn't be explained, and the annotations carry the safety profile. What remains missing is the piece an agent most needs for this family: how this scraper call differs from the responses-live and *_html variants.

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?

Top-level schema coverage is reported as 0%, but the nested body-item properties (keyword, language_code/language_name, location_code/location_name, force_web_search, tag) carry extensive inline documentation that the description does not repeat. The description only gestures at the location and language parameters and omits keyword and force_web_search entirely, so it neither compensates for the coverage gap nor adds meaning beyond the schema.

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 states a concrete verb+resource: it returns results from ChatGPT searches, and narrows the scope to the selected location and language. That is enough for an agent to know what the endpoint returns, but it never distinguishes this tool from near-identical siblings like post_dataforseo_ai_chat_gpt_llm_scraper_live_html or post_dataforseo_ai_chat_gpt_llm_responses_live.

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, no prerequisites, and no mention of alternatives. Given that five sibling tools perform nearly identical ChatGPT/Gemini/Claude live calls, the absence of any routing rule is a real gap.

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

post_dataforseo_ai_chat_gpt_llm_scraper_live_htmlLive ChatGPT LLM Scraper API HTMLC
Destructive
Inspect

‌ Live ChatGPT LLM Scraper API HTML provides a raw HTML page of the results for the specified keyword, language, and location.

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

NameRequiredDescriptionDefault
bodyNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare the full safety profile (readOnlyHint=false, destructiveHint=true, openWorldHint=true, idempotentHint=false). The description adds genuinely useful billing context ('Default request estimate: $0.701 USD', 'not a fixed price'). But it describes read-like retrieval ('provides a raw HTML page') while annotations mark the tool destructive/not-read-only, and it never reconciles this or states what side effects a 'scraper' has.

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 core sentence is front-loaded and efficient, with the billing block clearly delimited. Minor waste from a leading zero-width/blank character before the sentence, but no verbosity.

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 values need not be explained. The description covers purpose and cost, but for a live open-world scraper among many sibling LLM endpoints it omits the key routing decision (HTML vs non-HTML scraper) and permission/usage caveats, leaving the agent under-informed about selection.

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?

Top-level 'body' param has 0% schema coverage, so the description must compensate, and it only names 'keyword, language, and location' without adding syntax or format detail. The nested properties are richly documented inside the schema items (character limits, decoding rules, language/location code lookups), so the schema does most of the work. Baseline 3 is appropriate.

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 states a specific verb and artifact: it 'provides a raw HTML page of the results for the specified keyword, language, and location.' An agent can tell this is the HTML-output variant of the ChatGPT LLM scraper. However, it never explicitly distinguishes itself from the sibling post_dataforseo_ai_chat_gpt_llm_scraper_live (non-HTML), so differentiation is left to inference.

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, no comparison to the non-HTML sibling, and no prerequisites stated. An agent cannot tell from the text why it would pick the HTML variant over the standard scraper endpoint.

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

post_dataforseo_ai_claude_llm_responses_liveLive Claude LLM ResponsesC
Destructive
Inspect

‌‌ Live Claude LLM Responses endpoint allows you to retrieve structured responses from a specific Claude model, based on the input parameters.

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

NameRequiredDescriptionDefault
bodyNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already carry the safety profile (readOnlyHint=false, destructiveHint=true, openWorldHint=true, idempotentHint=false), and the description adds genuinely useful cost context via the billing estimate. However, it never explains why this POST is flagged destructive/non-idempotent, nor describes latency, async behavior, or rate limits – it also gives no hint that the request requires a model lookup first.

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 core sentence is front-loaded and tight. The appended pricing comment block is boilerplate, but it is short and clearly delimited, so it does not obscure the purpose statement.

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, but for a nested, constraint-heavy request body the description is far too thin. It omits the required-field expectation (model_name, user_prompt are marked required in the schema), the 500-character prompts, the 10-message chain cap, and the models-listing endpoint the agent must call to resolve valid model names.

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?

Reported schema description coverage is 0% at the top level (the single 'body' array parameter), and the description compensates with nothing beyond the generic phrase 'based on the input parameters'. No mention of model_name, user_prompt, message_chain limits, or the temperature/top_p mutual exclusion, all of which the caller must get right.

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 ('retrieve structured responses from a specific Claude model'), which distinguishes it from the ChatGPT, Gemini, and Perplexity siblings that share the same naming pattern. It is clear but does not explicitly call out how it differs from those alternatives.

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, when-not-to-use, or alternative-selection guidance is given. Given three sibling LLM-response endpoints with identical shapes, the description gives the agent no basis for choosing between them beyond the model name in the tool name.

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

post_dataforseo_ai_gemini_llm_responses_liveLive Gemini LLM ResponsesC
Destructive
Inspect

‌‌ Live Gemini LLM Responses endpoint allows you to retrieve structured responses from a specific Gemini AI model, based on the input parameters.

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

NameRequiredDescriptionDefault
bodyNo

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 the safety profile (readOnlyHint=false, destructiveHint=true, openWorldHint=true), so the bar is lower, but the description adds almost nothing behavioral beyond a cost snippet. It does not reconcile the counterintuitive non-read-only/destructive labeling with the word 'retrieve' used in the description, nor mention auth, rate limits, or latency.

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?

Two short sentences plus a clearly delimited pricing block, with the core purpose front-loaded. Nothing is padded, though the 'based on the input parameters' clause is filler that adds no information.

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 values need not be described, and the payload is documented in the nested schema, so the fundamentals are covered. However, for a billable, open-world LLM query tool the description omits the routing guidance and behavioral context an agent needs to call it correctly versus its model siblings.

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?

Top-level schema description coverage is 0% – the single 'body' parameter has no description – and the tool description provides no compensating explanation of the request payload shape. Though the nested schema is richly documented internally, the description itself contributes no parameter-level meaning, leaving the burden entirely on the schema.

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 names a specific verb ('retrieve structured responses') and resource ('Gemini AI model'), and the tool name itself separates it from the ChatGPT/Claude/Perplexity LLM siblings. It stops short of explicitly stating when this Gemini endpoint is preferred over those siblings, so it is clear but not differentiated in prose.

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 guidance on when to use this endpoint, no prerequisites, and no mention of the sibling LLM endpoints (chat_gpt, claude, perplexity) that an agent would need to disambiguate against. The only usage-adjacent content is a billing estimate, which is cost information rather than routing guidance.

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

post_dataforseo_ai_gemini_llm_scraper_liveLive Gemini LLM Scraper AdvancedB
Destructive
Inspect

‌‌ Live Gemini LLM Scraper endpoint provides structured results from Gemini. The results are specific to the selected location (see the List of Locations), language (see the List of Languages), and keyword.

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

NameRequiredDescriptionDefault
bodyNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare destructive=true, openWorld=true, idempotent=false, so the safety profile is covered. The description adds genuinely useful cost context ($0.701 default estimate, usage-based billing), which annotations do not carry. It still omits latency, rate limits, or what exactly a 'scrape' consumes, so it only partially extends the structured data.

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?

Two short sentences front-load the purpose, and the pricing note is clearly delimited. There is no padding or filler; only the leading zero-width characters and the slightly vague 'structured results' phrasing keep it from a 5.

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 values need not be described, and annotations carry the safety profile. Still, for a complex nested-body API tool the description omits sibling differentiation and the body array request structure, leaving real gaps an agent must resolve from the schema alone.

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?

Top-level schema description coverage is 0% (the body array wrapper is undocumented), but the nested item schema richly documents keyword, language, and location fields. The description names the same three dimensions (location, language, keyword) that determine results, adding a little meaning but no syntax or structure detail beyond the schema.

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 names a specific verb (scraper) and resource (Gemini LLM structured results), so an agent can tell it returns scraped LLM output for a query. However, it never distinguishes itself from close siblings like post_dataforseo_ai_gemini_llm_responses_live or post_dataforseo_ai_gemini_llm_scraper_live_html, leaving the 'Advanced' qualifier unexplained.

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

Usage Guidelines3/5

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

It implies what drives results (location, language, keyword) and cross-references the Locations and Languages sibling endpoints as setup steps, which is useful prerequisite guidance. But it gives no explicit when-to-use vs the Responses or _html variants, so routing 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_dataforseo_ai_gemini_llm_scraper_live_htmlLive Gemini LLM Scraper HTMLB
Destructive
Inspect

‌ Live Gemini LLM Scraper API HTML provides a raw HTML page of the results for the specified keyword, language (see the List of Languages), and location (see the List of Locations).

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

NameRequiredDescriptionDefault
bodyNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare openWorldHint=true, idempotentHint=false, destructiveHint=true and readOnlyHint=false, so the mutation/no-cache profile is known from structured data. The description's real contribution is the billing disclosure ('Usage-based billing; Default request estimate: $0.701 USD'), which is genuinely useful for a live, per-call paid endpoint, but it omits that each call is a live render (no caching) and does not establish its own cost guidance beyond the boilerplate figure.

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?

Two sentences plus a pricing note, front-loaded with the core capability, with no filler prose. It loses a point for leaving a stray zero-width character at the start of the description and for the pricing block being generic boilerplate rather than tool-specific.

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 explanation is appropriately absent, and the cost note covers the biggest risk. However, for a live, billing-per-call, non-idempotent scraping endpoint, the description says nothing about batch/multi-task behavior suggested by the array input, rate limits, or failure modes, leaving an agent to infer them.

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 names only keyword, language, and location, leaving expand_citations, tag, and location_coordinate, plus the array/body wrapper that implies one or more task objects per call, undocumented at the description level. The nested schema does carry rich per-field text (format rules, code-vs-name alternatives, coordinate syntax), so the practical coverage is better than the reported 0%, but the description itself adds no field semantics beyond restating three 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 states a concrete verb and output ('provides a raw HTML page of the results') for a concrete resource (Gemini LLM scraper results) scoped to keyword/language/location. That is enough to distinguish it from the JSON-returning sibling post_dataforseo_ai_gemini_llm_scraper_live, but the sibling is never named, so the differentiation is only implicit in the word 'HTML'.

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

Usage Guidelines3/5

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

The description implies the context of use ('for the specified keyword, language, and location') but never says when to pick this HTML variant over the plain scraper_live sibling, nor any exclusions. Among a sibling list containing both post_dataforseo_ai_gemini_llm_scraper_live and ..._live_html, an explicit routing sentence is the missing piece.

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

post_dataforseo_ai_keyword_volume_liveAI Keyword Data Keyword Search VolumeB
Destructive
Inspect

‌ This endpoint provides search volume data for your target keywords, reflecting their estimated usage in AI tools.

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

NameRequiredDescriptionDefault
bodyNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=true, idempotentHint=false, openWorldHint=true), so the bar is lower. The description adds one genuinely useful behavioral fact not present in structured data: usage-based billing with a ~$0.011 estimated cost per request. It does not, however, explain or reconcile the non-read-only/destructive labeling, retry safety, or rate limits, leaving a noticeable 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 purpose in one sentence, followed by a compact pricing note; nothing is padded. Minor noise: a stray leading zero-width character and the templated aisa-pricing comment markers, which are formatting artifacts rather than content.

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 values need not be described, and the cost caveat is a helpful addition. However, for a POST endpoint carrying a destructive/non-idempotent annotation profile and a nested array input with required-if-paired location/language fields, the description should say more about input requirements and safety expectations than it does.

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 reported as 0% and the single top-level 'body' parameter is undocumented, so the description would need to compensate, yet it mentions no parameters at all (no keywords, language_code/name, location_code/name pairing). The nested item schema is internally detailed enough that an agent is not entirely lost, but the description itself contributes zero parameter meaning.

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+resource: 'provides search volume data for your target keywords,' and adds the scoping qualifier 'reflecting their estimated usage in AI tools,' which separates it from the Google-Ads-style volume siblings. It stops short of naming an alternative (e.g. post_dataforseo_keywords_gads_search_volume_live) or explaining how the AI-tool volume differs, so differentiation is implied rather than explicit.

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, no mention of when this should be preferred over the many sibling keyword-volume/keyword-overview endpoints, and no prerequisites such as needing a location or language pair. The description is purely declarative about what the endpoint returns.

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

post_dataforseo_ai_llm_mentions_aggregated_metrics_liveLive LLM Mentions Aggregated MetricsA
Destructive
Inspect

How often assistants mention your target, as totals rather than individual answers: total and items. Measured at 7.0 KB. ⚠️ target is an array of objects, each {"domain": "..."} or {"keyword": "..."}; a bare string is rejected as the wrong type and an array of strings as 'Each target item must be an object'. Filter fields come from get_dataforseo_ai_llm_mentions_available_filters. Wrapped in DataForSEO's envelope: data in tasks[0].result, outcome in tasks[0].status_code - a rejected request still returns HTTP 200. This is the headline visibility number; post_dataforseo_ai_llm_mentions_search_live shows the answers behind it, and post_dataforseo_ai_llm_mentions_cross_metrics_live compares several targets at once.

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

NameRequiredDescriptionDefault
bodyYes

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 behavior beyond the annotations: the DataForSEO envelope contract (data in tasks[0].result, outcome in tasks[0].status_code, rejected requests still returning HTTP 200), the type-rejection behavior for a bare string target with the literal error text, and a billing estimate. None of this is derivable from readOnlyHint/openWorldHint/destructiveHint/idempotentHint.

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 returns before constraints, siblings and billing, and nearly every clause earns its place. The 'Measured at 7.0 KB' fragment is cryptic and adds little, and the paragraph is dense enough to be slightly hard to scan.

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, return values need not be described, and the envelope explanation plus sibling routing covers the main gaps. Minor omissions remain around authentication/permission needs for a tool annotated destructiveHint=true, and the pricing note is generic.

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 description coverage is 0%, and the description compensates by spelling out that target must be an 'array of objects' with {"domain": ...} or {"keyword": ...}, including the exact error messages for the wrong shapes. It does not discuss the other body-level fields (platform, location, filters), though the nested schema documents those in detail.

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 resource and measurement ('How often assistants mention your target, as totals rather than individual answers') with named return fields. It explicitly distinguishes itself from siblings: search_live 'shows the answers behind it' and cross_metrics_live 'compares several targets at once'.

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?

Tells the agent this is 'the headline visibility number' and routes to the two specific alternatives with the conditions that select them. It also points at get_dataforseo_ai_llm_mentions_available_filters for filter field discovery, so the when-to-use and where-to-look guidance is complete.

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

post_dataforseo_ai_llm_mentions_cross_metrics_liveLive LLM Mentions Cross Aggregated MetricsA
Destructive
Inspect

Compares mention metrics across several targets in one call, grouped by aggregation_key. Takes targets as a list of target arrays rather than the single target its siblings take - the shapes differ, and mixing them up is rejected as an unknown field. ⚠️ target is an array of objects, each {"domain": "..."} or {"keyword": "..."}; a bare string is rejected as the wrong type and an array of strings as 'Each target item must be an object'. Filter fields come from get_dataforseo_ai_llm_mentions_available_filters. Wrapped in DataForSEO's envelope: data in tasks[0].result, outcome in tasks[0].status_code - a rejected request still returns HTTP 200. Running post_dataforseo_ai_llm_mentions_aggregated_metrics_live once per target costs the same per call, so use this when the comparison itself is the point.

Usage-based billing; Default request estimate: $0.101 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 non-read-only, non-idempotent, open-world behavior, and the description adds genuinely new operational context: the DataForSEO envelope with data in `tasks[0].result` and outcome in `tasks[0].status_code`, plus the important caveat that a rejected request still returns HTTP 200. It also surfaces usage-based billing with a default estimate, which annotations do not cover. It stops short of describing rate limits or what a rejected-call payload looks like, so 4 rather than 5.

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

Conciseness4/5

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

Dense but front-loaded: the differentiator (multi-target comparison), the shape warning, the filter source, and the envelope caveat each appear in order of importance. There is mild redundancy in restating the array-of-objects requirement twice (prose plus shown error strings), but every sentence carries actionable content.

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?

Given an output schema exists, return values need not be explained, yet the description still supplies the envelope paths and the HTTP-200-on-rejection quirk that would otherwise trip an agent. Combined with the sibling disambiguation, shape warnings, and pricing note, nothing material for 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?

Top-level coverage is reported as 0%, so the description carries weight: it warns that `target` is an array of objects like {"domain": "..."} or {"keyword": "..."}, that a bare string is rejected as the wrong type, and that an array of strings yields 'Each target item must be an object'. That is real disambiguation beyond the schema's nested property docs, though it does not explain filter syntax or the aggregation_key labeling semantics in depth.

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 ('compares mention metrics across several targets in one call, grouped by aggregation_key') and explicitly positions itself against siblings, noting it takes `targets` as a list of target arrays rather than the single `target` its siblings accept. An agent can distinguish it from post_dataforseo_ai_llm_mentions_aggregated_metrics_live and search_live 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 selection rule against a named alternative: running aggregated_metrics_live once per target costs the same, 'so use this when the comparison itself is the point.' It also routes the agent to get_dataforseo_ai_llm_mentions_available_filters for filter fields, covering both when-to-use and where-to-source-inputs.

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

post_dataforseo_ai_llm_mentions_search_liveLive LLM MentionsA
Destructive
Inspect

The individual answers in which an assistant mentioned your target. Returns total_count, current_offset, search_after_token and items - page with the token, not offset, past the first pages. Measured at 7.7 KB for one item. ⚠️ target is an array of objects, each {"domain": "..."} or {"keyword": "..."}; a bare string is rejected as the wrong type and an array of strings as 'Each target item must be an object'. Filter fields come from get_dataforseo_ai_llm_mentions_available_filters. Wrapped in DataForSEO's envelope: data in tasks[0].result, outcome in tasks[0].status_code - a rejected request still returns HTTP 200. For counts rather than the mentions themselves use post_dataforseo_ai_llm_mentions_aggregated_metrics_live.

Usage-based billing; Default request estimate: $0.701 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?

Adds substantial context beyond the annotations: the DataForSEO envelope layout (tasks[0].result vs tasks[0].status_code), the fact that a rejected request still returns HTTP 200, per-item size (~7.7 KB), and pagination via search_after_token. The annotations carry the safety profile and the pricing note explains the billing side effect, so this is strong but not exhaustive.

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

Conciseness4/5

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

Purpose is front-loaded, followed by pagination, size, the target-type warning, and the envelope note. Most sentences earn their place; the pricing boilerplate block is noise but is tooling-inserted rather than authored.

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 complex, many-parameter, billed search call, the description covers the high-risk pitfalls (target shape, envelope, error-as-200, pagination) and an output schema exists so return values need not be re-explained. It could say more about non-target params, but nothing essential for a correct call is missing.

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

Parameters4/5

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

Coverage is reported at 0%, so the description must compensate. It does this for the critical parameter by warning that target is an array of objects ({domain}/{keyword}) and that a bare string or array of strings is rejected, plus a pointer to the filter-field source. The remaining params (platform, location, language, order_by, limit) are left to the schema's own nested 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 resource and verb: the individual answers where an assistant mentioned your target. It names the sibling it is not (aggregated_metrics for counts), so an agent can distinguish 'raw mentions' from 'counts' 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?

Explicitly routes to post_dataforseo_ai_llm_mentions_aggregated_metrics_live when counts rather than mentions are wanted, and points to get_dataforseo_ai_llm_mentions_available_filters for filter fields. It also says to page with the token rather than offset past the first pages. It doesn't differentiate from the other mentions siblings (top_domains, top_pages, cross_metrics), so it falls short of a full 5.

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

post_dataforseo_ai_llm_mentions_top_domains_liveLive LLM Mentions Top DomainsA
Destructive
Inspect

The domains assistants cite most when answering about your target: total and items. Measured at 20.3 KB, the largest response in the mentions family. ⚠️ target is an array of objects, each {"domain": "..."} or {"keyword": "..."}; a bare string is rejected as the wrong type and an array of strings as 'Each target item must be an object'. Filter fields come from get_dataforseo_ai_llm_mentions_available_filters. Wrapped in DataForSEO's envelope: data in tasks[0].result, outcome in tasks[0].status_code - a rejected request still returns HTTP 200. This is the list to pitch: these are the pages shaping what assistants say. For individual pages rather than domains use post_dataforseo_ai_llm_mentions_top_pages_live.

Usage-based billing; Default request estimate: $0.101 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?

With annotations already present, the description still adds real operational context: approximate response size (20.3 KB, largest in the family), the DataForSEO envelope layout (data in tasks[0].result, outcome in tasks[0].status_code), and the non-obvious fact that a rejected request still returns HTTP 200. It does not reconcile the destructiveHint=true annotation with what is plainly a retrieval call, which is the one remaining 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 purpose and response shape, then format warnings, then the envelope, then the routing hint — a sensible order. The pricing boilerplate block and the 'This is the list to pitch' cheerleading sentence are the only non-essential lines.

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 live POST query tool with a formal output schema and non-trivial platform/location constraints, the description covers routing, target format, error semantics, and response size. Since an output schema exists, it is not obligated to enumerate return fields, and it does not need to.

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 must carry the parameter load, and it does the most important part: it warns that target must be an array of objects and quotes the exact rejection messages for a bare string or array of strings. It adds less on the optional fields, which the nested schema descriptions do cover.

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 — the domains assistants cite most for a target — and immediately names the sibling it is not (top_pages_live for individual pages). An agent can distinguish it from the other mentions 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?

It names the alternative explicitly with the selecting condition ('For individual pages rather than domains use post_..._top_pages_live') and routes filter discovery to get_dataforseo_ai_llm_mentions_available_filters. Nothing about when to reach for this tool vs its siblings 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_dataforseo_ai_llm_mentions_top_pages_liveLive LLM Mentions Top PagesA
Destructive
Inspect

The individual pages assistants cite most when answering about your target: total and items. Measured at 13.1 KB. ⚠️ target is an array of objects, each {"domain": "..."} or {"keyword": "..."}; a bare string is rejected as the wrong type and an array of strings as 'Each target item must be an object'. Filter fields come from get_dataforseo_ai_llm_mentions_available_filters. Wrapped in DataForSEO's envelope: data in tasks[0].result, outcome in tasks[0].status_code - a rejected request still returns HTTP 200. More actionable than its domain-level twin post_dataforseo_ai_llm_mentions_top_domains_live when you want to know which article to update or pitch, rather than which publisher.

Usage-based billing; Default request estimate: $0.701 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?

Adds substantial context beyond the annotations: the DataForSEO envelope layout (data in tasks[0].result, outcome in tasks[0].status_code), the fact that a rejected request still returns HTTP 200, and a billing estimate. The destructiveHint=true annotation is not directly explained, but the usage-based billing note partially accounts for the paid side effect.

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 the purpose, then the high-risk target-format warning, then envelope behavior, then sibling routing, then billing. Well ordered, though the 'Measured at 13.1 KB' fragment and the injected pricing block add minor clutter.

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 re-explained, and the description still covers error signalling, target format pitfalls, filtering, sibling routing, and cost. Complete enough for a correct invocation, with only the destructive annotation left unaddressed.

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 description coverage is reported as 0% for the single body param, so the description must compensate, and it does: it warns that `target` is an array of objects ({domain}/{keyword}), that a bare string is rejected as the wrong type, and that an array of strings fails with a specific error. It also routes filter fields to the available-filters sibling.

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 resource ('the individual pages assistants cite most when answering about your target') with an implicit verb and named output fields. It explicitly distinguishes itself from its sibling post_dataforseo_ai_llm_mentions_top_domains_live, so an agent can pick correctly 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?

Gives a clear selection rule against the twin tool ('which article to update or pitch, rather than which publisher') and points to get_dataforseo_ai_llm_mentions_available_filters for filter fields. It lacks explicit when-not conditions or prerequisites, but the context is clear.

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

post_dataforseo_ai_perplexity_llm_responses_liveLive Perplexity LLM ResponsesB
Destructive
Inspect

‌‌ Live Perplexity LLM Responses endpoint allows you to retrieve structured responses from a specific Perplexity AI model, based on the input parameters.

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

NameRequiredDescriptionDefault
bodyNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the safety profile is covered. The description adds genuine context beyond them by disclosing usage-based billing and an estimated per-request cost (~$0.0163), but it does nothing to explain the live/non-cached nature or clarify why a read-style LLM query is flagged destructive.

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

Conciseness4/5

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

Two tight sentences with the purpose front-loaded and no wasted prose. The injected pricing block is boilerplate but adds a concrete cost fact; the phrase 'based on the input parameters' is the only filler.

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 values needn't be described, and the nested input schema is thorough. However, for a live third-party inference endpoint with three very similar siblings, the description is minimal: it never routes the agent among the model-specific variants or notes that results are real-time.

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?

Top-level schema coverage is 0% (the single 'body' parameter is undocumented), but the nested properties inside it carry very detailed inline descriptions (model_name, user_prompt, message_chain alternation rules, token limits, etc.). The description adds nothing about parameters, so the schema must do all the work, which it largely does.

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 clear verb ('retrieve structured responses') and resource ('from a specific Perplexity AI model'), so the agent knows what the tool returns. It does not explicitly differentiate itself from the near-identical ChatGPT/Claude/Gemini siblings, though the model name in the tool title partly carries that.

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?

The description says only 'based on the input parameters' and offers no when-to-use guidance, no when-not-to-use, and no pointer to the sibling endpoints for other models. An agent must infer that this is the Perplexity-specific option rather than being told.

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. 11 tool updates
    • Addedaccount
    • Removedget_details
    • Changedpost_dataforseo_ai_chat_gpt_llm_responses_live1 field changed
      • changedInput schema / properties / body / items / oneOf
        Previous value: -[
        -  {
        -    "example": [
        -      {
        -        "max_output_tokens": 200,
        -        "message_chain": [
        -          {
        -            "message": "Hello, what’s up?",
        -            "role": "user"
        -          },
        -          {
        -            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        -            "role": "ai"
        -          }
        -        ],
        -        "model_name": "gpt-4.1-mini",
        -        "system_message": "communicate as if we are in a business meeting",
        -        "temperature": 0.3,
        -        "top_p": 0.5,
        -        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        -        "web_search": true,
        -        "web_search_city": "Paris",
        -        "web_search_country_iso_code": "FR"
        -      }
        -    ],
        -    "properties": {
        -      "force_web_search": {
        -        "description": "<em>force AI agent to use web search</em><br>optional field<br>to enable this parameter, <code>web_search</code> must also be enabled;<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response <br><strong>Note #2:</strong> not supported in reasoning models",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "max_output_tokens": {
        -        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value for reasoning models (e.g., <code>reasoning</code> is <code>true</code> in the <a href=\"/v3/ai_optimization/chat_gpt/llm_responses/models/\" target=\"_blank\">Models endpoint</a>): <code>1024</code>;<br>minimum value for non-reasoning models: <code>16</code>;<br>maximum value: <code>4096</code>;<br>default value: <code>2048</code><br><strong>Note:</strong> if <code>web_search</code> is set to <code>true</code> or the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "message_chain": {
        -        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        -        "items": {
        -          "oneOf": [
        -            {
        -              "properties": {
        -                "message": {
        -                  "description": "message text",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "role": {
        -                  "description": "role of the user from whom the message originates",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                }
        -              },
        -              "type": "object"
        -            }
        -          ],
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "model_name": {
        -        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>for example, if <code>gpt-4.1</code> is specified, the <code>gpt-4.1-2025-04-14</code> will be set as <code>model_name</code> automatically;<br>you can receive the list of available LLM models by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/models</code>",
        -        "type": "string"
        -      },
        -      "system_message": {
        -        "description": "<em>instructions for the AI behaviour</em><br>optional field<br>defines the AI's role, tone, or specific behavior <br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "temperature": {
        -        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse; <br>lower values make output more focused;<br>minimum value: <code>0</code><br>maximum value: <code>2</code><br>default value: <code>0.94</code><br><strong>Note:</strong> not supported in reasoning models",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "top_p": {
        -        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection;<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>0.92</code><p><strong>Note:</strong>  <code>top_p</code> cannot be used together with <code>temperature</code> in the same request",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "user_prompt": {
        -        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        -        "type": "string"
        -      },
        -      "web_search": {
        -        "description": "<em>enable web search</em><br>optional field<br>when enabled, the AI model can access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/models/\">Models endpoint</a> for a list of models that support <code>web_search</code>;",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "web_search_city": {
        -        "description": "<em>city name of the location</em><br>optional field<br><strong>Note:</strong> not supported in <code>o3-mini</code>, <code>o1-pro</code>, <code>o1</code> models",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "web_search_country_iso_code": {
        -        "description": "<em>ISO country code of the location</em><br>optional field<br>to enable this parameter, <code>web_search</code> must also be enabled;<br>when enabled, the AI model will search the web from the country you specify;<br><strong>Note:</strong> not supported in <code>o3-mini</code>, <code>o1-pro</code>, <code>o1</code> models",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "force_web_search": {
        +        "description": "<em>force AI agent to use web search</em><br>optional field<br>to enable this parameter, <code>web_search</code> must also be enabled;<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response <br><strong>Note #2:</strong> not supported in reasoning models",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "max_output_tokens": {
        +        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value for reasoning models (e.g., <code>reasoning</code> is <code>true</code> in the <a href=\"/v3/ai_optimization/chat_gpt/llm_responses/models/\" target=\"_blank\">Models endpoint</a>): <code>1024</code>;<br>minimum value for non-reasoning models: <code>16</code>;<br>maximum value: <code>4096</code>;<br>default value: <code>2048</code><br><strong>Note:</strong> if <code>web_search</code> is set to <code>true</code> or the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "message_chain": {
        +        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        +        "items": {
        +          "oneOf": [
        +            {
        +              "properties": {
        +                "message": {
        +                  "description": "message text",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "role": {
        +                  "description": "role of the user from whom the message originates",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ],
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "model_name": {
        +        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>for example, if <code>gpt-4.1</code> is specified, the <code>gpt-4.1-2025-04-14</code> will be set as <code>model_name</code> automatically;<br>you can receive the list of available LLM models by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/models</code>",
        +        "type": "string"
        +      },
        +      "system_message": {
        +        "description": "<em>instructions for the AI behaviour</em><br>optional field<br>defines the AI's role, tone, or specific behavior <br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "temperature": {
        +        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse; <br>lower values make output more focused;<br>minimum value: <code>0</code><br>maximum value: <code>2</code><br>default value: <code>0.94</code><br><strong>Note:</strong> not supported in reasoning models",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "top_p": {
        +        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection;<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>0.92</code><p><strong>Note:</strong>  <code>top_p</code> cannot be used together with <code>temperature</code> in the same request",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "user_prompt": {
        +        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        +        "type": "string"
        +      },
        +      "web_search": {
        +        "description": "<em>enable web search</em><br>optional field<br>when enabled, the AI model can access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/models/\">Models endpoint</a> for a list of models that support <code>web_search</code>;",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "web_search_city": {
        +        "description": "<em>city name of the location</em><br>optional field<br><strong>Note:</strong> not supported in <code>o3-mini</code>, <code>o1-pro</code>, <code>o1</code> models",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "web_search_country_iso_code": {
        +        "description": "<em>ISO country code of the location</em><br>optional field<br>to enable this parameter, <code>web_search</code> must also be enabled;<br>when enabled, the AI model will search the web from the country you specify;<br><strong>Note:</strong> not supported in <code>o3-mini</code>, <code>o1-pro</code>, <code>o1</code> models",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
    • Changedpost_dataforseo_ai_chat_gpt_llm_scraper_live1 field changed
      • changedInput schema / properties / body / items / oneOf
        Previous value: -[
        -  {
        -    "example": [
        -      {
        -        "keyword": "albert einstein",
        -        "language_code": "en",
        -        "location_code": 2840
        -      }
        -    ],
        -    "properties": {
        -      "force_web_search": {
        -        "description": "<em>force AI agent to use web search</em><br>optional field<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "keyword": {
        -        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        -        "type": "string"
        -      },
        -      "language_code": {
        -        "description": "<em>search engine language code</em><br><strong>required field if you don't specify <code>language_name</code>;</strong><br>if you use this field, you don't need to specify <code>language_name</code>;<br>you can receive the list of available languages of the search engine with their <code>language_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/languages</code>",
        -        "type": "string"
        -      },
        -      "language_name": {
        -        "description": "<em>full name of search engine language</em><br><strong>required field if you don't specify <code>language_code</code>;</strong><br>if you use this field, you don't need to specify <code>language_code</code>;<br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/languages</code>",
        -        "type": "string"
        -      },
        -      "location_code": {
        -        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code><br><strong>if you use this field, you don't need to specify <code>location_name</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        -        "type": "integer"
        -      },
        -      "location_name": {
        -        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code><br><strong>if you use this field, you don't need to specify <code>location_code</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        -        "type": "string"
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "force_web_search": {
        +        "description": "<em>force AI agent to use web search</em><br>optional field<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        +        "type": "string"
        +      },
        +      "language_code": {
        +        "description": "<em>search engine language code</em><br><strong>required field if you don't specify <code>language_name</code>;</strong><br>if you use this field, you don't need to specify <code>language_name</code>;<br>you can receive the list of available languages of the search engine with their <code>language_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/languages</code>",
        +        "type": "string"
        +      },
        +      "language_name": {
        +        "description": "<em>full name of search engine language</em><br><strong>required field if you don't specify <code>language_code</code>;</strong><br>if you use this field, you don't need to specify <code>language_code</code>;<br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/languages</code>",
        +        "type": "string"
        +      },
        +      "location_code": {
        +        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code><br><strong>if you use this field, you don't need to specify <code>location_name</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        +        "type": "integer"
        +      },
        +      "location_name": {
        +        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code><br><strong>if you use this field, you don't need to specify <code>location_code</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        +        "type": "string"
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
    • Changedpost_dataforseo_ai_chat_gpt_llm_scraper_live_html1 field changed
      • changedInput schema / properties / body / items / oneOf
        Previous value: -[
        -  {
        -    "example": [
        -      {
        -        "keyword": "albert einstein",
        -        "language_code": "en",
        -        "location_code": 2840
        -      }
        -    ],
        -    "properties": {
        -      "expand_citations": {
        -        "description": "<em>return expanded citation bar in HTML results</em><br>optional field<br>to enable this parameter, <code>force_web_search</code> must also be enabled;<br>when enabled, the endpoint will return HTML data from the expanded citation bar;<br>default value: <code>false</code>",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "force_web_search": {
        -        "description": "<em>force AI agent to use web search</em><br>optional field<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "keyword": {
        -        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        -        "type": "string"
        -      },
        -      "language_code": {
        -        "description": "<em>search engine language code</em><br><strong>required field if you don't specify</strong> <code>language_name</code><br><strong>if you use this field, you don't need to specify <code>language_name</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_code</code>_by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/languages</code><br>example:<code class=\"long-string\">en</code>n",
        -        "type": "string"
        -      },
        -      "language_name": {
        -        "description": "<em>full name of search engine language</em><br><strong>required field if you don't specify</strong> <code>language_code</code><br><strong>if you use this field, you don't need to specify <code>language_code</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/languages</code><br>example:<br><code class=\"long-string\">English</code>",
        -        "type": "string"
        -      },
        -      "location_code": {
        -        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code><br><strong>if you use this field, you don't need to specify <code>location_name</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        -        "type": "integer"
        -      },
        -      "location_name": {
        -        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code><br><strong>if you use this field, you don't need to specify <code>location_code</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        -        "type": "string"
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "expand_citations": {
        +        "description": "<em>return expanded citation bar in HTML results</em><br>optional field<br>to enable this parameter, <code>force_web_search</code> must also be enabled;<br>when enabled, the endpoint will return HTML data from the expanded citation bar;<br>default value: <code>false</code>",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "force_web_search": {
        +        "description": "<em>force AI agent to use web search</em><br>optional field<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        +        "type": "string"
        +      },
        +      "language_code": {
        +        "description": "<em>search engine language code</em><br><strong>required field if you don't specify</strong> <code>language_name</code><br><strong>if you use this field, you don't need to specify <code>language_name</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_code</code>_by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/languages</code><br>example:<code class=\"long-string\">en</code>n",
        +        "type": "string"
        +      },
        +      "language_name": {
        +        "description": "<em>full name of search engine language</em><br><strong>required field if you don't specify</strong> <code>language_code</code><br><strong>if you use this field, you don't need to specify <code>language_code</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/languages</code><br>example:<br><code class=\"long-string\">English</code>",
        +        "type": "string"
        +      },
        +      "location_code": {
        +        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code><br><strong>if you use this field, you don't need to specify <code>location_name</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        +        "type": "integer"
        +      },
        +      "location_name": {
        +        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code><br><strong>if you use this field, you don't need to specify <code>location_code</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        +        "type": "string"
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
    • Changedpost_dataforseo_ai_claude_llm_responses_live1 field changed
      • changedInput schema / properties / body / items / oneOf
        Previous value: -[
        -  {
        -    "example": [
        -      {
        -        "max_output_tokens": 200,
        -        "message_chain": [
        -          {
        -            "message": "Hello, what’s up?",
        -            "role": "user"
        -          },
        -          {
        -            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        -            "role": "ai"
        -          }
        -        ],
        -        "model_name": "claude-opus-5",
        -        "system_message": "communicate as if we are in a business meeting",
        -        "temperature": 0.3,
        -        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        -        "web_search": true,
        -        "web_search_country_iso_code": "FR"
        -      }
        -    ],
        -    "properties": {
        -      "force_web_search": {
        -        "description": "<em>force AI agent to use web search</em><br>optional field<br>to enable this parameter, <code>web_search</code> must also be enabled;<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "max_output_tokens": {
        -        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value: <code>1</code>;<br>maximum value: <code>4096</code>;<br>default value: <code>2048</code>;<br><strong>Note:</strong> if <code>web_search</code> is set to <code>true</code> or the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit<br><strong>Note #2:</strong> if <code>use_reasoning</code> is set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1025</code>",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "message_chain": {
        -        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        -        "items": {
        -          "oneOf": [
        -            {
        -              "properties": {
        -                "message": {
        -                  "description": "message text",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "role": {
        -                  "description": "role of the user from whom the message originates",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                }
        -              },
        -              "type": "object"
        -            }
        -          ],
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "model_name": {
        -        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>for example, if <code>claude-opus-4-0</code> is specified, the <code>claude-opus-4-20250514</code> will be set as <code>model_name</code> automatically;<br>you can receive the list of available LLM models by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/claude/llm_responses/models</code>",
        -        "type": "string"
        -      },
        -      "system_message": {
        -        "description": "<em>instructions for the AI behaviour</em><br>optional field<br>defines the AI's role, tone, or specific behavior;<br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "temperature": {
        -        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse; <br>lower values make output more focused;<br>minimum value: <code>0</code><br>maximum value: <code>1</code><br>default value: <code>0.7</code><p><strong>Note:</strong> <code>temperature</code> cannot be used together with <code>top_p</code> in the same request",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "top_p": {
        -        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection;<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>null</code><p><strong>Note:</strong> <code>top_p</code> cannot be used together with <code>temperature</code> in the same request",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "use_reasoning": {
        -        "description": "<em>enable reasoning for the AI model</em><br>optional field<br>when enabled, the model will perform reasoning before generating a response<br>refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/claude/llm_responses/models/\" target=\"_blank\">Models endpoint</a> for a list of models that support <code>reasoning</code><br>default value: <code>false</code><br><strong>Note:</strong> if set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1025</code><br><strong>Note #2:</strong> if set to <code>true</code>, <code>force_web_search</code> must be set to <code>false</code><br><strong>Note #3:</strong> if set to <code>true</code>, the <code>temperature</code> and <code>top_p</code> cannot be used",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "user_prompt": {
        -        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        -        "type": "string"
        -      },
        -      "web_search": {
        -        "description": "<em>enable web search for current information</em><br>optional field<br>when enabled, the AI model can access and cite current web information;<br><strong>Note:</strong> refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/claude/llm_responses/models/\">Models endpoint</a> for a list of models that support <code>web_search</code>; <br>default value: <code>false</code>;<br>The cost of the parameter can be calculated on the <a title=\"Anthropic API Pricing\" href=\"https://docs.anthropic.com/en/docs/about-claude/pricing\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing</a> page",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "web_search_city": {
        -        "description": "<em>city name of the location used for searching the web</em><br>optional field<br>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "web_search_country_iso_code": {
        -        "description": "<em>ISO country code of the location used for searching the web</em><br>optional field<br>possible values: <code>'AR','AT','AU','BE','BR','CA','CH','CL','CN','DE','DK','ES','FI','FR','GB','HK','ID','IN','IT','JP','KR','MX','MY','NL','NO','NZ','PH','PL','PT','RU','SA','SE','TR','TW','US','ZA'</code>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "force_web_search": {
        +        "description": "<em>force AI agent to use web search</em><br>optional field<br>to enable this parameter, <code>web_search</code> must also be enabled;<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "max_output_tokens": {
        +        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value: <code>1</code>;<br>maximum value: <code>4096</code>;<br>default value: <code>2048</code>;<br><strong>Note:</strong> if <code>web_search</code> is set to <code>true</code> or the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit<br><strong>Note #2:</strong> if <code>use_reasoning</code> is set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1025</code>",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "message_chain": {
        +        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        +        "items": {
        +          "oneOf": [
        +            {
        +              "properties": {
        +                "message": {
        +                  "description": "message text",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "role": {
        +                  "description": "role of the user from whom the message originates",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ],
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "model_name": {
        +        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>for example, if <code>claude-opus-4-0</code> is specified, the <code>claude-opus-4-20250514</code> will be set as <code>model_name</code> automatically;<br>you can receive the list of available LLM models by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/claude/llm_responses/models</code>",
        +        "type": "string"
        +      },
        +      "system_message": {
        +        "description": "<em>instructions for the AI behaviour</em><br>optional field<br>defines the AI's role, tone, or specific behavior;<br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "temperature": {
        +        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse; <br>lower values make output more focused;<br>minimum value: <code>0</code><br>maximum value: <code>1</code><br>default value: <code>0.7</code><p><strong>Note:</strong> <code>temperature</code> cannot be used together with <code>top_p</code> in the same request",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "top_p": {
        +        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection;<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>null</code><p><strong>Note:</strong> <code>top_p</code> cannot be used together with <code>temperature</code> in the same request",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "use_reasoning": {
        +        "description": "<em>enable reasoning for the AI model</em><br>optional field<br>when enabled, the model will perform reasoning before generating a response<br>refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/claude/llm_responses/models/\" target=\"_blank\">Models endpoint</a> for a list of models that support <code>reasoning</code><br>default value: <code>false</code><br><strong>Note:</strong> if set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1025</code><br><strong>Note #2:</strong> if set to <code>true</code>, <code>force_web_search</code> must be set to <code>false</code><br><strong>Note #3:</strong> if set to <code>true</code>, the <code>temperature</code> and <code>top_p</code> cannot be used",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "user_prompt": {
        +        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        +        "type": "string"
        +      },
        +      "web_search": {
        +        "description": "<em>enable web search for current information</em><br>optional field<br>when enabled, the AI model can access and cite current web information;<br><strong>Note:</strong> refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/claude/llm_responses/models/\">Models endpoint</a> for a list of models that support <code>web_search</code>; <br>default value: <code>false</code>;<br>The cost of the parameter can be calculated on the <a title=\"Anthropic API Pricing\" href=\"https://docs.anthropic.com/en/docs/about-claude/pricing\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing</a> page",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "web_search_city": {
        +        "description": "<em>city name of the location used for searching the web</em><br>optional field<br>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "web_search_country_iso_code": {
        +        "description": "<em>ISO country code of the location used for searching the web</em><br>optional field<br>possible values: <code>'AR','AT','AU','BE','BR','CA','CH','CL','CN','DE','DK','ES','FI','FR','GB','HK','ID','IN','IT','JP','KR','MX','MY','NL','NO','NZ','PH','PL','PT','RU','SA','SE','TR','TW','US','ZA'</code>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
    • Changedpost_dataforseo_ai_gemini_llm_responses_live1 field changed
      • changedInput schema / properties / body / items / oneOf
        Previous value: -[
        -  {
        -    "example": [
        -      {
        -        "max_output_tokens": 200,
        -        "message_chain": [
        -          {
        -            "message": "Hello, what’s up?",
        -            "role": "user"
        -          },
        -          {
        -            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        -            "role": "ai"
        -          }
        -        ],
        -        "model_name": "gemini-2.5-flash",
        -        "system_message": "communicate as if we are in a business meeting",
        -        "temperature": 0.3,
        -        "top_p": 0.5,
        -        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        -        "web_search": true
        -      }
        -    ],
        -    "properties": {
        -      "max_output_tokens": {
        -        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value: <code>1</code><br>maximum value: <code>4096</code>;<br>default value: <code>2048</code>;<br><strong>Note:</strong> if <code>web_search</code> is set to <code>true</code> or the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit<br><strong>Note #2:</strong> if <code>use_reasoning</code> is set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1024</code>",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "message_chain": {
        -        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        -        "items": {
        -          "oneOf": [
        -            {
        -              "properties": {
        -                "message": {
        -                  "description": "message text",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "role": {
        -                  "description": "role of the user from whom the message originates",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                }
        -              },
        -              "type": "object"
        -            }
        -          ],
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "model_name": {
        -        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>for example, if <code>gemini-1.5-pro</code> is specified, the <code>gemini-1.5-pro-002</code> will be set as <code>model_name</code> automatically;<br>you can receive the list of available LLM models by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models</code>",
        -        "type": "string"
        -      },
        -      "system_message": {
        -        "description": "<em>instructions for the AI behavior</em><br>optional field<br>defines the AI's role, tone, or specific behavior <br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "temperature": {
        -        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse <br>lower values make output more focused<br>minimum value: <code>0</code><br>maximum value: <code>2</code><br>default value: <code>1.3</code>",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "top_p": {
        -        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>0.9</code>",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "use_reasoning": {
        -        "description": "<em>enable reasoning for the AI model</em><br>optional field<br>when enabled, the model will perform reasoning before generating a response<br>refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models/\" target=\"_blank\">Models endpoint</a> for a list of models that support <code>reasoning</code><br>default value: <code>false</code><br><strong>Note:</strong> if set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1024</code><br><strong>Note #2:</strong> for Gemini Pro models, the <code>use_reasoning</code> will automatically be set to <code>true</code>",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "user_prompt": {
        -        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        -        "type": "string"
        -      },
        -      "web_search": {
        -        "description": "<em>enable web search for current information</em><br>optional field<br>when enabled, the AI model can access and cite current web information;<br><strong>Note:</strong> refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models/\">Models endpoint</a> for a list of models that support <code>web_search</code>; <br>default value: <code>false</code>;<br>The cost of the parameter can be calculated on the <a title=\"Gemini API Pricing\" href=\"https://ai.google.dev/gemini-api/docs/pricing\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing</a> page",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "max_output_tokens": {
        +        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value: <code>1</code><br>maximum value: <code>4096</code>;<br>default value: <code>2048</code>;<br><strong>Note:</strong> if <code>web_search</code> is set to <code>true</code> or the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit<br><strong>Note #2:</strong> if <code>use_reasoning</code> is set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1024</code>",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "message_chain": {
        +        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        +        "items": {
        +          "oneOf": [
        +            {
        +              "properties": {
        +                "message": {
        +                  "description": "message text",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "role": {
        +                  "description": "role of the user from whom the message originates",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ],
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "model_name": {
        +        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>for example, if <code>gemini-1.5-pro</code> is specified, the <code>gemini-1.5-pro-002</code> will be set as <code>model_name</code> automatically;<br>you can receive the list of available LLM models by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models</code>",
        +        "type": "string"
        +      },
        +      "system_message": {
        +        "description": "<em>instructions for the AI behavior</em><br>optional field<br>defines the AI's role, tone, or specific behavior <br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "temperature": {
        +        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse <br>lower values make output more focused<br>minimum value: <code>0</code><br>maximum value: <code>2</code><br>default value: <code>1.3</code>",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "top_p": {
        +        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>0.9</code>",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "use_reasoning": {
        +        "description": "<em>enable reasoning for the AI model</em><br>optional field<br>when enabled, the model will perform reasoning before generating a response<br>refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models/\" target=\"_blank\">Models endpoint</a> for a list of models that support <code>reasoning</code><br>default value: <code>false</code><br><strong>Note:</strong> if set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1024</code><br><strong>Note #2:</strong> for Gemini Pro models, the <code>use_reasoning</code> will automatically be set to <code>true</code>",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "user_prompt": {
        +        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        +        "type": "string"
        +      },
        +      "web_search": {
        +        "description": "<em>enable web search for current information</em><br>optional field<br>when enabled, the AI model can access and cite current web information;<br><strong>Note:</strong> refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models/\">Models endpoint</a> for a list of models that support <code>web_search</code>; <br>default value: <code>false</code>;<br>The cost of the parameter can be calculated on the <a title=\"Gemini API Pricing\" href=\"https://ai.google.dev/gemini-api/docs/pricing\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing</a> page",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
    • Changedpost_dataforseo_ai_gemini_llm_scraper_live1 field changed
      • changedInput schema / properties / body / items / oneOf
        Previous value: -[
        -  {
        -    "example": [
        -      {
        -        "keyword": "albert einstein",
        -        "language_code": "en",
        -        "location_code": 2840
        -      }
        -    ],
        -    "properties": {
        -      "keyword": {
        -        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        -        "type": "string"
        -      },
        -      "language_code": {
        -        "description": "<em>search engine language code</em><br>required field if you don't specify <code>language_name</code>;<br>if you use this field, you don't need to specify <code>language_name</code>;<br>you can receive the list of available languages of the search engine with their <code>language_code</code>_by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example: <code>en</code>n",
        -        "type": "string"
        -      },
        -      "language_name": {
        -        "description": "<em>full name of search engine language</em><br>required field if you don't specify <code>language_code</code>;<br>if you use this field, you don't need to specify <code>language_code</code>;<br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example: <code>English</code>",
        -        "type": "string"
        -      },
        -      "location_code": {
        -        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        -        "type": "integer"
        -      },
        -      "location_coordinate": {
        -        "description": "<p><em>GPS coordinates of a location</em><p><strong>required field if you don't specify</strong> <code>location_name</code>&nbsp;or <code>location_code</code><p><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_code</code></strong><p><code>location_coordinate</code> parameter should be specified in the <em>\"latitude,longitude,radius\"</em> format<p>the maximum number of decimal digits for <em>\"latitude\"</em> and <em>\"longitude\"</em>: 7<p>the minimum value for <em>\"radius\"</em>: 199 (mm)<p>the maximum value for <em>\"radius\"</em>: 199999 (mm)<p>example:<p><code class=\"long-string\">53.476225,-2.243572,200</code></p>",
        -        "type": "string"
        -      },
        -      "location_name": {
        -        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_code</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        -        "type": "string"
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "keyword": {
        +        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        +        "type": "string"
        +      },
        +      "language_code": {
        +        "description": "<em>search engine language code</em><br>required field if you don't specify <code>language_name</code>;<br>if you use this field, you don't need to specify <code>language_name</code>;<br>you can receive the list of available languages of the search engine with their <code>language_code</code>_by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example: <code>en</code>n",
        +        "type": "string"
        +      },
        +      "language_name": {
        +        "description": "<em>full name of search engine language</em><br>required field if you don't specify <code>language_code</code>;<br>if you use this field, you don't need to specify <code>language_code</code>;<br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example: <code>English</code>",
        +        "type": "string"
        +      },
        +      "location_code": {
        +        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        +        "type": "integer"
        +      },
        +      "location_coordinate": {
        +        "description": "<p><em>GPS coordinates of a location</em><p><strong>required field if you don't specify</strong> <code>location_name</code>&nbsp;or <code>location_code</code><p><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_code</code></strong><p><code>location_coordinate</code> parameter should be specified in the <em>\"latitude,longitude,radius\"</em> format<p>the maximum number of decimal digits for <em>\"latitude\"</em> and <em>\"longitude\"</em>: 7<p>the minimum value for <em>\"radius\"</em>: 199 (mm)<p>the maximum value for <em>\"radius\"</em>: 199999 (mm)<p>example:<p><code class=\"long-string\">53.476225,-2.243572,200</code></p>",
        +        "type": "string"
        +      },
        +      "location_name": {
        +        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_code</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        +        "type": "string"
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
    • Changedpost_dataforseo_ai_gemini_llm_scraper_live_html1 field changed
      • changedInput schema / properties / body / items / oneOf
        Previous value: -[
        -  {
        -    "example": [
        -      {
        -        "keyword": "albert einstein",
        -        "language_code": "en",
        -        "location_code": 2840
        -      }
        -    ],
        -    "properties": {
        -      "expand_citations": {
        -        "description": "<em>return expanded citation bar in HTML results</em><br>optional field<br>when enabled, the endpoint will return HTML data from the expanded citation bar;<br>default value: <code>false</code>",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "keyword": {
        -        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        -        "type": "string"
        -      },
        -      "language_code": {
        -        "description": "<em>search engine language code</em><br><strong>required field if you don't specify</strong> <code>language_name</code><br><strong>if you use this field, you don't need to specify <code>language_name</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_code</code>_by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example:<code class=\"long-string\">en</code>n",
        -        "type": "string"
        -      },
        -      "language_name": {
        -        "description": "<em>full name of search engine language</em><br><strong>required field if you don't specify</strong> <code>language_code</code><br><strong>if you use this field, you don't need to specify <code>language_code</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example:<br><code class=\"long-string\">English</code>",
        -        "type": "string"
        -      },
        -      "location_code": {
        -        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        -        "type": "integer"
        -      },
        -      "location_coordinate": {
        -        "description": "<p><em>GPS coordinates of a location</em><p><strong>required field if you don't specify</strong> <code>location_name</code>&nbsp;or <code>location_code</code><p><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_code</code></strong><p><code>location_coordinate</code> parameter should be specified in the <em>\"latitude,longitude,radius\"</em> format<p>the maximum number of decimal digits for <em>\"latitude\"</em> and <em>\"longitude\"</em>: 7<p>the minimum value for <em>\"radius\"</em>: 199 (mm)<p>the maximum value for <em>\"radius\"</em>: 199999 (mm)<p>example:<p><code class=\"long-string\">53.476225,-2.243572,200</code></p>",
        -        "type": "string"
        -      },
        -      "location_name": {
        -        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_code</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        -        "type": "string"
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "expand_citations": {
        +        "description": "<em>return expanded citation bar in HTML results</em><br>optional field<br>when enabled, the endpoint will return HTML data from the expanded citation bar;<br>default value: <code>false</code>",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        +        "type": "string"
        +      },
        +      "language_code": {
        +        "description": "<em>search engine language code</em><br><strong>required field if you don't specify</strong> <code>language_name</code><br><strong>if you use this field, you don't need to specify <code>language_name</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_code</code>_by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example:<code class=\"long-string\">en</code>n",
        +        "type": "string"
        +      },
        +      "language_name": {
        +        "description": "<em>full name of search engine language</em><br><strong>required field if you don't specify</strong> <code>language_code</code><br><strong>if you use this field, you don't need to specify <code>language_code</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example:<br><code class=\"long-string\">English</code>",
        +        "type": "string"
        +      },
        +      "location_code": {
        +        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        +        "type": "integer"
        +      },
        +      "location_coordinate": {
        +        "description": "<p><em>GPS coordinates of a location</em><p><strong>required field if you don't specify</strong> <code>location_name</code>&nbsp;or <code>location_code</code><p><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_code</code></strong><p><code>location_coordinate</code> parameter should be specified in the <em>\"latitude,longitude,radius\"</em> format<p>the maximum number of decimal digits for <em>\"latitude\"</em> and <em>\"longitude\"</em>: 7<p>the minimum value for <em>\"radius\"</em>: 199 (mm)<p>the maximum value for <em>\"radius\"</em>: 199999 (mm)<p>example:<p><code class=\"long-string\">53.476225,-2.243572,200</code></p>",
        +        "type": "string"
        +      },
        +      "location_name": {
        +        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_code</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        +        "type": "string"
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
    • Changedpost_dataforseo_ai_keyword_volume_live1 field changed
      • changedInput schema / properties / body / items / oneOf
        Previous value: -[
        -  {
        -    "example": [
        -      {
        -        "keywords": [
        -          "iphone",
        -          "seo"
        -        ],
        -        "language_name": "English",
        -        "location_code": 2840
        -      }
        -    ],
        -    "properties": {
        -      "keywords": {
        -        "description": "<em>keywords</em><br><strong>required field</strong><br>UTF-8 encoding<br>The maximum number of keywords you can specify: 1000;<br>The maximum number of characters in a single keyword: 250;<br>The keywords will be converted to lowercase format;<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "language_code": {
        -        "description": "<em>language code</em><br><strong>required field if you don't specify</strong> <code>language_name</code><br><strong>if you use this field, you don't need to specify</strong> <code>language_name</code><br>you can receive the list of available languages with their <code>language_code</code> by making a separate request to the<br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">en</code>",
        -        "type": "string"
        -      },
        -      "language_name": {
        -        "description": "<em>full name of the language</em><br><strong>required field if you don't specify</strong> <code>language_code</code><br><strong>if you use this field, you don't need to specify</strong> <code>language_code</code><br>you can receive the list of available languages with their <code>language_name</code> by making a separate request to the<br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">English</code>",
        -        "type": "string"
        -      },
        -      "location_code": {
        -        "description": "<em>unique location identifier</em><br><strong>required field if you don't specify</strong> <code>location_name</code><br><strong>Note:</strong> it is required to specify either <code>location_name</code> or <code>location_code</code><br>you can receive the list of available locations with their <code>location_code</code> by making a separate request to the <br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">2840</code>",
        -        "type": "integer"
        -      },
        -      "location_name": {
        -        "description": "<em>full name of the location</em><br><strong>required field if you don't specify</strong> <code>location_code</code><br><strong>Note:</strong> it is required to specify either <code>location_name</code> or <code>location_code</code><br>you can receive the list of available locations with their <code>location_name</code> by making a separate request to the<br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">United Kingdom</code>",
        -        "type": "string"
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "keywords": {
        +        "description": "<em>keywords</em><br><strong>required field</strong><br>UTF-8 encoding<br>The maximum number of keywords you can specify: 1000;<br>The maximum number of characters in a single keyword: 250;<br>The keywords will be converted to lowercase format;<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "language_code": {
        +        "description": "<em>language code</em><br><strong>required field if you don't specify</strong> <code>language_name</code><br><strong>if you use this field, you don't need to specify</strong> <code>language_name</code><br>you can receive the list of available languages with their <code>language_code</code> by making a separate request to the<br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">en</code>",
        +        "type": "string"
        +      },
        +      "language_name": {
        +        "description": "<em>full name of the language</em><br><strong>required field if you don't specify</strong> <code>language_code</code><br><strong>if you use this field, you don't need to specify</strong> <code>language_code</code><br>you can receive the list of available languages with their <code>language_name</code> by making a separate request to the<br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">English</code>",
        +        "type": "string"
        +      },
        +      "location_code": {
        +        "description": "<em>unique location identifier</em><br><strong>required field if you don't specify</strong> <code>location_name</code><br><strong>Note:</strong> it is required to specify either <code>location_name</code> or <code>location_code</code><br>you can receive the list of available locations with their <code>location_code</code> by making a separate request to the <br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">2840</code>",
        +        "type": "integer"
        +      },
        +      "location_name": {
        +        "description": "<em>full name of the location</em><br><strong>required field if you don't specify</strong> <code>location_code</code><br><strong>Note:</strong> it is required to specify either <code>location_name</code> or <code>location_code</code><br>you can receive the list of available locations with their <code>location_name</code> by making a separate request to the<br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">United Kingdom</code>",
        +        "type": "string"
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
    • Changedpost_dataforseo_ai_perplexity_llm_responses_live1 field changed
      • changedInput schema / properties / body / items / oneOf
        Previous value: -[
        -  {
        -    "example": [
        -      {
        -        "max_output_tokens": 200,
        -        "message_chain": [
        -          {
        -            "message": "Hello, what’s up?",
        -            "role": "user"
        -          },
        -          {
        -            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        -            "role": "ai"
        -          }
        -        ],
        -        "model_name": "sonar",
        -        "system_message": "communicate as if we are in a business meeting",
        -        "temperature": 0.3,
        -        "top_p": 0.5,
        -        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        -        "web_search_country_iso_code": "FR"
        -      }
        -    ],
        -    "properties": {
        -      "max_output_tokens": {
        -        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value: <code>1</code><br>maximum value: <code>4096</code>;<br>default value: <code>2048</code>;<br><strong>Note:</strong> if the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "message_chain": {
        -        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        -        "items": {
        -          "oneOf": [
        -            {
        -              "properties": {
        -                "message": {
        -                  "description": "message text",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "role": {
        -                  "description": "role of the user from whom the message originates",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                }
        -              },
        -              "type": "object"
        -            }
        -          ],
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "model_name": {
        -        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>you can receive the list of available LLM models by making a separate request to the following endpoint: <code>https://api.dataforseo.com/v3/ai_optimization/perplexity/llm_responses/models</code>",
        -        "type": "string"
        -      },
        -      "system_message": {
        -        "description": "<em>instructions for the AI behavior</em><br>optional field<br>defines the AI's role, tone, or specific behavior <br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "temperature": {
        -        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse <br>lower values make output more focused<br>minimum value: <code>0</code><br>maximum value: <code>1.9</code><br>default value: <code>0.77</code>",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "top_p": {
        -        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>0.9</code>",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "user_prompt": {
        -        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        -        "type": "string"
        -      },
        -      "web_search_country_iso_code": {
        -        "description": "<em>country code for web search localization</em><br>optional field<br>specify the country  ISO code to get localized web search results<br><strong>Note:</strong> available only for Perplexity Sonar models<br>example: <code>US</code>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "properties": {
        +      "max_output_tokens": {
        +        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value: <code>1</code><br>maximum value: <code>4096</code>;<br>default value: <code>2048</code>;<br><strong>Note:</strong> if the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "message_chain": {
        +        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        +        "items": {
        +          "oneOf": [
        +            {
        +              "properties": {
        +                "message": {
        +                  "description": "message text",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "role": {
        +                  "description": "role of the user from whom the message originates",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ],
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "model_name": {
        +        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>you can receive the list of available LLM models by making a separate request to the following endpoint: <code>https://api.dataforseo.com/v3/ai_optimization/perplexity/llm_responses/models</code>",
        +        "type": "string"
        +      },
        +      "system_message": {
        +        "description": "<em>instructions for the AI behavior</em><br>optional field<br>defines the AI's role, tone, or specific behavior <br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "temperature": {
        +        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse <br>lower values make output more focused<br>minimum value: <code>0</code><br>maximum value: <code>1.9</code><br>default value: <code>0.77</code>",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "top_p": {
        +        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>0.9</code>",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "user_prompt": {
        +        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        +        "type": "string"
        +      },
        +      "web_search_country_iso_code": {
        +        "description": "<em>country code for web search localization</em><br>optional field<br>specify the country  ISO code to get localized web search results<br><strong>Note:</strong> available only for Perplexity Sonar models<br>example: <code>US</code>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
  2. 14 tool updates
    • Changedpost_dataforseo_ai_chat_gpt_llm_responses_live2 fields changed
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "max_output_tokens": 200,
        -        "message_chain": [
        -          {
        -            "message": "Hello, what’s up?",
        -            "role": "user"
        -          },
        -          {
        -            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        -            "role": "ai"
        -          }
        -        ],
        -        "model_name": "gpt-4.1-mini",
        -        "system_message": "communicate as if we are in a business meeting",
        -        "temperature": 0.3,
        -        "top_p": 0.5,
        -        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        -        "web_search": true,
        -        "web_search_city": "Paris",
        -        "web_search_country_iso_code": "FR"
        -      }
        -    ],
        -    "properties": {
        -      "force_web_search": {
        -        "description": "<em>force AI agent to use web search</em><br>optional field<br>to enable this parameter, <code>web_search</code> must also be enabled;<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response <br><strong>Note #2:</strong> not supported in reasoning models",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "max_output_tokens": {
        -        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value for reasoning models (e.g., <code>reasoning</code> is <code>true</code> in the <a href=\"/v3/ai_optimization/chat_gpt/llm_responses/models/\" target=\"_blank\">Models endpoint</a>): <code>1024</code>;<br>minimum value for non-reasoning models: <code>16</code>;<br>maximum value: <code>4096</code>;<br>default value: <code>2048</code><br><strong>Note:</strong> if <code>web_search</code> is set to <code>true</code> or the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "message_chain": {
        -        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        -        "items": {
        -          "anyOf": [
        -            {
        -              "properties": {
        -                "message": {
        -                  "description": "message text",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "role": {
        -                  "description": "role of the user from whom the message originates",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                }
        -              },
        -              "type": "object"
        -            }
        -          ],
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "model_name": {
        -        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>for example, if <code>gpt-4.1</code> is specified, the <code>gpt-4.1-2025-04-14</code> will be set as <code>model_name</code> automatically;<br>you can receive the list of available LLM models by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/models</code>",
        -        "type": "string"
        -      },
        -      "system_message": {
        -        "description": "<em>instructions for the AI behaviour</em><br>optional field<br>defines the AI's role, tone, or specific behavior <br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "temperature": {
        -        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse; <br>lower values make output more focused;<br>minimum value: <code>0</code><br>maximum value: <code>2</code><br>default value: <code>0.94</code><br><strong>Note:</strong> not supported in reasoning models",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "top_p": {
        -        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection;<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>0.92</code><p><strong>Note:</strong>  <code>top_p</code> cannot be used together with <code>temperature</code> in the same request",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "user_prompt": {
        -        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        -        "type": "string"
        -      },
        -      "web_search": {
        -        "description": "<em>enable web search</em><br>optional field<br>when enabled, the AI model can access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/models/\">Models endpoint</a> for a list of models that support <code>web_search</code>;",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "web_search_city": {
        -        "description": "<em>city name of the location</em><br>optional field<br><strong>Note:</strong> not supported in <code>o3-mini</code>, <code>o1-pro</code>, <code>o1</code> models",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "web_search_country_iso_code": {
        -        "description": "<em>ISO country code of the location</em><br>optional field<br>to enable this parameter, <code>web_search</code> must also be enabled;<br>when enabled, the AI model will search the web from the country you specify;<br><strong>Note:</strong> not supported in <code>o3-mini</code>, <code>o1-pro</code>, <code>o1</code> models",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / oneOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "max_output_tokens": 200,
        +        "message_chain": [
        +          {
        +            "message": "Hello, what’s up?",
        +            "role": "user"
        +          },
        +          {
        +            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        +            "role": "ai"
        +          }
        +        ],
        +        "model_name": "gpt-4.1-mini",
        +        "system_message": "communicate as if we are in a business meeting",
        +        "temperature": 0.3,
        +        "top_p": 0.5,
        +        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        +        "web_search": true,
        +        "web_search_city": "Paris",
        +        "web_search_country_iso_code": "FR"
        +      }
        +    ],
        +    "properties": {
        +      "force_web_search": {
        +        "description": "<em>force AI agent to use web search</em><br>optional field<br>to enable this parameter, <code>web_search</code> must also be enabled;<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response <br><strong>Note #2:</strong> not supported in reasoning models",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "max_output_tokens": {
        +        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value for reasoning models (e.g., <code>reasoning</code> is <code>true</code> in the <a href=\"/v3/ai_optimization/chat_gpt/llm_responses/models/\" target=\"_blank\">Models endpoint</a>): <code>1024</code>;<br>minimum value for non-reasoning models: <code>16</code>;<br>maximum value: <code>4096</code>;<br>default value: <code>2048</code><br><strong>Note:</strong> if <code>web_search</code> is set to <code>true</code> or the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "message_chain": {
        +        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        +        "items": {
        +          "oneOf": [
        +            {
        +              "properties": {
        +                "message": {
        +                  "description": "message text",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "role": {
        +                  "description": "role of the user from whom the message originates",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ],
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "model_name": {
        +        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>for example, if <code>gpt-4.1</code> is specified, the <code>gpt-4.1-2025-04-14</code> will be set as <code>model_name</code> automatically;<br>you can receive the list of available LLM models by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/models</code>",
        +        "type": "string"
        +      },
        +      "system_message": {
        +        "description": "<em>instructions for the AI behaviour</em><br>optional field<br>defines the AI's role, tone, or specific behavior <br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "temperature": {
        +        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse; <br>lower values make output more focused;<br>minimum value: <code>0</code><br>maximum value: <code>2</code><br>default value: <code>0.94</code><br><strong>Note:</strong> not supported in reasoning models",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "top_p": {
        +        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection;<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>0.92</code><p><strong>Note:</strong>  <code>top_p</code> cannot be used together with <code>temperature</code> in the same request",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "user_prompt": {
        +        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        +        "type": "string"
        +      },
        +      "web_search": {
        +        "description": "<em>enable web search</em><br>optional field<br>when enabled, the AI model can access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/models/\">Models endpoint</a> for a list of models that support <code>web_search</code>;",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "web_search_city": {
        +        "description": "<em>city name of the location</em><br>optional field<br><strong>Note:</strong> not supported in <code>o3-mini</code>, <code>o1-pro</code>, <code>o1</code> models",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "web_search_country_iso_code": {
        +        "description": "<em>ISO country code of the location</em><br>optional field<br>to enable this parameter, <code>web_search</code> must also be enabled;<br>when enabled, the AI model will search the web from the country you specify;<br><strong>Note:</strong> not supported in <code>o3-mini</code>, <code>o1-pro</code>, <code>o1</code> models",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
    • Changedpost_dataforseo_ai_chat_gpt_llm_scraper_live2 fields changed
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "keyword": "albert einstein",
        -        "language_code": "en",
        -        "location_code": 2840
        -      }
        -    ],
        -    "properties": {
        -      "force_web_search": {
        -        "description": "<em>force AI agent to use web search</em><br>optional field<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "keyword": {
        -        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        -        "type": "string"
        -      },
        -      "language_code": {
        -        "description": "<em>search engine language code</em><br><strong>required field if you don't specify <code>language_name</code>;</strong><br>if you use this field, you don't need to specify <code>language_name</code>;<br>you can receive the list of available languages of the search engine with their <code>language_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/languages</code>",
        -        "type": "string"
        -      },
        -      "language_name": {
        -        "description": "<em>full name of search engine language</em><br><strong>required field if you don't specify <code>language_code</code>;</strong><br>if you use this field, you don't need to specify <code>language_code</code>;<br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/languages</code>",
        -        "type": "string"
        -      },
        -      "location_code": {
        -        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code><br><strong>if you use this field, you don't need to specify <code>location_name</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        -        "type": "integer"
        -      },
        -      "location_name": {
        -        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code><br><strong>if you use this field, you don't need to specify <code>location_code</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        -        "type": "string"
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / oneOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "keyword": "albert einstein",
        +        "language_code": "en",
        +        "location_code": 2840
        +      }
        +    ],
        +    "properties": {
        +      "force_web_search": {
        +        "description": "<em>force AI agent to use web search</em><br>optional field<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        +        "type": "string"
        +      },
        +      "language_code": {
        +        "description": "<em>search engine language code</em><br><strong>required field if you don't specify <code>language_name</code>;</strong><br>if you use this field, you don't need to specify <code>language_name</code>;<br>you can receive the list of available languages of the search engine with their <code>language_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/languages</code>",
        +        "type": "string"
        +      },
        +      "language_name": {
        +        "description": "<em>full name of search engine language</em><br><strong>required field if you don't specify <code>language_code</code>;</strong><br>if you use this field, you don't need to specify <code>language_code</code>;<br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/languages</code>",
        +        "type": "string"
        +      },
        +      "location_code": {
        +        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code><br><strong>if you use this field, you don't need to specify <code>location_name</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        +        "type": "integer"
        +      },
        +      "location_name": {
        +        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code><br><strong>if you use this field, you don't need to specify <code>location_code</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        +        "type": "string"
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
    • Changedpost_dataforseo_ai_chat_gpt_llm_scraper_live_html2 fields changed
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "keyword": "albert einstein",
        -        "language_code": "en",
        -        "location_code": 2840
        -      }
        -    ],
        -    "properties": {
        -      "expand_citations": {
        -        "description": "<em>return expanded citation bar in HTML results</em><br>optional field<br>to enable this parameter, <code>force_web_search</code> must also be enabled;<br>when enabled, the endpoint will return HTML data from the expanded citation bar;<br>default value: <code>false</code>",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "force_web_search": {
        -        "description": "<em>force AI agent to use web search</em><br>optional field<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "keyword": {
        -        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        -        "type": "string"
        -      },
        -      "language_code": {
        -        "description": "<em>search engine language code</em><br><strong>required field if you don't specify</strong> <code>language_name</code><br><strong>if you use this field, you don't need to specify <code>language_name</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_code</code>_by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/languages</code><br>example:<code class=\"long-string\">en</code>n",
        -        "type": "string"
        -      },
        -      "language_name": {
        -        "description": "<em>full name of search engine language</em><br><strong>required field if you don't specify</strong> <code>language_code</code><br><strong>if you use this field, you don't need to specify <code>language_code</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/languages</code><br>example:<br><code class=\"long-string\">English</code>",
        -        "type": "string"
        -      },
        -      "location_code": {
        -        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code><br><strong>if you use this field, you don't need to specify <code>location_name</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        -        "type": "integer"
        -      },
        -      "location_name": {
        -        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code><br><strong>if you use this field, you don't need to specify <code>location_code</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        -        "type": "string"
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / oneOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "keyword": "albert einstein",
        +        "language_code": "en",
        +        "location_code": 2840
        +      }
        +    ],
        +    "properties": {
        +      "expand_citations": {
        +        "description": "<em>return expanded citation bar in HTML results</em><br>optional field<br>to enable this parameter, <code>force_web_search</code> must also be enabled;<br>when enabled, the endpoint will return HTML data from the expanded citation bar;<br>default value: <code>false</code>",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "force_web_search": {
        +        "description": "<em>force AI agent to use web search</em><br>optional field<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        +        "type": "string"
        +      },
        +      "language_code": {
        +        "description": "<em>search engine language code</em><br><strong>required field if you don't specify</strong> <code>language_name</code><br><strong>if you use this field, you don't need to specify <code>language_name</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_code</code>_by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/languages</code><br>example:<code class=\"long-string\">en</code>n",
        +        "type": "string"
        +      },
        +      "language_name": {
        +        "description": "<em>full name of search engine language</em><br><strong>required field if you don't specify</strong> <code>language_code</code><br><strong>if you use this field, you don't need to specify <code>language_code</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/languages</code><br>example:<br><code class=\"long-string\">English</code>",
        +        "type": "string"
        +      },
        +      "location_code": {
        +        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code><br><strong>if you use this field, you don't need to specify <code>location_name</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        +        "type": "integer"
        +      },
        +      "location_name": {
        +        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code><br><strong>if you use this field, you don't need to specify <code>location_code</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        +        "type": "string"
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
    • Changedpost_dataforseo_ai_claude_llm_responses_live2 fields changed
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "max_output_tokens": 200,
        -        "message_chain": [
        -          {
        -            "message": "Hello, what’s up?",
        -            "role": "user"
        -          },
        -          {
        -            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        -            "role": "ai"
        -          }
        -        ],
        -        "model_name": "claude-opus-5",
        -        "system_message": "communicate as if we are in a business meeting",
        -        "temperature": 0.3,
        -        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        -        "web_search": true,
        -        "web_search_country_iso_code": "FR"
        -      }
        -    ],
        -    "properties": {
        -      "force_web_search": {
        -        "description": "<em>force AI agent to use web search</em><br>optional field<br>to enable this parameter, <code>web_search</code> must also be enabled;<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "max_output_tokens": {
        -        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value: <code>1</code>;<br>maximum value: <code>4096</code>;<br>default value: <code>2048</code>;<br><strong>Note:</strong> if <code>web_search</code> is set to <code>true</code> or the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit<br><strong>Note #2:</strong> if <code>use_reasoning</code> is set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1025</code>",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "message_chain": {
        -        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        -        "items": {
        -          "anyOf": [
        -            {
        -              "properties": {
        -                "message": {
        -                  "description": "message text",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "role": {
        -                  "description": "role of the user from whom the message originates",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                }
        -              },
        -              "type": "object"
        -            }
        -          ],
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "model_name": {
        -        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>for example, if <code>claude-opus-4-0</code> is specified, the <code>claude-opus-4-20250514</code> will be set as <code>model_name</code> automatically;<br>you can receive the list of available LLM models by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/claude/llm_responses/models</code>",
        -        "type": "string"
        -      },
        -      "system_message": {
        -        "description": "<em>instructions for the AI behaviour</em><br>optional field<br>defines the AI's role, tone, or specific behavior;<br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "temperature": {
        -        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse; <br>lower values make output more focused;<br>minimum value: <code>0</code><br>maximum value: <code>1</code><br>default value: <code>0.7</code><p><strong>Note:</strong> <code>temperature</code> cannot be used together with <code>top_p</code> in the same request",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "top_p": {
        -        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection;<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>null</code><p><strong>Note:</strong> <code>top_p</code> cannot be used together with <code>temperature</code> in the same request",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "use_reasoning": {
        -        "description": "<em>enable reasoning for the AI model</em><br>optional field<br>when enabled, the model will perform reasoning before generating a response<br>refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/claude/llm_responses/models/\" target=\"_blank\">Models endpoint</a> for a list of models that support <code>reasoning</code><br>default value: <code>false</code><br><strong>Note:</strong> if set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1025</code><br><strong>Note #2:</strong> if set to <code>true</code>, <code>force_web_search</code> must be set to <code>false</code><br><strong>Note #3:</strong> if set to <code>true</code>, the <code>temperature</code> and <code>top_p</code> cannot be used",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "user_prompt": {
        -        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        -        "type": "string"
        -      },
        -      "web_search": {
        -        "description": "<em>enable web search for current information</em><br>optional field<br>when enabled, the AI model can access and cite current web information;<br><strong>Note:</strong> refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/claude/llm_responses/models/\">Models endpoint</a> for a list of models that support <code>web_search</code>; <br>default value: <code>false</code>;<br>The cost of the parameter can be calculated on the <a title=\"Anthropic API Pricing\" href=\"https://docs.anthropic.com/en/docs/about-claude/pricing\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing</a> page",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "web_search_city": {
        -        "description": "<em>city name of the location used for searching the web</em><br>optional field<br>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "web_search_country_iso_code": {
        -        "description": "<em>ISO country code of the location used for searching the web</em><br>optional field<br>possible values: <code>'AR','AT','AU','BE','BR','CA','CH','CL','CN','DE','DK','ES','FI','FR','GB','HK','ID','IN','IT','JP','KR','MX','MY','NL','NO','NZ','PH','PL','PT','RU','SA','SE','TR','TW','US','ZA'</code>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / oneOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "max_output_tokens": 200,
        +        "message_chain": [
        +          {
        +            "message": "Hello, what’s up?",
        +            "role": "user"
        +          },
        +          {
        +            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        +            "role": "ai"
        +          }
        +        ],
        +        "model_name": "claude-opus-5",
        +        "system_message": "communicate as if we are in a business meeting",
        +        "temperature": 0.3,
        +        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        +        "web_search": true,
        +        "web_search_country_iso_code": "FR"
        +      }
        +    ],
        +    "properties": {
        +      "force_web_search": {
        +        "description": "<em>force AI agent to use web search</em><br>optional field<br>to enable this parameter, <code>web_search</code> must also be enabled;<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "max_output_tokens": {
        +        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value: <code>1</code>;<br>maximum value: <code>4096</code>;<br>default value: <code>2048</code>;<br><strong>Note:</strong> if <code>web_search</code> is set to <code>true</code> or the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit<br><strong>Note #2:</strong> if <code>use_reasoning</code> is set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1025</code>",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "message_chain": {
        +        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        +        "items": {
        +          "oneOf": [
        +            {
        +              "properties": {
        +                "message": {
        +                  "description": "message text",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "role": {
        +                  "description": "role of the user from whom the message originates",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ],
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "model_name": {
        +        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>for example, if <code>claude-opus-4-0</code> is specified, the <code>claude-opus-4-20250514</code> will be set as <code>model_name</code> automatically;<br>you can receive the list of available LLM models by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/claude/llm_responses/models</code>",
        +        "type": "string"
        +      },
        +      "system_message": {
        +        "description": "<em>instructions for the AI behaviour</em><br>optional field<br>defines the AI's role, tone, or specific behavior;<br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "temperature": {
        +        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse; <br>lower values make output more focused;<br>minimum value: <code>0</code><br>maximum value: <code>1</code><br>default value: <code>0.7</code><p><strong>Note:</strong> <code>temperature</code> cannot be used together with <code>top_p</code> in the same request",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "top_p": {
        +        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection;<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>null</code><p><strong>Note:</strong> <code>top_p</code> cannot be used together with <code>temperature</code> in the same request",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "use_reasoning": {
        +        "description": "<em>enable reasoning for the AI model</em><br>optional field<br>when enabled, the model will perform reasoning before generating a response<br>refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/claude/llm_responses/models/\" target=\"_blank\">Models endpoint</a> for a list of models that support <code>reasoning</code><br>default value: <code>false</code><br><strong>Note:</strong> if set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1025</code><br><strong>Note #2:</strong> if set to <code>true</code>, <code>force_web_search</code> must be set to <code>false</code><br><strong>Note #3:</strong> if set to <code>true</code>, the <code>temperature</code> and <code>top_p</code> cannot be used",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "user_prompt": {
        +        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        +        "type": "string"
        +      },
        +      "web_search": {
        +        "description": "<em>enable web search for current information</em><br>optional field<br>when enabled, the AI model can access and cite current web information;<br><strong>Note:</strong> refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/claude/llm_responses/models/\">Models endpoint</a> for a list of models that support <code>web_search</code>; <br>default value: <code>false</code>;<br>The cost of the parameter can be calculated on the <a title=\"Anthropic API Pricing\" href=\"https://docs.anthropic.com/en/docs/about-claude/pricing\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing</a> page",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "web_search_city": {
        +        "description": "<em>city name of the location used for searching the web</em><br>optional field<br>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "web_search_country_iso_code": {
        +        "description": "<em>ISO country code of the location used for searching the web</em><br>optional field<br>possible values: <code>'AR','AT','AU','BE','BR','CA','CH','CL','CN','DE','DK','ES','FI','FR','GB','HK','ID','IN','IT','JP','KR','MX','MY','NL','NO','NZ','PH','PL','PT','RU','SA','SE','TR','TW','US','ZA'</code>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
    • Changedpost_dataforseo_ai_gemini_llm_responses_live2 fields changed
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "max_output_tokens": 200,
        -        "message_chain": [
        -          {
        -            "message": "Hello, what’s up?",
        -            "role": "user"
        -          },
        -          {
        -            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        -            "role": "ai"
        -          }
        -        ],
        -        "model_name": "gemini-2.5-flash",
        -        "system_message": "communicate as if we are in a business meeting",
        -        "temperature": 0.3,
        -        "top_p": 0.5,
        -        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        -        "web_search": true
        -      }
        -    ],
        -    "properties": {
        -      "max_output_tokens": {
        -        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value: <code>1</code><br>maximum value: <code>4096</code>;<br>default value: <code>2048</code>;<br><strong>Note:</strong> if <code>web_search</code> is set to <code>true</code> or the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit<br><strong>Note #2:</strong> if <code>use_reasoning</code> is set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1024</code>",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "message_chain": {
        -        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        -        "items": {
        -          "anyOf": [
        -            {
        -              "properties": {
        -                "message": {
        -                  "description": "message text",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "role": {
        -                  "description": "role of the user from whom the message originates",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                }
        -              },
        -              "type": "object"
        -            }
        -          ],
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "model_name": {
        -        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>for example, if <code>gemini-1.5-pro</code> is specified, the <code>gemini-1.5-pro-002</code> will be set as <code>model_name</code> automatically;<br>you can receive the list of available LLM models by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models</code>",
        -        "type": "string"
        -      },
        -      "system_message": {
        -        "description": "<em>instructions for the AI behavior</em><br>optional field<br>defines the AI's role, tone, or specific behavior <br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "temperature": {
        -        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse <br>lower values make output more focused<br>minimum value: <code>0</code><br>maximum value: <code>2</code><br>default value: <code>1.3</code>",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "top_p": {
        -        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>0.9</code>",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "use_reasoning": {
        -        "description": "<em>enable reasoning for the AI model</em><br>optional field<br>when enabled, the model will perform reasoning before generating a response<br>refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models/\" target=\"_blank\">Models endpoint</a> for a list of models that support <code>reasoning</code><br>default value: <code>false</code><br><strong>Note:</strong> if set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1024</code><br><strong>Note #2:</strong> for Gemini Pro models, the <code>use_reasoning</code> will automatically be set to <code>true</code>",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "user_prompt": {
        -        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        -        "type": "string"
        -      },
        -      "web_search": {
        -        "description": "<em>enable web search for current information</em><br>optional field<br>when enabled, the AI model can access and cite current web information;<br><strong>Note:</strong> refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models/\">Models endpoint</a> for a list of models that support <code>web_search</code>; <br>default value: <code>false</code>;<br>The cost of the parameter can be calculated on the <a title=\"Gemini API Pricing\" href=\"https://ai.google.dev/gemini-api/docs/pricing\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing</a> page",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / oneOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "max_output_tokens": 200,
        +        "message_chain": [
        +          {
        +            "message": "Hello, what’s up?",
        +            "role": "user"
        +          },
        +          {
        +            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        +            "role": "ai"
        +          }
        +        ],
        +        "model_name": "gemini-2.5-flash",
        +        "system_message": "communicate as if we are in a business meeting",
        +        "temperature": 0.3,
        +        "top_p": 0.5,
        +        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        +        "web_search": true
        +      }
        +    ],
        +    "properties": {
        +      "max_output_tokens": {
        +        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value: <code>1</code><br>maximum value: <code>4096</code>;<br>default value: <code>2048</code>;<br><strong>Note:</strong> if <code>web_search</code> is set to <code>true</code> or the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit<br><strong>Note #2:</strong> if <code>use_reasoning</code> is set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1024</code>",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "message_chain": {
        +        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        +        "items": {
        +          "oneOf": [
        +            {
        +              "properties": {
        +                "message": {
        +                  "description": "message text",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "role": {
        +                  "description": "role of the user from whom the message originates",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ],
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "model_name": {
        +        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>for example, if <code>gemini-1.5-pro</code> is specified, the <code>gemini-1.5-pro-002</code> will be set as <code>model_name</code> automatically;<br>you can receive the list of available LLM models by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models</code>",
        +        "type": "string"
        +      },
        +      "system_message": {
        +        "description": "<em>instructions for the AI behavior</em><br>optional field<br>defines the AI's role, tone, or specific behavior <br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "temperature": {
        +        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse <br>lower values make output more focused<br>minimum value: <code>0</code><br>maximum value: <code>2</code><br>default value: <code>1.3</code>",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "top_p": {
        +        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>0.9</code>",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "use_reasoning": {
        +        "description": "<em>enable reasoning for the AI model</em><br>optional field<br>when enabled, the model will perform reasoning before generating a response<br>refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models/\" target=\"_blank\">Models endpoint</a> for a list of models that support <code>reasoning</code><br>default value: <code>false</code><br><strong>Note:</strong> if set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1024</code><br><strong>Note #2:</strong> for Gemini Pro models, the <code>use_reasoning</code> will automatically be set to <code>true</code>",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "user_prompt": {
        +        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        +        "type": "string"
        +      },
        +      "web_search": {
        +        "description": "<em>enable web search for current information</em><br>optional field<br>when enabled, the AI model can access and cite current web information;<br><strong>Note:</strong> refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models/\">Models endpoint</a> for a list of models that support <code>web_search</code>; <br>default value: <code>false</code>;<br>The cost of the parameter can be calculated on the <a title=\"Gemini API Pricing\" href=\"https://ai.google.dev/gemini-api/docs/pricing\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing</a> page",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
    • Changedpost_dataforseo_ai_gemini_llm_scraper_live2 fields changed
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "keyword": "albert einstein",
        -        "language_code": "en",
        -        "location_code": 2840
        -      }
        -    ],
        -    "properties": {
        -      "keyword": {
        -        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        -        "type": "string"
        -      },
        -      "language_code": {
        -        "description": "<em>search engine language code</em><br>required field if you don't specify <code>language_name</code>;<br>if you use this field, you don't need to specify <code>language_name</code>;<br>you can receive the list of available languages of the search engine with their <code>language_code</code>_by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example: <code>en</code>n",
        -        "type": "string"
        -      },
        -      "language_name": {
        -        "description": "<em>full name of search engine language</em><br>required field if you don't specify <code>language_code</code>;<br>if you use this field, you don't need to specify <code>language_code</code>;<br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example: <code>English</code>",
        -        "type": "string"
        -      },
        -      "location_code": {
        -        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        -        "type": "integer"
        -      },
        -      "location_coordinate": {
        -        "description": "<p><em>GPS coordinates of a location</em><p><strong>required field if you don't specify</strong> <code>location_name</code>&nbsp;or <code>location_code</code><p><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_code</code></strong><p><code>location_coordinate</code> parameter should be specified in the <em>\"latitude,longitude,radius\"</em> format<p>the maximum number of decimal digits for <em>\"latitude\"</em> and <em>\"longitude\"</em>: 7<p>the minimum value for <em>\"radius\"</em>: 199 (mm)<p>the maximum value for <em>\"radius\"</em>: 199999 (mm)<p>example:<p><code class=\"long-string\">53.476225,-2.243572,200</code></p>",
        -        "type": "string"
        -      },
        -      "location_name": {
        -        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_code</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        -        "type": "string"
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / oneOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "keyword": "albert einstein",
        +        "language_code": "en",
        +        "location_code": 2840
        +      }
        +    ],
        +    "properties": {
        +      "keyword": {
        +        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        +        "type": "string"
        +      },
        +      "language_code": {
        +        "description": "<em>search engine language code</em><br>required field if you don't specify <code>language_name</code>;<br>if you use this field, you don't need to specify <code>language_name</code>;<br>you can receive the list of available languages of the search engine with their <code>language_code</code>_by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example: <code>en</code>n",
        +        "type": "string"
        +      },
        +      "language_name": {
        +        "description": "<em>full name of search engine language</em><br>required field if you don't specify <code>language_code</code>;<br>if you use this field, you don't need to specify <code>language_code</code>;<br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example: <code>English</code>",
        +        "type": "string"
        +      },
        +      "location_code": {
        +        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        +        "type": "integer"
        +      },
        +      "location_coordinate": {
        +        "description": "<p><em>GPS coordinates of a location</em><p><strong>required field if you don't specify</strong> <code>location_name</code>&nbsp;or <code>location_code</code><p><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_code</code></strong><p><code>location_coordinate</code> parameter should be specified in the <em>\"latitude,longitude,radius\"</em> format<p>the maximum number of decimal digits for <em>\"latitude\"</em> and <em>\"longitude\"</em>: 7<p>the minimum value for <em>\"radius\"</em>: 199 (mm)<p>the maximum value for <em>\"radius\"</em>: 199999 (mm)<p>example:<p><code class=\"long-string\">53.476225,-2.243572,200</code></p>",
        +        "type": "string"
        +      },
        +      "location_name": {
        +        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_code</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        +        "type": "string"
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
    • Changedpost_dataforseo_ai_gemini_llm_scraper_live_html2 fields changed
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "keyword": "albert einstein",
        -        "language_code": "en",
        -        "location_code": 2840
        -      }
        -    ],
        -    "properties": {
        -      "expand_citations": {
        -        "description": "<em>return expanded citation bar in HTML results</em><br>optional field<br>when enabled, the endpoint will return HTML data from the expanded citation bar;<br>default value: <code>false</code>",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "keyword": {
        -        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        -        "type": "string"
        -      },
        -      "language_code": {
        -        "description": "<em>search engine language code</em><br><strong>required field if you don't specify</strong> <code>language_name</code><br><strong>if you use this field, you don't need to specify <code>language_name</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_code</code>_by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example:<code class=\"long-string\">en</code>n",
        -        "type": "string"
        -      },
        -      "language_name": {
        -        "description": "<em>full name of search engine language</em><br><strong>required field if you don't specify</strong> <code>language_code</code><br><strong>if you use this field, you don't need to specify <code>language_code</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example:<br><code class=\"long-string\">English</code>",
        -        "type": "string"
        -      },
        -      "location_code": {
        -        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        -        "type": "integer"
        -      },
        -      "location_coordinate": {
        -        "description": "<p><em>GPS coordinates of a location</em><p><strong>required field if you don't specify</strong> <code>location_name</code>&nbsp;or <code>location_code</code><p><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_code</code></strong><p><code>location_coordinate</code> parameter should be specified in the <em>\"latitude,longitude,radius\"</em> format<p>the maximum number of decimal digits for <em>\"latitude\"</em> and <em>\"longitude\"</em>: 7<p>the minimum value for <em>\"radius\"</em>: 199 (mm)<p>the maximum value for <em>\"radius\"</em>: 199999 (mm)<p>example:<p><code class=\"long-string\">53.476225,-2.243572,200</code></p>",
        -        "type": "string"
        -      },
        -      "location_name": {
        -        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_code</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        -        "type": "string"
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / oneOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "keyword": "albert einstein",
        +        "language_code": "en",
        +        "location_code": 2840
        +      }
        +    ],
        +    "properties": {
        +      "expand_citations": {
        +        "description": "<em>return expanded citation bar in HTML results</em><br>optional field<br>when enabled, the endpoint will return HTML data from the expanded citation bar;<br>default value: <code>false</code>",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        +        "type": "string"
        +      },
        +      "language_code": {
        +        "description": "<em>search engine language code</em><br><strong>required field if you don't specify</strong> <code>language_name</code><br><strong>if you use this field, you don't need to specify <code>language_name</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_code</code>_by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example:<code class=\"long-string\">en</code>n",
        +        "type": "string"
        +      },
        +      "language_name": {
        +        "description": "<em>full name of search engine language</em><br><strong>required field if you don't specify</strong> <code>language_code</code><br><strong>if you use this field, you don't need to specify <code>language_code</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example:<br><code class=\"long-string\">English</code>",
        +        "type": "string"
        +      },
        +      "location_code": {
        +        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        +        "type": "integer"
        +      },
        +      "location_coordinate": {
        +        "description": "<p><em>GPS coordinates of a location</em><p><strong>required field if you don't specify</strong> <code>location_name</code>&nbsp;or <code>location_code</code><p><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_code</code></strong><p><code>location_coordinate</code> parameter should be specified in the <em>\"latitude,longitude,radius\"</em> format<p>the maximum number of decimal digits for <em>\"latitude\"</em> and <em>\"longitude\"</em>: 7<p>the minimum value for <em>\"radius\"</em>: 199 (mm)<p>the maximum value for <em>\"radius\"</em>: 199999 (mm)<p>example:<p><code class=\"long-string\">53.476225,-2.243572,200</code></p>",
        +        "type": "string"
        +      },
        +      "location_name": {
        +        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_code</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        +        "type": "string"
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
    • Changedpost_dataforseo_ai_keyword_volume_live2 fields changed
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "keywords": [
        -          "iphone",
        -          "seo"
        -        ],
        -        "language_name": "English",
        -        "location_code": 2840
        -      }
        -    ],
        -    "properties": {
        -      "keywords": {
        -        "description": "<em>keywords</em><br><strong>required field</strong><br>UTF-8 encoding<br>The maximum number of keywords you can specify: 1000;<br>The maximum number of characters in a single keyword: 250;<br>The keywords will be converted to lowercase format;<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "language_code": {
        -        "description": "<em>language code</em><br><strong>required field if you don't specify</strong> <code>language_name</code><br><strong>if you use this field, you don't need to specify</strong> <code>language_name</code><br>you can receive the list of available languages with their <code>language_code</code> by making a separate request to the<br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">en</code>",
        -        "type": "string"
        -      },
        -      "language_name": {
        -        "description": "<em>full name of the language</em><br><strong>required field if you don't specify</strong> <code>language_code</code><br><strong>if you use this field, you don't need to specify</strong> <code>language_code</code><br>you can receive the list of available languages with their <code>language_name</code> by making a separate request to the<br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">English</code>",
        -        "type": "string"
        -      },
        -      "location_code": {
        -        "description": "<em>unique location identifier</em><br><strong>required field if you don't specify</strong> <code>location_name</code><br><strong>Note:</strong> it is required to specify either <code>location_name</code> or <code>location_code</code><br>you can receive the list of available locations with their <code>location_code</code> by making a separate request to the <br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">2840</code>",
        -        "type": "integer"
        -      },
        -      "location_name": {
        -        "description": "<em>full name of the location</em><br><strong>required field if you don't specify</strong> <code>location_code</code><br><strong>Note:</strong> it is required to specify either <code>location_name</code> or <code>location_code</code><br>you can receive the list of available locations with their <code>location_name</code> by making a separate request to the<br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">United Kingdom</code>",
        -        "type": "string"
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / oneOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "keywords": [
        +          "iphone",
        +          "seo"
        +        ],
        +        "language_name": "English",
        +        "location_code": 2840
        +      }
        +    ],
        +    "properties": {
        +      "keywords": {
        +        "description": "<em>keywords</em><br><strong>required field</strong><br>UTF-8 encoding<br>The maximum number of keywords you can specify: 1000;<br>The maximum number of characters in a single keyword: 250;<br>The keywords will be converted to lowercase format;<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "language_code": {
        +        "description": "<em>language code</em><br><strong>required field if you don't specify</strong> <code>language_name</code><br><strong>if you use this field, you don't need to specify</strong> <code>language_name</code><br>you can receive the list of available languages with their <code>language_code</code> by making a separate request to the<br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">en</code>",
        +        "type": "string"
        +      },
        +      "language_name": {
        +        "description": "<em>full name of the language</em><br><strong>required field if you don't specify</strong> <code>language_code</code><br><strong>if you use this field, you don't need to specify</strong> <code>language_code</code><br>you can receive the list of available languages with their <code>language_name</code> by making a separate request to the<br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">English</code>",
        +        "type": "string"
        +      },
        +      "location_code": {
        +        "description": "<em>unique location identifier</em><br><strong>required field if you don't specify</strong> <code>location_name</code><br><strong>Note:</strong> it is required to specify either <code>location_name</code> or <code>location_code</code><br>you can receive the list of available locations with their <code>location_code</code> by making a separate request to the <br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">2840</code>",
        +        "type": "integer"
        +      },
        +      "location_name": {
        +        "description": "<em>full name of the location</em><br><strong>required field if you don't specify</strong> <code>location_code</code><br><strong>Note:</strong> it is required to specify either <code>location_name</code> or <code>location_code</code><br>you can receive the list of available locations with their <code>location_name</code> by making a separate request to the<br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">United Kingdom</code>",
        +        "type": "string"
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
    • Changedpost_dataforseo_ai_llm_mentions_aggregated_metrics_live2 fields changed
      • removedInput schema / properties / body / items / properties / target / items / anyOf
        Removed value: -[
        -  {
        -    "required": [
        -      "domain"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "keyword"
        -    ]
        -  }
        -]
      • addedInput schema / properties / body / items / properties / target / items / oneOf
        Added value: +[
        +  {
        +    "required": [
        +      "domain"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "keyword"
        +    ]
        +  }
        +]
    • Changedpost_dataforseo_ai_llm_mentions_cross_metrics_live2 fields changed
      • removedInput schema / properties / body / items / properties / targets / items / properties / target / items / anyOf
        Removed value: -[
        -  {
        -    "required": [
        -      "domain"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "keyword"
        -    ]
        -  }
        -]
      • addedInput schema / properties / body / items / properties / targets / items / properties / target / items / oneOf
        Added value: +[
        +  {
        +    "required": [
        +      "domain"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "keyword"
        +    ]
        +  }
        +]
    • Changedpost_dataforseo_ai_llm_mentions_search_live2 fields changed
      • removedInput schema / properties / body / items / properties / target / items / anyOf
        Removed value: -[
        -  {
        -    "required": [
        -      "domain"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "keyword"
        -    ]
        -  }
        -]
      • addedInput schema / properties / body / items / properties / target / items / oneOf
        Added value: +[
        +  {
        +    "required": [
        +      "domain"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "keyword"
        +    ]
        +  }
        +]
    • Changedpost_dataforseo_ai_llm_mentions_top_domains_live2 fields changed
      • removedInput schema / properties / body / items / properties / target / items / anyOf
        Removed value: -[
        -  {
        -    "required": [
        -      "domain"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "keyword"
        -    ]
        -  }
        -]
      • addedInput schema / properties / body / items / properties / target / items / oneOf
        Added value: +[
        +  {
        +    "required": [
        +      "domain"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "keyword"
        +    ]
        +  }
        +]
    • Changedpost_dataforseo_ai_llm_mentions_top_pages_live2 fields changed
      • removedInput schema / properties / body / items / properties / target / items / anyOf
        Removed value: -[
        -  {
        -    "required": [
        -      "domain"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "keyword"
        -    ]
        -  }
        -]
      • addedInput schema / properties / body / items / properties / target / items / oneOf
        Added value: +[
        +  {
        +    "required": [
        +      "domain"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "keyword"
        +    ]
        +  }
        +]
    • Changedpost_dataforseo_ai_perplexity_llm_responses_live2 fields changed
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "max_output_tokens": 200,
        -        "message_chain": [
        -          {
        -            "message": "Hello, what’s up?",
        -            "role": "user"
        -          },
        -          {
        -            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        -            "role": "ai"
        -          }
        -        ],
        -        "model_name": "sonar",
        -        "system_message": "communicate as if we are in a business meeting",
        -        "temperature": 0.3,
        -        "top_p": 0.5,
        -        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        -        "web_search_country_iso_code": "FR"
        -      }
        -    ],
        -    "properties": {
        -      "max_output_tokens": {
        -        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value: <code>1</code><br>maximum value: <code>4096</code>;<br>default value: <code>2048</code>;<br><strong>Note:</strong> if the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "message_chain": {
        -        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        -        "items": {
        -          "anyOf": [
        -            {
        -              "properties": {
        -                "message": {
        -                  "description": "message text",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "role": {
        -                  "description": "role of the user from whom the message originates",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                }
        -              },
        -              "type": "object"
        -            }
        -          ],
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "model_name": {
        -        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>you can receive the list of available LLM models by making a separate request to the following endpoint: <code>https://api.dataforseo.com/v3/ai_optimization/perplexity/llm_responses/models</code>",
        -        "type": "string"
        -      },
        -      "system_message": {
        -        "description": "<em>instructions for the AI behavior</em><br>optional field<br>defines the AI's role, tone, or specific behavior <br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "temperature": {
        -        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse <br>lower values make output more focused<br>minimum value: <code>0</code><br>maximum value: <code>1.9</code><br>default value: <code>0.77</code>",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "top_p": {
        -        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>0.9</code>",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "user_prompt": {
        -        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        -        "type": "string"
        -      },
        -      "web_search_country_iso_code": {
        -        "description": "<em>country code for web search localization</em><br>optional field<br>specify the country  ISO code to get localized web search results<br><strong>Note:</strong> available only for Perplexity Sonar models<br>example: <code>US</code>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / oneOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "max_output_tokens": 200,
        +        "message_chain": [
        +          {
        +            "message": "Hello, what’s up?",
        +            "role": "user"
        +          },
        +          {
        +            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        +            "role": "ai"
        +          }
        +        ],
        +        "model_name": "sonar",
        +        "system_message": "communicate as if we are in a business meeting",
        +        "temperature": 0.3,
        +        "top_p": 0.5,
        +        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        +        "web_search_country_iso_code": "FR"
        +      }
        +    ],
        +    "properties": {
        +      "max_output_tokens": {
        +        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value: <code>1</code><br>maximum value: <code>4096</code>;<br>default value: <code>2048</code>;<br><strong>Note:</strong> if the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "message_chain": {
        +        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        +        "items": {
        +          "oneOf": [
        +            {
        +              "properties": {
        +                "message": {
        +                  "description": "message text",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "role": {
        +                  "description": "role of the user from whom the message originates",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ],
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "model_name": {
        +        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>you can receive the list of available LLM models by making a separate request to the following endpoint: <code>https://api.dataforseo.com/v3/ai_optimization/perplexity/llm_responses/models</code>",
        +        "type": "string"
        +      },
        +      "system_message": {
        +        "description": "<em>instructions for the AI behavior</em><br>optional field<br>defines the AI's role, tone, or specific behavior <br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "temperature": {
        +        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse <br>lower values make output more focused<br>minimum value: <code>0</code><br>maximum value: <code>1.9</code><br>default value: <code>0.77</code>",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "top_p": {
        +        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>0.9</code>",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "user_prompt": {
        +        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        +        "type": "string"
        +      },
        +      "web_search_country_iso_code": {
        +        "description": "<em>country code for web search localization</em><br>optional field<br>specify the country  ISO code to get localized web search results<br><strong>Note:</strong> available only for Perplexity Sonar models<br>example: <code>US</code>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
  3. 24 tool updates
    • 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_dataforseo_ai_chat_gpt_llm_responses_models1 field changed
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedget_dataforseo_ai_claude_llm_responses_models1 field changed
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedget_dataforseo_ai_gemini_llm_responses_models1 field changed
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedget_dataforseo_ai_gemini_llm_scraper_languages1 field changed
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedget_dataforseo_ai_gemini_llm_scraper_locations1 field changed
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedget_dataforseo_ai_keyword_locales1 field changed
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedget_dataforseo_ai_llm_mentions_available_filters1 field changed
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedget_dataforseo_ai_llm_mentions_locales1 field changed
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedget_dataforseo_ai_perplexity_llm_responses_models1 field changed
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • 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"
        +]
    • Changedpost_dataforseo_ai_chat_gpt_llm_responses_live7 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "max_output_tokens": 200,
        +    "message_chain": [
        +      {
        +        "message": "Hello, what’s up?",
        +        "role": "user"
        +      },
        +      {
        +        "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        +        "role": "ai"
        +      }
        +    ],
        +    "model_name": "gpt-4.1-mini",
        +    "system_message": "communicate as if we are in a business meeting",
        +    "temperature": 0.3,
        +    "top_p": 0.5,
        +    "user_prompt": "provide information on how relevant the amusement park business is in France now",
        +    "web_search": true,
        +    "web_search_city": "Paris",
        +    "web_search_country_iso_code": "FR"
        +  }
        +]
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "max_output_tokens": 200,
        +        "message_chain": [
        +          {
        +            "message": "Hello, what’s up?",
        +            "role": "user"
        +          },
        +          {
        +            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        +            "role": "ai"
        +          }
        +        ],
        +        "model_name": "gpt-4.1-mini",
        +        "system_message": "communicate as if we are in a business meeting",
        +        "temperature": 0.3,
        +        "top_p": 0.5,
        +        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        +        "web_search": true,
        +        "web_search_city": "Paris",
        +        "web_search_country_iso_code": "FR"
        +      }
        +    ],
        +    "properties": {
        +      "force_web_search": {
        +        "description": "<em>force AI agent to use web search</em><br>optional field<br>to enable this parameter, <code>web_search</code> must also be enabled;<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response <br><strong>Note #2:</strong> not supported in reasoning models",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "max_output_tokens": {
        +        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value for reasoning models (e.g., <code>reasoning</code> is <code>true</code> in the <a href=\"/v3/ai_optimization/chat_gpt/llm_responses/models/\" target=\"_blank\">Models endpoint</a>): <code>1024</code>;<br>minimum value for non-reasoning models: <code>16</code>;<br>maximum value: <code>4096</code>;<br>default value: <code>2048</code><br><strong>Note:</strong> if <code>web_search</code> is set to <code>true</code> or the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "message_chain": {
        +        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        +        "items": {
        +          "anyOf": [
        +            {
        +              "properties": {
        +                "message": {
        +                  "description": "message text",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "role": {
        +                  "description": "role of the user from whom the message originates",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ],
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "model_name": {
        +        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>for example, if <code>gpt-4.1</code> is specified, the <code>gpt-4.1-2025-04-14</code> will be set as <code>model_name</code> automatically;<br>you can receive the list of available LLM models by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/models</code>",
        +        "type": "string"
        +      },
        +      "system_message": {
        +        "description": "<em>instructions for the AI behaviour</em><br>optional field<br>defines the AI's role, tone, or specific behavior <br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "temperature": {
        +        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse; <br>lower values make output more focused;<br>minimum value: <code>0</code><br>maximum value: <code>2</code><br>default value: <code>0.94</code><br><strong>Note:</strong> not supported in reasoning models",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "top_p": {
        +        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection;<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>0.92</code><p><strong>Note:</strong>  <code>top_p</code> cannot be used together with <code>temperature</code> in the same request",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "user_prompt": {
        +        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        +        "type": "string"
        +      },
        +      "web_search": {
        +        "description": "<em>enable web search</em><br>optional field<br>when enabled, the AI model can access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/models/\">Models endpoint</a> for a list of models that support <code>web_search</code>;",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "web_search_city": {
        +        "description": "<em>city name of the location</em><br>optional field<br><strong>Note:</strong> not supported in <code>o3-mini</code>, <code>o1-pro</code>, <code>o1</code> models",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "web_search_country_iso_code": {
        +        "description": "<em>ISO country code of the location</em><br>optional field<br>to enable this parameter, <code>web_search</code> must also be enabled;<br>when enabled, the AI model will search the web from the country you specify;<br><strong>Note:</strong> not supported in <code>o3-mini</code>, <code>o1-pro</code>, <code>o1</code> models",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "force_web_search": {
        -    "description": "force AI agent to use web search optional field to enable this parameter, web_search must also be enabled; when enabled, the AI model is forced to access and cite current web information; default value: false; Note: even if the parameter is set to true, there is no guarantee web sources will be cited in the response Note #2: not supported in reasoning models",
        -    "type": "boolean"
        -  },
        -  "max_output_tokens": {
        -    "description": "maximum number of tokens in the AI response optional field minimum value for reasoning models (e.g., reasoning is true in the Models endpoint): 1024; minimum value for non-reasoning models: 16; maximum value: 4096; default value: 2048 Note: if web_search is set to true or the reasoning model is specified in the request, the output token count may exceed the specified max_output_tokens limit",
        -    "type": "integer"
        -  },
        -  "message_chain": {
        -    "description": "conversation history optional field array of message objects representing previous conversation turns; each object must contain: role string with either user or ai role; message string with message content (max 500 characters); you can specify maximum of 10 message objects in the array; Note: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai); example: \"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        -    "items": {
        -      "properties": {
        -        "message": {
        -          "description": "message text",
        -          "type": "string"
        -        },
        -        "role": {
        -          "description": "role of the user from whom the message originates",
        -          "enum": [
        -            "user",
        -            "ai"
        -          ],
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "role",
        -        "message"
        -      ],
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  "model_name": {
        -    "description": "name of the AI model required field model_nameconsists of the actual model name and version name; if the basic model name is specified, its latest version will be set by default; for example, if gpt-4.1 is specified, the gpt-4.1-2025-04-14 will be set as model_name automatically; you can receive the list of available LLM models by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/models",
        -    "type": "string"
        -  },
        -  "system_message": {
        -    "description": "instructions for the AI behaviour optional field defines the AI's role, tone, or specific behavior you can specify up to 500 characters in the system_message field",
        -    "type": "string"
        -  },
        -  "tag": {
        -    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        -    "type": "string"
        -  },
        -  "temperature": {
        -    "description": "randomness of the AI response optional field higher values make output more diverse; lower values make output more focused; minimum value: 0 maximum value: 2 default value: 0.94 Note: not supported in reasoning models",
        -    "type": "number"
        -  },
        -  "top_p": {
        -    "description": "diversity of the AI response optional field controls diversity of the response by limiting token selection; minimum value: 0 maximum value: 1 default value: 0.92 Note: top_p cannot be used together with temperature in the same request",
        -    "type": "number"
        -  },
        -  "user_prompt": {
        -    "description": "prompt for the AI model required field the question or task you want to send to the AI model; you can specify up to 500 characters in the user_prompt field",
        -    "type": "string"
        -  },
        -  "web_search": {
        -    "description": "enable web search optional field when enabled, the AI model can access and cite current web information; default value: false; Note: refer to the Models endpoint for a list of models that support web_search;",
        -    "type": "boolean"
        -  },
        -  "web_search_city": {
        -    "description": "city name of the location optional field Note: not supported in o3-mini, o1-pro, o1 models",
        -    "type": "string"
        -  },
        -  "web_search_country_iso_code": {
        -    "description": "ISO country code of the location optional field to enable this parameter, web_search must also be enabled; when enabled, the AI model will search the web from the country you specify; Note: not supported in o3-mini, o1-pro, o1 models",
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / body / items / required
        Removed value: -[
        -  "user_prompt",
        -  "model_name"
        -]
      • changedInput schema / properties / body / items / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "body"
        -]New value: +[]
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedpost_dataforseo_ai_chat_gpt_llm_scraper_live8 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "keyword": "albert einstein",
        +    "language_code": "en",
        +    "location_code": 2840
        +  }
        +]
      • removedInput schema / properties / body / items / allOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "location_name"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "location_code"
        -        ]
        -      }
        -    ]
        -  },
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "language_name"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "language_code"
        -        ]
        -      }
        -    ]
        -  }
        -]
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "keyword": "albert einstein",
        +        "language_code": "en",
        +        "location_code": 2840
        +      }
        +    ],
        +    "properties": {
        +      "force_web_search": {
        +        "description": "<em>force AI agent to use web search</em><br>optional field<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        +        "type": "string"
        +      },
        +      "language_code": {
        +        "description": "<em>search engine language code</em><br><strong>required field if you don't specify <code>language_name</code>;</strong><br>if you use this field, you don't need to specify <code>language_name</code>;<br>you can receive the list of available languages of the search engine with their <code>language_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/languages</code>",
        +        "type": "string"
        +      },
        +      "language_name": {
        +        "description": "<em>full name of search engine language</em><br><strong>required field if you don't specify <code>language_code</code>;</strong><br>if you use this field, you don't need to specify <code>language_code</code>;<br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/languages</code>",
        +        "type": "string"
        +      },
        +      "location_code": {
        +        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code><br><strong>if you use this field, you don't need to specify <code>location_name</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        +        "type": "integer"
        +      },
        +      "location_name": {
        +        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code><br><strong>if you use this field, you don't need to specify <code>location_code</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        +        "type": "string"
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "force_web_search": {
        -    "description": "force AI agent to use web search optional field when enabled, the AI model is forced to access and cite current web information; default value: false; Note: even if the parameter is set to true, there is no guarantee web sources will be cited in the response",
        -    "type": "boolean"
        -  },
        -  "keyword": {
        -    "description": "keyword required field you can specify up to 2000 characters in the keyword field all %## will be decoded (plus character ‘+’ will be decoded to a space character) if you need to use the “%” character for your keyword, please specify it as “%25”; if you need to use the “+” character for your keyword, please specify it as “%2B”learn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        -    "type": "string"
        -  },
        -  "language_code": {
        -    "description": "search engine language code required field if you don't specify language_name; if you use this field, you don't need to specify language_name; you can receive the list of available languages of the search engine with their language_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/languages",
        -    "type": "string"
        -  },
        -  "language_name": {
        -    "description": "full name of search engine language required field if you don't specify language_code; if you use this field, you don't need to specify language_code; you can receive the list of available languages of the search engine with their language_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/languages",
        -    "type": "string"
        -  },
        -  "location_code": {
        -    "description": "search engine location code required field if you don't specify location_name if you use this field, you don't need to specify location_name you can receive the list of available locations of the search engines with their location_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/locations example: 2840",
        -    "type": "integer"
        -  },
        -  "location_name": {
        -    "description": "full name of search engine location required field if you don't specify location_code if you use this field, you don't need to specify location_code you can receive the list of available locations of the search engine with their location_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/locations example: United States",
        -    "type": "string"
        -  },
        -  "tag": {
        -    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / body / items / required
        Removed value: -[
        -  "keyword"
        -]
      • changedInput schema / properties / body / items / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "body"
        -]New value: +[]
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedpost_dataforseo_ai_chat_gpt_llm_scraper_live_html8 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "keyword": "albert einstein",
        +    "language_code": "en",
        +    "location_code": 2840
        +  }
        +]
      • removedInput schema / properties / body / items / allOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "location_name"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "location_code"
        -        ]
        -      }
        -    ]
        -  },
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "language_name"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "language_code"
        -        ]
        -      }
        -    ]
        -  }
        -]
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "keyword": "albert einstein",
        +        "language_code": "en",
        +        "location_code": 2840
        +      }
        +    ],
        +    "properties": {
        +      "expand_citations": {
        +        "description": "<em>return expanded citation bar in HTML results</em><br>optional field<br>to enable this parameter, <code>force_web_search</code> must also be enabled;<br>when enabled, the endpoint will return HTML data from the expanded citation bar;<br>default value: <code>false</code>",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "force_web_search": {
        +        "description": "<em>force AI agent to use web search</em><br>optional field<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        +        "type": "string"
        +      },
        +      "language_code": {
        +        "description": "<em>search engine language code</em><br><strong>required field if you don't specify</strong> <code>language_name</code><br><strong>if you use this field, you don't need to specify <code>language_name</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_code</code>_by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/languages</code><br>example:<code class=\"long-string\">en</code>n",
        +        "type": "string"
        +      },
        +      "language_name": {
        +        "description": "<em>full name of search engine language</em><br><strong>required field if you don't specify</strong> <code>language_code</code><br><strong>if you use this field, you don't need to specify <code>language_code</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/languages</code><br>example:<br><code class=\"long-string\">English</code>",
        +        "type": "string"
        +      },
        +      "location_code": {
        +        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code><br><strong>if you use this field, you don't need to specify <code>location_name</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        +        "type": "integer"
        +      },
        +      "location_name": {
        +        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code><br><strong>if you use this field, you don't need to specify <code>location_code</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        +        "type": "string"
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "expand_citations": {
        -    "description": "return expanded citation bar in HTML results optional field to enable this parameter, force_web_search must also be enabled; when enabled, the endpoint will return HTML data from the expanded citation bar; default value: false",
        -    "type": "boolean"
        -  },
        -  "force_web_search": {
        -    "description": "force AI agent to use web search optional field when enabled, the AI model is forced to access and cite current web information; default value: false; Note: even if the parameter is set to true, there is no guarantee web sources will be cited in the response",
        -    "type": "boolean"
        -  },
        -  "keyword": {
        -    "description": "keyword required field you can specify up to 2000 characters in the keyword field all %## will be decoded (plus character ‘+’ will be decoded to a space character) if you need to use the “%” character for your keyword, please specify it as “%25”; if you need to use the “+” character for your keyword, please specify it as “%2B”learn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        -    "type": "string"
        -  },
        -  "language_code": {
        -    "description": "search engine language code required field if you don't specify language_name if you use this field, you don't need to specify language_name you can receive the list of available languages of the search engine with their language_code_by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/languages example:enn",
        -    "type": "string"
        -  },
        -  "language_name": {
        -    "description": "full name of search engine language required field if you don't specify language_code if you use this field, you don't need to specify language_code you can receive the list of available languages of the search engine with their language_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/languages example: English",
        -    "type": "string"
        -  },
        -  "location_code": {
        -    "description": "search engine location code required field if you don't specify location_name if you use this field, you don't need to specify location_name you can receive the list of available locations of the search engines with their location_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/locations example: 2840",
        -    "type": "integer"
        -  },
        -  "location_name": {
        -    "description": "full name of search engine location required field if you don't specify location_code if you use this field, you don't need to specify location_code you can receive the list of available locations of the search engine with their location_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/locations example: United States",
        -    "type": "string"
        -  },
        -  "tag": {
        -    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / body / items / required
        Removed value: -[
        -  "keyword"
        -]
      • changedInput schema / properties / body / items / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "body"
        -]New value: +[]
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedpost_dataforseo_ai_claude_llm_responses_live7 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "max_output_tokens": 200,
        +    "message_chain": [
        +      {
        +        "message": "Hello, what’s up?",
        +        "role": "user"
        +      },
        +      {
        +        "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        +        "role": "ai"
        +      }
        +    ],
        +    "model_name": "claude-opus-5",
        +    "system_message": "communicate as if we are in a business meeting",
        +    "temperature": 0.3,
        +    "user_prompt": "provide information on how relevant the amusement park business is in France now",
        +    "web_search": true,
        +    "web_search_country_iso_code": "FR"
        +  }
        +]
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "max_output_tokens": 200,
        +        "message_chain": [
        +          {
        +            "message": "Hello, what’s up?",
        +            "role": "user"
        +          },
        +          {
        +            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        +            "role": "ai"
        +          }
        +        ],
        +        "model_name": "claude-opus-5",
        +        "system_message": "communicate as if we are in a business meeting",
        +        "temperature": 0.3,
        +        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        +        "web_search": true,
        +        "web_search_country_iso_code": "FR"
        +      }
        +    ],
        +    "properties": {
        +      "force_web_search": {
        +        "description": "<em>force AI agent to use web search</em><br>optional field<br>to enable this parameter, <code>web_search</code> must also be enabled;<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "max_output_tokens": {
        +        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value: <code>1</code>;<br>maximum value: <code>4096</code>;<br>default value: <code>2048</code>;<br><strong>Note:</strong> if <code>web_search</code> is set to <code>true</code> or the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit<br><strong>Note #2:</strong> if <code>use_reasoning</code> is set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1025</code>",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "message_chain": {
        +        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        +        "items": {
        +          "anyOf": [
        +            {
        +              "properties": {
        +                "message": {
        +                  "description": "message text",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "role": {
        +                  "description": "role of the user from whom the message originates",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ],
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "model_name": {
        +        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>for example, if <code>claude-opus-4-0</code> is specified, the <code>claude-opus-4-20250514</code> will be set as <code>model_name</code> automatically;<br>you can receive the list of available LLM models by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/claude/llm_responses/models</code>",
        +        "type": "string"
        +      },
        +      "system_message": {
        +        "description": "<em>instructions for the AI behaviour</em><br>optional field<br>defines the AI's role, tone, or specific behavior;<br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "temperature": {
        +        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse; <br>lower values make output more focused;<br>minimum value: <code>0</code><br>maximum value: <code>1</code><br>default value: <code>0.7</code><p><strong>Note:</strong> <code>temperature</code> cannot be used together with <code>top_p</code> in the same request",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "top_p": {
        +        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection;<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>null</code><p><strong>Note:</strong> <code>top_p</code> cannot be used together with <code>temperature</code> in the same request",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "use_reasoning": {
        +        "description": "<em>enable reasoning for the AI model</em><br>optional field<br>when enabled, the model will perform reasoning before generating a response<br>refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/claude/llm_responses/models/\" target=\"_blank\">Models endpoint</a> for a list of models that support <code>reasoning</code><br>default value: <code>false</code><br><strong>Note:</strong> if set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1025</code><br><strong>Note #2:</strong> if set to <code>true</code>, <code>force_web_search</code> must be set to <code>false</code><br><strong>Note #3:</strong> if set to <code>true</code>, the <code>temperature</code> and <code>top_p</code> cannot be used",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "user_prompt": {
        +        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        +        "type": "string"
        +      },
        +      "web_search": {
        +        "description": "<em>enable web search for current information</em><br>optional field<br>when enabled, the AI model can access and cite current web information;<br><strong>Note:</strong> refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/claude/llm_responses/models/\">Models endpoint</a> for a list of models that support <code>web_search</code>; <br>default value: <code>false</code>;<br>The cost of the parameter can be calculated on the <a title=\"Anthropic API Pricing\" href=\"https://docs.anthropic.com/en/docs/about-claude/pricing\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing</a> page",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "web_search_city": {
        +        "description": "<em>city name of the location used for searching the web</em><br>optional field<br>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "web_search_country_iso_code": {
        +        "description": "<em>ISO country code of the location used for searching the web</em><br>optional field<br>possible values: <code>'AR','AT','AU','BE','BR','CA','CH','CL','CN','DE','DK','ES','FI','FR','GB','HK','ID','IN','IT','JP','KR','MX','MY','NL','NO','NZ','PH','PL','PT','RU','SA','SE','TR','TW','US','ZA'</code>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "force_web_search": {
        -    "description": "force AI agent to use web search optional field to enable this parameter, web_search must also be enabled; when enabled, the AI model is forced to access and cite current web information; default value: false; Note: even if the parameter is set to true, there is no guarantee web sources will be cited in the response",
        -    "type": "boolean"
        -  },
        -  "max_output_tokens": {
        -    "description": "maximum number of tokens in the AI response optional field minimum value: 1; maximum value: 4096; default value: 2048; Note: if web_search is set to true or the reasoning model is specified in the request, the output token count may exceed the specified max_output_tokens limit Note #2: if use_reasoning is set to true, the minimum value for max_output_tokens is 1025",
        -    "type": "integer"
        -  },
        -  "message_chain": {
        -    "description": "conversation history optional field array of message objects representing previous conversation turns; each object must contain: role string with either user or ai role; message string with message content (max 500 characters); you can specify maximum of 10 message objects in the array; Note: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai); example: \"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        -    "items": {
        -      "properties": {
        -        "message": {
        -          "description": "message text",
        -          "type": "string"
        -        },
        -        "role": {
        -          "description": "role of the user from whom the message originates",
        -          "enum": [
        -            "user",
        -            "ai"
        -          ],
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "role",
        -        "message"
        -      ],
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  "model_name": {
        -    "description": "name of the AI model required field model_nameconsists of the actual model name and version name; if the basic model name is specified, its latest version will be set by default; for example, if claude-opus-4-0 is specified, the claude-opus-4-20250514 will be set as model_name automatically; you can receive the list of available LLM models by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/claude/llm_responses/models",
        -    "type": "string"
        -  },
        -  "system_message": {
        -    "description": "instructions for the AI behaviour optional field defines the AI's role, tone, or specific behavior; you can specify up to 500 characters in the system_message field",
        -    "type": "string"
        -  },
        -  "tag": {
        -    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        -    "type": "string"
        -  },
        -  "temperature": {
        -    "description": "randomness of the AI response optional field higher values make output more diverse; lower values make output more focused; minimum value: 0 maximum value: 1 default value: 0.7Note: temperature cannot be used together with top_p in the same request",
        -    "type": "number"
        -  },
        -  "top_p": {
        -    "description": "diversity of the AI response optional field controls diversity of the response by limiting token selection; minimum value: 0 maximum value: 1 default value: nullNote: top_p cannot be used together with temperature in the same request",
        -    "type": "number"
        -  },
        -  "use_reasoning": {
        -    "description": "enable reasoning for the AI model optional field when enabled, the model will perform reasoning before generating a response refer to the Models endpoint for a list of models that support reasoning default value: false Note: if set to true, the minimum value for max_output_tokens is 1025 Note #2: if set to true, force_web_search must be set to false Note #3: if set to true, the temperature and top_p cannot be used",
        -    "type": "boolean"
        -  },
        -  "user_prompt": {
        -    "description": "prompt for the AI model required field the question or task you want to send to the AI model; you can specify up to 500 characters in the user_prompt field",
        -    "type": "string"
        -  },
        -  "web_search": {
        -    "description": "enable web search for current information optional field when enabled, the AI model can access and cite current web information; Note: refer to the Models endpoint for a list of models that support web_search; default value: false",
        -    "type": "boolean"
        -  },
        -  "web_search_city": {
        -    "description": "city name of the location used for searching the web optional field",
        -    "type": "string"
        -  },
        -  "web_search_country_iso_code": {
        -    "description": "ISO country code of the location used for searching the web optional field possible values: 'AR','AT','AU','BE','BR','CA','CH','CL','CN','DE','DK','ES','FI','FR','GB','HK','ID','IN','IT','JP','KR','MX','MY','NL','NO','NZ','PH','PL','PT','RU','SA','SE','TR','TW','US','ZA'",
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / body / items / required
        Removed value: -[
        -  "user_prompt",
        -  "model_name"
        -]
      • changedInput schema / properties / body / items / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "body"
        -]New value: +[]
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedpost_dataforseo_ai_gemini_llm_responses_live7 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "max_output_tokens": 200,
        +    "message_chain": [
        +      {
        +        "message": "Hello, what’s up?",
        +        "role": "user"
        +      },
        +      {
        +        "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        +        "role": "ai"
        +      }
        +    ],
        +    "model_name": "gemini-2.5-flash",
        +    "system_message": "communicate as if we are in a business meeting",
        +    "temperature": 0.3,
        +    "top_p": 0.5,
        +    "user_prompt": "provide information on how relevant the amusement park business is in France now",
        +    "web_search": true
        +  }
        +]
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "max_output_tokens": 200,
        +        "message_chain": [
        +          {
        +            "message": "Hello, what’s up?",
        +            "role": "user"
        +          },
        +          {
        +            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        +            "role": "ai"
        +          }
        +        ],
        +        "model_name": "gemini-2.5-flash",
        +        "system_message": "communicate as if we are in a business meeting",
        +        "temperature": 0.3,
        +        "top_p": 0.5,
        +        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        +        "web_search": true
        +      }
        +    ],
        +    "properties": {
        +      "max_output_tokens": {
        +        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value: <code>1</code><br>maximum value: <code>4096</code>;<br>default value: <code>2048</code>;<br><strong>Note:</strong> if <code>web_search</code> is set to <code>true</code> or the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit<br><strong>Note #2:</strong> if <code>use_reasoning</code> is set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1024</code>",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "message_chain": {
        +        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        +        "items": {
        +          "anyOf": [
        +            {
        +              "properties": {
        +                "message": {
        +                  "description": "message text",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "role": {
        +                  "description": "role of the user from whom the message originates",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ],
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "model_name": {
        +        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>for example, if <code>gemini-1.5-pro</code> is specified, the <code>gemini-1.5-pro-002</code> will be set as <code>model_name</code> automatically;<br>you can receive the list of available LLM models by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models</code>",
        +        "type": "string"
        +      },
        +      "system_message": {
        +        "description": "<em>instructions for the AI behavior</em><br>optional field<br>defines the AI's role, tone, or specific behavior <br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "temperature": {
        +        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse <br>lower values make output more focused<br>minimum value: <code>0</code><br>maximum value: <code>2</code><br>default value: <code>1.3</code>",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "top_p": {
        +        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>0.9</code>",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "use_reasoning": {
        +        "description": "<em>enable reasoning for the AI model</em><br>optional field<br>when enabled, the model will perform reasoning before generating a response<br>refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models/\" target=\"_blank\">Models endpoint</a> for a list of models that support <code>reasoning</code><br>default value: <code>false</code><br><strong>Note:</strong> if set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1024</code><br><strong>Note #2:</strong> for Gemini Pro models, the <code>use_reasoning</code> will automatically be set to <code>true</code>",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "user_prompt": {
        +        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        +        "type": "string"
        +      },
        +      "web_search": {
        +        "description": "<em>enable web search for current information</em><br>optional field<br>when enabled, the AI model can access and cite current web information;<br><strong>Note:</strong> refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models/\">Models endpoint</a> for a list of models that support <code>web_search</code>; <br>default value: <code>false</code>;<br>The cost of the parameter can be calculated on the <a title=\"Gemini API Pricing\" href=\"https://ai.google.dev/gemini-api/docs/pricing\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing</a> page",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "max_output_tokens": {
        -    "description": "maximum number of tokens in the AI response optional field minimum value: 1 maximum value: 4096; default value: 2048; Note: if web_search is set to true or the reasoning model is specified in the request, the output token count may exceed the specified max_output_tokens limit Note #2: if use_reasoning is set to true, the minimum value for max_output_tokens is 1024",
        -    "type": "integer"
        -  },
        -  "message_chain": {
        -    "description": "conversation history optional field array of message objects representing previous conversation turns; each object must contain: role string with either user or ai role; message string with message content (max 500 characters); you can specify maximum of 10 message objects in the array; Note: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai); example: \"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        -    "items": {
        -      "properties": {
        -        "message": {
        -          "description": "message text",
        -          "type": "string"
        -        },
        -        "role": {
        -          "description": "role of the user from whom the message originates",
        -          "enum": [
        -            "user",
        -            "ai"
        -          ],
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "role",
        -        "message"
        -      ],
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  "model_name": {
        -    "description": "name of the AI model required field model_nameconsists of the actual model name and version name; if the basic model name is specified, its latest version will be set by default; for example, if gemini-1.5-pro is specified, the gemini-1.5-pro-002 will be set as model_name automatically; you can receive the list of available LLM models by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models",
        -    "type": "string"
        -  },
        -  "system_message": {
        -    "description": "instructions for the AI behavior optional field defines the AI's role, tone, or specific behavior you can specify up to 500 characters in the system_message field",
        -    "type": "string"
        -  },
        -  "tag": {
        -    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        -    "type": "string"
        -  },
        -  "temperature": {
        -    "description": "randomness of the AI response optional field higher values make output more diverse lower values make output more focused minimum value: 0 maximum value: 2 default value: 1.3",
        -    "type": "number"
        -  },
        -  "top_p": {
        -    "description": "diversity of the AI response optional field controls diversity of the response by limiting token selection minimum value: 0 maximum value: 1 default value: 0.9",
        -    "type": "number"
        -  },
        -  "use_reasoning": {
        -    "description": "enable reasoning for the AI model optional field when enabled, the model will perform reasoning before generating a response refer to the Models endpoint for a list of models that support reasoning default value: false Note: if set to true, the minimum value for max_output_tokens is 1024 Note #2: for Gemini Pro models, the use_reasoning will automatically be set to true",
        -    "type": "boolean"
        -  },
        -  "user_prompt": {
        -    "description": "prompt for the AI model required field the question or task you want to send to the AI model; you can specify up to 500 characters in the user_prompt field",
        -    "type": "string"
        -  },
        -  "web_search": {
        -    "description": "enable web search for current information optional field when enabled, the AI model can access and cite current web information; Note: refer to the Models endpoint for a list of models that support web_search; default value: false",
        -    "type": "boolean"
        -  }
        -}
      • removedInput schema / properties / body / items / required
        Removed value: -[
        -  "user_prompt",
        -  "model_name"
        -]
      • changedInput schema / properties / body / items / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "body"
        -]New value: +[]
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedpost_dataforseo_ai_gemini_llm_scraper_live8 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "keyword": "albert einstein",
        +    "language_code": "en",
        +    "location_code": 2840
        +  }
        +]
      • removedInput schema / properties / body / items / allOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "location_name"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "location_code"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "location_coordinate"
        -        ]
        -      }
        -    ]
        -  },
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "language_name"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "language_code"
        -        ]
        -      }
        -    ]
        -  }
        -]
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "keyword": "albert einstein",
        +        "language_code": "en",
        +        "location_code": 2840
        +      }
        +    ],
        +    "properties": {
        +      "keyword": {
        +        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        +        "type": "string"
        +      },
        +      "language_code": {
        +        "description": "<em>search engine language code</em><br>required field if you don't specify <code>language_name</code>;<br>if you use this field, you don't need to specify <code>language_name</code>;<br>you can receive the list of available languages of the search engine with their <code>language_code</code>_by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example: <code>en</code>n",
        +        "type": "string"
        +      },
        +      "language_name": {
        +        "description": "<em>full name of search engine language</em><br>required field if you don't specify <code>language_code</code>;<br>if you use this field, you don't need to specify <code>language_code</code>;<br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example: <code>English</code>",
        +        "type": "string"
        +      },
        +      "location_code": {
        +        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        +        "type": "integer"
        +      },
        +      "location_coordinate": {
        +        "description": "<p><em>GPS coordinates of a location</em><p><strong>required field if you don't specify</strong> <code>location_name</code>&nbsp;or <code>location_code</code><p><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_code</code></strong><p><code>location_coordinate</code> parameter should be specified in the <em>\"latitude,longitude,radius\"</em> format<p>the maximum number of decimal digits for <em>\"latitude\"</em> and <em>\"longitude\"</em>: 7<p>the minimum value for <em>\"radius\"</em>: 199 (mm)<p>the maximum value for <em>\"radius\"</em>: 199999 (mm)<p>example:<p><code class=\"long-string\">53.476225,-2.243572,200</code></p>",
        +        "type": "string"
        +      },
        +      "location_name": {
        +        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_code</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        +        "type": "string"
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "keyword": {
        -    "description": "keyword required field you can specify up to 2000 characters in the keyword field all %## will be decoded (plus character ‘+’ will be decoded to a space character) if you need to use the “%” character for your keyword, please specify it as “%25”; if you need to use the “+” character for your keyword, please specify it as “%2B”learn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        -    "type": "string"
        -  },
        -  "language_code": {
        -    "description": "search engine language code required field if you don't specify language_name; if you use this field, you don't need to specify language_name; you can receive the list of available languages of the search engine with their language_code_by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages example: enn",
        -    "type": "string"
        -  },
        -  "language_name": {
        -    "description": "full name of search engine language required field if you don't specify language_code; if you use this field, you don't need to specify language_code; you can receive the list of available languages of the search engine with their language_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages example: English",
        -    "type": "string"
        -  },
        -  "location_code": {
        -    "description": "search engine location code required field if you don't specify location_name or location_coordinate if you use this field, you don't need to specify location_name or location_coordinate you can receive the list of available locations of the search engines with their location_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations example: 2840",
        -    "type": "integer"
        -  },
        -  "location_coordinate": {
        -    "description": "GPS coordinates of a location required field if you don't specify location_name or location_code if you use this field, you don't need to specify location_name or location_code location_coordinate parameter should be specified in the \"latitude,longitude,radius\" format the maximum number of decimal digits for \"latitude\" and \"longitude\": 7 the minimum value for \"radius\": 199 (mm) the maximum value for \"radius\": 199999 (mm) example: 53.476225,-2.243572,200",
        -    "type": "string"
        -  },
        -  "location_name": {
        -    "description": "full name of search engine location required field if you don't specify location_code or location_coordinate if you use this field, you don't need to specify location_code or location_coordinate you can receive the list of available locations of the search engine with their location_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations example: United States",
        -    "type": "string"
        -  },
        -  "tag": {
        -    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / body / items / required
        Removed value: -[
        -  "keyword"
        -]
      • changedInput schema / properties / body / items / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "body"
        -]New value: +[]
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedpost_dataforseo_ai_gemini_llm_scraper_live_html8 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "keyword": "albert einstein",
        +    "language_code": "en",
        +    "location_code": 2840
        +  }
        +]
      • removedInput schema / properties / body / items / allOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "location_name"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "location_code"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "location_coordinate"
        -        ]
        -      }
        -    ]
        -  },
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "language_name"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "language_code"
        -        ]
        -      }
        -    ]
        -  }
        -]
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "keyword": "albert einstein",
        +        "language_code": "en",
        +        "location_code": 2840
        +      }
        +    ],
        +    "properties": {
        +      "expand_citations": {
        +        "description": "<em>return expanded citation bar in HTML results</em><br>optional field<br>when enabled, the endpoint will return HTML data from the expanded citation bar;<br>default value: <code>false</code>",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        +        "type": "string"
        +      },
        +      "language_code": {
        +        "description": "<em>search engine language code</em><br><strong>required field if you don't specify</strong> <code>language_name</code><br><strong>if you use this field, you don't need to specify <code>language_name</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_code</code>_by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example:<code class=\"long-string\">en</code>n",
        +        "type": "string"
        +      },
        +      "language_name": {
        +        "description": "<em>full name of search engine language</em><br><strong>required field if you don't specify</strong> <code>language_code</code><br><strong>if you use this field, you don't need to specify <code>language_code</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example:<br><code class=\"long-string\">English</code>",
        +        "type": "string"
        +      },
        +      "location_code": {
        +        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        +        "type": "integer"
        +      },
        +      "location_coordinate": {
        +        "description": "<p><em>GPS coordinates of a location</em><p><strong>required field if you don't specify</strong> <code>location_name</code>&nbsp;or <code>location_code</code><p><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_code</code></strong><p><code>location_coordinate</code> parameter should be specified in the <em>\"latitude,longitude,radius\"</em> format<p>the maximum number of decimal digits for <em>\"latitude\"</em> and <em>\"longitude\"</em>: 7<p>the minimum value for <em>\"radius\"</em>: 199 (mm)<p>the maximum value for <em>\"radius\"</em>: 199999 (mm)<p>example:<p><code class=\"long-string\">53.476225,-2.243572,200</code></p>",
        +        "type": "string"
        +      },
        +      "location_name": {
        +        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_code</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        +        "type": "string"
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "expand_citations": {
        -    "description": "return expanded citation bar in HTML results optional field when enabled, the endpoint will return HTML data from the expanded citation bar; default value: false",
        -    "type": "boolean"
        -  },
        -  "keyword": {
        -    "description": "keyword required field you can specify up to 2000 characters in the keyword field all %## will be decoded (plus character ‘+’ will be decoded to a space character) if you need to use the “%” character for your keyword, please specify it as “%25”; if you need to use the “+” character for your keyword, please specify it as “%2B”learn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        -    "type": "string"
        -  },
        -  "language_code": {
        -    "description": "search engine language code required field if you don't specify language_name if you use this field, you don't need to specify language_name you can receive the list of available languages of the search engine with their language_code_by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages example:enn",
        -    "type": "string"
        -  },
        -  "language_name": {
        -    "description": "full name of search engine language required field if you don't specify language_code if you use this field, you don't need to specify language_code you can receive the list of available languages of the search engine with their language_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages example: English",
        -    "type": "string"
        -  },
        -  "location_code": {
        -    "description": "search engine location code required field if you don't specify location_name or location_coordinate if you use this field, you don't need to specify location_name or location_coordinate you can receive the list of available locations of the search engines with their location_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations example: 2840",
        -    "type": "integer"
        -  },
        -  "location_coordinate": {
        -    "description": "GPS coordinates of a location required field if you don't specify location_name or location_code if you use this field, you don't need to specify location_name or location_code location_coordinate parameter should be specified in the \"latitude,longitude,radius\" format the maximum number of decimal digits for \"latitude\" and \"longitude\": 7 the minimum value for \"radius\": 199 (mm) the maximum value for \"radius\": 199999 (mm) example: 53.476225,-2.243572,200",
        -    "type": "string"
        -  },
        -  "location_name": {
        -    "description": "full name of search engine location required field if you don't specify location_code or location_coordinate if you use this field, you don't need to specify location_code or location_coordinate you can receive the list of available locations of the search engine with their location_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations example: United States",
        -    "type": "string"
        -  },
        -  "tag": {
        -    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / body / items / required
        Removed value: -[
        -  "keyword"
        -]
      • changedInput schema / properties / body / items / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "body"
        -]New value: +[]
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedpost_dataforseo_ai_keyword_volume_live8 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "keywords": [
        +      "iphone",
        +      "seo"
        +    ],
        +    "language_name": "English",
        +    "location_code": 2840
        +  }
        +]
      • removedInput schema / properties / body / items / allOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "location_name"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "location_code"
        -        ]
        -      }
        -    ]
        -  },
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "language_name"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "language_code"
        -        ]
        -      }
        -    ]
        -  }
        -]
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "keywords": [
        +          "iphone",
        +          "seo"
        +        ],
        +        "language_name": "English",
        +        "location_code": 2840
        +      }
        +    ],
        +    "properties": {
        +      "keywords": {
        +        "description": "<em>keywords</em><br><strong>required field</strong><br>UTF-8 encoding<br>The maximum number of keywords you can specify: 1000;<br>The maximum number of characters in a single keyword: 250;<br>The keywords will be converted to lowercase format;<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "language_code": {
        +        "description": "<em>language code</em><br><strong>required field if you don't specify</strong> <code>language_name</code><br><strong>if you use this field, you don't need to specify</strong> <code>language_name</code><br>you can receive the list of available languages with their <code>language_code</code> by making a separate request to the<br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">en</code>",
        +        "type": "string"
        +      },
        +      "language_name": {
        +        "description": "<em>full name of the language</em><br><strong>required field if you don't specify</strong> <code>language_code</code><br><strong>if you use this field, you don't need to specify</strong> <code>language_code</code><br>you can receive the list of available languages with their <code>language_name</code> by making a separate request to the<br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">English</code>",
        +        "type": "string"
        +      },
        +      "location_code": {
        +        "description": "<em>unique location identifier</em><br><strong>required field if you don't specify</strong> <code>location_name</code><br><strong>Note:</strong> it is required to specify either <code>location_name</code> or <code>location_code</code><br>you can receive the list of available locations with their <code>location_code</code> by making a separate request to the <br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">2840</code>",
        +        "type": "integer"
        +      },
        +      "location_name": {
        +        "description": "<em>full name of the location</em><br><strong>required field if you don't specify</strong> <code>location_code</code><br><strong>Note:</strong> it is required to specify either <code>location_name</code> or <code>location_code</code><br>you can receive the list of available locations with their <code>location_name</code> by making a separate request to the<br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">United Kingdom</code>",
        +        "type": "string"
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "keywords": {
        -    "description": "keywords required field UTF-8 encoding The maximum number of keywords you can specify: 1000; The maximum number of characters in a single keyword: 250; The keywords will be converted to lowercase format;learn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  "language_code": {
        -    "description": "language code required field if you don't specify language_name if you use this field, you don't need to specify language_name you can receive the list of available languages with their language_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages example: en",
        -    "type": "string"
        -  },
        -  "language_name": {
        -    "description": "full name of the language required field if you don't specify language_code if you use this field, you don't need to specify language_code you can receive the list of available languages with their language_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages example: English",
        -    "type": "string"
        -  },
        -  "location_code": {
        -    "description": "unique location identifier required field if you don't specify location_name Note: it is required to specify either location_name or location_code you can receive the list of available locations with their location_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages example: 2840",
        -    "type": "integer"
        -  },
        -  "location_name": {
        -    "description": "full name of the location required field if you don't specify location_code Note: it is required to specify either location_name or location_code you can receive the list of available locations with their location_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages example: United Kingdom",
        -    "type": "string"
        -  },
        -  "tag": {
        -    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / body / items / required
        Removed value: -[
        -  "keywords"
        -]
      • changedInput schema / properties / body / items / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "body"
        -]New value: +[]
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedpost_dataforseo_ai_perplexity_llm_responses_live7 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "max_output_tokens": 200,
        +    "message_chain": [
        +      {
        +        "message": "Hello, what’s up?",
        +        "role": "user"
        +      },
        +      {
        +        "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        +        "role": "ai"
        +      }
        +    ],
        +    "model_name": "sonar",
        +    "system_message": "communicate as if we are in a business meeting",
        +    "temperature": 0.3,
        +    "top_p": 0.5,
        +    "user_prompt": "provide information on how relevant the amusement park business is in France now",
        +    "web_search_country_iso_code": "FR"
        +  }
        +]
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "max_output_tokens": 200,
        +        "message_chain": [
        +          {
        +            "message": "Hello, what’s up?",
        +            "role": "user"
        +          },
        +          {
        +            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        +            "role": "ai"
        +          }
        +        ],
        +        "model_name": "sonar",
        +        "system_message": "communicate as if we are in a business meeting",
        +        "temperature": 0.3,
        +        "top_p": 0.5,
        +        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        +        "web_search_country_iso_code": "FR"
        +      }
        +    ],
        +    "properties": {
        +      "max_output_tokens": {
        +        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value: <code>1</code><br>maximum value: <code>4096</code>;<br>default value: <code>2048</code>;<br><strong>Note:</strong> if the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "message_chain": {
        +        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        +        "items": {
        +          "anyOf": [
        +            {
        +              "properties": {
        +                "message": {
        +                  "description": "message text",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "role": {
        +                  "description": "role of the user from whom the message originates",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ],
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "model_name": {
        +        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>you can receive the list of available LLM models by making a separate request to the following endpoint: <code>https://api.dataforseo.com/v3/ai_optimization/perplexity/llm_responses/models</code>",
        +        "type": "string"
        +      },
        +      "system_message": {
        +        "description": "<em>instructions for the AI behavior</em><br>optional field<br>defines the AI's role, tone, or specific behavior <br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "temperature": {
        +        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse <br>lower values make output more focused<br>minimum value: <code>0</code><br>maximum value: <code>1.9</code><br>default value: <code>0.77</code>",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "top_p": {
        +        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>0.9</code>",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "user_prompt": {
        +        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        +        "type": "string"
        +      },
        +      "web_search_country_iso_code": {
        +        "description": "<em>country code for web search localization</em><br>optional field<br>specify the country  ISO code to get localized web search results<br><strong>Note:</strong> available only for Perplexity Sonar models<br>example: <code>US</code>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "max_output_tokens": {
        -    "description": "maximum number of tokens in the AI response optional field minimum value: 1 maximum value: 4096; default value: 2048; Note: if the reasoning model is specified in the request, the output token count may exceed the specified max_output_tokens limit",
        -    "type": "integer"
        -  },
        -  "message_chain": {
        -    "description": "conversation history optional field array of message objects representing previous conversation turns; each object must contain: role string with either user or ai role; message string with message content (max 500 characters); you can specify maximum of 10 message objects in the array; Note: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai); example: \"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        -    "items": {
        -      "properties": {
        -        "message": {
        -          "description": "message text",
        -          "type": "string"
        -        },
        -        "role": {
        -          "description": "role of the user from whom the message originates",
        -          "enum": [
        -            "user",
        -            "ai"
        -          ],
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "role",
        -        "message"
        -      ],
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  "model_name": {
        -    "description": "name of the AI model required field model_nameconsists of the actual model name and version name; if the basic model name is specified, its latest version will be set by default; you can receive the list of available LLM models by making a separate request to the following endpoint: https://api.dataforseo.com/v3/ai_optimization/perplexity/llm_responses/models",
        -    "type": "string"
        -  },
        -  "system_message": {
        -    "description": "instructions for the AI behavior optional field defines the AI's role, tone, or specific behavior you can specify up to 500 characters in the system_message field",
        -    "type": "string"
        -  },
        -  "tag": {
        -    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        -    "type": "string"
        -  },
        -  "temperature": {
        -    "description": "randomness of the AI response optional field higher values make output more diverse lower values make output more focused minimum value: 0 maximum value: 1.9 default value: 0.77",
        -    "type": "number"
        -  },
        -  "top_p": {
        -    "description": "diversity of the AI response optional field controls diversity of the response by limiting token selection minimum value: 0 maximum value: 1 default value: 0.9",
        -    "type": "number"
        -  },
        -  "user_prompt": {
        -    "description": "prompt for the AI model required field the question or task you want to send to the AI model; you can specify up to 500 characters in the user_prompt field",
        -    "type": "string"
        -  },
        -  "web_search_country_iso_code": {
        -    "description": "country code for web search localization optional field specify the country ISO code to get localized web search results Note: available only for Perplexity Sonar models example: US",
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / body / items / required
        Removed value: -[
        -  "user_prompt",
        -  "model_name"
        -]
      • changedInput schema / properties / body / items / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "body"
        -]New value: +[]
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • 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"
  4. 24 tool updates
    • 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_dataforseo_ai_chat_gpt_llm_responses_models1 field changed
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedget_dataforseo_ai_claude_llm_responses_models1 field changed
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedget_dataforseo_ai_gemini_llm_responses_models1 field changed
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedget_dataforseo_ai_gemini_llm_scraper_languages1 field changed
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedget_dataforseo_ai_gemini_llm_scraper_locations1 field changed
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedget_dataforseo_ai_keyword_locales1 field changed
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedget_dataforseo_ai_llm_mentions_available_filters1 field changed
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedget_dataforseo_ai_llm_mentions_locales1 field changed
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedget_dataforseo_ai_perplexity_llm_responses_models1 field changed
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • 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"
        -]
    • Changedpost_dataforseo_ai_chat_gpt_llm_responses_live7 fields changed
      • removedInput schema / properties / body / example
        Removed value: -[
        -  {
        -    "max_output_tokens": 200,
        -    "message_chain": [
        -      {
        -        "message": "Hello, what’s up?",
        -        "role": "user"
        -      },
        -      {
        -        "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        -        "role": "ai"
        -      }
        -    ],
        -    "model_name": "gpt-4.1-mini",
        -    "system_message": "communicate as if we are in a business meeting",
        -    "temperature": 0.3,
        -    "top_p": 0.5,
        -    "user_prompt": "provide information on how relevant the amusement park business is in France now",
        -    "web_search": true,
        -    "web_search_city": "Paris",
        -    "web_search_country_iso_code": "FR"
        -  }
        -]
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "max_output_tokens": 200,
        -        "message_chain": [
        -          {
        -            "message": "Hello, what’s up?",
        -            "role": "user"
        -          },
        -          {
        -            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        -            "role": "ai"
        -          }
        -        ],
        -        "model_name": "gpt-4.1-mini",
        -        "system_message": "communicate as if we are in a business meeting",
        -        "temperature": 0.3,
        -        "top_p": 0.5,
        -        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        -        "web_search": true,
        -        "web_search_city": "Paris",
        -        "web_search_country_iso_code": "FR"
        -      }
        -    ],
        -    "properties": {
        -      "force_web_search": {
        -        "description": "<em>force AI agent to use web search</em><br>optional field<br>to enable this parameter, <code>web_search</code> must also be enabled;<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response <br><strong>Note #2:</strong> not supported in reasoning models",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "max_output_tokens": {
        -        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value for reasoning models (e.g., <code>reasoning</code> is <code>true</code> in the <a href=\"/v3/ai_optimization/chat_gpt/llm_responses/models/\" target=\"_blank\">Models endpoint</a>): <code>1024</code>;<br>minimum value for non-reasoning models: <code>16</code>;<br>maximum value: <code>4096</code>;<br>default value: <code>2048</code><br><strong>Note:</strong> if <code>web_search</code> is set to <code>true</code> or the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "message_chain": {
        -        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        -        "items": {
        -          "anyOf": [
        -            {
        -              "properties": {
        -                "message": {
        -                  "description": "message text",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "role": {
        -                  "description": "role of the user from whom the message originates",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                }
        -              },
        -              "type": "object"
        -            }
        -          ],
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "model_name": {
        -        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>for example, if <code>gpt-4.1</code> is specified, the <code>gpt-4.1-2025-04-14</code> will be set as <code>model_name</code> automatically;<br>you can receive the list of available LLM models by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/models</code>",
        -        "type": "string"
        -      },
        -      "system_message": {
        -        "description": "<em>instructions for the AI behaviour</em><br>optional field<br>defines the AI's role, tone, or specific behavior <br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "temperature": {
        -        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse; <br>lower values make output more focused;<br>minimum value: <code>0</code><br>maximum value: <code>2</code><br>default value: <code>0.94</code><br><strong>Note:</strong> not supported in reasoning models",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "top_p": {
        -        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection;<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>0.92</code><p><strong>Note:</strong>  <code>top_p</code> cannot be used together with <code>temperature</code> in the same request",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "user_prompt": {
        -        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        -        "type": "string"
        -      },
        -      "web_search": {
        -        "description": "<em>enable web search</em><br>optional field<br>when enabled, the AI model can access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/models/\">Models endpoint</a> for a list of models that support <code>web_search</code>;",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "web_search_city": {
        -        "description": "<em>city name of the location</em><br>optional field<br><strong>Note:</strong> not supported in <code>o3-mini</code>, <code>o1-pro</code>, <code>o1</code> models",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "web_search_country_iso_code": {
        -        "description": "<em>ISO country code of the location</em><br>optional field<br>to enable this parameter, <code>web_search</code> must also be enabled;<br>when enabled, the AI model will search the web from the country you specify;<br><strong>Note:</strong> not supported in <code>o3-mini</code>, <code>o1-pro</code>, <code>o1</code> models",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / properties
        Added value: +{
        +  "force_web_search": {
        +    "description": "force AI agent to use web search optional field to enable this parameter, web_search must also be enabled; when enabled, the AI model is forced to access and cite current web information; default value: false; Note: even if the parameter is set to true, there is no guarantee web sources will be cited in the response Note #2: not supported in reasoning models",
        +    "type": "boolean"
        +  },
        +  "max_output_tokens": {
        +    "description": "maximum number of tokens in the AI response optional field minimum value for reasoning models (e.g., reasoning is true in the Models endpoint): 1024; minimum value for non-reasoning models: 16; maximum value: 4096; default value: 2048 Note: if web_search is set to true or the reasoning model is specified in the request, the output token count may exceed the specified max_output_tokens limit",
        +    "type": "integer"
        +  },
        +  "message_chain": {
        +    "description": "conversation history optional field array of message objects representing previous conversation turns; each object must contain: role string with either user or ai role; message string with message content (max 500 characters); you can specify maximum of 10 message objects in the array; Note: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai); example: \"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        +    "items": {
        +      "properties": {
        +        "message": {
        +          "description": "message text",
        +          "type": "string"
        +        },
        +        "role": {
        +          "description": "role of the user from whom the message originates",
        +          "enum": [
        +            "user",
        +            "ai"
        +          ],
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "role",
        +        "message"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "model_name": {
        +    "description": "name of the AI model required field model_nameconsists of the actual model name and version name; if the basic model name is specified, its latest version will be set by default; for example, if gpt-4.1 is specified, the gpt-4.1-2025-04-14 will be set as model_name automatically; you can receive the list of available LLM models by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/models",
        +    "type": "string"
        +  },
        +  "system_message": {
        +    "description": "instructions for the AI behaviour optional field defines the AI's role, tone, or specific behavior you can specify up to 500 characters in the system_message field",
        +    "type": "string"
        +  },
        +  "tag": {
        +    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        +    "type": "string"
        +  },
        +  "temperature": {
        +    "description": "randomness of the AI response optional field higher values make output more diverse; lower values make output more focused; minimum value: 0 maximum value: 2 default value: 0.94 Note: not supported in reasoning models",
        +    "type": "number"
        +  },
        +  "top_p": {
        +    "description": "diversity of the AI response optional field controls diversity of the response by limiting token selection; minimum value: 0 maximum value: 1 default value: 0.92 Note: top_p cannot be used together with temperature in the same request",
        +    "type": "number"
        +  },
        +  "user_prompt": {
        +    "description": "prompt for the AI model required field the question or task you want to send to the AI model; you can specify up to 500 characters in the user_prompt field",
        +    "type": "string"
        +  },
        +  "web_search": {
        +    "description": "enable web search optional field when enabled, the AI model can access and cite current web information; default value: false; Note: refer to the Models endpoint for a list of models that support web_search;",
        +    "type": "boolean"
        +  },
        +  "web_search_city": {
        +    "description": "city name of the location optional field Note: not supported in o3-mini, o1-pro, o1 models",
        +    "type": "string"
        +  },
        +  "web_search_country_iso_code": {
        +    "description": "ISO country code of the location optional field to enable this parameter, web_search must also be enabled; when enabled, the AI model will search the web from the country you specify; Note: not supported in o3-mini, o1-pro, o1 models",
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / body / items / required
        Added value: +[
        +  "user_prompt",
        +  "model_name"
        +]
      • changedInput schema / properties / body / items / type
        Previous value: -[
        -  "object",
        -  "null"
        -]New value: +"object"
      • changedInput schema / required
        Previous value: -[]New value: +[
        +  "body"
        +]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedpost_dataforseo_ai_chat_gpt_llm_scraper_live8 fields changed
      • removedInput schema / properties / body / example
        Removed value: -[
        -  {
        -    "keyword": "albert einstein",
        -    "language_code": "en",
        -    "location_code": 2840
        -  }
        -]
      • addedInput schema / properties / body / items / allOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "required": [
        +          "location_name"
        +        ]
        +      },
        +      {
        +        "required": [
        +          "location_code"
        +        ]
        +      }
        +    ]
        +  },
        +  {
        +    "anyOf": [
        +      {
        +        "required": [
        +          "language_name"
        +        ]
        +      },
        +      {
        +        "required": [
        +          "language_code"
        +        ]
        +      }
        +    ]
        +  }
        +]
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "keyword": "albert einstein",
        -        "language_code": "en",
        -        "location_code": 2840
        -      }
        -    ],
        -    "properties": {
        -      "force_web_search": {
        -        "description": "<em>force AI agent to use web search</em><br>optional field<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "keyword": {
        -        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        -        "type": "string"
        -      },
        -      "language_code": {
        -        "description": "<em>search engine language code</em><br><strong>required field if you don't specify <code>language_name</code>;</strong><br>if you use this field, you don't need to specify <code>language_name</code>;<br>you can receive the list of available languages of the search engine with their <code>language_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/languages</code>",
        -        "type": "string"
        -      },
        -      "language_name": {
        -        "description": "<em>full name of search engine language</em><br><strong>required field if you don't specify <code>language_code</code>;</strong><br>if you use this field, you don't need to specify <code>language_code</code>;<br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/languages</code>",
        -        "type": "string"
        -      },
        -      "location_code": {
        -        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code><br><strong>if you use this field, you don't need to specify <code>location_name</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        -        "type": "integer"
        -      },
        -      "location_name": {
        -        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code><br><strong>if you use this field, you don't need to specify <code>location_code</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        -        "type": "string"
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / properties
        Added value: +{
        +  "force_web_search": {
        +    "description": "force AI agent to use web search optional field when enabled, the AI model is forced to access and cite current web information; default value: false; Note: even if the parameter is set to true, there is no guarantee web sources will be cited in the response",
        +    "type": "boolean"
        +  },
        +  "keyword": {
        +    "description": "keyword required field you can specify up to 2000 characters in the keyword field all %## will be decoded (plus character ‘+’ will be decoded to a space character) if you need to use the “%” character for your keyword, please specify it as “%25”; if you need to use the “+” character for your keyword, please specify it as “%2B”learn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        +    "type": "string"
        +  },
        +  "language_code": {
        +    "description": "search engine language code required field if you don't specify language_name; if you use this field, you don't need to specify language_name; you can receive the list of available languages of the search engine with their language_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/languages",
        +    "type": "string"
        +  },
        +  "language_name": {
        +    "description": "full name of search engine language required field if you don't specify language_code; if you use this field, you don't need to specify language_code; you can receive the list of available languages of the search engine with their language_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/languages",
        +    "type": "string"
        +  },
        +  "location_code": {
        +    "description": "search engine location code required field if you don't specify location_name if you use this field, you don't need to specify location_name you can receive the list of available locations of the search engines with their location_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/locations example: 2840",
        +    "type": "integer"
        +  },
        +  "location_name": {
        +    "description": "full name of search engine location required field if you don't specify location_code if you use this field, you don't need to specify location_code you can receive the list of available locations of the search engine with their location_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/locations example: United States",
        +    "type": "string"
        +  },
        +  "tag": {
        +    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / body / items / required
        Added value: +[
        +  "keyword"
        +]
      • changedInput schema / properties / body / items / type
        Previous value: -[
        -  "object",
        -  "null"
        -]New value: +"object"
      • changedInput schema / required
        Previous value: -[]New value: +[
        +  "body"
        +]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedpost_dataforseo_ai_chat_gpt_llm_scraper_live_html8 fields changed
      • removedInput schema / properties / body / example
        Removed value: -[
        -  {
        -    "keyword": "albert einstein",
        -    "language_code": "en",
        -    "location_code": 2840
        -  }
        -]
      • addedInput schema / properties / body / items / allOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "required": [
        +          "location_name"
        +        ]
        +      },
        +      {
        +        "required": [
        +          "location_code"
        +        ]
        +      }
        +    ]
        +  },
        +  {
        +    "anyOf": [
        +      {
        +        "required": [
        +          "language_name"
        +        ]
        +      },
        +      {
        +        "required": [
        +          "language_code"
        +        ]
        +      }
        +    ]
        +  }
        +]
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "keyword": "albert einstein",
        -        "language_code": "en",
        -        "location_code": 2840
        -      }
        -    ],
        -    "properties": {
        -      "expand_citations": {
        -        "description": "<em>return expanded citation bar in HTML results</em><br>optional field<br>to enable this parameter, <code>force_web_search</code> must also be enabled;<br>when enabled, the endpoint will return HTML data from the expanded citation bar;<br>default value: <code>false</code>",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "force_web_search": {
        -        "description": "<em>force AI agent to use web search</em><br>optional field<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "keyword": {
        -        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        -        "type": "string"
        -      },
        -      "language_code": {
        -        "description": "<em>search engine language code</em><br><strong>required field if you don't specify</strong> <code>language_name</code><br><strong>if you use this field, you don't need to specify <code>language_name</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_code</code>_by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/languages</code><br>example:<code class=\"long-string\">en</code>n",
        -        "type": "string"
        -      },
        -      "language_name": {
        -        "description": "<em>full name of search engine language</em><br><strong>required field if you don't specify</strong> <code>language_code</code><br><strong>if you use this field, you don't need to specify <code>language_code</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/languages</code><br>example:<br><code class=\"long-string\">English</code>",
        -        "type": "string"
        -      },
        -      "location_code": {
        -        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code><br><strong>if you use this field, you don't need to specify <code>location_name</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        -        "type": "integer"
        -      },
        -      "location_name": {
        -        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code><br><strong>if you use this field, you don't need to specify <code>location_code</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        -        "type": "string"
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / properties
        Added value: +{
        +  "expand_citations": {
        +    "description": "return expanded citation bar in HTML results optional field to enable this parameter, force_web_search must also be enabled; when enabled, the endpoint will return HTML data from the expanded citation bar; default value: false",
        +    "type": "boolean"
        +  },
        +  "force_web_search": {
        +    "description": "force AI agent to use web search optional field when enabled, the AI model is forced to access and cite current web information; default value: false; Note: even if the parameter is set to true, there is no guarantee web sources will be cited in the response",
        +    "type": "boolean"
        +  },
        +  "keyword": {
        +    "description": "keyword required field you can specify up to 2000 characters in the keyword field all %## will be decoded (plus character ‘+’ will be decoded to a space character) if you need to use the “%” character for your keyword, please specify it as “%25”; if you need to use the “+” character for your keyword, please specify it as “%2B”learn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        +    "type": "string"
        +  },
        +  "language_code": {
        +    "description": "search engine language code required field if you don't specify language_name if you use this field, you don't need to specify language_name you can receive the list of available languages of the search engine with their language_code_by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/languages example:enn",
        +    "type": "string"
        +  },
        +  "language_name": {
        +    "description": "full name of search engine language required field if you don't specify language_code if you use this field, you don't need to specify language_code you can receive the list of available languages of the search engine with their language_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/languages example: English",
        +    "type": "string"
        +  },
        +  "location_code": {
        +    "description": "search engine location code required field if you don't specify location_name if you use this field, you don't need to specify location_name you can receive the list of available locations of the search engines with their location_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/locations example: 2840",
        +    "type": "integer"
        +  },
        +  "location_name": {
        +    "description": "full name of search engine location required field if you don't specify location_code if you use this field, you don't need to specify location_code you can receive the list of available locations of the search engine with their location_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/locations example: United States",
        +    "type": "string"
        +  },
        +  "tag": {
        +    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / body / items / required
        Added value: +[
        +  "keyword"
        +]
      • changedInput schema / properties / body / items / type
        Previous value: -[
        -  "object",
        -  "null"
        -]New value: +"object"
      • changedInput schema / required
        Previous value: -[]New value: +[
        +  "body"
        +]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedpost_dataforseo_ai_claude_llm_responses_live7 fields changed
      • removedInput schema / properties / body / example
        Removed value: -[
        -  {
        -    "max_output_tokens": 200,
        -    "message_chain": [
        -      {
        -        "message": "Hello, what’s up?",
        -        "role": "user"
        -      },
        -      {
        -        "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        -        "role": "ai"
        -      }
        -    ],
        -    "model_name": "claude-opus-4-0",
        -    "system_message": "communicate as if we are in a business meeting",
        -    "temperature": 0.3,
        -    "user_prompt": "provide information on how relevant the amusement park business is in France now",
        -    "web_search": true,
        -    "web_search_country_iso_code": "FR"
        -  }
        -]
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "max_output_tokens": 200,
        -        "message_chain": [
        -          {
        -            "message": "Hello, what’s up?",
        -            "role": "user"
        -          },
        -          {
        -            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        -            "role": "ai"
        -          }
        -        ],
        -        "model_name": "claude-opus-4-0",
        -        "system_message": "communicate as if we are in a business meeting",
        -        "temperature": 0.3,
        -        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        -        "web_search": true,
        -        "web_search_country_iso_code": "FR"
        -      }
        -    ],
        -    "properties": {
        -      "force_web_search": {
        -        "description": "<em>force AI agent to use web search</em><br>optional field<br>to enable this parameter, <code>web_search</code> must also be enabled;<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "max_output_tokens": {
        -        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value: <code>1</code>;<br>maximum value: <code>4096</code>;<br>default value: <code>2048</code>;<br><strong>Note:</strong> if <code>web_search</code> is set to <code>true</code> or the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit<br><strong>Note #2:</strong> if <code>use_reasoning</code> is set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1025</code>",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "message_chain": {
        -        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        -        "items": {
        -          "anyOf": [
        -            {
        -              "properties": {
        -                "message": {
        -                  "description": "message text",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "role": {
        -                  "description": "role of the user from whom the message originates",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                }
        -              },
        -              "type": "object"
        -            }
        -          ],
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "model_name": {
        -        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>for example, if <code>claude-opus-4-0</code> is specified, the <code>claude-opus-4-20250514</code> will be set as <code>model_name</code> automatically;<br>you can receive the list of available LLM models by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/claude/llm_responses/models</code>",
        -        "type": "string"
        -      },
        -      "system_message": {
        -        "description": "<em>instructions for the AI behaviour</em><br>optional field<br>defines the AI's role, tone, or specific behavior;<br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "temperature": {
        -        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse; <br>lower values make output more focused;<br>minimum value: <code>0</code><br>maximum value: <code>1</code><br>default value: <code>0.7</code><p><strong>Note:</strong> <code>temperature</code> cannot be used together with <code>top_p</code> in the same request",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "top_p": {
        -        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection;<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>null</code><p><strong>Note:</strong> <code>top_p</code> cannot be used together with <code>temperature</code> in the same request",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "use_reasoning": {
        -        "description": "<em>enable reasoning for the AI model</em><br>optional field<br>when enabled, the model will perform reasoning before generating a response<br>refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/claude/llm_responses/models/\" target=\"_blank\">Models endpoint</a> for a list of models that support <code>reasoning</code><br>default value: <code>false</code><br><strong>Note:</strong> if set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1025</code><br><strong>Note #2:</strong> if set to <code>true</code>, <code>force_web_search</code> must be set to <code>false</code><br><strong>Note #3:</strong> if set to <code>true</code>, the <code>temperature</code> and <code>top_p</code> cannot be used",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "user_prompt": {
        -        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        -        "type": "string"
        -      },
        -      "web_search": {
        -        "description": "<em>enable web search for current information</em><br>optional field<br>when enabled, the AI model can access and cite current web information;<br><strong>Note:</strong> refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/claude/llm_responses/models/\">Models endpoint</a> for a list of models that support <code>web_search</code>; <br>default value: <code>false</code>;<br>The cost of the parameter can be calculated on the <a title=\"Anthropic API Pricing\" href=\"https://docs.anthropic.com/en/docs/about-claude/pricing\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing</a> page",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "web_search_city": {
        -        "description": "<em>city name of the location used for searching the web</em><br>optional field<br>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "web_search_country_iso_code": {
        -        "description": "<em>ISO country code of the location used for searching the web</em><br>optional field<br>possible values: <code>'AR','AT','AU','BE','BR','CA','CH','CL','CN','DE','DK','ES','FI','FR','GB','HK','ID','IN','IT','JP','KR','MX','MY','NL','NO','NZ','PH','PL','PT','RU','SA','SE','TR','TW','US','ZA'</code>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / properties
        Added value: +{
        +  "force_web_search": {
        +    "description": "force AI agent to use web search optional field to enable this parameter, web_search must also be enabled; when enabled, the AI model is forced to access and cite current web information; default value: false; Note: even if the parameter is set to true, there is no guarantee web sources will be cited in the response",
        +    "type": "boolean"
        +  },
        +  "max_output_tokens": {
        +    "description": "maximum number of tokens in the AI response optional field minimum value: 1; maximum value: 4096; default value: 2048; Note: if web_search is set to true or the reasoning model is specified in the request, the output token count may exceed the specified max_output_tokens limit Note #2: if use_reasoning is set to true, the minimum value for max_output_tokens is 1025",
        +    "type": "integer"
        +  },
        +  "message_chain": {
        +    "description": "conversation history optional field array of message objects representing previous conversation turns; each object must contain: role string with either user or ai role; message string with message content (max 500 characters); you can specify maximum of 10 message objects in the array; Note: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai); example: \"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        +    "items": {
        +      "properties": {
        +        "message": {
        +          "description": "message text",
        +          "type": "string"
        +        },
        +        "role": {
        +          "description": "role of the user from whom the message originates",
        +          "enum": [
        +            "user",
        +            "ai"
        +          ],
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "role",
        +        "message"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "model_name": {
        +    "description": "name of the AI model required field model_nameconsists of the actual model name and version name; if the basic model name is specified, its latest version will be set by default; for example, if claude-opus-4-0 is specified, the claude-opus-4-20250514 will be set as model_name automatically; you can receive the list of available LLM models by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/claude/llm_responses/models",
        +    "type": "string"
        +  },
        +  "system_message": {
        +    "description": "instructions for the AI behaviour optional field defines the AI's role, tone, or specific behavior; you can specify up to 500 characters in the system_message field",
        +    "type": "string"
        +  },
        +  "tag": {
        +    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        +    "type": "string"
        +  },
        +  "temperature": {
        +    "description": "randomness of the AI response optional field higher values make output more diverse; lower values make output more focused; minimum value: 0 maximum value: 1 default value: 0.7Note: temperature cannot be used together with top_p in the same request",
        +    "type": "number"
        +  },
        +  "top_p": {
        +    "description": "diversity of the AI response optional field controls diversity of the response by limiting token selection; minimum value: 0 maximum value: 1 default value: nullNote: top_p cannot be used together with temperature in the same request",
        +    "type": "number"
        +  },
        +  "use_reasoning": {
        +    "description": "enable reasoning for the AI model optional field when enabled, the model will perform reasoning before generating a response refer to the Models endpoint for a list of models that support reasoning default value: false Note: if set to true, the minimum value for max_output_tokens is 1025 Note #2: if set to true, force_web_search must be set to false Note #3: if set to true, the temperature and top_p cannot be used",
        +    "type": "boolean"
        +  },
        +  "user_prompt": {
        +    "description": "prompt for the AI model required field the question or task you want to send to the AI model; you can specify up to 500 characters in the user_prompt field",
        +    "type": "string"
        +  },
        +  "web_search": {
        +    "description": "enable web search for current information optional field when enabled, the AI model can access and cite current web information; Note: refer to the Models endpoint for a list of models that support web_search; default value: false",
        +    "type": "boolean"
        +  },
        +  "web_search_city": {
        +    "description": "city name of the location used for searching the web optional field",
        +    "type": "string"
        +  },
        +  "web_search_country_iso_code": {
        +    "description": "ISO country code of the location used for searching the web optional field possible values: 'AR','AT','AU','BE','BR','CA','CH','CL','CN','DE','DK','ES','FI','FR','GB','HK','ID','IN','IT','JP','KR','MX','MY','NL','NO','NZ','PH','PL','PT','RU','SA','SE','TR','TW','US','ZA'",
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / body / items / required
        Added value: +[
        +  "user_prompt",
        +  "model_name"
        +]
      • changedInput schema / properties / body / items / type
        Previous value: -[
        -  "object",
        -  "null"
        -]New value: +"object"
      • changedInput schema / required
        Previous value: -[]New value: +[
        +  "body"
        +]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedpost_dataforseo_ai_gemini_llm_responses_live7 fields changed
      • removedInput schema / properties / body / example
        Removed value: -[
        -  {
        -    "max_output_tokens": 200,
        -    "message_chain": [
        -      {
        -        "message": "Hello, what’s up?",
        -        "role": "user"
        -      },
        -      {
        -        "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        -        "role": "ai"
        -      }
        -    ],
        -    "model_name": "gemini-2.5-flash",
        -    "system_message": "communicate as if we are in a business meeting",
        -    "temperature": 0.3,
        -    "top_p": 0.5,
        -    "user_prompt": "provide information on how relevant the amusement park business is in France now",
        -    "web_search": true
        -  }
        -]
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "max_output_tokens": 200,
        -        "message_chain": [
        -          {
        -            "message": "Hello, what’s up?",
        -            "role": "user"
        -          },
        -          {
        -            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        -            "role": "ai"
        -          }
        -        ],
        -        "model_name": "gemini-2.5-flash",
        -        "system_message": "communicate as if we are in a business meeting",
        -        "temperature": 0.3,
        -        "top_p": 0.5,
        -        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        -        "web_search": true
        -      }
        -    ],
        -    "properties": {
        -      "max_output_tokens": {
        -        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value: <code>1</code><br>maximum value: <code>4096</code>;<br>default value: <code>2048</code>;<br><strong>Note:</strong> if <code>web_search</code> is set to <code>true</code> or the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit<br><strong>Note #2:</strong> if <code>use_reasoning</code> is set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1024</code>",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "message_chain": {
        -        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        -        "items": {
        -          "anyOf": [
        -            {
        -              "properties": {
        -                "message": {
        -                  "description": "message text",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "role": {
        -                  "description": "role of the user from whom the message originates",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                }
        -              },
        -              "type": "object"
        -            }
        -          ],
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "model_name": {
        -        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>for example, if <code>gemini-1.5-pro</code> is specified, the <code>gemini-1.5-pro-002</code> will be set as <code>model_name</code> automatically;<br>you can receive the list of available LLM models by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models</code>",
        -        "type": "string"
        -      },
        -      "system_message": {
        -        "description": "<em>instructions for the AI behavior</em><br>optional field<br>defines the AI's role, tone, or specific behavior <br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "temperature": {
        -        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse <br>lower values make output more focused<br>minimum value: <code>0</code><br>maximum value: <code>2</code><br>default value: <code>1.3</code>",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "top_p": {
        -        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>0.9</code>",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "use_reasoning": {
        -        "description": "<em>enable reasoning for the AI model</em><br>optional field<br>when enabled, the model will perform reasoning before generating a response<br>refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models/\" target=\"_blank\">Models endpoint</a> for a list of models that support <code>reasoning</code><br>default value: <code>false</code><br><strong>Note:</strong> if set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1024</code><br><strong>Note #2:</strong> for Gemini Pro models, the <code>use_reasoning</code> will automatically be set to <code>true</code>",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "user_prompt": {
        -        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        -        "type": "string"
        -      },
        -      "web_search": {
        -        "description": "<em>enable web search for current information</em><br>optional field<br>when enabled, the AI model can access and cite current web information;<br><strong>Note:</strong> refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models/\">Models endpoint</a> for a list of models that support <code>web_search</code>; <br>default value: <code>false</code>;<br>The cost of the parameter can be calculated on the <a title=\"Gemini API Pricing\" href=\"https://ai.google.dev/gemini-api/docs/pricing\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing</a> page",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / properties
        Added value: +{
        +  "max_output_tokens": {
        +    "description": "maximum number of tokens in the AI response optional field minimum value: 1 maximum value: 4096; default value: 2048; Note: if web_search is set to true or the reasoning model is specified in the request, the output token count may exceed the specified max_output_tokens limit Note #2: if use_reasoning is set to true, the minimum value for max_output_tokens is 1024",
        +    "type": "integer"
        +  },
        +  "message_chain": {
        +    "description": "conversation history optional field array of message objects representing previous conversation turns; each object must contain: role string with either user or ai role; message string with message content (max 500 characters); you can specify maximum of 10 message objects in the array; Note: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai); example: \"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        +    "items": {
        +      "properties": {
        +        "message": {
        +          "description": "message text",
        +          "type": "string"
        +        },
        +        "role": {
        +          "description": "role of the user from whom the message originates",
        +          "enum": [
        +            "user",
        +            "ai"
        +          ],
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "role",
        +        "message"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "model_name": {
        +    "description": "name of the AI model required field model_nameconsists of the actual model name and version name; if the basic model name is specified, its latest version will be set by default; for example, if gemini-1.5-pro is specified, the gemini-1.5-pro-002 will be set as model_name automatically; you can receive the list of available LLM models by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models",
        +    "type": "string"
        +  },
        +  "system_message": {
        +    "description": "instructions for the AI behavior optional field defines the AI's role, tone, or specific behavior you can specify up to 500 characters in the system_message field",
        +    "type": "string"
        +  },
        +  "tag": {
        +    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        +    "type": "string"
        +  },
        +  "temperature": {
        +    "description": "randomness of the AI response optional field higher values make output more diverse lower values make output more focused minimum value: 0 maximum value: 2 default value: 1.3",
        +    "type": "number"
        +  },
        +  "top_p": {
        +    "description": "diversity of the AI response optional field controls diversity of the response by limiting token selection minimum value: 0 maximum value: 1 default value: 0.9",
        +    "type": "number"
        +  },
        +  "use_reasoning": {
        +    "description": "enable reasoning for the AI model optional field when enabled, the model will perform reasoning before generating a response refer to the Models endpoint for a list of models that support reasoning default value: false Note: if set to true, the minimum value for max_output_tokens is 1024 Note #2: for Gemini Pro models, the use_reasoning will automatically be set to true",
        +    "type": "boolean"
        +  },
        +  "user_prompt": {
        +    "description": "prompt for the AI model required field the question or task you want to send to the AI model; you can specify up to 500 characters in the user_prompt field",
        +    "type": "string"
        +  },
        +  "web_search": {
        +    "description": "enable web search for current information optional field when enabled, the AI model can access and cite current web information; Note: refer to the Models endpoint for a list of models that support web_search; default value: false",
        +    "type": "boolean"
        +  }
        +}
      • addedInput schema / properties / body / items / required
        Added value: +[
        +  "user_prompt",
        +  "model_name"
        +]
      • changedInput schema / properties / body / items / type
        Previous value: -[
        -  "object",
        -  "null"
        -]New value: +"object"
      • changedInput schema / required
        Previous value: -[]New value: +[
        +  "body"
        +]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedpost_dataforseo_ai_gemini_llm_scraper_live8 fields changed
      • removedInput schema / properties / body / example
        Removed value: -[
        -  {
        -    "keyword": "albert einstein",
        -    "language_code": "en",
        -    "location_code": 2840
        -  }
        -]
      • addedInput schema / properties / body / items / allOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "required": [
        +          "location_name"
        +        ]
        +      },
        +      {
        +        "required": [
        +          "location_code"
        +        ]
        +      },
        +      {
        +        "required": [
        +          "location_coordinate"
        +        ]
        +      }
        +    ]
        +  },
        +  {
        +    "anyOf": [
        +      {
        +        "required": [
        +          "language_name"
        +        ]
        +      },
        +      {
        +        "required": [
        +          "language_code"
        +        ]
        +      }
        +    ]
        +  }
        +]
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "keyword": "albert einstein",
        -        "language_code": "en",
        -        "location_code": 2840
        -      }
        -    ],
        -    "properties": {
        -      "keyword": {
        -        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        -        "type": "string"
        -      },
        -      "language_code": {
        -        "description": "<em>search engine language code</em><br>required field if you don't specify <code>language_name</code>;<br>if you use this field, you don't need to specify <code>language_name</code>;<br>you can receive the list of available languages of the search engine with their <code>language_code</code>_by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example: <code>en</code>n",
        -        "type": "string"
        -      },
        -      "language_name": {
        -        "description": "<em>full name of search engine language</em><br>required field if you don't specify <code>language_code</code>;<br>if you use this field, you don't need to specify <code>language_code</code>;<br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example: <code>English</code>",
        -        "type": "string"
        -      },
        -      "location_code": {
        -        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        -        "type": "integer"
        -      },
        -      "location_coordinate": {
        -        "description": "<p><em>GPS coordinates of a location</em><p><strong>required field if you don't specify</strong> <code>location_name</code>&nbsp;or <code>location_code</code><p><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_code</code></strong><p><code>location_coordinate</code> parameter should be specified in the <em>\"latitude,longitude,radius\"</em> format<p>the maximum number of decimal digits for <em>\"latitude\"</em> and <em>\"longitude\"</em>: 7<p>the minimum value for <em>\"radius\"</em>: 199 (mm)<p>the maximum value for <em>\"radius\"</em>: 199999 (mm)<p>example:<p><code class=\"long-string\">53.476225,-2.243572,200</code></p>",
        -        "type": "string"
        -      },
        -      "location_name": {
        -        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_code</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        -        "type": "string"
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / properties
        Added value: +{
        +  "keyword": {
        +    "description": "keyword required field you can specify up to 2000 characters in the keyword field all %## will be decoded (plus character ‘+’ will be decoded to a space character) if you need to use the “%” character for your keyword, please specify it as “%25”; if you need to use the “+” character for your keyword, please specify it as “%2B”learn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        +    "type": "string"
        +  },
        +  "language_code": {
        +    "description": "search engine language code required field if you don't specify language_name; if you use this field, you don't need to specify language_name; you can receive the list of available languages of the search engine with their language_code_by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages example: enn",
        +    "type": "string"
        +  },
        +  "language_name": {
        +    "description": "full name of search engine language required field if you don't specify language_code; if you use this field, you don't need to specify language_code; you can receive the list of available languages of the search engine with their language_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages example: English",
        +    "type": "string"
        +  },
        +  "location_code": {
        +    "description": "search engine location code required field if you don't specify location_name or location_coordinate if you use this field, you don't need to specify location_name or location_coordinate you can receive the list of available locations of the search engines with their location_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations example: 2840",
        +    "type": "integer"
        +  },
        +  "location_coordinate": {
        +    "description": "GPS coordinates of a location required field if you don't specify location_name or location_code if you use this field, you don't need to specify location_name or location_code location_coordinate parameter should be specified in the \"latitude,longitude,radius\" format the maximum number of decimal digits for \"latitude\" and \"longitude\": 7 the minimum value for \"radius\": 199 (mm) the maximum value for \"radius\": 199999 (mm) example: 53.476225,-2.243572,200",
        +    "type": "string"
        +  },
        +  "location_name": {
        +    "description": "full name of search engine location required field if you don't specify location_code or location_coordinate if you use this field, you don't need to specify location_code or location_coordinate you can receive the list of available locations of the search engine with their location_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations example: United States",
        +    "type": "string"
        +  },
        +  "tag": {
        +    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / body / items / required
        Added value: +[
        +  "keyword"
        +]
      • changedInput schema / properties / body / items / type
        Previous value: -[
        -  "object",
        -  "null"
        -]New value: +"object"
      • changedInput schema / required
        Previous value: -[]New value: +[
        +  "body"
        +]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedpost_dataforseo_ai_gemini_llm_scraper_live_html8 fields changed
      • removedInput schema / properties / body / example
        Removed value: -[
        -  {
        -    "keyword": "albert einstein",
        -    "language_code": "en",
        -    "location_code": 2840
        -  }
        -]
      • addedInput schema / properties / body / items / allOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "required": [
        +          "location_name"
        +        ]
        +      },
        +      {
        +        "required": [
        +          "location_code"
        +        ]
        +      },
        +      {
        +        "required": [
        +          "location_coordinate"
        +        ]
        +      }
        +    ]
        +  },
        +  {
        +    "anyOf": [
        +      {
        +        "required": [
        +          "language_name"
        +        ]
        +      },
        +      {
        +        "required": [
        +          "language_code"
        +        ]
        +      }
        +    ]
        +  }
        +]
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "keyword": "albert einstein",
        -        "language_code": "en",
        -        "location_code": 2840
        -      }
        -    ],
        -    "properties": {
        -      "expand_citations": {
        -        "description": "<em>return expanded citation bar in HTML results</em><br>optional field<br>when enabled, the endpoint will return HTML data from the expanded citation bar;<br>default value: <code>false</code>",
        -        "type": [
        -          "boolean",
        -          "null"
        -        ]
        -      },
        -      "keyword": {
        -        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        -        "type": "string"
        -      },
        -      "language_code": {
        -        "description": "<em>search engine language code</em><br><strong>required field if you don't specify</strong> <code>language_name</code><br><strong>if you use this field, you don't need to specify <code>language_name</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_code</code>_by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example:<code class=\"long-string\">en</code>n",
        -        "type": "string"
        -      },
        -      "language_name": {
        -        "description": "<em>full name of search engine language</em><br><strong>required field if you don't specify</strong> <code>language_code</code><br><strong>if you use this field, you don't need to specify <code>language_code</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example:<br><code class=\"long-string\">English</code>",
        -        "type": "string"
        -      },
        -      "location_code": {
        -        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        -        "type": "integer"
        -      },
        -      "location_coordinate": {
        -        "description": "<p><em>GPS coordinates of a location</em><p><strong>required field if you don't specify</strong> <code>location_name</code>&nbsp;or <code>location_code</code><p><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_code</code></strong><p><code>location_coordinate</code> parameter should be specified in the <em>\"latitude,longitude,radius\"</em> format<p>the maximum number of decimal digits for <em>\"latitude\"</em> and <em>\"longitude\"</em>: 7<p>the minimum value for <em>\"radius\"</em>: 199 (mm)<p>the maximum value for <em>\"radius\"</em>: 199999 (mm)<p>example:<p><code class=\"long-string\">53.476225,-2.243572,200</code></p>",
        -        "type": "string"
        -      },
        -      "location_name": {
        -        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_code</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        -        "type": "string"
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / properties
        Added value: +{
        +  "expand_citations": {
        +    "description": "return expanded citation bar in HTML results optional field when enabled, the endpoint will return HTML data from the expanded citation bar; default value: false",
        +    "type": "boolean"
        +  },
        +  "keyword": {
        +    "description": "keyword required field you can specify up to 2000 characters in the keyword field all %## will be decoded (plus character ‘+’ will be decoded to a space character) if you need to use the “%” character for your keyword, please specify it as “%25”; if you need to use the “+” character for your keyword, please specify it as “%2B”learn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        +    "type": "string"
        +  },
        +  "language_code": {
        +    "description": "search engine language code required field if you don't specify language_name if you use this field, you don't need to specify language_name you can receive the list of available languages of the search engine with their language_code_by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages example:enn",
        +    "type": "string"
        +  },
        +  "language_name": {
        +    "description": "full name of search engine language required field if you don't specify language_code if you use this field, you don't need to specify language_code you can receive the list of available languages of the search engine with their language_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages example: English",
        +    "type": "string"
        +  },
        +  "location_code": {
        +    "description": "search engine location code required field if you don't specify location_name or location_coordinate if you use this field, you don't need to specify location_name or location_coordinate you can receive the list of available locations of the search engines with their location_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations example: 2840",
        +    "type": "integer"
        +  },
        +  "location_coordinate": {
        +    "description": "GPS coordinates of a location required field if you don't specify location_name or location_code if you use this field, you don't need to specify location_name or location_code location_coordinate parameter should be specified in the \"latitude,longitude,radius\" format the maximum number of decimal digits for \"latitude\" and \"longitude\": 7 the minimum value for \"radius\": 199 (mm) the maximum value for \"radius\": 199999 (mm) example: 53.476225,-2.243572,200",
        +    "type": "string"
        +  },
        +  "location_name": {
        +    "description": "full name of search engine location required field if you don't specify location_code or location_coordinate if you use this field, you don't need to specify location_code or location_coordinate you can receive the list of available locations of the search engine with their location_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations example: United States",
        +    "type": "string"
        +  },
        +  "tag": {
        +    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / body / items / required
        Added value: +[
        +  "keyword"
        +]
      • changedInput schema / properties / body / items / type
        Previous value: -[
        -  "object",
        -  "null"
        -]New value: +"object"
      • changedInput schema / required
        Previous value: -[]New value: +[
        +  "body"
        +]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedpost_dataforseo_ai_keyword_volume_live8 fields changed
      • removedInput schema / properties / body / example
        Removed value: -[
        -  {
        -    "keywords": [
        -      "iphone",
        -      "seo"
        -    ],
        -    "language_name": "English",
        -    "location_code": 2840
        -  }
        -]
      • addedInput schema / properties / body / items / allOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "required": [
        +          "location_name"
        +        ]
        +      },
        +      {
        +        "required": [
        +          "location_code"
        +        ]
        +      }
        +    ]
        +  },
        +  {
        +    "anyOf": [
        +      {
        +        "required": [
        +          "language_name"
        +        ]
        +      },
        +      {
        +        "required": [
        +          "language_code"
        +        ]
        +      }
        +    ]
        +  }
        +]
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "keywords": [
        -          "iphone",
        -          "seo"
        -        ],
        -        "language_name": "English",
        -        "location_code": 2840
        -      }
        -    ],
        -    "properties": {
        -      "keywords": {
        -        "description": "<em>keywords</em><br><strong>required field</strong><br>UTF-8 encoding<br>The maximum number of keywords you can specify: 1000;<br>The maximum number of characters in a single keyword: 250;<br>The keywords will be converted to lowercase format;<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "language_code": {
        -        "description": "<em>language code</em><br><strong>required field if you don't specify</strong> <code>language_name</code><br><strong>if you use this field, you don't need to specify</strong> <code>language_name</code><br>you can receive the list of available languages with their <code>language_code</code> by making a separate request to the<br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">en</code>",
        -        "type": "string"
        -      },
        -      "language_name": {
        -        "description": "<em>full name of the language</em><br><strong>required field if you don't specify</strong> <code>language_code</code><br><strong>if you use this field, you don't need to specify</strong> <code>language_code</code><br>you can receive the list of available languages with their <code>language_name</code> by making a separate request to the<br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">English</code>",
        -        "type": "string"
        -      },
        -      "location_code": {
        -        "description": "<em>unique location identifier</em><br><strong>required field if you don't specify</strong> <code>location_name</code><br><strong>Note:</strong> it is required to specify either <code>location_name</code> or <code>location_code</code><br>you can receive the list of available locations with their <code>location_code</code> by making a separate request to the <br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">2840</code>",
        -        "type": "integer"
        -      },
        -      "location_name": {
        -        "description": "<em>full name of the location</em><br><strong>required field if you don't specify</strong> <code>location_code</code><br><strong>Note:</strong> it is required to specify either <code>location_name</code> or <code>location_code</code><br>you can receive the list of available locations with their <code>location_name</code> by making a separate request to the<br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">United Kingdom</code>",
        -        "type": "string"
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / properties
        Added value: +{
        +  "keywords": {
        +    "description": "keywords required field UTF-8 encoding The maximum number of keywords you can specify: 1000; The maximum number of characters in a single keyword: 250; The keywords will be converted to lowercase format;learn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        +    "items": {
        +      "type": "string"
        +    },
        +    "type": "array"
        +  },
        +  "language_code": {
        +    "description": "language code required field if you don't specify language_name if you use this field, you don't need to specify language_name you can receive the list of available languages with their language_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages example: en",
        +    "type": "string"
        +  },
        +  "language_name": {
        +    "description": "full name of the language required field if you don't specify language_code if you use this field, you don't need to specify language_code you can receive the list of available languages with their language_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages example: English",
        +    "type": "string"
        +  },
        +  "location_code": {
        +    "description": "unique location identifier required field if you don't specify location_name Note: it is required to specify either location_name or location_code you can receive the list of available locations with their location_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages example: 2840",
        +    "type": "integer"
        +  },
        +  "location_name": {
        +    "description": "full name of the location required field if you don't specify location_code Note: it is required to specify either location_name or location_code you can receive the list of available locations with their location_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages example: United Kingdom",
        +    "type": "string"
        +  },
        +  "tag": {
        +    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / body / items / required
        Added value: +[
        +  "keywords"
        +]
      • changedInput schema / properties / body / items / type
        Previous value: -[
        -  "object",
        -  "null"
        -]New value: +"object"
      • changedInput schema / required
        Previous value: -[]New value: +[
        +  "body"
        +]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedpost_dataforseo_ai_perplexity_llm_responses_live7 fields changed
      • removedInput schema / properties / body / example
        Removed value: -[
        -  {
        -    "max_output_tokens": 200,
        -    "message_chain": [
        -      {
        -        "message": "Hello, what’s up?",
        -        "role": "user"
        -      },
        -      {
        -        "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        -        "role": "ai"
        -      }
        -    ],
        -    "model_name": "sonar",
        -    "system_message": "communicate as if we are in a business meeting",
        -    "temperature": 0.3,
        -    "top_p": 0.5,
        -    "user_prompt": "provide information on how relevant the amusement park business is in France now",
        -    "web_search_country_iso_code": "FR"
        -  }
        -]
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "max_output_tokens": 200,
        -        "message_chain": [
        -          {
        -            "message": "Hello, what’s up?",
        -            "role": "user"
        -          },
        -          {
        -            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        -            "role": "ai"
        -          }
        -        ],
        -        "model_name": "sonar",
        -        "system_message": "communicate as if we are in a business meeting",
        -        "temperature": 0.3,
        -        "top_p": 0.5,
        -        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        -        "web_search_country_iso_code": "FR"
        -      }
        -    ],
        -    "properties": {
        -      "max_output_tokens": {
        -        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value: <code>1</code><br>maximum value: <code>4096</code>;<br>default value: <code>2048</code>;<br><strong>Note:</strong> if the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "message_chain": {
        -        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        -        "items": {
        -          "anyOf": [
        -            {
        -              "properties": {
        -                "message": {
        -                  "description": "message text",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                },
        -                "role": {
        -                  "description": "role of the user from whom the message originates",
        -                  "type": [
        -                    "string",
        -                    "null"
        -                  ]
        -                }
        -              },
        -              "type": "object"
        -            }
        -          ],
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "model_name": {
        -        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>you can receive the list of available LLM models by making a separate request to the following endpoint: <code>https://api.dataforseo.com/v3/ai_optimization/perplexity/llm_responses/models</code>",
        -        "type": "string"
        -      },
        -      "system_message": {
        -        "description": "<em>instructions for the AI behavior</em><br>optional field<br>defines the AI's role, tone, or specific behavior <br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "tag": {
        -        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "temperature": {
        -        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse <br>lower values make output more focused<br>minimum value: <code>0</code><br>maximum value: <code>1.9</code><br>default value: <code>0.77</code>",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "top_p": {
        -        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>0.9</code>",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "user_prompt": {
        -        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        -        "type": "string"
        -      },
        -      "web_search_country_iso_code": {
        -        "description": "<em>country code for web search localization</em><br>optional field<br>specify the country  ISO code to get localized web search results<br><strong>Note:</strong> available only for Perplexity Sonar models<br>example: <code>US</code>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / properties
        Added value: +{
        +  "max_output_tokens": {
        +    "description": "maximum number of tokens in the AI response optional field minimum value: 1 maximum value: 4096; default value: 2048; Note: if the reasoning model is specified in the request, the output token count may exceed the specified max_output_tokens limit",
        +    "type": "integer"
        +  },
        +  "message_chain": {
        +    "description": "conversation history optional field array of message objects representing previous conversation turns; each object must contain: role string with either user or ai role; message string with message content (max 500 characters); you can specify maximum of 10 message objects in the array; Note: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai); example: \"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        +    "items": {
        +      "properties": {
        +        "message": {
        +          "description": "message text",
        +          "type": "string"
        +        },
        +        "role": {
        +          "description": "role of the user from whom the message originates",
        +          "enum": [
        +            "user",
        +            "ai"
        +          ],
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "role",
        +        "message"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  "model_name": {
        +    "description": "name of the AI model required field model_nameconsists of the actual model name and version name; if the basic model name is specified, its latest version will be set by default; you can receive the list of available LLM models by making a separate request to the following endpoint: https://api.dataforseo.com/v3/ai_optimization/perplexity/llm_responses/models",
        +    "type": "string"
        +  },
        +  "system_message": {
        +    "description": "instructions for the AI behavior optional field defines the AI's role, tone, or specific behavior you can specify up to 500 characters in the system_message field",
        +    "type": "string"
        +  },
        +  "tag": {
        +    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        +    "type": "string"
        +  },
        +  "temperature": {
        +    "description": "randomness of the AI response optional field higher values make output more diverse lower values make output more focused minimum value: 0 maximum value: 1.9 default value: 0.77",
        +    "type": "number"
        +  },
        +  "top_p": {
        +    "description": "diversity of the AI response optional field controls diversity of the response by limiting token selection minimum value: 0 maximum value: 1 default value: 0.9",
        +    "type": "number"
        +  },
        +  "user_prompt": {
        +    "description": "prompt for the AI model required field the question or task you want to send to the AI model; you can specify up to 500 characters in the user_prompt field",
        +    "type": "string"
        +  },
        +  "web_search_country_iso_code": {
        +    "description": "country code for web search localization optional field specify the country ISO code to get localized web search results Note: available only for Perplexity Sonar models example: US",
        +    "type": "string"
        +  }
        +}
      • addedInput schema / properties / body / items / required
        Added value: +[
        +  "user_prompt",
        +  "model_name"
        +]
      • changedInput schema / properties / body / items / type
        Previous value: -[
        -  "object",
        -  "null"
        -]New value: +"object"
      • changedInput schema / required
        Previous value: -[]New value: +[
        +  "body"
        +]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • 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"
  5. 24 tool updates
    • 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_dataforseo_ai_chat_gpt_llm_responses_models1 field changed
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedget_dataforseo_ai_claude_llm_responses_models1 field changed
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedget_dataforseo_ai_gemini_llm_responses_models1 field changed
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedget_dataforseo_ai_gemini_llm_scraper_languages1 field changed
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedget_dataforseo_ai_gemini_llm_scraper_locations1 field changed
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedget_dataforseo_ai_keyword_locales1 field changed
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedget_dataforseo_ai_llm_mentions_available_filters1 field changed
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedget_dataforseo_ai_llm_mentions_locales1 field changed
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedget_dataforseo_ai_perplexity_llm_responses_models1 field changed
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • 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"
        +]
    • Changedpost_dataforseo_ai_chat_gpt_llm_responses_live7 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "max_output_tokens": 200,
        +    "message_chain": [
        +      {
        +        "message": "Hello, what’s up?",
        +        "role": "user"
        +      },
        +      {
        +        "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        +        "role": "ai"
        +      }
        +    ],
        +    "model_name": "gpt-4.1-mini",
        +    "system_message": "communicate as if we are in a business meeting",
        +    "temperature": 0.3,
        +    "top_p": 0.5,
        +    "user_prompt": "provide information on how relevant the amusement park business is in France now",
        +    "web_search": true,
        +    "web_search_city": "Paris",
        +    "web_search_country_iso_code": "FR"
        +  }
        +]
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "max_output_tokens": 200,
        +        "message_chain": [
        +          {
        +            "message": "Hello, what’s up?",
        +            "role": "user"
        +          },
        +          {
        +            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        +            "role": "ai"
        +          }
        +        ],
        +        "model_name": "gpt-4.1-mini",
        +        "system_message": "communicate as if we are in a business meeting",
        +        "temperature": 0.3,
        +        "top_p": 0.5,
        +        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        +        "web_search": true,
        +        "web_search_city": "Paris",
        +        "web_search_country_iso_code": "FR"
        +      }
        +    ],
        +    "properties": {
        +      "force_web_search": {
        +        "description": "<em>force AI agent to use web search</em><br>optional field<br>to enable this parameter, <code>web_search</code> must also be enabled;<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response <br><strong>Note #2:</strong> not supported in reasoning models",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "max_output_tokens": {
        +        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value for reasoning models (e.g., <code>reasoning</code> is <code>true</code> in the <a href=\"/v3/ai_optimization/chat_gpt/llm_responses/models/\" target=\"_blank\">Models endpoint</a>): <code>1024</code>;<br>minimum value for non-reasoning models: <code>16</code>;<br>maximum value: <code>4096</code>;<br>default value: <code>2048</code><br><strong>Note:</strong> if <code>web_search</code> is set to <code>true</code> or the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "message_chain": {
        +        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        +        "items": {
        +          "anyOf": [
        +            {
        +              "properties": {
        +                "message": {
        +                  "description": "message text",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "role": {
        +                  "description": "role of the user from whom the message originates",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ],
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "model_name": {
        +        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>for example, if <code>gpt-4.1</code> is specified, the <code>gpt-4.1-2025-04-14</code> will be set as <code>model_name</code> automatically;<br>you can receive the list of available LLM models by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/models</code>",
        +        "type": "string"
        +      },
        +      "system_message": {
        +        "description": "<em>instructions for the AI behaviour</em><br>optional field<br>defines the AI's role, tone, or specific behavior <br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "temperature": {
        +        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse; <br>lower values make output more focused;<br>minimum value: <code>0</code><br>maximum value: <code>2</code><br>default value: <code>0.94</code><br><strong>Note:</strong> not supported in reasoning models",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "top_p": {
        +        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection;<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>0.92</code><p><strong>Note:</strong>  <code>top_p</code> cannot be used together with <code>temperature</code> in the same request",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "user_prompt": {
        +        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        +        "type": "string"
        +      },
        +      "web_search": {
        +        "description": "<em>enable web search</em><br>optional field<br>when enabled, the AI model can access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/models/\">Models endpoint</a> for a list of models that support <code>web_search</code>;",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "web_search_city": {
        +        "description": "<em>city name of the location</em><br>optional field<br><strong>Note:</strong> not supported in <code>o3-mini</code>, <code>o1-pro</code>, <code>o1</code> models",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "web_search_country_iso_code": {
        +        "description": "<em>ISO country code of the location</em><br>optional field<br>to enable this parameter, <code>web_search</code> must also be enabled;<br>when enabled, the AI model will search the web from the country you specify;<br><strong>Note:</strong> not supported in <code>o3-mini</code>, <code>o1-pro</code>, <code>o1</code> models",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "force_web_search": {
        -    "description": "force AI agent to use web search optional field to enable this parameter, web_search must also be enabled; when enabled, the AI model is forced to access and cite current web information; default value: false; Note: even if the parameter is set to true, there is no guarantee web sources will be cited in the response Note #2: not supported in reasoning models",
        -    "type": "boolean"
        -  },
        -  "max_output_tokens": {
        -    "description": "maximum number of tokens in the AI response optional field minimum value for reasoning models (e.g., reasoning is true in the Models endpoint): 1024; minimum value for non-reasoning models: 16; maximum value: 4096; default value: 2048 Note: if web_search is set to true or the reasoning model is specified in the request, the output token count may exceed the specified max_output_tokens limit",
        -    "type": "integer"
        -  },
        -  "message_chain": {
        -    "description": "conversation history optional field array of message objects representing previous conversation turns; each object must contain: role string with either user or ai role; message string with message content (max 500 characters); you can specify maximum of 10 message objects in the array; Note: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai); example: \"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        -    "items": {
        -      "properties": {
        -        "message": {
        -          "description": "message text",
        -          "type": "string"
        -        },
        -        "role": {
        -          "description": "role of the user from whom the message originates",
        -          "enum": [
        -            "user",
        -            "ai"
        -          ],
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "role",
        -        "message"
        -      ],
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  "model_name": {
        -    "description": "name of the AI model required field model_nameconsists of the actual model name and version name; if the basic model name is specified, its latest version will be set by default; for example, if gpt-4.1 is specified, the gpt-4.1-2025-04-14 will be set as model_name automatically; you can receive the list of available LLM models by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_responses/models",
        -    "type": "string"
        -  },
        -  "system_message": {
        -    "description": "instructions for the AI behaviour optional field defines the AI's role, tone, or specific behavior you can specify up to 500 characters in the system_message field",
        -    "type": "string"
        -  },
        -  "tag": {
        -    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        -    "type": "string"
        -  },
        -  "temperature": {
        -    "description": "randomness of the AI response optional field higher values make output more diverse; lower values make output more focused; minimum value: 0 maximum value: 2 default value: 0.94 Note: not supported in reasoning models",
        -    "type": "number"
        -  },
        -  "top_p": {
        -    "description": "diversity of the AI response optional field controls diversity of the response by limiting token selection; minimum value: 0 maximum value: 1 default value: 0.92 Note: top_p cannot be used together with temperature in the same request",
        -    "type": "number"
        -  },
        -  "user_prompt": {
        -    "description": "prompt for the AI model required field the question or task you want to send to the AI model; you can specify up to 500 characters in the user_prompt field",
        -    "type": "string"
        -  },
        -  "web_search": {
        -    "description": "enable web search optional field when enabled, the AI model can access and cite current web information; default value: false; Note: refer to the Models endpoint for a list of models that support web_search;",
        -    "type": "boolean"
        -  },
        -  "web_search_city": {
        -    "description": "city name of the location optional field Note: not supported in o3-mini, o1-pro, o1 models",
        -    "type": "string"
        -  },
        -  "web_search_country_iso_code": {
        -    "description": "ISO country code of the location optional field to enable this parameter, web_search must also be enabled; when enabled, the AI model will search the web from the country you specify; Note: not supported in o3-mini, o1-pro, o1 models",
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / body / items / required
        Removed value: -[
        -  "user_prompt",
        -  "model_name"
        -]
      • changedInput schema / properties / body / items / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "body"
        -]New value: +[]
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedpost_dataforseo_ai_chat_gpt_llm_scraper_live8 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "keyword": "albert einstein",
        +    "language_code": "en",
        +    "location_code": 2840
        +  }
        +]
      • removedInput schema / properties / body / items / allOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "location_name"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "location_code"
        -        ]
        -      }
        -    ]
        -  },
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "language_name"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "language_code"
        -        ]
        -      }
        -    ]
        -  }
        -]
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "keyword": "albert einstein",
        +        "language_code": "en",
        +        "location_code": 2840
        +      }
        +    ],
        +    "properties": {
        +      "force_web_search": {
        +        "description": "<em>force AI agent to use web search</em><br>optional field<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        +        "type": "string"
        +      },
        +      "language_code": {
        +        "description": "<em>search engine language code</em><br><strong>required field if you don't specify <code>language_name</code>;</strong><br>if you use this field, you don't need to specify <code>language_name</code>;<br>you can receive the list of available languages of the search engine with their <code>language_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/languages</code>",
        +        "type": "string"
        +      },
        +      "language_name": {
        +        "description": "<em>full name of search engine language</em><br><strong>required field if you don't specify <code>language_code</code>;</strong><br>if you use this field, you don't need to specify <code>language_code</code>;<br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/languages</code>",
        +        "type": "string"
        +      },
        +      "location_code": {
        +        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code><br><strong>if you use this field, you don't need to specify <code>location_name</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        +        "type": "integer"
        +      },
        +      "location_name": {
        +        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code><br><strong>if you use this field, you don't need to specify <code>location_code</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        +        "type": "string"
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "force_web_search": {
        -    "description": "force AI agent to use web search optional field when enabled, the AI model is forced to access and cite current web information; default value: false; Note: even if the parameter is set to true, there is no guarantee web sources will be cited in the response",
        -    "type": "boolean"
        -  },
        -  "keyword": {
        -    "description": "keyword required field you can specify up to 2000 characters in the keyword field all %## will be decoded (plus character ‘+’ will be decoded to a space character) if you need to use the “%” character for your keyword, please specify it as “%25”; if you need to use the “+” character for your keyword, please specify it as “%2B”learn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        -    "type": "string"
        -  },
        -  "language_code": {
        -    "description": "search engine language code required field if you don't specify language_name; if you use this field, you don't need to specify language_name; you can receive the list of available languages of the search engine with their language_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/languages",
        -    "type": "string"
        -  },
        -  "language_name": {
        -    "description": "full name of search engine language required field if you don't specify language_code; if you use this field, you don't need to specify language_code; you can receive the list of available languages of the search engine with their language_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/languages",
        -    "type": "string"
        -  },
        -  "location_code": {
        -    "description": "search engine location code required field if you don't specify location_name if you use this field, you don't need to specify location_name you can receive the list of available locations of the search engines with their location_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/locations example: 2840",
        -    "type": "integer"
        -  },
        -  "location_name": {
        -    "description": "full name of search engine location required field if you don't specify location_code if you use this field, you don't need to specify location_code you can receive the list of available locations of the search engine with their location_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/chat_gpt/llm_scraper/locations example: United States",
        -    "type": "string"
        -  },
        -  "tag": {
        -    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / body / items / required
        Removed value: -[
        -  "keyword"
        -]
      • changedInput schema / properties / body / items / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "body"
        -]New value: +[]
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedpost_dataforseo_ai_chat_gpt_llm_scraper_live_html8 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "keyword": "albert einstein",
        +    "language_code": "en",
        +    "location_code": 2840
        +  }
        +]
      • removedInput schema / properties / body / items / allOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "location_name"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "location_code"
        -        ]
        -      }
        -    ]
        -  },
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "language_name"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "language_code"
        -        ]
        -      }
        -    ]
        -  }
        -]
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "keyword": "albert einstein",
        +        "language_code": "en",
        +        "location_code": 2840
        +      }
        +    ],
        +    "properties": {
        +      "expand_citations": {
        +        "description": "<em>return expanded citation bar in HTML results</em><br>optional field<br>to enable this parameter, <code>force_web_search</code> must also be enabled;<br>when enabled, the endpoint will return HTML data from the expanded citation bar;<br>default value: <code>false</code>",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "force_web_search": {
        +        "description": "<em>force AI agent to use web search</em><br>optional field<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        +        "type": "string"
        +      },
        +      "language_code": {
        +        "description": "<em>search engine language code</em><br><strong>required field if you don't specify</strong> <code>language_name</code><br><strong>if you use this field, you don't need to specify <code>language_name</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_code</code>_by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/languages</code><br>example:<code class=\"long-string\">en</code>n",
        +        "type": "string"
        +      },
        +      "language_name": {
        +        "description": "<em>full name of search engine language</em><br><strong>required field if you don't specify</strong> <code>language_code</code><br><strong>if you use this field, you don't need to specify <code>language_code</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/languages</code><br>example:<br><code class=\"long-string\">English</code>",
        +        "type": "string"
        +      },
        +      "location_code": {
        +        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code><br><strong>if you use this field, you don't need to specify <code>location_name</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        +        "type": "integer"
        +      },
        +      "location_name": {
        +        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code><br><strong>if you use this field, you don't need to specify <code>location_code</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        +        "type": "string"
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "expand_citations": {
        -    "description": "return expanded citation bar in HTML results optional field to enable this parameter, force_web_search must also be enabled; when enabled, the endpoint will return HTML data from the expanded citation bar; default value: false",
        -    "type": "boolean"
        -  },
        -  "force_web_search": {
        -    "description": "force AI agent to use web search optional field when enabled, the AI model is forced to access and cite current web information; default value: false; Note: even if the parameter is set to true, there is no guarantee web sources will be cited in the response",
        -    "type": "boolean"
        -  },
        -  "keyword": {
        -    "description": "keyword required field you can specify up to 2000 characters in the keyword field all %## will be decoded (plus character ‘+’ will be decoded to a space character) if you need to use the “%” character for your keyword, please specify it as “%25”; if you need to use the “+” character for your keyword, please specify it as “%2B”learn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        -    "type": "string"
        -  },
        -  "language_code": {
        -    "description": "search engine language code required field if you don't specify language_name if you use this field, you don't need to specify language_name you can receive the list of available languages of the search engine with their language_code_by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/languages example:enn",
        -    "type": "string"
        -  },
        -  "language_name": {
        -    "description": "full name of search engine language required field if you don't specify language_code if you use this field, you don't need to specify language_code you can receive the list of available languages of the search engine with their language_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/languages example: English",
        -    "type": "string"
        -  },
        -  "location_code": {
        -    "description": "search engine location code required field if you don't specify location_name if you use this field, you don't need to specify location_name you can receive the list of available locations of the search engines with their location_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/{{low_se_type}}/locations example: 2840",
        -    "type": "integer"
        -  },
        -  "location_name": {
        -    "description": "full name of search engine location required field if you don't specify location_code if you use this field, you don't need to specify location_code you can receive the list of available locations of the search engine with their location_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/{{low_se_name}}/locations example: United States",
        -    "type": "string"
        -  },
        -  "tag": {
        -    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / body / items / required
        Removed value: -[
        -  "keyword"
        -]
      • changedInput schema / properties / body / items / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "body"
        -]New value: +[]
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedpost_dataforseo_ai_claude_llm_responses_live7 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "max_output_tokens": 200,
        +    "message_chain": [
        +      {
        +        "message": "Hello, what’s up?",
        +        "role": "user"
        +      },
        +      {
        +        "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        +        "role": "ai"
        +      }
        +    ],
        +    "model_name": "claude-opus-4-0",
        +    "system_message": "communicate as if we are in a business meeting",
        +    "temperature": 0.3,
        +    "user_prompt": "provide information on how relevant the amusement park business is in France now",
        +    "web_search": true,
        +    "web_search_country_iso_code": "FR"
        +  }
        +]
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "max_output_tokens": 200,
        +        "message_chain": [
        +          {
        +            "message": "Hello, what’s up?",
        +            "role": "user"
        +          },
        +          {
        +            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        +            "role": "ai"
        +          }
        +        ],
        +        "model_name": "claude-opus-4-0",
        +        "system_message": "communicate as if we are in a business meeting",
        +        "temperature": 0.3,
        +        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        +        "web_search": true,
        +        "web_search_country_iso_code": "FR"
        +      }
        +    ],
        +    "properties": {
        +      "force_web_search": {
        +        "description": "<em>force AI agent to use web search</em><br>optional field<br>to enable this parameter, <code>web_search</code> must also be enabled;<br>when enabled, the AI model is forced to access and cite current web information;<br>default value: <code>false</code>;<br><strong>Note:</strong> even if the parameter is set to <code>true</code>, there is no guarantee web sources will be cited in the response",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "max_output_tokens": {
        +        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value: <code>1</code>;<br>maximum value: <code>4096</code>;<br>default value: <code>2048</code>;<br><strong>Note:</strong> if <code>web_search</code> is set to <code>true</code> or the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit<br><strong>Note #2:</strong> if <code>use_reasoning</code> is set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1025</code>",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "message_chain": {
        +        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        +        "items": {
        +          "anyOf": [
        +            {
        +              "properties": {
        +                "message": {
        +                  "description": "message text",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "role": {
        +                  "description": "role of the user from whom the message originates",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ],
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "model_name": {
        +        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>for example, if <code>claude-opus-4-0</code> is specified, the <code>claude-opus-4-20250514</code> will be set as <code>model_name</code> automatically;<br>you can receive the list of available LLM models by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/claude/llm_responses/models</code>",
        +        "type": "string"
        +      },
        +      "system_message": {
        +        "description": "<em>instructions for the AI behaviour</em><br>optional field<br>defines the AI's role, tone, or specific behavior;<br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "temperature": {
        +        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse; <br>lower values make output more focused;<br>minimum value: <code>0</code><br>maximum value: <code>1</code><br>default value: <code>0.7</code><p><strong>Note:</strong> <code>temperature</code> cannot be used together with <code>top_p</code> in the same request",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "top_p": {
        +        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection;<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>null</code><p><strong>Note:</strong> <code>top_p</code> cannot be used together with <code>temperature</code> in the same request",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "use_reasoning": {
        +        "description": "<em>enable reasoning for the AI model</em><br>optional field<br>when enabled, the model will perform reasoning before generating a response<br>refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/claude/llm_responses/models/\" target=\"_blank\">Models endpoint</a> for a list of models that support <code>reasoning</code><br>default value: <code>false</code><br><strong>Note:</strong> if set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1025</code><br><strong>Note #2:</strong> if set to <code>true</code>, <code>force_web_search</code> must be set to <code>false</code><br><strong>Note #3:</strong> if set to <code>true</code>, the <code>temperature</code> and <code>top_p</code> cannot be used",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "user_prompt": {
        +        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        +        "type": "string"
        +      },
        +      "web_search": {
        +        "description": "<em>enable web search for current information</em><br>optional field<br>when enabled, the AI model can access and cite current web information;<br><strong>Note:</strong> refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/claude/llm_responses/models/\">Models endpoint</a> for a list of models that support <code>web_search</code>; <br>default value: <code>false</code>;<br>The cost of the parameter can be calculated on the <a title=\"Anthropic API Pricing\" href=\"https://docs.anthropic.com/en/docs/about-claude/pricing\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing</a> page",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "web_search_city": {
        +        "description": "<em>city name of the location used for searching the web</em><br>optional field<br>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "web_search_country_iso_code": {
        +        "description": "<em>ISO country code of the location used for searching the web</em><br>optional field<br>possible values: <code>'AR','AT','AU','BE','BR','CA','CH','CL','CN','DE','DK','ES','FI','FR','GB','HK','ID','IN','IT','JP','KR','MX','MY','NL','NO','NZ','PH','PL','PT','RU','SA','SE','TR','TW','US','ZA'</code>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "force_web_search": {
        -    "description": "force AI agent to use web search optional field to enable this parameter, web_search must also be enabled; when enabled, the AI model is forced to access and cite current web information; default value: false; Note: even if the parameter is set to true, there is no guarantee web sources will be cited in the response",
        -    "type": "boolean"
        -  },
        -  "max_output_tokens": {
        -    "description": "maximum number of tokens in the AI response optional field minimum value: 1; maximum value: 4096; default value: 2048; Note: if web_search is set to true or the reasoning model is specified in the request, the output token count may exceed the specified max_output_tokens limit Note #2: if use_reasoning is set to true, the minimum value for max_output_tokens is 1025",
        -    "type": "integer"
        -  },
        -  "message_chain": {
        -    "description": "conversation history optional field array of message objects representing previous conversation turns; each object must contain: role string with either user or ai role; message string with message content (max 500 characters); you can specify maximum of 10 message objects in the array; Note: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai); example: \"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        -    "items": {
        -      "properties": {
        -        "message": {
        -          "description": "message text",
        -          "type": "string"
        -        },
        -        "role": {
        -          "description": "role of the user from whom the message originates",
        -          "enum": [
        -            "user",
        -            "ai"
        -          ],
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "role",
        -        "message"
        -      ],
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  "model_name": {
        -    "description": "name of the AI model required field model_nameconsists of the actual model name and version name; if the basic model name is specified, its latest version will be set by default; for example, if claude-opus-4-0 is specified, the claude-opus-4-20250514 will be set as model_name automatically; you can receive the list of available LLM models by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/claude/llm_responses/models",
        -    "type": "string"
        -  },
        -  "system_message": {
        -    "description": "instructions for the AI behaviour optional field defines the AI's role, tone, or specific behavior; you can specify up to 500 characters in the system_message field",
        -    "type": "string"
        -  },
        -  "tag": {
        -    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        -    "type": "string"
        -  },
        -  "temperature": {
        -    "description": "randomness of the AI response optional field higher values make output more diverse; lower values make output more focused; minimum value: 0 maximum value: 1 default value: 0.7Note: temperature cannot be used together with top_p in the same request",
        -    "type": "number"
        -  },
        -  "top_p": {
        -    "description": "diversity of the AI response optional field controls diversity of the response by limiting token selection; minimum value: 0 maximum value: 1 default value: nullNote: top_p cannot be used together with temperature in the same request",
        -    "type": "number"
        -  },
        -  "use_reasoning": {
        -    "description": "enable reasoning for the AI model optional field when enabled, the model will perform reasoning before generating a response refer to the Models endpoint for a list of models that support reasoning default value: false Note: if set to true, the minimum value for max_output_tokens is 1025 Note #2: if set to true, force_web_search must be set to false Note #3: if set to true, the temperature and top_p cannot be used",
        -    "type": "boolean"
        -  },
        -  "user_prompt": {
        -    "description": "prompt for the AI model required field the question or task you want to send to the AI model; you can specify up to 500 characters in the user_prompt field",
        -    "type": "string"
        -  },
        -  "web_search": {
        -    "description": "enable web search for current information optional field when enabled, the AI model can access and cite current web information; Note: refer to the Models endpoint for a list of models that support web_search; default value: false",
        -    "type": "boolean"
        -  },
        -  "web_search_city": {
        -    "description": "city name of the location used for searching the web optional field",
        -    "type": "string"
        -  },
        -  "web_search_country_iso_code": {
        -    "description": "ISO country code of the location used for searching the web optional field possible values: 'AR','AT','AU','BE','BR','CA','CH','CL','CN','DE','DK','ES','FI','FR','GB','HK','ID','IN','IT','JP','KR','MX','MY','NL','NO','NZ','PH','PL','PT','RU','SA','SE','TR','TW','US','ZA'",
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / body / items / required
        Removed value: -[
        -  "user_prompt",
        -  "model_name"
        -]
      • changedInput schema / properties / body / items / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "body"
        -]New value: +[]
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedpost_dataforseo_ai_gemini_llm_responses_live7 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "max_output_tokens": 200,
        +    "message_chain": [
        +      {
        +        "message": "Hello, what’s up?",
        +        "role": "user"
        +      },
        +      {
        +        "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        +        "role": "ai"
        +      }
        +    ],
        +    "model_name": "gemini-2.5-flash",
        +    "system_message": "communicate as if we are in a business meeting",
        +    "temperature": 0.3,
        +    "top_p": 0.5,
        +    "user_prompt": "provide information on how relevant the amusement park business is in France now",
        +    "web_search": true
        +  }
        +]
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "max_output_tokens": 200,
        +        "message_chain": [
        +          {
        +            "message": "Hello, what’s up?",
        +            "role": "user"
        +          },
        +          {
        +            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        +            "role": "ai"
        +          }
        +        ],
        +        "model_name": "gemini-2.5-flash",
        +        "system_message": "communicate as if we are in a business meeting",
        +        "temperature": 0.3,
        +        "top_p": 0.5,
        +        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        +        "web_search": true
        +      }
        +    ],
        +    "properties": {
        +      "max_output_tokens": {
        +        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value: <code>1</code><br>maximum value: <code>4096</code>;<br>default value: <code>2048</code>;<br><strong>Note:</strong> if <code>web_search</code> is set to <code>true</code> or the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit<br><strong>Note #2:</strong> if <code>use_reasoning</code> is set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1024</code>",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "message_chain": {
        +        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        +        "items": {
        +          "anyOf": [
        +            {
        +              "properties": {
        +                "message": {
        +                  "description": "message text",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "role": {
        +                  "description": "role of the user from whom the message originates",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ],
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "model_name": {
        +        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>for example, if <code>gemini-1.5-pro</code> is specified, the <code>gemini-1.5-pro-002</code> will be set as <code>model_name</code> automatically;<br>you can receive the list of available LLM models by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models</code>",
        +        "type": "string"
        +      },
        +      "system_message": {
        +        "description": "<em>instructions for the AI behavior</em><br>optional field<br>defines the AI's role, tone, or specific behavior <br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "temperature": {
        +        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse <br>lower values make output more focused<br>minimum value: <code>0</code><br>maximum value: <code>2</code><br>default value: <code>1.3</code>",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "top_p": {
        +        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>0.9</code>",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "use_reasoning": {
        +        "description": "<em>enable reasoning for the AI model</em><br>optional field<br>when enabled, the model will perform reasoning before generating a response<br>refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models/\" target=\"_blank\">Models endpoint</a> for a list of models that support <code>reasoning</code><br>default value: <code>false</code><br><strong>Note:</strong> if set to <code>true</code>, the minimum value for <code>max_output_tokens</code> is <code>1024</code><br><strong>Note #2:</strong> for Gemini Pro models, the <code>use_reasoning</code> will automatically be set to <code>true</code>",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "user_prompt": {
        +        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        +        "type": "string"
        +      },
        +      "web_search": {
        +        "description": "<em>enable web search for current information</em><br>optional field<br>when enabled, the AI model can access and cite current web information;<br><strong>Note:</strong> refer to the <a href=\"https://docs.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models/\">Models endpoint</a> for a list of models that support <code>web_search</code>; <br>default value: <code>false</code>;<br>The cost of the parameter can be calculated on the <a title=\"Gemini API Pricing\" href=\"https://ai.google.dev/gemini-api/docs/pricing\" target=\"_blank\" rel=\"noopener noreferrer\">Pricing</a> page",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "max_output_tokens": {
        -    "description": "maximum number of tokens in the AI response optional field minimum value: 1 maximum value: 4096; default value: 2048; Note: if web_search is set to true or the reasoning model is specified in the request, the output token count may exceed the specified max_output_tokens limit Note #2: if use_reasoning is set to true, the minimum value for max_output_tokens is 1024",
        -    "type": "integer"
        -  },
        -  "message_chain": {
        -    "description": "conversation history optional field array of message objects representing previous conversation turns; each object must contain: role string with either user or ai role; message string with message content (max 500 characters); you can specify maximum of 10 message objects in the array; Note: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai); example: \"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        -    "items": {
        -      "properties": {
        -        "message": {
        -          "description": "message text",
        -          "type": "string"
        -        },
        -        "role": {
        -          "description": "role of the user from whom the message originates",
        -          "enum": [
        -            "user",
        -            "ai"
        -          ],
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "role",
        -        "message"
        -      ],
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  "model_name": {
        -    "description": "name of the AI model required field model_nameconsists of the actual model name and version name; if the basic model name is specified, its latest version will be set by default; for example, if gemini-1.5-pro is specified, the gemini-1.5-pro-002 will be set as model_name automatically; you can receive the list of available LLM models by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_responses/models",
        -    "type": "string"
        -  },
        -  "system_message": {
        -    "description": "instructions for the AI behavior optional field defines the AI's role, tone, or specific behavior you can specify up to 500 characters in the system_message field",
        -    "type": "string"
        -  },
        -  "tag": {
        -    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        -    "type": "string"
        -  },
        -  "temperature": {
        -    "description": "randomness of the AI response optional field higher values make output more diverse lower values make output more focused minimum value: 0 maximum value: 2 default value: 1.3",
        -    "type": "number"
        -  },
        -  "top_p": {
        -    "description": "diversity of the AI response optional field controls diversity of the response by limiting token selection minimum value: 0 maximum value: 1 default value: 0.9",
        -    "type": "number"
        -  },
        -  "use_reasoning": {
        -    "description": "enable reasoning for the AI model optional field when enabled, the model will perform reasoning before generating a response refer to the Models endpoint for a list of models that support reasoning default value: false Note: if set to true, the minimum value for max_output_tokens is 1024 Note #2: for Gemini Pro models, the use_reasoning will automatically be set to true",
        -    "type": "boolean"
        -  },
        -  "user_prompt": {
        -    "description": "prompt for the AI model required field the question or task you want to send to the AI model; you can specify up to 500 characters in the user_prompt field",
        -    "type": "string"
        -  },
        -  "web_search": {
        -    "description": "enable web search for current information optional field when enabled, the AI model can access and cite current web information; Note: refer to the Models endpoint for a list of models that support web_search; default value: false",
        -    "type": "boolean"
        -  }
        -}
      • removedInput schema / properties / body / items / required
        Removed value: -[
        -  "user_prompt",
        -  "model_name"
        -]
      • changedInput schema / properties / body / items / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "body"
        -]New value: +[]
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedpost_dataforseo_ai_gemini_llm_scraper_live8 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "keyword": "albert einstein",
        +    "language_code": "en",
        +    "location_code": 2840
        +  }
        +]
      • removedInput schema / properties / body / items / allOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "location_name"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "location_code"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "location_coordinate"
        -        ]
        -      }
        -    ]
        -  },
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "language_name"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "language_code"
        -        ]
        -      }
        -    ]
        -  }
        -]
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "keyword": "albert einstein",
        +        "language_code": "en",
        +        "location_code": 2840
        +      }
        +    ],
        +    "properties": {
        +      "keyword": {
        +        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        +        "type": "string"
        +      },
        +      "language_code": {
        +        "description": "<em>search engine language code</em><br>required field if you don't specify <code>language_name</code>;<br>if you use this field, you don't need to specify <code>language_name</code>;<br>you can receive the list of available languages of the search engine with their <code>language_code</code>_by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example: <code>en</code>n",
        +        "type": "string"
        +      },
        +      "language_name": {
        +        "description": "<em>full name of search engine language</em><br>required field if you don't specify <code>language_code</code>;<br>if you use this field, you don't need to specify <code>language_code</code>;<br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example: <code>English</code>",
        +        "type": "string"
        +      },
        +      "location_code": {
        +        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        +        "type": "integer"
        +      },
        +      "location_coordinate": {
        +        "description": "<p><em>GPS coordinates of a location</em><p><strong>required field if you don't specify</strong> <code>location_name</code>&nbsp;or <code>location_code</code><p><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_code</code></strong><p><code>location_coordinate</code> parameter should be specified in the <em>\"latitude,longitude,radius\"</em> format<p>the maximum number of decimal digits for <em>\"latitude\"</em> and <em>\"longitude\"</em>: 7<p>the minimum value for <em>\"radius\"</em>: 199 (mm)<p>the maximum value for <em>\"radius\"</em>: 199999 (mm)<p>example:<p><code class=\"long-string\">53.476225,-2.243572,200</code></p>",
        +        "type": "string"
        +      },
        +      "location_name": {
        +        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_code</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        +        "type": "string"
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "keyword": {
        -    "description": "keyword required field you can specify up to 2000 characters in the keyword field all %## will be decoded (plus character ‘+’ will be decoded to a space character) if you need to use the “%” character for your keyword, please specify it as “%25”; if you need to use the “+” character for your keyword, please specify it as “%2B”learn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        -    "type": "string"
        -  },
        -  "language_code": {
        -    "description": "search engine language code required field if you don't specify language_name; if you use this field, you don't need to specify language_name; you can receive the list of available languages of the search engine with their language_code_by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages example: enn",
        -    "type": "string"
        -  },
        -  "language_name": {
        -    "description": "full name of search engine language required field if you don't specify language_code; if you use this field, you don't need to specify language_code; you can receive the list of available languages of the search engine with their language_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages example: English",
        -    "type": "string"
        -  },
        -  "location_code": {
        -    "description": "search engine location code required field if you don't specify location_name or location_coordinate if you use this field, you don't need to specify location_name or location_coordinate you can receive the list of available locations of the search engines with their location_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations example: 2840",
        -    "type": "integer"
        -  },
        -  "location_coordinate": {
        -    "description": "GPS coordinates of a location required field if you don't specify location_name or location_code if you use this field, you don't need to specify location_name or location_code location_coordinate parameter should be specified in the \"latitude,longitude,radius\" format the maximum number of decimal digits for \"latitude\" and \"longitude\": 7 the minimum value for \"radius\": 199 (mm) the maximum value for \"radius\": 199999 (mm) example: 53.476225,-2.243572,200",
        -    "type": "string"
        -  },
        -  "location_name": {
        -    "description": "full name of search engine location required field if you don't specify location_code or location_coordinate if you use this field, you don't need to specify location_code or location_coordinate you can receive the list of available locations of the search engine with their location_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations example: United States",
        -    "type": "string"
        -  },
        -  "tag": {
        -    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / body / items / required
        Removed value: -[
        -  "keyword"
        -]
      • changedInput schema / properties / body / items / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "body"
        -]New value: +[]
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedpost_dataforseo_ai_gemini_llm_scraper_live_html8 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "keyword": "albert einstein",
        +    "language_code": "en",
        +    "location_code": 2840
        +  }
        +]
      • removedInput schema / properties / body / items / allOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "location_name"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "location_code"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "location_coordinate"
        -        ]
        -      }
        -    ]
        -  },
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "language_name"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "language_code"
        -        ]
        -      }
        -    ]
        -  }
        -]
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "keyword": "albert einstein",
        +        "language_code": "en",
        +        "location_code": 2840
        +      }
        +    ],
        +    "properties": {
        +      "expand_citations": {
        +        "description": "<em>return expanded citation bar in HTML results</em><br>optional field<br>when enabled, the endpoint will return HTML data from the expanded citation bar;<br>default value: <code>false</code>",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>keyword</em><br><strong>required field</strong><br>you can specify <strong>up to 2000 characters</strong> in the <code>keyword</code> field<br>all %## will be decoded (plus character ‘+’ will be decoded to a space character)<br>if you need to use the “%” character for your <code>keyword</code>, please specify it as “%25”;<br>if you need to use the “+” character for your <code>keyword</code>, please specify it as “%2B”<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        +        "type": "string"
        +      },
        +      "language_code": {
        +        "description": "<em>search engine language code</em><br><strong>required field if you don't specify</strong> <code>language_name</code><br><strong>if you use this field, you don't need to specify <code>language_name</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_code</code>_by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example:<code class=\"long-string\">en</code>n",
        +        "type": "string"
        +      },
        +      "language_name": {
        +        "description": "<em>full name of search engine language</em><br><strong>required field if you don't specify</strong> <code>language_code</code><br><strong>if you use this field, you don't need to specify <code>language_code</code></strong><br>you can receive the list of available languages of the search engine with their <code>language_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages</code><br>example:<br><code class=\"long-string\">English</code>",
        +        "type": "string"
        +      },
        +      "location_code": {
        +        "description": "<em>search engine location code</em><br><strong>required field if you don't specify</strong> <code>location_name</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engines with their <code>location_code</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">2840</code>",
        +        "type": "integer"
        +      },
        +      "location_coordinate": {
        +        "description": "<p><em>GPS coordinates of a location</em><p><strong>required field if you don't specify</strong> <code>location_name</code>&nbsp;or <code>location_code</code><p><strong>if you use this field, you don't need to specify <code>location_name</code> or <code>location_code</code></strong><p><code>location_coordinate</code> parameter should be specified in the <em>\"latitude,longitude,radius\"</em> format<p>the maximum number of decimal digits for <em>\"latitude\"</em> and <em>\"longitude\"</em>: 7<p>the minimum value for <em>\"radius\"</em>: 199 (mm)<p>the maximum value for <em>\"radius\"</em>: 199999 (mm)<p>example:<p><code class=\"long-string\">53.476225,-2.243572,200</code></p>",
        +        "type": "string"
        +      },
        +      "location_name": {
        +        "description": "<em>full name of search engine location</em><br><strong>required field if you don't specify</strong> <code>location_code</code> or <code>location_coordinate</code><br><strong>if you use this field, you don't need to specify <code>location_code</code> or <code>location_coordinate</code></strong><br>you can receive the list of available locations of the search engine with their <code>location_name</code> by making a separate request to the <code>https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations</code><br>example:<br><code class=\"long-string\">United States</code>",
        +        "type": "string"
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "expand_citations": {
        -    "description": "return expanded citation bar in HTML results optional field when enabled, the endpoint will return HTML data from the expanded citation bar; default value: false",
        -    "type": "boolean"
        -  },
        -  "keyword": {
        -    "description": "keyword required field you can specify up to 2000 characters in the keyword field all %## will be decoded (plus character ‘+’ will be decoded to a space character) if you need to use the “%” character for your keyword, please specify it as “%25”; if you need to use the “+” character for your keyword, please specify it as “%2B”learn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        -    "type": "string"
        -  },
        -  "language_code": {
        -    "description": "search engine language code required field if you don't specify language_name if you use this field, you don't need to specify language_name you can receive the list of available languages of the search engine with their language_code_by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages example:enn",
        -    "type": "string"
        -  },
        -  "language_name": {
        -    "description": "full name of search engine language required field if you don't specify language_code if you use this field, you don't need to specify language_code you can receive the list of available languages of the search engine with their language_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/languages example: English",
        -    "type": "string"
        -  },
        -  "location_code": {
        -    "description": "search engine location code required field if you don't specify location_name or location_coordinate if you use this field, you don't need to specify location_name or location_coordinate you can receive the list of available locations of the search engines with their location_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations example: 2840",
        -    "type": "integer"
        -  },
        -  "location_coordinate": {
        -    "description": "GPS coordinates of a location required field if you don't specify location_name or location_code if you use this field, you don't need to specify location_name or location_code location_coordinate parameter should be specified in the \"latitude,longitude,radius\" format the maximum number of decimal digits for \"latitude\" and \"longitude\": 7 the minimum value for \"radius\": 199 (mm) the maximum value for \"radius\": 199999 (mm) example: 53.476225,-2.243572,200",
        -    "type": "string"
        -  },
        -  "location_name": {
        -    "description": "full name of search engine location required field if you don't specify location_code or location_coordinate if you use this field, you don't need to specify location_code or location_coordinate you can receive the list of available locations of the search engine with their location_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations example: United States",
        -    "type": "string"
        -  },
        -  "tag": {
        -    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / body / items / required
        Removed value: -[
        -  "keyword"
        -]
      • changedInput schema / properties / body / items / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "body"
        -]New value: +[]
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedpost_dataforseo_ai_keyword_volume_live8 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "keywords": [
        +      "iphone",
        +      "seo"
        +    ],
        +    "language_name": "English",
        +    "location_code": 2840
        +  }
        +]
      • removedInput schema / properties / body / items / allOf
        Removed value: -[
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "location_name"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "location_code"
        -        ]
        -      }
        -    ]
        -  },
        -  {
        -    "anyOf": [
        -      {
        -        "required": [
        -          "language_name"
        -        ]
        -      },
        -      {
        -        "required": [
        -          "language_code"
        -        ]
        -      }
        -    ]
        -  }
        -]
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "keywords": [
        +          "iphone",
        +          "seo"
        +        ],
        +        "language_name": "English",
        +        "location_code": 2840
        +      }
        +    ],
        +    "properties": {
        +      "keywords": {
        +        "description": "<em>keywords</em><br><strong>required field</strong><br>UTF-8 encoding<br>The maximum number of keywords you can specify: 1000;<br>The maximum number of characters in a single keyword: 250;<br>The keywords will be converted to lowercase format;<p>learn more about rules and limitations of <code>keyword</code> and <code>keywords</code> fields in DataForSEO APIs in this <a href=\"https://dataforseo.com/help-center/rules-and-limitations-of-keyword-and-keywords-fields-in-dataforseo-apis\" rel=\"noopener noreferrer\" target=\"_blank\">Help Center article</a>",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "language_code": {
        +        "description": "<em>language code</em><br><strong>required field if you don't specify</strong> <code>language_name</code><br><strong>if you use this field, you don't need to specify</strong> <code>language_name</code><br>you can receive the list of available languages with their <code>language_code</code> by making a separate request to the<br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">en</code>",
        +        "type": "string"
        +      },
        +      "language_name": {
        +        "description": "<em>full name of the language</em><br><strong>required field if you don't specify</strong> <code>language_code</code><br><strong>if you use this field, you don't need to specify</strong> <code>language_code</code><br>you can receive the list of available languages with their <code>language_name</code> by making a separate request to the<br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">English</code>",
        +        "type": "string"
        +      },
        +      "location_code": {
        +        "description": "<em>unique location identifier</em><br><strong>required field if you don't specify</strong> <code>location_name</code><br><strong>Note:</strong> it is required to specify either <code>location_name</code> or <code>location_code</code><br>you can receive the list of available locations with their <code>location_code</code> by making a separate request to the <br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">2840</code>",
        +        "type": "integer"
        +      },
        +      "location_name": {
        +        "description": "<em>full name of the location</em><br><strong>required field if you don't specify</strong> <code>location_code</code><br><strong>Note:</strong> it is required to specify either <code>location_name</code> or <code>location_code</code><br>you can receive the list of available locations with their <code>location_name</code> by making a separate request to the<br><code>https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages</code><br>example:<br><code class=\"long-string\">United Kingdom</code>",
        +        "type": "string"
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "keywords": {
        -    "description": "keywords required field UTF-8 encoding The maximum number of keywords you can specify: 1000; The maximum number of characters in a single keyword: 250; The keywords will be converted to lowercase format;learn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  "language_code": {
        -    "description": "language code required field if you don't specify language_name if you use this field, you don't need to specify language_name you can receive the list of available languages with their language_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages example: en",
        -    "type": "string"
        -  },
        -  "language_name": {
        -    "description": "full name of the language required field if you don't specify language_code if you use this field, you don't need to specify language_code you can receive the list of available languages with their language_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages example: English",
        -    "type": "string"
        -  },
        -  "location_code": {
        -    "description": "unique location identifier required field if you don't specify location_name Note: it is required to specify either location_name or location_code you can receive the list of available locations with their location_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages example: 2840",
        -    "type": "integer"
        -  },
        -  "location_name": {
        -    "description": "full name of the location required field if you don't specify location_code Note: it is required to specify either location_name or location_code you can receive the list of available locations with their location_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/ai_keyword_data/locations_and_languages example: United Kingdom",
        -    "type": "string"
        -  },
        -  "tag": {
        -    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / body / items / required
        Removed value: -[
        -  "keywords"
        -]
      • changedInput schema / properties / body / items / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "body"
        -]New value: +[]
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedpost_dataforseo_ai_perplexity_llm_responses_live7 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "max_output_tokens": 200,
        +    "message_chain": [
        +      {
        +        "message": "Hello, what’s up?",
        +        "role": "user"
        +      },
        +      {
        +        "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        +        "role": "ai"
        +      }
        +    ],
        +    "model_name": "sonar",
        +    "system_message": "communicate as if we are in a business meeting",
        +    "temperature": 0.3,
        +    "top_p": 0.5,
        +    "user_prompt": "provide information on how relevant the amusement park business is in France now",
        +    "web_search_country_iso_code": "FR"
        +  }
        +]
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "max_output_tokens": 200,
        +        "message_chain": [
        +          {
        +            "message": "Hello, what’s up?",
        +            "role": "user"
        +          },
        +          {
        +            "message": "Hello! I’m doing well, thank you. How can I assist you today? Are there any specific topics or projects you’d like to discuss in our meeting?",
        +            "role": "ai"
        +          }
        +        ],
        +        "model_name": "sonar",
        +        "system_message": "communicate as if we are in a business meeting",
        +        "temperature": 0.3,
        +        "top_p": 0.5,
        +        "user_prompt": "provide information on how relevant the amusement park business is in France now",
        +        "web_search_country_iso_code": "FR"
        +      }
        +    ],
        +    "properties": {
        +      "max_output_tokens": {
        +        "description": "<em>maximum number of tokens in the AI response</em><br>optional field<br>minimum value: <code>1</code><br>maximum value: <code>4096</code>;<br>default value: <code>2048</code>;<br><strong>Note:</strong> if the reasoning model is specified in the request, the output token count may exceed the specified <code>max_output_tokens</code> limit",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "message_chain": {
        +        "description": "conversation history\noptional field\narray of message objects representing previous conversation turns;\neach object must contain:\nrole string with either user or ai role;\nmessage string with message content (max 500 characters);\nyou can specify maximum of 10 message objects in the array;\nNote: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai);\nexample:\n\"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        +        "items": {
        +          "anyOf": [
        +            {
        +              "properties": {
        +                "message": {
        +                  "description": "message text",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "role": {
        +                  "description": "role of the user from whom the message originates",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "type": "object"
        +            }
        +          ],
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "model_name": {
        +        "description": "<em>name of the AI model</em><br><strong>required field</strong><br><code>model_name</code >consists of the actual model name and version name;<br>if the basic model name is specified, its latest version will be set by default;<br>you can receive the list of available LLM models by making a separate request to the following endpoint: <code>https://api.dataforseo.com/v3/ai_optimization/perplexity/llm_responses/models</code>",
        +        "type": "string"
        +      },
        +      "system_message": {
        +        "description": "<em>instructions for the AI behavior</em><br>optional field<br>defines the AI's role, tone, or specific behavior <br>you can specify <strong>up to 500 characters</strong> in the <code>system_message</code> field",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "tag": {
        +        "description": "<em>user-defined task identifier</em><br>optional field<br><em>the character limit is 255</em><br>you can use this parameter to identify the task and match it with the result<br>you will find the specified <code>tag</code> value in the <code>data</code> object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "temperature": {
        +        "description": "<em>randomness of the AI response</em><br>optional field<br>higher values make output more diverse <br>lower values make output more focused<br>minimum value: <code>0</code><br>maximum value: <code>1.9</code><br>default value: <code>0.77</code>",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "top_p": {
        +        "description": "<em>diversity of the AI response</em><br>optional field <br>controls diversity of the response by limiting token selection<br>minimum value: <code>0</code><br>maximum value: <code>1</code> <br>default value: <code>0.9</code>",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "user_prompt": {
        +        "description": "<em>prompt for the AI model</em><br><strong>required field</strong><br>the question or task you want to send to the AI model;<br>you can specify <strong>up to 500 characters</strong> in the <code>user_prompt</code> field",
        +        "type": "string"
        +      },
        +      "web_search_country_iso_code": {
        +        "description": "<em>country code for web search localization</em><br>optional field<br>specify the country  ISO code to get localized web search results<br><strong>Note:</strong> available only for Perplexity Sonar models<br>example: <code>US</code>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "max_output_tokens": {
        -    "description": "maximum number of tokens in the AI response optional field minimum value: 1 maximum value: 4096; default value: 2048; Note: if the reasoning model is specified in the request, the output token count may exceed the specified max_output_tokens limit",
        -    "type": "integer"
        -  },
        -  "message_chain": {
        -    "description": "conversation history optional field array of message objects representing previous conversation turns; each object must contain: role string with either user or ai role; message string with message content (max 500 characters); you can specify maximum of 10 message objects in the array; Note: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai); example: \"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]",
        -    "items": {
        -      "properties": {
        -        "message": {
        -          "description": "message text",
        -          "type": "string"
        -        },
        -        "role": {
        -          "description": "role of the user from whom the message originates",
        -          "enum": [
        -            "user",
        -            "ai"
        -          ],
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "role",
        -        "message"
        -      ],
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  "model_name": {
        -    "description": "name of the AI model required field model_nameconsists of the actual model name and version name; if the basic model name is specified, its latest version will be set by default; you can receive the list of available LLM models by making a separate request to the following endpoint: https://api.dataforseo.com/v3/ai_optimization/perplexity/llm_responses/models",
        -    "type": "string"
        -  },
        -  "system_message": {
        -    "description": "instructions for the AI behavior optional field defines the AI's role, tone, or specific behavior you can specify up to 500 characters in the system_message field",
        -    "type": "string"
        -  },
        -  "tag": {
        -    "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
        -    "type": "string"
        -  },
        -  "temperature": {
        -    "description": "randomness of the AI response optional field higher values make output more diverse lower values make output more focused minimum value: 0 maximum value: 1.9 default value: 0.77",
        -    "type": "number"
        -  },
        -  "top_p": {
        -    "description": "diversity of the AI response optional field controls diversity of the response by limiting token selection minimum value: 0 maximum value: 1 default value: 0.9",
        -    "type": "number"
        -  },
        -  "user_prompt": {
        -    "description": "prompt for the AI model required field the question or task you want to send to the AI model; you can specify up to 500 characters in the user_prompt field",
        -    "type": "string"
        -  },
        -  "web_search_country_iso_code": {
        -    "description": "country code for web search localization optional field specify the country ISO code to get localized web search results Note: available only for Perplexity Sonar models example: US",
        -    "type": "string"
        -  }
        -}
      • removedInput schema / properties / body / items / required
        Removed value: -[
        -  "user_prompt",
        -  "model_name"
        -]
      • changedInput schema / properties / body / items / type
        Previous value: -"object"New value: +[
        +  "object",
        +  "null"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "body"
        -]New value: +[]
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • 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"
  6. 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"
        +}
  7. 2 tool updates
    • Changedpost_dataforseo_ai_claude_llm_responses_live1 field changed
      • changedInput schema / properties / body / items / properties / web_search / description
        Previous value: -"enable web search for current information optional field when enabled, the AI model can access and cite current web information; Note: refer to the Models endpoint for a list of models that support web_search; default value: false; The cost of the parameter can be calculated on the Pricing page"New value: +"enable web search for current information optional field when enabled, the AI model can access and cite current web information; Note: refer to the Models endpoint for a list of models that support web_search; default value: false"
    • Changedpost_dataforseo_ai_gemini_llm_responses_live1 field changed
      • changedInput schema / properties / body / items / properties / web_search / description
        Previous value: -"enable web search for current information optional field when enabled, the AI model can access and cite current web information; Note: refer to the Models endpoint for a list of models that support web_search; default value: false; The cost of the parameter can be calculated on the Pricing page"New value: +"enable web search for current information optional field when enabled, the AI model can access and cite current web information; Note: refer to the Models endpoint for a list of models that support web_search; default value: false"
  8. 6 tool updates
    • Changedpost_dataforseo_ai_chat_gpt_llm_responses_live6 fields changed
      • changedInput schema / properties / body / items / properties / message_chain / description
        Previous value: -"conversation history optional field array of message objects representing previous conversation turns; each object must contain role and message parameters: role string with either user or ai role; message string with message content (max 500 characters); you can specify the maximum of 10 message objects in the array; example: \"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]"New value: +"conversation history optional field array of message objects representing previous conversation turns; each object must contain: role string with either user or ai role; message string with message content (max 500 characters); you can specify maximum of 10 message objects in the array; Note: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai); example: \"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]"
      • addedInput schema / properties / body / items / properties / message_chain / items / properties / message / description
        Added value: +"message text"
      • addedInput schema / properties / body / items / properties / message_chain / items / properties / role / description
        Added value: +"role of the user from whom the message originates"
      • changedInput schema / properties / body / items / properties / top_p / description
        Previous value: -""New value: +"diversity of the AI response optional field controls diversity of the response by limiting token selection; minimum value: 0 maximum value: 1 default value: 0.92 Note: top_p cannot be used together with temperature in the same request"
      • changedInput schema / properties / body / items / properties / web_search_city / description
        Previous value: -"city name of the location optional field Note: specify web_search_country_iso_code to use this parameter Note #2: not supported in o3-mini, o1-pro, o1 models"New value: +"city name of the location optional field Note: not supported in o3-mini, o1-pro, o1 models"
      • changedInput schema / properties / body / items / properties / web_search_country_iso_code / description
        Previous value: -"ISO country code of the location optional field required if web_search_city is specified; to enable this parameter, web_search must also be enabled; when enabled, the AI model will search the web from the country you specify; Note: not supported in o3-mini, o1-pro, o1 models"New value: +"ISO country code of the location optional field to enable this parameter, web_search must also be enabled; when enabled, the AI model will search the web from the country you specify; Note: not supported in o3-mini, o1-pro, o1 models"
    • Changedpost_dataforseo_ai_claude_llm_responses_live5 fields changed
      • changedInput schema / properties / body / items / properties / message_chain / description
        Previous value: -"conversation history optional field array of message objects representing previous conversation turns; each object must contain role and message parameters: role string with either user or ai role; message string with message content (max 500 characters); you can specify the maximum of 10 message objects in the array; example: \"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]"New value: +"conversation history optional field array of message objects representing previous conversation turns; each object must contain: role string with either user or ai role; message string with message content (max 500 characters); you can specify maximum of 10 message objects in the array; Note: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai); example: \"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]"
      • addedInput schema / properties / body / items / properties / message_chain / items / properties / message / description
        Added value: +"message text"
      • addedInput schema / properties / body / items / properties / message_chain / items / properties / role / description
        Added value: +"role of the user from whom the message originates"
      • changedInput schema / properties / body / items / properties / web_search_city / description
        Previous value: -"city name of the location optional field Note: specify web_search_country_iso_code to use this parameter"New value: +"city name of the location used for searching the web optional field"
      • changedInput schema / properties / body / items / properties / web_search_country_iso_code / description
        Previous value: -"ISO country code of the location optional field possible values: 'AR','AT','AU','BE','BR','CA','CH','CL','CN','DE','DK','ES','FI','FR','GB','HK','ID','IN','IT','JP','KR','MX','MY','NL','NO','NZ','PH','PL','PT','RU','SA','SE','TR','TW','US','ZA'"New value: +"ISO country code of the location used for searching the web optional field possible values: 'AR','AT','AU','BE','BR','CA','CH','CL','CN','DE','DK','ES','FI','FR','GB','HK','ID','IN','IT','JP','KR','MX','MY','NL','NO','NZ','PH','PL','PT','RU','SA','SE','TR','TW','US','ZA'"
    • Changedpost_dataforseo_ai_gemini_llm_responses_live3 fields changed
      • changedInput schema / properties / body / items / properties / message_chain / description
        Previous value: -"conversation history optional field array of message objects representing previous conversation turns; each object must contain role and message parameters: role string with either user or ai role; message string with message content (max 500 characters); you can specify the maximum of 10 message objects in the array; example: \"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]"New value: +"conversation history optional field array of message objects representing previous conversation turns; each object must contain: role string with either user or ai role; message string with message content (max 500 characters); you can specify maximum of 10 message objects in the array; Note: for Perplexity models, messages must strictly alternate between user and AI roles (user → ai); example: \"message_chain\": [{\"role\":\"user\",\"message\":\"Hello, what’s up?\"},{\"role\":\"ai\",\"message\":\"Hello! I’m doing well, thank you. How can I assist you today?\"}]"
      • addedInput schema / properties / body / items / properties / message_chain / items / properties / message / description
        Added value: +"message text"
      • addedInput schema / properties / body / items / properties / message_chain / items / properties / role / description
        Added value: +"role of the user from whom the message originates"
    • Changedpost_dataforseo_ai_gemini_llm_scraper_live3 fields changed
      • changedInput schema / properties / body / items / properties / location_code / description
        Previous value: -"search engine location code required field if you don't specify location_name if you use this field, you don't need to specify location_name you can receive the list of available locations of the search engines with their location_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations example: 2840"New value: +"search engine location code required field if you don't specify location_name or location_coordinate if you use this field, you don't need to specify location_name or location_coordinate you can receive the list of available locations of the search engines with their location_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations example: 2840"
      • changedInput schema / properties / body / items / properties / location_coordinate / description
        Previous value: -"Search location as latitude,longitude,radius. Use instead of location_name or location_code."New value: +"GPS coordinates of a location required field if you don't specify location_name or location_code if you use this field, you don't need to specify location_name or location_code location_coordinate parameter should be specified in the \"latitude,longitude,radius\" format the maximum number of decimal digits for \"latitude\" and \"longitude\": 7 the minimum value for \"radius\": 199 (mm) the maximum value for \"radius\": 199999 (mm) example: 53.476225,-2.243572,200"
      • changedInput schema / properties / body / items / properties / location_name / description
        Previous value: -"full name of search engine location required field if you don't specify location_code if you use this field, you don't need to specify location_code you can receive the list of available locations of the search engine with their location_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations example: United States"New value: +"full name of search engine location required field if you don't specify location_code or location_coordinate if you use this field, you don't need to specify location_code or location_coordinate you can receive the list of available locations of the search engine with their location_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations example: United States"
    • Changedpost_dataforseo_ai_gemini_llm_scraper_live_html3 fields changed
      • changedInput schema / properties / body / items / properties / location_code / description
        Previous value: -"search engine location code required field if you don't specify location_name if you use this field, you don't need to specify location_name you can receive the list of available locations of the search engines with their location_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations example: 2840"New value: +"search engine location code required field if you don't specify location_name or location_coordinate if you use this field, you don't need to specify location_name or location_coordinate you can receive the list of available locations of the search engines with their location_code by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations example: 2840"
      • changedInput schema / properties / body / items / properties / location_coordinate / description
        Previous value: -"Search location as latitude,longitude,radius. Use instead of location_name or location_code."New value: +"GPS coordinates of a location required field if you don't specify location_name or location_code if you use this field, you don't need to specify location_name or location_code location_coordinate parameter should be specified in the \"latitude,longitude,radius\" format the maximum number of decimal digits for \"latitude\" and \"longitude\": 7 the minimum value for \"radius\": 199 (mm) the maximum value for \"radius\": 199999 (mm) example: 53.476225,-2.243572,200"
      • changedInput schema / properties / body / items / properties / location_name / description
        Previous value: -"full name of search engine location required field if you don't specify location_code if you use this field, you don't need to specify location_code you can receive the list of available locations of the search engine with their location_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations example: United States"New value: +"full name of search engine location required field if you don't specify location_code or location_coordinate if you use this field, you don't need to specify location_code or location_coordinate you can receive the list of available locations of the search engine with their location_name by making a separate request to the https://api.dataforseo.com/v3/ai_optimization/gemini/llm_scraper/locations example: United States"
    • Changedpost_dataforseo_ai_perplexity_llm_responses_live2 fields changed
      • addedInput schema / properties / body / items / properties / message_chain / items / properties / message / description
        Added value: +"message text"
      • addedInput schema / properties / body / items / properties / message_chain / items / properties / role / description
        Added value: +"role of the user from whom the message originates"
  9. 28 tool updates
    • First observedbatch_use
    • First observedget_dataforseo_ai_chat_gpt_llm_responses_models
    • First observedget_dataforseo_ai_claude_llm_responses_models
    • First observedget_dataforseo_ai_gemini_llm_responses_models
    • First observedget_dataforseo_ai_gemini_llm_scraper_languages
    • First observedget_dataforseo_ai_gemini_llm_scraper_locations
    • First observedget_dataforseo_ai_keyword_locales
    • First observedget_dataforseo_ai_llm_mentions_available_filters
    • First observedget_dataforseo_ai_llm_mentions_locales
    • First observedget_dataforseo_ai_perplexity_llm_responses_models
    • First observedget_details
    • First observedlist_categories
    • First observedpost_dataforseo_ai_chat_gpt_llm_responses_live
    • First observedpost_dataforseo_ai_chat_gpt_llm_scraper_live
    • First observedpost_dataforseo_ai_chat_gpt_llm_scraper_live_html
    • First observedpost_dataforseo_ai_claude_llm_responses_live
    • First observedpost_dataforseo_ai_gemini_llm_responses_live
    • First observedpost_dataforseo_ai_gemini_llm_scraper_live
    • First observedpost_dataforseo_ai_gemini_llm_scraper_live_html
    • First observedpost_dataforseo_ai_keyword_volume_live
    • First observedpost_dataforseo_ai_llm_mentions_aggregated_metrics_live
    • First observedpost_dataforseo_ai_llm_mentions_cross_metrics_live
    • First observedpost_dataforseo_ai_llm_mentions_search_live
    • First observedpost_dataforseo_ai_llm_mentions_top_domains_live
    • First observedpost_dataforseo_ai_llm_mentions_top_pages_live
    • First observedpost_dataforseo_ai_perplexity_llm_responses_live
    • 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 the whole search picture — what you rank for, who outranks you, who links to them, what is broken on the site, and whether ChatGPT names you at all. Normally that is three SEO vendors and three subscriptions. **What you can ask for** • "What does this domain rank for, and which competitors take the same keywords?" • "Who links to my competitor and not to me?" • "Crawl this site and list the pages with broken tags or duplicate content." • "Does Perplexity cite us when asked about this category?" • "How hard is this keyword, and what does the SERP look like today?" **How to use it** Point any MCP client at https://mcp.aisa.one/seo/mcp and sign in with OAuth — there is no key to create or paste. 60 tools spanning DataForSEO, Semrush and Ahrefs: SERPs, keywords and difficulty, backlinks and referring domains, on-page crawling, domain authority, and answers from ChatGPT, Claude, Gemini and Perplexity. **Why this rather than the source** Three indexes behind one account, so you can cross-check a number instead of trusting one vendor's version of it. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Check the ranking here, then ask the same agent for that competitor's traffic mix, its ad spend, or the person to email — 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** Narrower endpoints: https://mcp.aisa.one/seo-serp/mcp · /seo-keywords/mcp · /seo-backlinks/mcp · /seo-onpage/mcp · /seo-labs/mcp · /seo-ai-visibility/mcp · /seo-content/mcp · /seo-domains/mcp · /seo-business/mcp · /seo-merchant/mcp · /seo-apps/mcp · /seo-serp-other-engines/mcp

  • Your agent needs the derived numbers — domain authority, what a site ranks for, related and relevant keywords, search intent, and who the real competitors are — for Google, Amazon and the app stores. **What you can ask for** • "What is this domain's authority, and how has its rank history moved?" • "Which keywords does this site rank for, and with what intent?" • "Who are this domain's organic competitors, and where do we overlap?" • "Which keywords does this Amazon product rank for?" • "Compare these two domains keyword by keyword." **How to use it** Point any MCP client at https://mcp.aisa.one/seo-labs/mcp and sign in with OAuth — there is no key to create or paste. 46 tools: ranked, related and relevant keywords, keyword ideas and intent, domain authority and rank history, competitor and intersection analysis, bulk metrics, plus the same shapes for Amazon products and Apple and Google Play apps. **Why this rather than the source** Ahrefs domain rating, Semrush rank history and DataForSEO Labs answering the same questions side by side. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Size the competitor here, then ask the same agent for their traffic mix or their contacts — 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.

  • 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 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.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    AI search intelligence + Ahrefs-class SEO suite as 59 MCP tools. Track your brand across ChatGPT, Google AI Overview, Gemini, Claude, and Perplexity with persona-anchored Brand Radar dispatches.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to perform live Google SERP searches, run on-page and full-site SEO audits with prioritized fixes, and check brand visibility in AI answer engines via four MCP tools.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to run brand-visibility audits by querying multiple AI engines, generating competitive leaderboards, and identifying growth opportunities. Integrates with any MCP-capable client to measure and act on brand discoverability in AI recommendations.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources