Skip to main content
Glama

AIsa Content & Sentiment

Server Details

Your agent needs to know where a brand or a phrase is being talked about across the web — with the trend line, the sentiment and the ratings attached.

What you can ask for • "Where is our brand cited across the web this quarter, and is that rising?" • "What is the sentiment around this phrase?" • "How do ratings for this product distribute?" • "Which categories is this topic trending in?" • "Summarise everything published about this term."

How to use it Point any MCP client at https://mcp.aisa.one/seo-content/mcp and sign in with OAuth — there is no key to create or paste. 10 tools: content search, summary, phrase and category trends, sentiment analysis, rating distribution, plus the filters, categories, languages and locations behind them.

It is also a door to the rest The same login reaches 26 sources and 580+ operations. Find where you are mentioned here, then ask the same agent who links to those pages — 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
93.8% over 41 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

B3.1/5.0

Scored across 17 tools

Disambiguation3/5

The DataForSEO content tools (search, summary, sentiment, trends, rating distribution) are clearly distinct, but the router/billing layer introduces confusion: 'use' is explicitly a deprecated alias of 'batch_use', and 'list_categories' vs 'get_dataforseo_content_categories' are easy to mix up. Descriptions help, but the deprecated duplicate and dual category tools create real boundaries issues.

Naming Consistency3/5

All snake_case, but conventions are mixed: a generic verb layer (search, use, account, list_categories), a batch_* family, and long get_/post_dataforseo_content_* names with redundant prefixes. The dataforseo family is internally consistent, but the overall set does not follow one predictable pattern.

Tool Count4/5

17 tools is slightly heavy but justified: about 10 are domain content/sentiment endpoints plus reference-data lookups, and 6-7 form the discovery/quoting/execution/billing layer. Each tool has a plausible role, aside from the deprecated 'use'.

Completeness4/5

The content-analysis surface is well covered: keyword search, summary, sentiment, rating distribution, phrase/category trends, plus reference filters, categories, languages, and locations. Gaps are minor (only _live variants, no task-based/standard or historical endpoints), which agents can work around.

Available Tools

17 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_content_available_filtersFilters for Content Analysis APIB
Read-onlyIdempotent
Inspect

‌‌ Here you will find all the necessary information about filters that can be used with Content Analysis 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?

The annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered without the description. The description adds pricing context (usage-based, ~$0.012 estimate), which is genuinely useful and not in the structured fields, but it says nothing about output shape or how the filter data should be consumed.

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 comes first, which is good, but it is preceded by stray zero-width characters and padded by injected pricing-template markup. The ratio of useful content to boilerplate is mediocre for a one-line reference statement.

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 no parameters, an output schema, and annotations covering the safety profile, most structured burden is already carried elsewhere. What is missing is the connective guidance an agent needs — that this is the discovery step whose results feed the filter arguments of the content search endpoints.

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 disambiguate on the input side.

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?

It states the subject (filters usable with Content Analysis API endpoints) but not the action or the return — it never says it returns the set of available filter definitions. The sentence largely restates the name and title rather than clarifying what the tool actually produces.

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

Usage Guidelines2/5

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

There is no indication of when to call this versus siblings like get_dataforseo_content_categories, get_dataforseo_content_languages, or the post_*_live search tools. The obvious relationship — call this before constructing filtered content searches — is left entirely to inference.

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

get_dataforseo_content_categoriesList of Categories for Content Analysis APIA
Read-onlyIdempotent
Inspect

We use Google product and service categories. This endpoint will provide you with the full list of available categories. You can also download the CSV file by this link.

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, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds that the data is a static Google taxonomy and mentions a CSV download, plus a billing note (~$0.012 default estimate), which is genuinely useful context beyond the annotations. It omits any statement about response size, caching, or freshness of the category list.

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?

Two short sentences front-load the source of the taxonomy and what is returned, with no padding. The pricing boilerplate is injected markup rather than authored text, and the dangling 'by this link' phrase is the only minor dead weight.

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 tool has no parameters, so the definition is nearly complete for a simple enumeration endpoint. The one real gap is routing guidance relative to the overlapping sibling list_categories.

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 is 4. The description correctly implies the call is argument-free ('this endpoint will provide you with the full list').

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 ('provide you with the full list of available categories') and identifies the category taxonomy as Google product and service categories. However, it does not distinguish itself from the sibling 'list_categories', which sounds like it does the same thing, so an agent cannot confidently choose between them from the text alone.

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 never says when to call this versus the many sibling list endpoints (e.g. list_categories, get_dataforseo_content_languages, get_dataforseo_content_locations) or the live post endpoints. It only states what the endpoint returns, leaving the agent to infer usage entirely from context.

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

get_dataforseo_content_languagesList of Languages for Content Analysis APIB
Read-onlyIdempotent
Inspect

You will receive the list of languages 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.1/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 the safety and idempotency profile is fully covered. The description adds billing context (usage-based, ~$0.012 estimate), which is genuinely useful behavioral information not in the annotations, but says nothing about auth or rate limits.

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

Conciseness2/5

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

The second sentence about JSON-encoded data and a tasks array duplicates what the existing output schema already conveys, and the multi-line pricing comment block is verbose boilerplate. Only the first sentence is load-bearing, so the definition is padded rather than front-loaded.

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 zero parameters, a rich annotation set, and an output schema present, the description only needs to state purpose and cost, which it does. It could still note that this is a static, parameter-free reference lookup to be used before language-scoped content calls, which would close the remaining 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?

The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. The statement about receiving a tasks array does not add parameter meaning, but none is needed here.

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 resource (the list of languages) for a specific API (Content Analysis), which is clear enough to identify the tool. However, it does not differentiate itself from closely related lookup siblings such as get_dataforseo_content_locations or get_dataforseo_content_categories, so an agent must infer the distinction from names alone.

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

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 tool versus the other reference-list siblings, nor any stated prerequisites or sequencing (e.g., call before content search to resolve a language code). The description merely asserts what you receive, leaving usage entirely to inference.

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

get_dataforseo_content_locationsList of Locations for Content Analysis APIC
Read-onlyIdempotent
Inspect

You will receive the list of locations by this API call.

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

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds no behavioral context beyond restating the return, and contains no information about rate limits, response format, or the billing caveat being pricing boilerplate rather than tool 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 but redundant with the title, and it is followed by a large block of pricing boilerplate that is not about the tool's function. The functional content is front-loaded, but the pricing comment dilutes it.

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, the description needn't explain return values, so the main gaps are the lack of any guide to what a location is or how to use it. For a trivial parameterless lookup, this is minimally adequate but leaves the agent without selection rationale among sibling content tools.

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 the baseline is 4. There is nothing to document, and the description correctly implies a parameterless list call.

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

Purpose2/5

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

The description says 'You will receive the list of locations by this API call,' which largely restates the title 'List of Locations for Content Analysis API.' It conveys that the tool returns locations, but adds no specificity about what a 'location' means (country/city/region codes) or how it differs from sibling tools like get_dataforseo_content_languages.

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 is given on when to use this tool versus alternatives such as get_dataforseo_content_languages or get_dataforseo_content_categories, nor any prerequisites or context about when location data is needed. The agent must infer usage from the name alone.

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

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_content_category_trends_liveContent Analysis – Category Trends APIC
Destructive
Inspect

‌ This endpoint will provide you with data on all citations in the target category for the indicated date range.

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

NameRequiredDescriptionDefault
bodyNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior1/5

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

The description characterizes the operation purely as 'provide you with data on all citations,' i.e. a read, while the annotations declare readOnlyHint=false and destructiveHint=true. The agent is given contradictory signals about the operation's safety profile, and the description adds no compensating behavioral detail (auth needs, rate limits, side effects).

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

Conciseness4/5

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

The core purpose is stated in one front-loaded sentence with no filler, and the pricing note is clearly delimited. Slight deduction for the leading zero-width character and boilerplate billing block that add noise without guidance.

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 cover some surface area. However, for an endpoint whose body holds ten nested knobs and two required fields, the description gives an agent no actionable invocation guidance, so it is only minimally complete.

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?

The single top-level parameter 'body' carries no description at all, and the description contributes nothing about its contents. It never mentions that date_from and category_code are required, nor anything about date_group, search_mode, rank_scale, internal_list_limit, or the filter syntax, leaving the agent to dig through the nested 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 and resource: retrieves data on all citations in a target category over a date range. That is specific enough for an agent to understand the operation, but it never distinguishes this endpoint from siblings like post_dataforseo_content_phrase_trends_live or post_dataforseo_content_rating_distribution_live, which are also 'content analysis' retrievals.

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 statement, no exclusions, and no mention of alternatives despite eight closely related sibling endpoints. The only contextual hint is the inline 'indicated date range' phrase, which is descriptive rather than prescriptive.

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

post_dataforseo_content_phrase_trends_liveContent Analysis – Phrase Trends APIC
Destructive
Inspect

‌ This endpoint will provide you with data on all citations of the target keyword for the indicated date range.

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

NameRequiredDescriptionDefault
bodyNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior1/5

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

Annotations declare destructiveHint=true and readOnlyHint=false, but the description says the endpoint 'will provide you with data,' implying a read-only retrieval. This is a direct contradiction. No behavioral context beyond pricing is offered.

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?

The core description is a single front-loaded sentence with no wasted words. The appended pricing note is separate and clearly delimited.

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 complex endpoint with numerous nested parameters, the description is incomplete: it omits usage guidance, parameter details, and any acknowledgment of the contradictory safety annotations. Output schema presence covers return values, but the rest is inadequate.

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?

The description vaguely references 'target keyword' and 'indicated date range,' loosely mapping to two of the many nested parameters, but provides no format, required status, or detail for the body array. With schema description coverage reported as 0%, the description fails to compensate as required.

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 resource: 'provide you with data on all citations of the target keyword for the indicated date range.' This clearly conveys what the tool does, though it does not distinguish it from sibling endpoints like post_dataforseo_content_category_trends_live or post_dataforseo_content_search_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?

No guidance is given on when to use this tool versus alternatives. The description does not mention prerequisites, exclusions, or sibling tools, leaving usage context entirely 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_content_rating_distribution_liveContent Analysis – Rating Distribution APIC
Destructive
Inspect

‌ This endpoint will provide you with rating distribution data for the keyword and other parameters specified in the request.

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

NameRequiredDescriptionDefault
bodyNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, openWorldHint=true, readOnlyHint=false and idempotentHint=false, so the safety profile is carried by structured data; the description does not contradict it. What the description does add is a billing estimate ($0.0276 default request estimate, explicitly not a fixed price), which is genuinely useful context for a paid live call. It stops there — no mention of auth, rate limits, latency, or what happens to the account state.

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 body is a single sentence plus a pricing comment block, so there is no verbosity to trim and the purpose statement is front-loaded. But the size is a symptom of under-specification rather than discipline — a stray leading character and template pricing markup occupy most of the text while the functional guidance is absent.

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 this is a complex, filter-heavy, billed endpoint with a nested request object, and the description omits everything an agent would need: that all parameters are optional, how the filter language works, and any hint of the distinction from other live content endpoints. For this complexity level, the definition is materially incomplete.

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 is undocumented at the top level, and the description contributes nothing about keyword requirements, filter arrays, thresholds, or the fact that zero parameters are required. Although the nested schema carries rich per-field descriptions, the prose itself compensates for none of the coverage gap, which the scoring rule requires at <50% coverage.

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 names a concrete resource — rating distribution data — which does distinguish it from siblings like post_dataforseo_content_sentiment_analysis_live or post_dataforseo_content_search_live. However, the verb is the generic 'will provide you with,' and the trailing phrase 'for the keyword and other parameters specified in the request' is boilerplate that adds no discriminating information. It never clarifies what is being rated (content citations, categories, etc.), so an agent must infer the semantics.

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

Usage Guidelines2/5

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

There is no indication of when to select this endpoint over the numerous sibling content-analysis endpoints (search, summary, phrase_trends, category_trends, sentiment_analysis). No prerequisites, no exclusions, no mention that it is a live/billed call versus a cached or task-based alternative. The only usage signal is the implicit 'specified in the request' phrasing.

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

post_dataforseo_content_search_liveContent Analysis – Search APIC
Destructive
Inspect

‌ This endpoint will provide you with detailed citation data available for the target keyword.

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

NameRequiredDescriptionDefault
bodyNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

The description frames the tool as a data-retrieval query ('provide you with detailed citation data'), while the annotations declare destructiveHint=true and readOnlyHint=false — a substantive mismatch that could make an agent hesitate or misuse the tool. The only genuine added context beyond annotations is the usage-based billing note ($0.0276 default estimate), which is useful but does not resolve the behavioral conflict.

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 text is a single front-loaded sentence plus a compact, clearly delimited pricing disclosure, with no redundant filler. It is tight, though its brevity reflects under-specification rather than disciplined conciseness.

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

Completeness2/5

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

For a tool with a large nested request schema, an output schema, and a crowded sibling set, the description omits usage context, parameter guidance, and any behavioral caveats. The presence of an output schema excuses it from explaining return values, but it leaves too many gaps for correct invocation.

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?

The sole top-level parameter `body` carries no description, and the description adds nothing about the parameters — it never mentions the required nested `keyword`, the filter/order_by syntax, pagination via offset/offset_token, or search_mode. While the nested schema fields are individually well documented, the description contributes zero parameter meaning and does not compensate for the 0% top-level coverage.

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 tool returns 'detailed citation data available for the target keyword,' which conveys the resource and input, but the action is phrased loosely ('provide you with') rather than as a clear search/retrieval verb. It offers no differentiation from the many adjacent DataForSEO tools (e.g. post_dataforseo_content_summary_live, post_dataforseo_content_sentiment_analysis_live), so an agent cannot route confidently among siblings from the text alone.

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 statement, no when-not-to-use exclusion, and no named alternative despite ~60 sibling tools that overlap heavily. An agent gets no signal about when citation search is the right choice versus content summary or sentiment analysis.

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

post_dataforseo_content_sentiment_analysis_liveContent Analysis – Sentiment Analysis APIC
Destructive
Inspect

This endpoint will provide you with sentiment analysis data for the citations available for the target keyword. for more info please visit 'https://docs.dataforseo.com/v3/content_analysis/sentiment_analysis/live/?bash'

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

NameRequiredDescriptionDefault
bodyNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.5/5.0
Behavior1/5

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

The description describes a retrieval operation ('provide you with sentiment analysis data'), but the annotations declare readOnlyHint=false and destructiveHint=true. An agent reading these together gets directly conflicting signals about whether this call mutates or destroys anything. The description also discloses nothing about per-request cost semantics beyond the generic pricing block, nor any rate/auth constraints. This is an Annotation Contradiction.

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

Conciseness4/5

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

The core sentence is short, front-loaded, and waste-free, followed by a docs link and pricing note. It is appropriately sized, though the URL and billing boilerplate are somewhat templated rather than informative.

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

Completeness2/5

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

An output schema exists so return values need not be described, and the pricing estimate is a useful addition. However, for a filtered content-analysis endpoint with a required per-item keyword and many optional filter/threshold fields, the description leaves the agent without any operational framing for constructing the request.

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% at the top level, and the single exposed parameter is an opaque 'body' array. The description only implies a 'target keyword' exists but never explains that keyword is required per item, nor mentions filters, thresholds, or the rank_scale/page_type options documented deeper in the schema. It does not compensate for the coverage gap.

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

Purpose4/5

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

The description names a specific operation and resource: sentiment analysis data for the citations available for a target keyword. That is materially more specific than the title and distinguishes it from content_search_live and content_summary_live by scope. It stops short of explicitly contrasting itself with those siblings, so it does not reach 5.

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 any alternative endpoint. The only usage pointer is a bare documentation URL, which pushes the burden of figuring out when this applies onto the agent.

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

post_dataforseo_content_summary_liveContent Analysis – Summary APIC
Destructive
Inspect

‌ This endpoint will provide you with an overview of citation data available for the target keyword.

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

NameRequiredDescriptionDefault
bodyNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior1/5

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

The description frames the tool as returning data ('provide you with an overview of citation data'), i.e. a retrieval operation, while the annotations declare readOnlyHint=false and destructiveHint=true. Read semantics versus a destructive-write annotation is a direct action-semantics mismatch, so per the rubric this scores 1. The one genuinely useful behavioral addition is the billing note ($0.0276 default estimate, usage-based, non-fixed), which is the only correctable signal here.

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 purpose is front-loaded in a single sentence and the pricing block is clearly demarcated, so there is no real waste. It is slightly under-specified rather than over-long, and a stray zero-width character precedes the text, but structurally it is efficient.

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 no explanation, and the billing note covers the cost dimension. What is missing for a live, billed, keyword-driven POST endpoint is any cue about required input (keyword), filtering scope, or how this differs from the other Content Analysis endpoints. Minimum viable, with clear gaps.

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?

The schema reports 0% top-level description coverage (the single 'body' array parameter itself is undocumented), and the description does not compensate at all — it never mentions the required 'keyword' field or any of the filter/threshold fields (page_type, rank_scale, internal_list_limit, connotation thresholds). The nested property descriptions in the schema do much of the work, which keeps this above 1, but the description adds nothing 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 concrete verb and resource ('provide you with an overview of citation data available for the target keyword'), which is specific enough for an agent to know this returns aggregated Content Analysis summary metrics. However, it never distinguishes itself from близкие siblings such as post_dataforseo_content_search_live or post_dataforseo_content_sentiment_analysis_live, so the agent must infer the difference from the name alone.

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

Usage Guidelines2/5

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

There is no statement of when to use this endpoint versus alternatives, no prerequisites (e.g., that a keyword must be supplied in the body), and no conditions under which a different Content Analysis endpoint is preferable. Usage is only weakly implied by 'overview ... for the target keyword'.

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. 8 tool updates
    • Addedaccount
    • Removedget_details
    • Changedpost_dataforseo_content_category_trends_live3 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "Provider0A3E90081762_AisaDataforseoFilterJsonValue": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "type": "boolean"
        +      },
        +      {
        +        "additionalProperties": {
        +          "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +        },
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      {
        +        "items": {
        +          "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +        },
        +        "type": "array"
        +      }
        +    ],
        +    "description": "JSON representation of filter values and nested expressions. Field names, operators, condition counts and operand compatibility remain provider-validated as documented for each endpoint; this is not a complete filter-language validator."
        +  }
        +}
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "category_code": {
        +        "description": "<em>target category code</em><br><strong>required field</strong><br>to obtain a full list of available categories, refer to the <a href=\"/v3/content_analysis/categories/\" rel=\"noopener noreferrer\" target=\"_blank\">Categories</a> endpoint",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "date_from": {
        +        "description": "<em>starting date of the time range</em><br><strong>required field</strong><br>minimum value: <code>2022-10-31</code><br>date format: <code>\"yyyy-mm-dd\"</code><br>example:<br><code>\"2019-01-15\"</code>",
        +        "type": "string"
        +      },
        +      "date_group": {
        +        "description": "<em>time range which will be used to group the results</em><br>optional field<br>default value: <code>month</code><br>possible values: <code>day</code>, <code>week</code>, <code>month</code>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "date_to": {
        +        "description": "<em>ending date of the time range</em><br>optional field<br>if you don't specify this field, today's date will be used by default<br>date format: <code>\"yyyy-mm-dd\"</code><br>example:<br><code>\"2019-01-15\"</code>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "initial_dataset_filters": {
        +        "description": "<em>initial dataset filtering parameters</em><br>optional field<br>initial filtering parameters that apply to fields in the <a href=\"/v3/content_analysis/search/live/?bash\" target=\"_blank\">Search endpoint</a>;<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>has</code>, <code>has_not</code>, <code>match</code>, <code>not_match</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"domain\",\"&lt;&gt;\", \"logitech.com\"]</code><p><code>[[\"domain\",\"&lt;&gt;\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",1000]]</code><p><code>[[\"domain\",\"&lt;&gt\",\"logitech.com\"]],<br>\"and\",<br>[[\"content_info.connotation_types.negative\",\"&gt;\",1000],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a><br>learn more about the initial dataset filters in <a href=\"https://dataforseo.com/help-center/what-are-the-initial-dataset-filters-and-how-do-they-work\" rel=\"noopener noreferrer\" target=\"_blank\">this help center article.</a>",
        +        "items": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "number"
        +            },
        +            {
        +              "type": "boolean"
        +            },
        +            {
        +              "additionalProperties": {
        +                "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +              },
        +              "type": [
        +                "object",
        +                "null"
        +              ]
        +            },
        +            {
        +              "items": {
        +                "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +              },
        +              "type": "array"
        +            }
        +          ],
        +          "description": "JSON representation of filter values and nested expressions. Field names, operators, condition counts and operand compatibility remain provider-validated as documented for each endpoint; this is not a complete filter-language validator."
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "internal_list_limit": {
        +        "description": "<em>maximum number of elements within internal arrays</em><br>optional field<br>you can use this field to limit the number of elements within the following arrays:<br><code>top_domains</code><br><code>text_categories</code><br><code>page_categories</code><br><code>countries</code><br><code>languages</code><br>default value: <code>1</code><br>maximum value: <code>20</code>",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "page_type": {
        +        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "rank_scale": {
        +        "description": "<em>defines the scale used for calculating and displaying the <code>rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "search_mode": {
        +        "description": "<em>results grouping type</em><br>optional field<br>possible grouping types:<br><code>as_is</code> - returns data on all citations for the target <code>category_code</code><br><code>one_per_domain</code> - returns data on one citation of the <code>category_code</code> per domain<br>default value: <code>as_is</code>",
        +        "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"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / oneOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "category_code": 10994,
        -        "date_from": "2022-09-01",
        -        "date_group": "month",
        -        "search_mode": "as_is"
        -      }
        -    ],
        -    "properties": {
        -      "category_code": {
        -        "description": "<em>target category code</em><br><strong>required field</strong><br>to obtain a full list of available categories, refer to the <a href=\"/v3/content_analysis/categories/\" rel=\"noopener noreferrer\" target=\"_blank\">Categories</a> endpoint",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "date_from": {
        -        "description": "<em>starting date of the time range</em><br><strong>required field</strong><br>minimum value: <code>2022-10-31</code><br>date format: <code>\"yyyy-mm-dd\"</code><br>example:<br><code>\"2019-01-15\"</code>",
        -        "type": "string"
        -      },
        -      "date_group": {
        -        "description": "<em>time range which will be used to group the results</em><br>optional field<br>default value: <code>month</code><br>possible values: <code>day</code>, <code>week</code>, <code>month</code>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "date_to": {
        -        "description": "<em>ending date of the time range</em><br>optional field<br>if you don't specify this field, today's date will be used by default<br>date format: <code>\"yyyy-mm-dd\"</code><br>example:<br><code>\"2019-01-15\"</code>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "initial_dataset_filters": {
        -        "description": "<em>initial dataset filtering parameters</em><br>optional field<br>initial filtering parameters that apply to fields in the <a href=\"/v3/content_analysis/search/live/?bash\" target=\"_blank\">Search endpoint</a>;<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>has</code>, <code>has_not</code>, <code>match</code>, <code>not_match</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"domain\",\"&lt;&gt;\", \"logitech.com\"]</code><p><code>[[\"domain\",\"&lt;&gt;\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",1000]]</code><p><code>[[\"domain\",\"&lt;&gt\",\"logitech.com\"]],<br>\"and\",<br>[[\"content_info.connotation_types.negative\",\"&gt;\",1000],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a><br>learn more about the initial dataset filters in <a href=\"https://dataforseo.com/help-center/what-are-the-initial-dataset-filters-and-how-do-they-work\" rel=\"noopener noreferrer\" target=\"_blank\">this help center article.</a>",
        -        "items": {
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "internal_list_limit": {
        -        "description": "<em>maximum number of elements within internal arrays</em><br>optional field<br>you can use this field to limit the number of elements within the following arrays:<br><code>top_domains</code><br><code>text_categories</code><br><code>page_categories</code><br><code>countries</code><br><code>languages</code><br>default value: <code>1</code><br>maximum value: <code>20</code>",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "page_type": {
        -        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "rank_scale": {
        -        "description": "<em>defines the scale used for calculating and displaying the <code>rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "search_mode": {
        -        "description": "<em>results grouping type</em><br>optional field<br>possible grouping types:<br><code>as_is</code> - returns data on all citations for the target <code>category_code</code><br><code>one_per_domain</code> - returns data on one citation of the <code>category_code</code> per domain<br>default value: <code>as_is</code>",
        -        "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"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
    • Changedpost_dataforseo_content_phrase_trends_live3 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "Provider0A3E90081762_AisaDataforseoFilterJsonValue": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "type": "boolean"
        +      },
        +      {
        +        "additionalProperties": {
        +          "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +        },
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      {
        +        "items": {
        +          "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +        },
        +        "type": "array"
        +      }
        +    ],
        +    "description": "JSON representation of filter values and nested expressions. Field names, operators, condition counts and operand compatibility remain provider-validated as documented for each endpoint; this is not a complete filter-language validator."
        +  }
        +}
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "date_from": {
        +        "description": "<em>starting date of the time range</em><br><strong>required field</strong><br>date format: <code>\"yyyy-mm-dd\"</code><br>example:<br><code>\"2019-01-15\"</code>",
        +        "type": "string"
        +      },
        +      "date_group": {
        +        "description": "<em>time range which will be used to group the results</em><br>optional field<br>default value: <code>month</code><br>possible values: <code>day</code>, <code>week</code>, <code>month</code>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "date_to": {
        +        "description": "<em>ending date of the time range</em><br>optional field<br>if you don't specify this field, today's date will be used by default<br>date format: <code>\"yyyy-mm-dd\"</code><br>example:<br><code>\"2019-01-15\"</code>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "initial_dataset_filters": {
        +        "description": "<em>initial dataset filtering parameters</em><br>optional field<br>initial filtering parameters that apply to fields in the <a href=\"/v3/content_analysis/search/live/?bash\" target=\"_blank\">Search endpoint</a>;<br><strong>you can add several filters at once (8 filters maximum);</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions;<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>has</code>, <code>has_not</code>, <code>match</code>, <code>not_match</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters;<br>example:<br><code>[\"domain\",\"&lt;&gt;\", \"logitech.com\"]</code><p><code>[[\"domain\",\"&lt;&gt;\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",1000]]</code><p><code>[[\"domain\",\"&lt;&gt\",\"logitech.com\"]],<br>\"and\",<br>[[\"content_info.connotation_types.negative\",\"&gt;\",1000],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a><br>learn more about the initial dataset filters in <a href=\"https://dataforseo.com/help-center/what-are-the-initial-dataset-filters-and-how-do-they-work\" rel=\"noopener noreferrer\" target=\"_blank\">this help center article.</a>",
        +        "items": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "number"
        +            },
        +            {
        +              "type": "boolean"
        +            },
        +            {
        +              "additionalProperties": {
        +                "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +              },
        +              "type": [
        +                "object",
        +                "null"
        +              ]
        +            },
        +            {
        +              "items": {
        +                "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +              },
        +              "type": "array"
        +            }
        +          ],
        +          "description": "JSON representation of filter values and nested expressions. Field names, operators, condition counts and operand compatibility remain provider-validated as documented for each endpoint; this is not a complete filter-language validator."
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "internal_list_limit": {
        +        "description": "<em>maximum number of elements within internal arrays</em><br>optional field<br>you can use this field to limit the number of elements within the following arrays:<br><code>top_domains</code><br><code>text_categories</code><br><code>page_categories</code><br><code>countries</code><br><code>languages</code><br>default value: <code>1</code><br>maximum value: <code>20</code>",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>target keyword</em><br><strong>required field</strong><br>UTF-8 encoding<br>the keywords will be converted to a lowercase format;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example: <br><code>\"keyword\": \"\\\"tesla palo alto\\\"\"</code><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"
        +      },
        +      "keyword_fields": {
        +        "additionalProperties": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "description": "<em>target keyword fields and target keywords</em><br>optional field<br>use this parameter to filter the dataset by keywords that certain fields should contain;<br>fields you can specify: <code>title</code>, <code>main_title</code>, <code>previous_title</code>, <code>snippet</code><br>you can indicate several fields;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example:<br>`\"keyword_fields\": {<br>\"snippet\": \"\\\"logitech mouse\\\"\",<br>\"main_title\": \"sale\"<br>}`",
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "page_type": {
        +        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "rank_scale": {
        +        "description": "<em>defines the scale used for calculating and displaying the <code>rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "search_mode": {
        +        "description": "<em>results grouping type</em><br>optional field<br>possible grouping types:<br><code>as_is</code> - returns data on all citations for the target <code>keyword</code><br><code>one_per_domain</code> - returns data on one citation of the <code>keyword</code> per domain<br>default value: <code>as_is</code>",
        +        "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"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / oneOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "date_from": "2022-09-01",
        -        "date_group": "month",
        -        "keyword": "logitech",
        -        "search_mode": "as_is"
        -      }
        -    ],
        -    "properties": {
        -      "date_from": {
        -        "description": "<em>starting date of the time range</em><br><strong>required field</strong><br>date format: <code>\"yyyy-mm-dd\"</code><br>example:<br><code>\"2019-01-15\"</code>",
        -        "type": "string"
        -      },
        -      "date_group": {
        -        "description": "<em>time range which will be used to group the results</em><br>optional field<br>default value: <code>month</code><br>possible values: <code>day</code>, <code>week</code>, <code>month</code>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "date_to": {
        -        "description": "<em>ending date of the time range</em><br>optional field<br>if you don't specify this field, today's date will be used by default<br>date format: <code>\"yyyy-mm-dd\"</code><br>example:<br><code>\"2019-01-15\"</code>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "initial_dataset_filters": {
        -        "description": "<em>initial dataset filtering parameters</em><br>optional field<br>initial filtering parameters that apply to fields in the <a href=\"/v3/content_analysis/search/live/?bash\" target=\"_blank\">Search endpoint</a>;<br><strong>you can add several filters at once (8 filters maximum);</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions;<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>has</code>, <code>has_not</code>, <code>match</code>, <code>not_match</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters;<br>example:<br><code>[\"domain\",\"&lt;&gt;\", \"logitech.com\"]</code><p><code>[[\"domain\",\"&lt;&gt;\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",1000]]</code><p><code>[[\"domain\",\"&lt;&gt\",\"logitech.com\"]],<br>\"and\",<br>[[\"content_info.connotation_types.negative\",\"&gt;\",1000],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a><br>learn more about the initial dataset filters in <a href=\"https://dataforseo.com/help-center/what-are-the-initial-dataset-filters-and-how-do-they-work\" rel=\"noopener noreferrer\" target=\"_blank\">this help center article.</a>",
        -        "items": {
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "internal_list_limit": {
        -        "description": "<em>maximum number of elements within internal arrays</em><br>optional field<br>you can use this field to limit the number of elements within the following arrays:<br><code>top_domains</code><br><code>text_categories</code><br><code>page_categories</code><br><code>countries</code><br><code>languages</code><br>default value: <code>1</code><br>maximum value: <code>20</code>",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "keyword": {
        -        "description": "<em>target keyword</em><br><strong>required field</strong><br>UTF-8 encoding<br>the keywords will be converted to a lowercase format;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example: <br><code>\"keyword\": \"\\\"tesla palo alto\\\"\"</code><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"
        -      },
        -      "keyword_fields": {
        -        "additionalProperties": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "description": "<em>target keyword fields and target keywords</em><br>optional field<br>use this parameter to filter the dataset by keywords that certain fields should contain;<br>fields you can specify: <code>title</code>, <code>main_title</code>, <code>previous_title</code>, <code>snippet</code><br>you can indicate several fields;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example:<br>`\"keyword_fields\": {<br>\"snippet\": \"\\\"logitech mouse\\\"\",<br>\"main_title\": \"sale\"<br>}`",
        -        "type": [
        -          "object",
        -          "null"
        -        ]
        -      },
        -      "page_type": {
        -        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "rank_scale": {
        -        "description": "<em>defines the scale used for calculating and displaying the <code>rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "search_mode": {
        -        "description": "<em>results grouping type</em><br>optional field<br>possible grouping types:<br><code>as_is</code> - returns data on all citations for the target <code>keyword</code><br><code>one_per_domain</code> - returns data on one citation of the <code>keyword</code> per domain<br>default value: <code>as_is</code>",
        -        "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"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
    • Changedpost_dataforseo_content_rating_distribution_live3 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "Provider0A3E90081762_AisaDataforseoFilterJsonValue": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "type": "boolean"
        +      },
        +      {
        +        "additionalProperties": {
        +          "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +        },
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      {
        +        "items": {
        +          "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +        },
        +        "type": "array"
        +      }
        +    ],
        +    "description": "JSON representation of filter values and nested expressions. Field names, operators, condition counts and operand compatibility remain provider-validated as documented for each endpoint; this is not a complete filter-language validator."
        +  }
        +}
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "initial_dataset_filters": {
        +        "description": "<em>initial dataset filtering parameters</em><br>optional field<br>initial filtering parameters that apply to fields in the <a href=\"/v3/content_analysis/search/live/?bash\" target=\"_blank\">Search endpoint</a><br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>has</code>, <code>has_not</code>, <code>match</code>, <code>not_match</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"domain\",\"&lt;&gt;\", \"logitech.com\"]</code><p><code>[[\"domain\",\"&lt;&gt;\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",1000]]</code><p><code>[[\"domain\",\"&lt;&gt\",\"logitech.com\"]],<br>\"and\",<br>[[\"content_info.connotation_types.negative\",\"&gt;\",1000],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a><br>learn more about the initial dataset filters in <a href=\"https://dataforseo.com/help-center/what-are-the-initial-dataset-filters-and-how-do-they-work\" rel=\"noopener noreferrer\" target=\"_blank\">this help center article.</a>",
        +        "items": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "number"
        +            },
        +            {
        +              "type": "boolean"
        +            },
        +            {
        +              "additionalProperties": {
        +                "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +              },
        +              "type": [
        +                "object",
        +                "null"
        +              ]
        +            },
        +            {
        +              "items": {
        +                "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +              },
        +              "type": "array"
        +            }
        +          ],
        +          "description": "JSON representation of filter values and nested expressions. Field names, operators, condition counts and operand compatibility remain provider-validated as documented for each endpoint; this is not a complete filter-language validator."
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "internal_list_limit": {
        +        "description": "<em>maximum number of elements within internal arrays</em><br>optional field<br>you can use this field to limit the number of elements within the following arrays:<br><code>top_domains</code><br><code>text_categories</code><br><code>page_categories</code><br><code>countries</code><br><code>languages</code><br>default value: <code>1</code><br>maximum value: <code>20</code>",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>target keyword</em><br><strong>required field</strong><br>UTF-8 encoding<br>the keywords will be converted to a lowercase format;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example: <br><code>\"keyword\": \"\\\"tesla palo alto\\\"\"</code><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"
        +      },
        +      "keyword_fields": {
        +        "additionalProperties": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "description": "<em>target keyword fields and target keywords</em><br>optional field<br>use this parameter to filter the dataset by keywords that certain fields should contain;<br>fields you can specify: <code>title</code>, <code>main_title</code>, <code>previous_title</code>, <code>snippet</code><br>you can indicate several fields;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example:<br>`\"keyword_fields\": {<br>\"snippet\": \"\\\"logitech mouse\\\"\",<br>\"main_title\": \"sale\"<br>}`",
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "page_type": {
        +        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "positive_connotation_threshold": {
        +        "description": "<em>positive connotation threshold</em><br>optional field<br>specified as the probability index threshold for positive sentiment related to the citation content<br>if you specify this field, <code>connotation_types</code> object in the response will only contain data on citations with <code>positive</code> sentiment probability more than or equal to the specified value<br>possible values: from <code>0</code> to <code>1</code><br>default value: <code>0.4</code>",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "rank_scale": {
        +        "description": "<em>defines the scale used for calculating and displaying the <code>rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "search_mode": {
        +        "description": "<em>results grouping type</em><br>optional field<br>possible grouping types:<br><code>as_is</code> - returns all citations for the target <code>keyword</code><br><code>one_per_domain</code> - returns one citation of the <code>keyword</code> per domain<br>default value: <code>as_is</code>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "sentiments_connotation_threshold": {
        +        "description": "<em>sentiment connotation threshold</em><br>optional field<br>specified as the probability index threshold for sentiment connotations related to the citation content<br>if you specify this field, <code>sentiment_connotations</code> object in the response will only contain data on citations where the probability per each sentiment is more than or equal to the specified value<br>possible values: from <code>0</code> to <code>1</code><br>default value: <code>0.4</code>",
        +        "type": [
        +          "number",
        +          "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"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / oneOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "internal_list_limit": 10,
        -        "keyword": "logitech",
        -        "search_mode": "as_is"
        -      }
        -    ],
        -    "properties": {
        -      "initial_dataset_filters": {
        -        "description": "<em>initial dataset filtering parameters</em><br>optional field<br>initial filtering parameters that apply to fields in the <a href=\"/v3/content_analysis/search/live/?bash\" target=\"_blank\">Search endpoint</a><br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>has</code>, <code>has_not</code>, <code>match</code>, <code>not_match</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"domain\",\"&lt;&gt;\", \"logitech.com\"]</code><p><code>[[\"domain\",\"&lt;&gt;\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",1000]]</code><p><code>[[\"domain\",\"&lt;&gt\",\"logitech.com\"]],<br>\"and\",<br>[[\"content_info.connotation_types.negative\",\"&gt;\",1000],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a><br>learn more about the initial dataset filters in <a href=\"https://dataforseo.com/help-center/what-are-the-initial-dataset-filters-and-how-do-they-work\" rel=\"noopener noreferrer\" target=\"_blank\">this help center article.</a>",
        -        "items": {
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "internal_list_limit": {
        -        "description": "<em>maximum number of elements within internal arrays</em><br>optional field<br>you can use this field to limit the number of elements within the following arrays:<br><code>top_domains</code><br><code>text_categories</code><br><code>page_categories</code><br><code>countries</code><br><code>languages</code><br>default value: <code>1</code><br>maximum value: <code>20</code>",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "keyword": {
        -        "description": "<em>target keyword</em><br><strong>required field</strong><br>UTF-8 encoding<br>the keywords will be converted to a lowercase format;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example: <br><code>\"keyword\": \"\\\"tesla palo alto\\\"\"</code><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"
        -      },
        -      "keyword_fields": {
        -        "additionalProperties": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "description": "<em>target keyword fields and target keywords</em><br>optional field<br>use this parameter to filter the dataset by keywords that certain fields should contain;<br>fields you can specify: <code>title</code>, <code>main_title</code>, <code>previous_title</code>, <code>snippet</code><br>you can indicate several fields;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example:<br>`\"keyword_fields\": {<br>\"snippet\": \"\\\"logitech mouse\\\"\",<br>\"main_title\": \"sale\"<br>}`",
        -        "type": [
        -          "object",
        -          "null"
        -        ]
        -      },
        -      "page_type": {
        -        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "positive_connotation_threshold": {
        -        "description": "<em>positive connotation threshold</em><br>optional field<br>specified as the probability index threshold for positive sentiment related to the citation content<br>if you specify this field, <code>connotation_types</code> object in the response will only contain data on citations with <code>positive</code> sentiment probability more than or equal to the specified value<br>possible values: from <code>0</code> to <code>1</code><br>default value: <code>0.4</code>",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "rank_scale": {
        -        "description": "<em>defines the scale used for calculating and displaying the <code>rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "search_mode": {
        -        "description": "<em>results grouping type</em><br>optional field<br>possible grouping types:<br><code>as_is</code> - returns all citations for the target <code>keyword</code><br><code>one_per_domain</code> - returns one citation of the <code>keyword</code> per domain<br>default value: <code>as_is</code>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "sentiments_connotation_threshold": {
        -        "description": "<em>sentiment connotation threshold</em><br>optional field<br>specified as the probability index threshold for sentiment connotations related to the citation content<br>if you specify this field, <code>sentiment_connotations</code> object in the response will only contain data on citations where the probability per each sentiment is more than or equal to the specified value<br>possible values: from <code>0</code> to <code>1</code><br>default value: <code>0.4</code>",
        -        "type": [
        -          "number",
        -          "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"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
    • Changedpost_dataforseo_content_search_live3 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "Provider0A3E90081762_AisaDataforseoFilterJsonValue": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "type": "boolean"
        +      },
        +      {
        +        "additionalProperties": {
        +          "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +        },
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      {
        +        "items": {
        +          "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +        },
        +        "type": "array"
        +      }
        +    ],
        +    "description": "JSON representation of filter values and nested expressions. Field names, operators, condition counts and operand compatibility remain provider-validated as documented for each endpoint; this is not a complete filter-language validator."
        +  }
        +}
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "filters": {
        +        "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>match</code>, <code>not_match</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"country\",\"=\", \"US\"]</code><p><code>[[\"domain_rank\",\"&gt;\",800],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",0.9]]</code><p><code>[[\"domain_rank\",\"&gt;\",800],<br>\"and\",<br>[[\"page_types\",\"has\",\"ecommerce\"],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a>",
        +        "items": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "number"
        +            },
        +            {
        +              "type": "boolean"
        +            },
        +            {
        +              "additionalProperties": {
        +                "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +              },
        +              "type": [
        +                "object",
        +                "null"
        +              ]
        +            },
        +            {
        +              "items": {
        +                "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +              },
        +              "type": "array"
        +            }
        +          ],
        +          "description": "JSON representation of filter values and nested expressions. Field names, operators, condition counts and operand compatibility remain provider-validated as documented for each endpoint; this is not a complete filter-language validator."
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>target keyword</em><br><strong>required field</strong><br>UTF-8 encoding<br>the keywords will be converted to a lowercase format;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example: <br>`\"keyword\": \"\\\"tesla palo alto\\\"\"`<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"
        +      },
        +      "keyword_fields": {
        +        "additionalProperties": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "description": "<em>target keyword fields and target keywords</em><br>optional field<br>use this parameter to filter the dataset by keywords that certain fields should contain;<br>fields you can specify: <code>title</code>, <code>main_title</code>, <code>previous_title</code>, <code>snippet</code><br>you can indicate several fields;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example:<br>`\"keyword_fields\": {<br>\"snippet\": \"\\\"logitech mouse\\\"\",<br>\"main_title\": \"sale\"<br>}\"`",
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "limit": {
        +        "description": "<em>the maximum number of returned citations</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "offset": {
        +        "description": "<em>offset in the results array of returned citations</em><br>optional field<br>default value: <code>0</code><br>if you specify the <code>10</code> value, the first ten citations in the results array will be omitted and the data will be provided for the successive citations<br><strong>Note:</strong> we recommend using this parameter only when retrieving up to 10,000 results<br>for retrieving over 10,000 results, use the <code>offset_token</code> instead.",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "offset_token": {
        +        "description": "<em>offset token for subsequent requests</em><br>optional field<br>provided in the identical field of the response to each request;<br>use this parameter to avoid timeouts while trying to obtain over 10,000 results in a single request;<br>by specifying the unique <code>offset_token</code> value from the response array, you will get the subsequent results of the initial task;<br><code>offset_token</code> values are unique for each subsequent task <br><strong>Note:</strong> if the <code>offset_token</code> is specified in the request, all other parameters except <code>limit</code> will not be taken into account when processing a task<br>learn more about this parameter on our <a href=\"https://dataforseo.com/help-center/what-is-the-difference-between-the-offset-and-offset_token-parameters#offset_token\" target=\"_blank\">Help Center</a>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "order_by": {
        +        "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"content_info.sentiment_connotations.anger,desc\"]</code><br>default rule:<br><code>[\"content_info.sentiment_connotations.anger,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"content_info.sentiment_connotations.anger,desc\",\"keyword_data.keyword_info.cpc,desc\"]</code>",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "page_type": {
        +        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "rank_scale": {
        +        "description": "<em>defines the scale used for calculating and displaying the <code>domain_rank</code>, and <code>url_rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "search_mode": {
        +        "description": "<em>results grouping type</em><br>optional field<br>possible grouping types:<br><code>as_is</code> - returns all citations for the target <code>keyword</code><br><code>one_per_domain</code> - returns one citation of the <code>keyword</code> per domain<br>default value: <code>as_is</code>",
        +        "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"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / oneOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "filters": [
        -          "main_domain",
        -          "=",
        -          "reviewfinder.ca"
        -        ],
        -        "keyword": "logitech",
        -        "keyword_fields": {
        -          "snippet": "logitech"
        -        },
        -        "limit": 10,
        -        "order_by": [
        -          "content_info.sentiment_connotations.anger,desc"
        -        ],
        -        "page_type": [
        -          "ecommerce",
        -          "news",
        -          "blogs",
        -          "message-boards",
        -          "organization"
        -        ],
        -        "search_mode": "as_is"
        -      }
        -    ],
        -    "properties": {
        -      "filters": {
        -        "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>match</code>, <code>not_match</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"country\",\"=\", \"US\"]</code><p><code>[[\"domain_rank\",\"&gt;\",800],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",0.9]]</code><p><code>[[\"domain_rank\",\"&gt;\",800],<br>\"and\",<br>[[\"page_types\",\"has\",\"ecommerce\"],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a>",
        -        "items": {
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "keyword": {
        -        "description": "<em>target keyword</em><br><strong>required field</strong><br>UTF-8 encoding<br>the keywords will be converted to a lowercase format;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example: <br>`\"keyword\": \"\\\"tesla palo alto\\\"\"`<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"
        -      },
        -      "keyword_fields": {
        -        "additionalProperties": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "description": "<em>target keyword fields and target keywords</em><br>optional field<br>use this parameter to filter the dataset by keywords that certain fields should contain;<br>fields you can specify: <code>title</code>, <code>main_title</code>, <code>previous_title</code>, <code>snippet</code><br>you can indicate several fields;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example:<br>`\"keyword_fields\": {<br>\"snippet\": \"\\\"logitech mouse\\\"\",<br>\"main_title\": \"sale\"<br>}\"`",
        -        "type": [
        -          "object",
        -          "null"
        -        ]
        -      },
        -      "limit": {
        -        "description": "<em>the maximum number of returned citations</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "offset": {
        -        "description": "<em>offset in the results array of returned citations</em><br>optional field<br>default value: <code>0</code><br>if you specify the <code>10</code> value, the first ten citations in the results array will be omitted and the data will be provided for the successive citations<br><strong>Note:</strong> we recommend using this parameter only when retrieving up to 10,000 results<br>for retrieving over 10,000 results, use the <code>offset_token</code> instead.",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "offset_token": {
        -        "description": "<em>offset token for subsequent requests</em><br>optional field<br>provided in the identical field of the response to each request;<br>use this parameter to avoid timeouts while trying to obtain over 10,000 results in a single request;<br>by specifying the unique <code>offset_token</code> value from the response array, you will get the subsequent results of the initial task;<br><code>offset_token</code> values are unique for each subsequent task <br><strong>Note:</strong> if the <code>offset_token</code> is specified in the request, all other parameters except <code>limit</code> will not be taken into account when processing a task<br>learn more about this parameter on our <a href=\"https://dataforseo.com/help-center/what-is-the-difference-between-the-offset-and-offset_token-parameters#offset_token\" target=\"_blank\">Help Center</a>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "order_by": {
        -        "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"content_info.sentiment_connotations.anger,desc\"]</code><br>default rule:<br><code>[\"content_info.sentiment_connotations.anger,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"content_info.sentiment_connotations.anger,desc\",\"keyword_data.keyword_info.cpc,desc\"]</code>",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "page_type": {
        -        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "rank_scale": {
        -        "description": "<em>defines the scale used for calculating and displaying the <code>domain_rank</code>, and <code>url_rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "search_mode": {
        -        "description": "<em>results grouping type</em><br>optional field<br>possible grouping types:<br><code>as_is</code> - returns all citations for the target <code>keyword</code><br><code>one_per_domain</code> - returns one citation of the <code>keyword</code> per domain<br>default value: <code>as_is</code>",
        -        "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"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
    • Changedpost_dataforseo_content_sentiment_analysis_live3 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "Provider0A3E90081762_AisaDataforseoFilterJsonValue": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "type": "boolean"
        +      },
        +      {
        +        "additionalProperties": {
        +          "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +        },
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      {
        +        "items": {
        +          "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +        },
        +        "type": "array"
        +      }
        +    ],
        +    "description": "JSON representation of filter values and nested expressions. Field names, operators, condition counts and operand compatibility remain provider-validated as documented for each endpoint; this is not a complete filter-language validator."
        +  }
        +}
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "initial_dataset_filters": {
        +        "description": "initial dataset filtering parameters\noptional field\ninitial filtering parameters that apply to fields in the Search endpoint\nyou can add several filters at once (8 filters maximum)\nyou should set a logical operator and, or between the conditions\nthe following operators are supported:\nregex, not_regex, <, <=, >, >=, =, <>, in, not_in, like,not_like, has, has_not, match, not_match\nyou can use the % operator with like and not_like to match any string of zero or more characters\nexample:\n[\"domain\",\"<>\", \"logitech.com\"]\n[[\"domain\",\"<>\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\">\",1000]]\n[[\"domain\",\"<>\",\"logitech.com\"]],\n\"and\",\n[[\"content_info.connotation_types.negative\",\">\",1000],\n\"or\",\n[\"content_info.text_category\",\"has\",10994]]]\nfor more information about filters, please refer to Content Analysis API – Filters\nlearn more about the initial dataset filters in this help center article.",
        +        "items": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "number"
        +            },
        +            {
        +              "type": "boolean"
        +            },
        +            {
        +              "additionalProperties": {
        +                "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +              },
        +              "type": [
        +                "object",
        +                "null"
        +              ]
        +            },
        +            {
        +              "items": {
        +                "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +              },
        +              "type": "array"
        +            }
        +          ],
        +          "description": "JSON representation of filter values and nested expressions. Field names, operators, condition counts and operand compatibility remain provider-validated as documented for each endpoint; this is not a complete filter-language validator."
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "internal_list_limit": {
        +        "description": "maximum number of elements within internal arrays\noptional field\nyou can use this field to limit the number of elements within the following arrays:\ntop_domains\ntext_categories\npage_categories\ncountries\nlanguages\ndefault value: 1\nmaximum value: 20",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "target keyword\nrequired field\nUTF-8 encoding\nthe keywords will be converted to a lowercase format;\nNote: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes;\nexample:\n\"keyword\": \"\\\"tesla palo alto\\\"\"\nlearn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        +        "type": "string"
        +      },
        +      "keyword_fields": {
        +        "additionalProperties": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "description": "target keyword fields and target keywords\noptional field\nuse this parameter to filter the dataset by keywords that certain fields should contain;\nfields you can specify: title, main_title, previous_title, snippet\nyou can indicate several fields;\nNote: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes;\nexample:\n\"keyword_fields\": {\n    \"snippet\": \"\\\"logitech mouse\\\"\",\n    \"main_title\": \"sale\"\n}",
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "page_type": {
        +        "description": "target page types\noptional field\nuse this parameter to filter the dataset by page types\npossible values:\n\"ecommerce\", \"news\", \"blogs\", \"message-boards\", \"organization\"",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "positive_connotation_threshold": {
        +        "description": "positive connotation threshold\noptional field\nspecified as the probability index threshold for positive sentiment related to the citation content\nif you specify this field, connotation_types object in the response will only contain data on citations with positive sentiment probability more than or equal to the specified value\npossible values: from 0 to 1\ndefault value: 0.4",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "rank_scale": {
        +        "description": "defines the scale used for calculating and displaying the rank values\noptional field\nyou can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale\npossible values:\none_hundred — rank values are displayed on a 0–100 scale\none_thousand — rank values are displayed on a 0–1000 scale\ndefault value: one_thousand\nlearn more about how this parameter works in this Help Center article",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "sentiments_connotation_threshold": {
        +        "description": "sentiment connotation threshold\noptional field\nspecified as the probability index threshold for sentiment connotations related to the citation content\nif you specify this field, sentiment_connotations object in the response will only contain data on citations where the probability per each sentiment is more than or equal to the specified value\npossible values: from 0 to 1\ndefault value: 0.4",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "tag": {
        +        "description": "user-defined task identifier\noptional field\nthe character limit is 255\nyou can use this parameter to identify the task and match it with the result\nyou will find the specified tag value in the data object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / oneOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "internal_list_limit": 1,
        -        "keyword": "logitech"
        -      }
        -    ],
        -    "properties": {
        -      "initial_dataset_filters": {
        -        "description": "initial dataset filtering parameters\noptional field\ninitial filtering parameters that apply to fields in the Search endpoint\nyou can add several filters at once (8 filters maximum)\nyou should set a logical operator and, or between the conditions\nthe following operators are supported:\nregex, not_regex, <, <=, >, >=, =, <>, in, not_in, like,not_like, has, has_not, match, not_match\nyou can use the % operator with like and not_like to match any string of zero or more characters\nexample:\n[\"domain\",\"<>\", \"logitech.com\"]\n[[\"domain\",\"<>\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\">\",1000]]\n[[\"domain\",\"<>\",\"logitech.com\"]],\n\"and\",\n[[\"content_info.connotation_types.negative\",\">\",1000],\n\"or\",\n[\"content_info.text_category\",\"has\",10994]]]\nfor more information about filters, please refer to Content Analysis API – Filters\nlearn more about the initial dataset filters in this help center article.",
        -        "items": {
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "internal_list_limit": {
        -        "description": "maximum number of elements within internal arrays\noptional field\nyou can use this field to limit the number of elements within the following arrays:\ntop_domains\ntext_categories\npage_categories\ncountries\nlanguages\ndefault value: 1\nmaximum value: 20",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "keyword": {
        -        "description": "target keyword\nrequired field\nUTF-8 encoding\nthe keywords will be converted to a lowercase format;\nNote: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes;\nexample:\n\"keyword\": \"\\\"tesla palo alto\\\"\"\nlearn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        -        "type": "string"
        -      },
        -      "keyword_fields": {
        -        "additionalProperties": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "description": "target keyword fields and target keywords\noptional field\nuse this parameter to filter the dataset by keywords that certain fields should contain;\nfields you can specify: title, main_title, previous_title, snippet\nyou can indicate several fields;\nNote: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes;\nexample:\n\"keyword_fields\": {\n    \"snippet\": \"\\\"logitech mouse\\\"\",\n    \"main_title\": \"sale\"\n}",
        -        "type": [
        -          "object",
        -          "null"
        -        ]
        -      },
        -      "page_type": {
        -        "description": "target page types\noptional field\nuse this parameter to filter the dataset by page types\npossible values:\n\"ecommerce\", \"news\", \"blogs\", \"message-boards\", \"organization\"",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "positive_connotation_threshold": {
        -        "description": "positive connotation threshold\noptional field\nspecified as the probability index threshold for positive sentiment related to the citation content\nif you specify this field, connotation_types object in the response will only contain data on citations with positive sentiment probability more than or equal to the specified value\npossible values: from 0 to 1\ndefault value: 0.4",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "rank_scale": {
        -        "description": "defines the scale used for calculating and displaying the rank values\noptional field\nyou can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale\npossible values:\none_hundred — rank values are displayed on a 0–100 scale\none_thousand — rank values are displayed on a 0–1000 scale\ndefault value: one_thousand\nlearn more about how this parameter works in this Help Center article",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "sentiments_connotation_threshold": {
        -        "description": "sentiment connotation threshold\noptional field\nspecified as the probability index threshold for sentiment connotations related to the citation content\nif you specify this field, sentiment_connotations object in the response will only contain data on citations where the probability per each sentiment is more than or equal to the specified value\npossible values: from 0 to 1\ndefault value: 0.4",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "tag": {
        -        "description": "user-defined task identifier\noptional field\nthe character limit is 255\nyou can use this parameter to identify the task and match it with the result\nyou will find the specified tag value in the data object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
    • Changedpost_dataforseo_content_summary_live3 fields changed
      • addedInput schema / $defs
        Added value: +{
        +  "Provider0A3E90081762_AisaDataforseoFilterJsonValue": {
        +    "anyOf": [
        +      {
        +        "type": "string"
        +      },
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "type": "boolean"
        +      },
        +      {
        +        "additionalProperties": {
        +          "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +        },
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      {
        +        "items": {
        +          "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +        },
        +        "type": "array"
        +      }
        +    ],
        +    "description": "JSON representation of filter values and nested expressions. Field names, operators, condition counts and operand compatibility remain provider-validated as documented for each endpoint; this is not a complete filter-language validator."
        +  }
        +}
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "initial_dataset_filters": {
        +        "description": "<em>initial dataset filtering parameters</em><br>optional field<br>initial filtering parameters that apply to fields in the <a href=\"/v3/content_analysis/search/live/?bash\" target=\"_blank\">Search endpoint</a><br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>has</code>, <code>has_not</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"domain\",\"&lt;&gt;\", \"logitech.com\"]</code><p><code>[[\"domain\",\"&lt;&gt;\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",1000]]</code><p><code>[[\"domain\",\"&lt;&gt\",\"logitech.com\"]],<br>\"and\",<br>[[\"content_info.connotation_types.negative\",\"&gt;\",1000],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a><br>learn more about the initial dataset filters in <a href=\"https://dataforseo.com/help-center/what-are-the-initial-dataset-filters-and-how-do-they-work\" rel=\"noopener noreferrer\" target=\"_blank\">this help center article.</a>",
        +        "items": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "number"
        +            },
        +            {
        +              "type": "boolean"
        +            },
        +            {
        +              "additionalProperties": {
        +                "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +              },
        +              "type": [
        +                "object",
        +                "null"
        +              ]
        +            },
        +            {
        +              "items": {
        +                "$ref": "#/$defs/Provider0A3E90081762_AisaDataforseoFilterJsonValue"
        +              },
        +              "type": "array"
        +            }
        +          ],
        +          "description": "JSON representation of filter values and nested expressions. Field names, operators, condition counts and operand compatibility remain provider-validated as documented for each endpoint; this is not a complete filter-language validator."
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "internal_list_limit": {
        +        "description": "<em>maximum number of elements within internal arrays</em><br>optional field<br>you can use this field to limit the number of elements within the following arrays:<br><code>top_domains</code><br><code>text_categories</code><br><code>page_categories</code><br><code>countries</code><br><code>languages</code><br>default value: <code>1</code><br>maximum value: <code>20</code>",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>target keyword</em><br><strong>required field</strong><br>UTF-8 encoding<br>the keywords will be converted to a lowercase format;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example: <br><code>\"keyword\": \"\\\"tesla palo alto\\\"\"</code><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"
        +      },
        +      "keyword_fields": {
        +        "additionalProperties": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "description": "<em>target keyword fields and target keywords</em><br>optional field<br>use this parameter to filter the dataset by keywords that certain fields should contain;<br>fields you can specify: <code>title</code>, <code>main_title</code>, <code>previous_title</code>, <code>snippet</code><br>you can indicate several fields;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example:<br><code>\"keyword_fields\": {<br>\"snippet\": \"\\\"logitech mouse\\\"\",<br>\"main_title\": \"sale\"<br>}</code>",
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "page_type": {
        +        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "positive_connotation_threshold": {
        +        "description": "<em>positive connotation threshold</em><br>optional field<br>specified as the probability index threshold for positive sentiment related to the citation content<br>if you specify this field, <code>connotation_types</code> object in the response will only contain data on citations with <code>positive</code> sentiment probability more than or equal to the specified value<br>possible values: from <code>0</code> to <code>1</code><br>default value: <code>0.4</code>",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "rank_scale": {
        +        "description": "<em>defines the scale used for calculating and displaying the <code>rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "sentiments_connotation_threshold": {
        +        "description": "<em>sentiment connotation threshold</em><br>optional field<br>specified as the probability index threshold for sentiment connotations related to the citation content<br>if you specify this field, <code>sentiment_connotations</code> object in the response will only contain data on citations where the <br>probability per each sentiment is more than or equal to the specified value<br>possible values: from <code>0</code> to <code>1</code><br>default value: <code>0.4</code>",
        +        "type": [
        +          "number",
        +          "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"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / oneOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "internal_list_limit": 8,
        -        "keyword": "logitech",
        -        "page_type": [
        -          "ecommerce",
        -          "news",
        -          "blogs",
        -          "message-boards",
        -          "organization"
        -        ],
        -        "positive_connotation_threshold": 0.5
        -      }
        -    ],
        -    "properties": {
        -      "initial_dataset_filters": {
        -        "description": "<em>initial dataset filtering parameters</em><br>optional field<br>initial filtering parameters that apply to fields in the <a href=\"/v3/content_analysis/search/live/?bash\" target=\"_blank\">Search endpoint</a><br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>has</code>, <code>has_not</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"domain\",\"&lt;&gt;\", \"logitech.com\"]</code><p><code>[[\"domain\",\"&lt;&gt;\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",1000]]</code><p><code>[[\"domain\",\"&lt;&gt\",\"logitech.com\"]],<br>\"and\",<br>[[\"content_info.connotation_types.negative\",\"&gt;\",1000],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a><br>learn more about the initial dataset filters in <a href=\"https://dataforseo.com/help-center/what-are-the-initial-dataset-filters-and-how-do-they-work\" rel=\"noopener noreferrer\" target=\"_blank\">this help center article.</a>",
        -        "items": {
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "internal_list_limit": {
        -        "description": "<em>maximum number of elements within internal arrays</em><br>optional field<br>you can use this field to limit the number of elements within the following arrays:<br><code>top_domains</code><br><code>text_categories</code><br><code>page_categories</code><br><code>countries</code><br><code>languages</code><br>default value: <code>1</code><br>maximum value: <code>20</code>",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "keyword": {
        -        "description": "<em>target keyword</em><br><strong>required field</strong><br>UTF-8 encoding<br>the keywords will be converted to a lowercase format;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example: <br><code>\"keyword\": \"\\\"tesla palo alto\\\"\"</code><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"
        -      },
        -      "keyword_fields": {
        -        "additionalProperties": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "description": "<em>target keyword fields and target keywords</em><br>optional field<br>use this parameter to filter the dataset by keywords that certain fields should contain;<br>fields you can specify: <code>title</code>, <code>main_title</code>, <code>previous_title</code>, <code>snippet</code><br>you can indicate several fields;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example:<br><code>\"keyword_fields\": {<br>\"snippet\": \"\\\"logitech mouse\\\"\",<br>\"main_title\": \"sale\"<br>}</code>",
        -        "type": [
        -          "object",
        -          "null"
        -        ]
        -      },
        -      "page_type": {
        -        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "positive_connotation_threshold": {
        -        "description": "<em>positive connotation threshold</em><br>optional field<br>specified as the probability index threshold for positive sentiment related to the citation content<br>if you specify this field, <code>connotation_types</code> object in the response will only contain data on citations with <code>positive</code> sentiment probability more than or equal to the specified value<br>possible values: from <code>0</code> to <code>1</code><br>default value: <code>0.4</code>",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "rank_scale": {
        -        "description": "<em>defines the scale used for calculating and displaying the <code>rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "sentiments_connotation_threshold": {
        -        "description": "<em>sentiment connotation threshold</em><br>optional field<br>specified as the probability index threshold for sentiment connotations related to the citation content<br>if you specify this field, <code>sentiment_connotations</code> object in the response will only contain data on citations where the <br>probability per each sentiment is more than or equal to the specified value<br>possible values: from <code>0</code> to <code>1</code><br>default value: <code>0.4</code>",
        -        "type": [
        -          "number",
        -          "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"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
  2. 6 tool updates
    • Changedpost_dataforseo_content_category_trends_live2 fields changed
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "category_code": 10994,
        -        "date_from": "2022-09-01",
        -        "date_group": "month",
        -        "search_mode": "as_is"
        -      }
        -    ],
        -    "properties": {
        -      "category_code": {
        -        "description": "<em>target category code</em><br><strong>required field</strong><br>to obtain a full list of available categories, refer to the <a href=\"/v3/content_analysis/categories/\" rel=\"noopener noreferrer\" target=\"_blank\">Categories</a> endpoint",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "date_from": {
        -        "description": "<em>starting date of the time range</em><br><strong>required field</strong><br>minimum value: <code>2022-10-31</code><br>date format: <code>\"yyyy-mm-dd\"</code><br>example:<br><code>\"2019-01-15\"</code>",
        -        "type": "string"
        -      },
        -      "date_group": {
        -        "description": "<em>time range which will be used to group the results</em><br>optional field<br>default value: <code>month</code><br>possible values: <code>day</code>, <code>week</code>, <code>month</code>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "date_to": {
        -        "description": "<em>ending date of the time range</em><br>optional field<br>if you don't specify this field, today's date will be used by default<br>date format: <code>\"yyyy-mm-dd\"</code><br>example:<br><code>\"2019-01-15\"</code>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "initial_dataset_filters": {
        -        "description": "<em>initial dataset filtering parameters</em><br>optional field<br>initial filtering parameters that apply to fields in the <a href=\"/v3/content_analysis/search/live/?bash\" target=\"_blank\">Search endpoint</a>;<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>has</code>, <code>has_not</code>, <code>match</code>, <code>not_match</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"domain\",\"&lt;&gt;\", \"logitech.com\"]</code><p><code>[[\"domain\",\"&lt;&gt;\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",1000]]</code><p><code>[[\"domain\",\"&lt;&gt\",\"logitech.com\"]],<br>\"and\",<br>[[\"content_info.connotation_types.negative\",\"&gt;\",1000],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a><br>learn more about the initial dataset filters in <a href=\"https://dataforseo.com/help-center/what-are-the-initial-dataset-filters-and-how-do-they-work\" rel=\"noopener noreferrer\" target=\"_blank\">this help center article.</a>",
        -        "items": {
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "internal_list_limit": {
        -        "description": "<em>maximum number of elements within internal arrays</em><br>optional field<br>you can use this field to limit the number of elements within the following arrays:<br><code>top_domains</code><br><code>text_categories</code><br><code>page_categories</code><br><code>countries</code><br><code>languages</code><br>default value: <code>1</code><br>maximum value: <code>20</code>",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "page_type": {
        -        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "rank_scale": {
        -        "description": "<em>defines the scale used for calculating and displaying the <code>rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "search_mode": {
        -        "description": "<em>results grouping type</em><br>optional field<br>possible grouping types:<br><code>as_is</code> - returns data on all citations for the target <code>category_code</code><br><code>one_per_domain</code> - returns data on one citation of the <code>category_code</code> per domain<br>default value: <code>as_is</code>",
        -        "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"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / oneOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "category_code": 10994,
        +        "date_from": "2022-09-01",
        +        "date_group": "month",
        +        "search_mode": "as_is"
        +      }
        +    ],
        +    "properties": {
        +      "category_code": {
        +        "description": "<em>target category code</em><br><strong>required field</strong><br>to obtain a full list of available categories, refer to the <a href=\"/v3/content_analysis/categories/\" rel=\"noopener noreferrer\" target=\"_blank\">Categories</a> endpoint",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "date_from": {
        +        "description": "<em>starting date of the time range</em><br><strong>required field</strong><br>minimum value: <code>2022-10-31</code><br>date format: <code>\"yyyy-mm-dd\"</code><br>example:<br><code>\"2019-01-15\"</code>",
        +        "type": "string"
        +      },
        +      "date_group": {
        +        "description": "<em>time range which will be used to group the results</em><br>optional field<br>default value: <code>month</code><br>possible values: <code>day</code>, <code>week</code>, <code>month</code>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "date_to": {
        +        "description": "<em>ending date of the time range</em><br>optional field<br>if you don't specify this field, today's date will be used by default<br>date format: <code>\"yyyy-mm-dd\"</code><br>example:<br><code>\"2019-01-15\"</code>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "initial_dataset_filters": {
        +        "description": "<em>initial dataset filtering parameters</em><br>optional field<br>initial filtering parameters that apply to fields in the <a href=\"/v3/content_analysis/search/live/?bash\" target=\"_blank\">Search endpoint</a>;<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>has</code>, <code>has_not</code>, <code>match</code>, <code>not_match</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"domain\",\"&lt;&gt;\", \"logitech.com\"]</code><p><code>[[\"domain\",\"&lt;&gt;\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",1000]]</code><p><code>[[\"domain\",\"&lt;&gt\",\"logitech.com\"]],<br>\"and\",<br>[[\"content_info.connotation_types.negative\",\"&gt;\",1000],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a><br>learn more about the initial dataset filters in <a href=\"https://dataforseo.com/help-center/what-are-the-initial-dataset-filters-and-how-do-they-work\" rel=\"noopener noreferrer\" target=\"_blank\">this help center article.</a>",
        +        "items": {
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "internal_list_limit": {
        +        "description": "<em>maximum number of elements within internal arrays</em><br>optional field<br>you can use this field to limit the number of elements within the following arrays:<br><code>top_domains</code><br><code>text_categories</code><br><code>page_categories</code><br><code>countries</code><br><code>languages</code><br>default value: <code>1</code><br>maximum value: <code>20</code>",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "page_type": {
        +        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "rank_scale": {
        +        "description": "<em>defines the scale used for calculating and displaying the <code>rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "search_mode": {
        +        "description": "<em>results grouping type</em><br>optional field<br>possible grouping types:<br><code>as_is</code> - returns data on all citations for the target <code>category_code</code><br><code>one_per_domain</code> - returns data on one citation of the <code>category_code</code> per domain<br>default value: <code>as_is</code>",
        +        "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"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
    • Changedpost_dataforseo_content_phrase_trends_live2 fields changed
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "date_from": "2022-09-01",
        -        "date_group": "month",
        -        "keyword": "logitech",
        -        "search_mode": "as_is"
        -      }
        -    ],
        -    "properties": {
        -      "date_from": {
        -        "description": "<em>starting date of the time range</em><br><strong>required field</strong><br>date format: <code>\"yyyy-mm-dd\"</code><br>example:<br><code>\"2019-01-15\"</code>",
        -        "type": "string"
        -      },
        -      "date_group": {
        -        "description": "<em>time range which will be used to group the results</em><br>optional field<br>default value: <code>month</code><br>possible values: <code>day</code>, <code>week</code>, <code>month</code>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "date_to": {
        -        "description": "<em>ending date of the time range</em><br>optional field<br>if you don't specify this field, today's date will be used by default<br>date format: <code>\"yyyy-mm-dd\"</code><br>example:<br><code>\"2019-01-15\"</code>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "initial_dataset_filters": {
        -        "description": "<em>initial dataset filtering parameters</em><br>optional field<br>initial filtering parameters that apply to fields in the <a href=\"/v3/content_analysis/search/live/?bash\" target=\"_blank\">Search endpoint</a>;<br><strong>you can add several filters at once (8 filters maximum);</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions;<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>has</code>, <code>has_not</code>, <code>match</code>, <code>not_match</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters;<br>example:<br><code>[\"domain\",\"&lt;&gt;\", \"logitech.com\"]</code><p><code>[[\"domain\",\"&lt;&gt;\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",1000]]</code><p><code>[[\"domain\",\"&lt;&gt\",\"logitech.com\"]],<br>\"and\",<br>[[\"content_info.connotation_types.negative\",\"&gt;\",1000],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a><br>learn more about the initial dataset filters in <a href=\"https://dataforseo.com/help-center/what-are-the-initial-dataset-filters-and-how-do-they-work\" rel=\"noopener noreferrer\" target=\"_blank\">this help center article.</a>",
        -        "items": {
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "internal_list_limit": {
        -        "description": "<em>maximum number of elements within internal arrays</em><br>optional field<br>you can use this field to limit the number of elements within the following arrays:<br><code>top_domains</code><br><code>text_categories</code><br><code>page_categories</code><br><code>countries</code><br><code>languages</code><br>default value: <code>1</code><br>maximum value: <code>20</code>",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "keyword": {
        -        "description": "<em>target keyword</em><br><strong>required field</strong><br>UTF-8 encoding<br>the keywords will be converted to a lowercase format;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example: <br><code>\"keyword\": \"\\\"tesla palo alto\\\"\"</code><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"
        -      },
        -      "keyword_fields": {
        -        "additionalProperties": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "description": "<em>target keyword fields and target keywords</em><br>optional field<br>use this parameter to filter the dataset by keywords that certain fields should contain;<br>fields you can specify: <code>title</code>, <code>main_title</code>, <code>previous_title</code>, <code>snippet</code><br>you can indicate several fields;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example:<br>`\"keyword_fields\": {<br>\"snippet\": \"\\\"logitech mouse\\\"\",<br>\"main_title\": \"sale\"<br>}`",
        -        "type": [
        -          "object",
        -          "null"
        -        ]
        -      },
        -      "page_type": {
        -        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "rank_scale": {
        -        "description": "<em>defines the scale used for calculating and displaying the <code>rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "search_mode": {
        -        "description": "<em>results grouping type</em><br>optional field<br>possible grouping types:<br><code>as_is</code> - returns data on all citations for the target <code>keyword</code><br><code>one_per_domain</code> - returns data on one citation of the <code>keyword</code> per domain<br>default value: <code>as_is</code>",
        -        "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"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / oneOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "date_from": "2022-09-01",
        +        "date_group": "month",
        +        "keyword": "logitech",
        +        "search_mode": "as_is"
        +      }
        +    ],
        +    "properties": {
        +      "date_from": {
        +        "description": "<em>starting date of the time range</em><br><strong>required field</strong><br>date format: <code>\"yyyy-mm-dd\"</code><br>example:<br><code>\"2019-01-15\"</code>",
        +        "type": "string"
        +      },
        +      "date_group": {
        +        "description": "<em>time range which will be used to group the results</em><br>optional field<br>default value: <code>month</code><br>possible values: <code>day</code>, <code>week</code>, <code>month</code>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "date_to": {
        +        "description": "<em>ending date of the time range</em><br>optional field<br>if you don't specify this field, today's date will be used by default<br>date format: <code>\"yyyy-mm-dd\"</code><br>example:<br><code>\"2019-01-15\"</code>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "initial_dataset_filters": {
        +        "description": "<em>initial dataset filtering parameters</em><br>optional field<br>initial filtering parameters that apply to fields in the <a href=\"/v3/content_analysis/search/live/?bash\" target=\"_blank\">Search endpoint</a>;<br><strong>you can add several filters at once (8 filters maximum);</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions;<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>has</code>, <code>has_not</code>, <code>match</code>, <code>not_match</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters;<br>example:<br><code>[\"domain\",\"&lt;&gt;\", \"logitech.com\"]</code><p><code>[[\"domain\",\"&lt;&gt;\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",1000]]</code><p><code>[[\"domain\",\"&lt;&gt\",\"logitech.com\"]],<br>\"and\",<br>[[\"content_info.connotation_types.negative\",\"&gt;\",1000],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a><br>learn more about the initial dataset filters in <a href=\"https://dataforseo.com/help-center/what-are-the-initial-dataset-filters-and-how-do-they-work\" rel=\"noopener noreferrer\" target=\"_blank\">this help center article.</a>",
        +        "items": {
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "internal_list_limit": {
        +        "description": "<em>maximum number of elements within internal arrays</em><br>optional field<br>you can use this field to limit the number of elements within the following arrays:<br><code>top_domains</code><br><code>text_categories</code><br><code>page_categories</code><br><code>countries</code><br><code>languages</code><br>default value: <code>1</code><br>maximum value: <code>20</code>",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>target keyword</em><br><strong>required field</strong><br>UTF-8 encoding<br>the keywords will be converted to a lowercase format;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example: <br><code>\"keyword\": \"\\\"tesla palo alto\\\"\"</code><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"
        +      },
        +      "keyword_fields": {
        +        "additionalProperties": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "description": "<em>target keyword fields and target keywords</em><br>optional field<br>use this parameter to filter the dataset by keywords that certain fields should contain;<br>fields you can specify: <code>title</code>, <code>main_title</code>, <code>previous_title</code>, <code>snippet</code><br>you can indicate several fields;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example:<br>`\"keyword_fields\": {<br>\"snippet\": \"\\\"logitech mouse\\\"\",<br>\"main_title\": \"sale\"<br>}`",
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "page_type": {
        +        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "rank_scale": {
        +        "description": "<em>defines the scale used for calculating and displaying the <code>rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "search_mode": {
        +        "description": "<em>results grouping type</em><br>optional field<br>possible grouping types:<br><code>as_is</code> - returns data on all citations for the target <code>keyword</code><br><code>one_per_domain</code> - returns data on one citation of the <code>keyword</code> per domain<br>default value: <code>as_is</code>",
        +        "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"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
    • Changedpost_dataforseo_content_rating_distribution_live2 fields changed
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "internal_list_limit": 10,
        -        "keyword": "logitech",
        -        "search_mode": "as_is"
        -      }
        -    ],
        -    "properties": {
        -      "initial_dataset_filters": {
        -        "description": "<em>initial dataset filtering parameters</em><br>optional field<br>initial filtering parameters that apply to fields in the <a href=\"/v3/content_analysis/search/live/?bash\" target=\"_blank\">Search endpoint</a><br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>has</code>, <code>has_not</code>, <code>match</code>, <code>not_match</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"domain\",\"&lt;&gt;\", \"logitech.com\"]</code><p><code>[[\"domain\",\"&lt;&gt;\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",1000]]</code><p><code>[[\"domain\",\"&lt;&gt\",\"logitech.com\"]],<br>\"and\",<br>[[\"content_info.connotation_types.negative\",\"&gt;\",1000],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a><br>learn more about the initial dataset filters in <a href=\"https://dataforseo.com/help-center/what-are-the-initial-dataset-filters-and-how-do-they-work\" rel=\"noopener noreferrer\" target=\"_blank\">this help center article.</a>",
        -        "items": {
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "internal_list_limit": {
        -        "description": "<em>maximum number of elements within internal arrays</em><br>optional field<br>you can use this field to limit the number of elements within the following arrays:<br><code>top_domains</code><br><code>text_categories</code><br><code>page_categories</code><br><code>countries</code><br><code>languages</code><br>default value: <code>1</code><br>maximum value: <code>20</code>",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "keyword": {
        -        "description": "<em>target keyword</em><br><strong>required field</strong><br>UTF-8 encoding<br>the keywords will be converted to a lowercase format;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example: <br><code>\"keyword\": \"\\\"tesla palo alto\\\"\"</code><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"
        -      },
        -      "keyword_fields": {
        -        "additionalProperties": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "description": "<em>target keyword fields and target keywords</em><br>optional field<br>use this parameter to filter the dataset by keywords that certain fields should contain;<br>fields you can specify: <code>title</code>, <code>main_title</code>, <code>previous_title</code>, <code>snippet</code><br>you can indicate several fields;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example:<br>`\"keyword_fields\": {<br>\"snippet\": \"\\\"logitech mouse\\\"\",<br>\"main_title\": \"sale\"<br>}`",
        -        "type": [
        -          "object",
        -          "null"
        -        ]
        -      },
        -      "page_type": {
        -        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "positive_connotation_threshold": {
        -        "description": "<em>positive connotation threshold</em><br>optional field<br>specified as the probability index threshold for positive sentiment related to the citation content<br>if you specify this field, <code>connotation_types</code> object in the response will only contain data on citations with <code>positive</code> sentiment probability more than or equal to the specified value<br>possible values: from <code>0</code> to <code>1</code><br>default value: <code>0.4</code>",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "rank_scale": {
        -        "description": "<em>defines the scale used for calculating and displaying the <code>rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "search_mode": {
        -        "description": "<em>results grouping type</em><br>optional field<br>possible grouping types:<br><code>as_is</code> - returns all citations for the target <code>keyword</code><br><code>one_per_domain</code> - returns one citation of the <code>keyword</code> per domain<br>default value: <code>as_is</code>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "sentiments_connotation_threshold": {
        -        "description": "<em>sentiment connotation threshold</em><br>optional field<br>specified as the probability index threshold for sentiment connotations related to the citation content<br>if you specify this field, <code>sentiment_connotations</code> object in the response will only contain data on citations where the probability per each sentiment is more than or equal to the specified value<br>possible values: from <code>0</code> to <code>1</code><br>default value: <code>0.4</code>",
        -        "type": [
        -          "number",
        -          "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"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / oneOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "internal_list_limit": 10,
        +        "keyword": "logitech",
        +        "search_mode": "as_is"
        +      }
        +    ],
        +    "properties": {
        +      "initial_dataset_filters": {
        +        "description": "<em>initial dataset filtering parameters</em><br>optional field<br>initial filtering parameters that apply to fields in the <a href=\"/v3/content_analysis/search/live/?bash\" target=\"_blank\">Search endpoint</a><br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>has</code>, <code>has_not</code>, <code>match</code>, <code>not_match</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"domain\",\"&lt;&gt;\", \"logitech.com\"]</code><p><code>[[\"domain\",\"&lt;&gt;\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",1000]]</code><p><code>[[\"domain\",\"&lt;&gt\",\"logitech.com\"]],<br>\"and\",<br>[[\"content_info.connotation_types.negative\",\"&gt;\",1000],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a><br>learn more about the initial dataset filters in <a href=\"https://dataforseo.com/help-center/what-are-the-initial-dataset-filters-and-how-do-they-work\" rel=\"noopener noreferrer\" target=\"_blank\">this help center article.</a>",
        +        "items": {
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "internal_list_limit": {
        +        "description": "<em>maximum number of elements within internal arrays</em><br>optional field<br>you can use this field to limit the number of elements within the following arrays:<br><code>top_domains</code><br><code>text_categories</code><br><code>page_categories</code><br><code>countries</code><br><code>languages</code><br>default value: <code>1</code><br>maximum value: <code>20</code>",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>target keyword</em><br><strong>required field</strong><br>UTF-8 encoding<br>the keywords will be converted to a lowercase format;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example: <br><code>\"keyword\": \"\\\"tesla palo alto\\\"\"</code><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"
        +      },
        +      "keyword_fields": {
        +        "additionalProperties": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "description": "<em>target keyword fields and target keywords</em><br>optional field<br>use this parameter to filter the dataset by keywords that certain fields should contain;<br>fields you can specify: <code>title</code>, <code>main_title</code>, <code>previous_title</code>, <code>snippet</code><br>you can indicate several fields;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example:<br>`\"keyword_fields\": {<br>\"snippet\": \"\\\"logitech mouse\\\"\",<br>\"main_title\": \"sale\"<br>}`",
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "page_type": {
        +        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "positive_connotation_threshold": {
        +        "description": "<em>positive connotation threshold</em><br>optional field<br>specified as the probability index threshold for positive sentiment related to the citation content<br>if you specify this field, <code>connotation_types</code> object in the response will only contain data on citations with <code>positive</code> sentiment probability more than or equal to the specified value<br>possible values: from <code>0</code> to <code>1</code><br>default value: <code>0.4</code>",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "rank_scale": {
        +        "description": "<em>defines the scale used for calculating and displaying the <code>rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "search_mode": {
        +        "description": "<em>results grouping type</em><br>optional field<br>possible grouping types:<br><code>as_is</code> - returns all citations for the target <code>keyword</code><br><code>one_per_domain</code> - returns one citation of the <code>keyword</code> per domain<br>default value: <code>as_is</code>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "sentiments_connotation_threshold": {
        +        "description": "<em>sentiment connotation threshold</em><br>optional field<br>specified as the probability index threshold for sentiment connotations related to the citation content<br>if you specify this field, <code>sentiment_connotations</code> object in the response will only contain data on citations where the probability per each sentiment is more than or equal to the specified value<br>possible values: from <code>0</code> to <code>1</code><br>default value: <code>0.4</code>",
        +        "type": [
        +          "number",
        +          "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"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
    • Changedpost_dataforseo_content_search_live2 fields changed
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "filters": [
        -          "main_domain",
        -          "=",
        -          "reviewfinder.ca"
        -        ],
        -        "keyword": "logitech",
        -        "keyword_fields": {
        -          "snippet": "logitech"
        -        },
        -        "limit": 10,
        -        "order_by": [
        -          "content_info.sentiment_connotations.anger,desc"
        -        ],
        -        "page_type": [
        -          "ecommerce",
        -          "news",
        -          "blogs",
        -          "message-boards",
        -          "organization"
        -        ],
        -        "search_mode": "as_is"
        -      }
        -    ],
        -    "properties": {
        -      "filters": {
        -        "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>match</code>, <code>not_match</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"country\",\"=\", \"US\"]</code><p><code>[[\"domain_rank\",\"&gt;\",800],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",0.9]]</code><p><code>[[\"domain_rank\",\"&gt;\",800],<br>\"and\",<br>[[\"page_types\",\"has\",\"ecommerce\"],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a>",
        -        "items": {
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "keyword": {
        -        "description": "<em>target keyword</em><br><strong>required field</strong><br>UTF-8 encoding<br>the keywords will be converted to a lowercase format;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example: <br>`\"keyword\": \"\\\"tesla palo alto\\\"\"`<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"
        -      },
        -      "keyword_fields": {
        -        "additionalProperties": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "description": "<em>target keyword fields and target keywords</em><br>optional field<br>use this parameter to filter the dataset by keywords that certain fields should contain;<br>fields you can specify: <code>title</code>, <code>main_title</code>, <code>previous_title</code>, <code>snippet</code><br>you can indicate several fields;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example:<br>`\"keyword_fields\": {<br>\"snippet\": \"\\\"logitech mouse\\\"\",<br>\"main_title\": \"sale\"<br>}\"`",
        -        "type": [
        -          "object",
        -          "null"
        -        ]
        -      },
        -      "limit": {
        -        "description": "<em>the maximum number of returned citations</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "offset": {
        -        "description": "<em>offset in the results array of returned citations</em><br>optional field<br>default value: <code>0</code><br>if you specify the <code>10</code> value, the first ten citations in the results array will be omitted and the data will be provided for the successive citations<br><strong>Note:</strong> we recommend using this parameter only when retrieving up to 10,000 results<br>for retrieving over 10,000 results, use the <code>offset_token</code> instead.",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "offset_token": {
        -        "description": "<em>offset token for subsequent requests</em><br>optional field<br>provided in the identical field of the response to each request;<br>use this parameter to avoid timeouts while trying to obtain over 10,000 results in a single request;<br>by specifying the unique <code>offset_token</code> value from the response array, you will get the subsequent results of the initial task;<br><code>offset_token</code> values are unique for each subsequent task <br><strong>Note:</strong> if the <code>offset_token</code> is specified in the request, all other parameters except <code>limit</code> will not be taken into account when processing a task<br>learn more about this parameter on our <a href=\"https://dataforseo.com/help-center/what-is-the-difference-between-the-offset-and-offset_token-parameters#offset_token\" target=\"_blank\">Help Center</a>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "order_by": {
        -        "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"content_info.sentiment_connotations.anger,desc\"]</code><br>default rule:<br><code>[\"content_info.sentiment_connotations.anger,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"content_info.sentiment_connotations.anger,desc\",\"keyword_data.keyword_info.cpc,desc\"]</code>",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "page_type": {
        -        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "rank_scale": {
        -        "description": "<em>defines the scale used for calculating and displaying the <code>domain_rank</code>, and <code>url_rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "search_mode": {
        -        "description": "<em>results grouping type</em><br>optional field<br>possible grouping types:<br><code>as_is</code> - returns all citations for the target <code>keyword</code><br><code>one_per_domain</code> - returns one citation of the <code>keyword</code> per domain<br>default value: <code>as_is</code>",
        -        "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"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / oneOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "filters": [
        +          "main_domain",
        +          "=",
        +          "reviewfinder.ca"
        +        ],
        +        "keyword": "logitech",
        +        "keyword_fields": {
        +          "snippet": "logitech"
        +        },
        +        "limit": 10,
        +        "order_by": [
        +          "content_info.sentiment_connotations.anger,desc"
        +        ],
        +        "page_type": [
        +          "ecommerce",
        +          "news",
        +          "blogs",
        +          "message-boards",
        +          "organization"
        +        ],
        +        "search_mode": "as_is"
        +      }
        +    ],
        +    "properties": {
        +      "filters": {
        +        "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>match</code>, <code>not_match</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"country\",\"=\", \"US\"]</code><p><code>[[\"domain_rank\",\"&gt;\",800],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",0.9]]</code><p><code>[[\"domain_rank\",\"&gt;\",800],<br>\"and\",<br>[[\"page_types\",\"has\",\"ecommerce\"],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a>",
        +        "items": {
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>target keyword</em><br><strong>required field</strong><br>UTF-8 encoding<br>the keywords will be converted to a lowercase format;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example: <br>`\"keyword\": \"\\\"tesla palo alto\\\"\"`<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"
        +      },
        +      "keyword_fields": {
        +        "additionalProperties": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "description": "<em>target keyword fields and target keywords</em><br>optional field<br>use this parameter to filter the dataset by keywords that certain fields should contain;<br>fields you can specify: <code>title</code>, <code>main_title</code>, <code>previous_title</code>, <code>snippet</code><br>you can indicate several fields;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example:<br>`\"keyword_fields\": {<br>\"snippet\": \"\\\"logitech mouse\\\"\",<br>\"main_title\": \"sale\"<br>}\"`",
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "limit": {
        +        "description": "<em>the maximum number of returned citations</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "offset": {
        +        "description": "<em>offset in the results array of returned citations</em><br>optional field<br>default value: <code>0</code><br>if you specify the <code>10</code> value, the first ten citations in the results array will be omitted and the data will be provided for the successive citations<br><strong>Note:</strong> we recommend using this parameter only when retrieving up to 10,000 results<br>for retrieving over 10,000 results, use the <code>offset_token</code> instead.",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "offset_token": {
        +        "description": "<em>offset token for subsequent requests</em><br>optional field<br>provided in the identical field of the response to each request;<br>use this parameter to avoid timeouts while trying to obtain over 10,000 results in a single request;<br>by specifying the unique <code>offset_token</code> value from the response array, you will get the subsequent results of the initial task;<br><code>offset_token</code> values are unique for each subsequent task <br><strong>Note:</strong> if the <code>offset_token</code> is specified in the request, all other parameters except <code>limit</code> will not be taken into account when processing a task<br>learn more about this parameter on our <a href=\"https://dataforseo.com/help-center/what-is-the-difference-between-the-offset-and-offset_token-parameters#offset_token\" target=\"_blank\">Help Center</a>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "order_by": {
        +        "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"content_info.sentiment_connotations.anger,desc\"]</code><br>default rule:<br><code>[\"content_info.sentiment_connotations.anger,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"content_info.sentiment_connotations.anger,desc\",\"keyword_data.keyword_info.cpc,desc\"]</code>",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "page_type": {
        +        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "rank_scale": {
        +        "description": "<em>defines the scale used for calculating and displaying the <code>domain_rank</code>, and <code>url_rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "search_mode": {
        +        "description": "<em>results grouping type</em><br>optional field<br>possible grouping types:<br><code>as_is</code> - returns all citations for the target <code>keyword</code><br><code>one_per_domain</code> - returns one citation of the <code>keyword</code> per domain<br>default value: <code>as_is</code>",
        +        "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"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
    • Changedpost_dataforseo_content_sentiment_analysis_live2 fields changed
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "internal_list_limit": 1,
        -        "keyword": "logitech"
        -      }
        -    ],
        -    "properties": {
        -      "initial_dataset_filters": {
        -        "description": "initial dataset filtering parameters\noptional field\ninitial filtering parameters that apply to fields in the Search endpoint\nyou can add several filters at once (8 filters maximum)\nyou should set a logical operator and, or between the conditions\nthe following operators are supported:\nregex, not_regex, <, <=, >, >=, =, <>, in, not_in, like,not_like, has, has_not, match, not_match\nyou can use the % operator with like and not_like to match any string of zero or more characters\nexample:\n[\"domain\",\"<>\", \"logitech.com\"]\n[[\"domain\",\"<>\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\">\",1000]]\n[[\"domain\",\"<>\",\"logitech.com\"]],\n\"and\",\n[[\"content_info.connotation_types.negative\",\">\",1000],\n\"or\",\n[\"content_info.text_category\",\"has\",10994]]]\nfor more information about filters, please refer to Content Analysis API – Filters\nlearn more about the initial dataset filters in this help center article.",
        -        "items": {
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "internal_list_limit": {
        -        "description": "maximum number of elements within internal arrays\noptional field\nyou can use this field to limit the number of elements within the following arrays:\ntop_domains\ntext_categories\npage_categories\ncountries\nlanguages\ndefault value: 1\nmaximum value: 20",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "keyword": {
        -        "description": "target keyword\nrequired field\nUTF-8 encoding\nthe keywords will be converted to a lowercase format;\nNote: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes;\nexample:\n\"keyword\": \"\\\"tesla palo alto\\\"\"\nlearn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        -        "type": "string"
        -      },
        -      "keyword_fields": {
        -        "additionalProperties": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "description": "target keyword fields and target keywords\noptional field\nuse this parameter to filter the dataset by keywords that certain fields should contain;\nfields you can specify: title, main_title, previous_title, snippet\nyou can indicate several fields;\nNote: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes;\nexample:\n\"keyword_fields\": {\n    \"snippet\": \"\\\"logitech mouse\\\"\",\n    \"main_title\": \"sale\"\n}",
        -        "type": [
        -          "object",
        -          "null"
        -        ]
        -      },
        -      "page_type": {
        -        "description": "target page types\noptional field\nuse this parameter to filter the dataset by page types\npossible values:\n\"ecommerce\", \"news\", \"blogs\", \"message-boards\", \"organization\"",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "positive_connotation_threshold": {
        -        "description": "positive connotation threshold\noptional field\nspecified as the probability index threshold for positive sentiment related to the citation content\nif you specify this field, connotation_types object in the response will only contain data on citations with positive sentiment probability more than or equal to the specified value\npossible values: from 0 to 1\ndefault value: 0.4",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "rank_scale": {
        -        "description": "defines the scale used for calculating and displaying the rank values\noptional field\nyou can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale\npossible values:\none_hundred — rank values are displayed on a 0–100 scale\none_thousand — rank values are displayed on a 0–1000 scale\ndefault value: one_thousand\nlearn more about how this parameter works in this Help Center article",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "sentiments_connotation_threshold": {
        -        "description": "sentiment connotation threshold\noptional field\nspecified as the probability index threshold for sentiment connotations related to the citation content\nif you specify this field, sentiment_connotations object in the response will only contain data on citations where the probability per each sentiment is more than or equal to the specified value\npossible values: from 0 to 1\ndefault value: 0.4",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "tag": {
        -        "description": "user-defined task identifier\noptional field\nthe character limit is 255\nyou can use this parameter to identify the task and match it with the result\nyou will find the specified tag value in the data object of the response",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / oneOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "internal_list_limit": 1,
        +        "keyword": "logitech"
        +      }
        +    ],
        +    "properties": {
        +      "initial_dataset_filters": {
        +        "description": "initial dataset filtering parameters\noptional field\ninitial filtering parameters that apply to fields in the Search endpoint\nyou can add several filters at once (8 filters maximum)\nyou should set a logical operator and, or between the conditions\nthe following operators are supported:\nregex, not_regex, <, <=, >, >=, =, <>, in, not_in, like,not_like, has, has_not, match, not_match\nyou can use the % operator with like and not_like to match any string of zero or more characters\nexample:\n[\"domain\",\"<>\", \"logitech.com\"]\n[[\"domain\",\"<>\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\">\",1000]]\n[[\"domain\",\"<>\",\"logitech.com\"]],\n\"and\",\n[[\"content_info.connotation_types.negative\",\">\",1000],\n\"or\",\n[\"content_info.text_category\",\"has\",10994]]]\nfor more information about filters, please refer to Content Analysis API – Filters\nlearn more about the initial dataset filters in this help center article.",
        +        "items": {
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "internal_list_limit": {
        +        "description": "maximum number of elements within internal arrays\noptional field\nyou can use this field to limit the number of elements within the following arrays:\ntop_domains\ntext_categories\npage_categories\ncountries\nlanguages\ndefault value: 1\nmaximum value: 20",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "target keyword\nrequired field\nUTF-8 encoding\nthe keywords will be converted to a lowercase format;\nNote: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes;\nexample:\n\"keyword\": \"\\\"tesla palo alto\\\"\"\nlearn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        +        "type": "string"
        +      },
        +      "keyword_fields": {
        +        "additionalProperties": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "description": "target keyword fields and target keywords\noptional field\nuse this parameter to filter the dataset by keywords that certain fields should contain;\nfields you can specify: title, main_title, previous_title, snippet\nyou can indicate several fields;\nNote: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes;\nexample:\n\"keyword_fields\": {\n    \"snippet\": \"\\\"logitech mouse\\\"\",\n    \"main_title\": \"sale\"\n}",
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "page_type": {
        +        "description": "target page types\noptional field\nuse this parameter to filter the dataset by page types\npossible values:\n\"ecommerce\", \"news\", \"blogs\", \"message-boards\", \"organization\"",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "positive_connotation_threshold": {
        +        "description": "positive connotation threshold\noptional field\nspecified as the probability index threshold for positive sentiment related to the citation content\nif you specify this field, connotation_types object in the response will only contain data on citations with positive sentiment probability more than or equal to the specified value\npossible values: from 0 to 1\ndefault value: 0.4",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "rank_scale": {
        +        "description": "defines the scale used for calculating and displaying the rank values\noptional field\nyou can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale\npossible values:\none_hundred — rank values are displayed on a 0–100 scale\none_thousand — rank values are displayed on a 0–1000 scale\ndefault value: one_thousand\nlearn more about how this parameter works in this Help Center article",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "sentiments_connotation_threshold": {
        +        "description": "sentiment connotation threshold\noptional field\nspecified as the probability index threshold for sentiment connotations related to the citation content\nif you specify this field, sentiment_connotations object in the response will only contain data on citations where the probability per each sentiment is more than or equal to the specified value\npossible values: from 0 to 1\ndefault value: 0.4",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "tag": {
        +        "description": "user-defined task identifier\noptional field\nthe character limit is 255\nyou can use this parameter to identify the task and match it with the result\nyou will find the specified tag value in the data object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
    • Changedpost_dataforseo_content_summary_live2 fields changed
      • removedInput schema / properties / body / items / anyOf
        Removed value: -[
        -  {
        -    "example": [
        -      {
        -        "internal_list_limit": 8,
        -        "keyword": "logitech",
        -        "page_type": [
        -          "ecommerce",
        -          "news",
        -          "blogs",
        -          "message-boards",
        -          "organization"
        -        ],
        -        "positive_connotation_threshold": 0.5
        -      }
        -    ],
        -    "properties": {
        -      "initial_dataset_filters": {
        -        "description": "<em>initial dataset filtering parameters</em><br>optional field<br>initial filtering parameters that apply to fields in the <a href=\"/v3/content_analysis/search/live/?bash\" target=\"_blank\">Search endpoint</a><br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>has</code>, <code>has_not</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"domain\",\"&lt;&gt;\", \"logitech.com\"]</code><p><code>[[\"domain\",\"&lt;&gt;\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",1000]]</code><p><code>[[\"domain\",\"&lt;&gt\",\"logitech.com\"]],<br>\"and\",<br>[[\"content_info.connotation_types.negative\",\"&gt;\",1000],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a><br>learn more about the initial dataset filters in <a href=\"https://dataforseo.com/help-center/what-are-the-initial-dataset-filters-and-how-do-they-work\" rel=\"noopener noreferrer\" target=\"_blank\">this help center article.</a>",
        -        "items": {
        -          "type": [
        -            "object",
        -            "null"
        -          ]
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "internal_list_limit": {
        -        "description": "<em>maximum number of elements within internal arrays</em><br>optional field<br>you can use this field to limit the number of elements within the following arrays:<br><code>top_domains</code><br><code>text_categories</code><br><code>page_categories</code><br><code>countries</code><br><code>languages</code><br>default value: <code>1</code><br>maximum value: <code>20</code>",
        -        "type": [
        -          "integer",
        -          "null"
        -        ]
        -      },
        -      "keyword": {
        -        "description": "<em>target keyword</em><br><strong>required field</strong><br>UTF-8 encoding<br>the keywords will be converted to a lowercase format;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example: <br><code>\"keyword\": \"\\\"tesla palo alto\\\"\"</code><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"
        -      },
        -      "keyword_fields": {
        -        "additionalProperties": {
        -          "type": [
        -            "string",
        -            "null"
        -          ]
        -        },
        -        "description": "<em>target keyword fields and target keywords</em><br>optional field<br>use this parameter to filter the dataset by keywords that certain fields should contain;<br>fields you can specify: <code>title</code>, <code>main_title</code>, <code>previous_title</code>, <code>snippet</code><br>you can indicate several fields;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example:<br><code>\"keyword_fields\": {<br>\"snippet\": \"\\\"logitech mouse\\\"\",<br>\"main_title\": \"sale\"<br>}</code>",
        -        "type": [
        -          "object",
        -          "null"
        -        ]
        -      },
        -      "page_type": {
        -        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": [
        -          "array",
        -          "null"
        -        ]
        -      },
        -      "positive_connotation_threshold": {
        -        "description": "<em>positive connotation threshold</em><br>optional field<br>specified as the probability index threshold for positive sentiment related to the citation content<br>if you specify this field, <code>connotation_types</code> object in the response will only contain data on citations with <code>positive</code> sentiment probability more than or equal to the specified value<br>possible values: from <code>0</code> to <code>1</code><br>default value: <code>0.4</code>",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "rank_scale": {
        -        "description": "<em>defines the scale used for calculating and displaying the <code>rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "sentiments_connotation_threshold": {
        -        "description": "<em>sentiment connotation threshold</em><br>optional field<br>specified as the probability index threshold for sentiment connotations related to the citation content<br>if you specify this field, <code>sentiment_connotations</code> object in the response will only contain data on citations where the <br>probability per each sentiment is more than or equal to the specified value<br>possible values: from <code>0</code> to <code>1</code><br>default value: <code>0.4</code>",
        -        "type": [
        -          "number",
        -          "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"
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  }
        -]
      • addedInput schema / properties / body / items / oneOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "internal_list_limit": 8,
        +        "keyword": "logitech",
        +        "page_type": [
        +          "ecommerce",
        +          "news",
        +          "blogs",
        +          "message-boards",
        +          "organization"
        +        ],
        +        "positive_connotation_threshold": 0.5
        +      }
        +    ],
        +    "properties": {
        +      "initial_dataset_filters": {
        +        "description": "<em>initial dataset filtering parameters</em><br>optional field<br>initial filtering parameters that apply to fields in the <a href=\"/v3/content_analysis/search/live/?bash\" target=\"_blank\">Search endpoint</a><br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>has</code>, <code>has_not</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"domain\",\"&lt;&gt;\", \"logitech.com\"]</code><p><code>[[\"domain\",\"&lt;&gt;\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",1000]]</code><p><code>[[\"domain\",\"&lt;&gt\",\"logitech.com\"]],<br>\"and\",<br>[[\"content_info.connotation_types.negative\",\"&gt;\",1000],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a><br>learn more about the initial dataset filters in <a href=\"https://dataforseo.com/help-center/what-are-the-initial-dataset-filters-and-how-do-they-work\" rel=\"noopener noreferrer\" target=\"_blank\">this help center article.</a>",
        +        "items": {
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "internal_list_limit": {
        +        "description": "<em>maximum number of elements within internal arrays</em><br>optional field<br>you can use this field to limit the number of elements within the following arrays:<br><code>top_domains</code><br><code>text_categories</code><br><code>page_categories</code><br><code>countries</code><br><code>languages</code><br>default value: <code>1</code><br>maximum value: <code>20</code>",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>target keyword</em><br><strong>required field</strong><br>UTF-8 encoding<br>the keywords will be converted to a lowercase format;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example: <br><code>\"keyword\": \"\\\"tesla palo alto\\\"\"</code><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"
        +      },
        +      "keyword_fields": {
        +        "additionalProperties": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "description": "<em>target keyword fields and target keywords</em><br>optional field<br>use this parameter to filter the dataset by keywords that certain fields should contain;<br>fields you can specify: <code>title</code>, <code>main_title</code>, <code>previous_title</code>, <code>snippet</code><br>you can indicate several fields;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example:<br><code>\"keyword_fields\": {<br>\"snippet\": \"\\\"logitech mouse\\\"\",<br>\"main_title\": \"sale\"<br>}</code>",
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "page_type": {
        +        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "positive_connotation_threshold": {
        +        "description": "<em>positive connotation threshold</em><br>optional field<br>specified as the probability index threshold for positive sentiment related to the citation content<br>if you specify this field, <code>connotation_types</code> object in the response will only contain data on citations with <code>positive</code> sentiment probability more than or equal to the specified value<br>possible values: from <code>0</code> to <code>1</code><br>default value: <code>0.4</code>",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "rank_scale": {
        +        "description": "<em>defines the scale used for calculating and displaying the <code>rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "sentiments_connotation_threshold": {
        +        "description": "<em>sentiment connotation threshold</em><br>optional field<br>specified as the probability index threshold for sentiment connotations related to the citation content<br>if you specify this field, <code>sentiment_connotations</code> object in the response will only contain data on citations where the <br>probability per each sentiment is more than or equal to the specified value<br>possible values: from <code>0</code> to <code>1</code><br>default value: <code>0.4</code>",
        +        "type": [
        +          "number",
        +          "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"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
  3. 16 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_content_available_filters1 field changed
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedget_dataforseo_content_categories1 field changed
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedget_dataforseo_content_languages1 field changed
      • addedOutput schema / x-fastmcp-wrap-result
        Added value: +true
    • Changedget_dataforseo_content_locations1 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_content_category_trends_live7 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "category_code": 10994,
        +    "date_from": "2022-09-01",
        +    "date_group": "month",
        +    "search_mode": "as_is"
        +  }
        +]
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "category_code": 10994,
        +        "date_from": "2022-09-01",
        +        "date_group": "month",
        +        "search_mode": "as_is"
        +      }
        +    ],
        +    "properties": {
        +      "category_code": {
        +        "description": "<em>target category code</em><br><strong>required field</strong><br>to obtain a full list of available categories, refer to the <a href=\"/v3/content_analysis/categories/\" rel=\"noopener noreferrer\" target=\"_blank\">Categories</a> endpoint",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "date_from": {
        +        "description": "<em>starting date of the time range</em><br><strong>required field</strong><br>minimum value: <code>2022-10-31</code><br>date format: <code>\"yyyy-mm-dd\"</code><br>example:<br><code>\"2019-01-15\"</code>",
        +        "type": "string"
        +      },
        +      "date_group": {
        +        "description": "<em>time range which will be used to group the results</em><br>optional field<br>default value: <code>month</code><br>possible values: <code>day</code>, <code>week</code>, <code>month</code>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "date_to": {
        +        "description": "<em>ending date of the time range</em><br>optional field<br>if you don't specify this field, today's date will be used by default<br>date format: <code>\"yyyy-mm-dd\"</code><br>example:<br><code>\"2019-01-15\"</code>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "initial_dataset_filters": {
        +        "description": "<em>initial dataset filtering parameters</em><br>optional field<br>initial filtering parameters that apply to fields in the <a href=\"/v3/content_analysis/search/live/?bash\" target=\"_blank\">Search endpoint</a>;<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>has</code>, <code>has_not</code>, <code>match</code>, <code>not_match</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"domain\",\"&lt;&gt;\", \"logitech.com\"]</code><p><code>[[\"domain\",\"&lt;&gt;\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",1000]]</code><p><code>[[\"domain\",\"&lt;&gt\",\"logitech.com\"]],<br>\"and\",<br>[[\"content_info.connotation_types.negative\",\"&gt;\",1000],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a><br>learn more about the initial dataset filters in <a href=\"https://dataforseo.com/help-center/what-are-the-initial-dataset-filters-and-how-do-they-work\" rel=\"noopener noreferrer\" target=\"_blank\">this help center article.</a>",
        +        "items": {
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "internal_list_limit": {
        +        "description": "<em>maximum number of elements within internal arrays</em><br>optional field<br>you can use this field to limit the number of elements within the following arrays:<br><code>top_domains</code><br><code>text_categories</code><br><code>page_categories</code><br><code>countries</code><br><code>languages</code><br>default value: <code>1</code><br>maximum value: <code>20</code>",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "page_type": {
        +        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "rank_scale": {
        +        "description": "<em>defines the scale used for calculating and displaying the <code>rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "search_mode": {
        +        "description": "<em>results grouping type</em><br>optional field<br>possible grouping types:<br><code>as_is</code> - returns data on all citations for the target <code>category_code</code><br><code>one_per_domain</code> - returns data on one citation of the <code>category_code</code> per domain<br>default value: <code>as_is</code>",
        +        "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"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "category_code": {
        -    "description": "target category code required field to obtain a full list of available categories, refer to the Categories endpoint",
        -    "type": "integer"
        -  },
        -  "date_from": {
        -    "description": "starting date of the time range required field minimum value: 2022-10-31 date format: \"yyyy-mm-dd\" example: \"2019-01-15\"",
        -    "type": "string"
        -  },
        -  "date_group": {
        -    "description": "time range which will be used to group the results optional field default value: month possible values: day, week, month",
        -    "type": "string"
        -  },
        -  "date_to": {
        -    "description": "ending date of the time range optional field if you don’t specify this field, today’s date will be used by default date format: \"yyyy-mm-dd\" example: \"2019-01-15\"",
        -    "type": "string"
        -  },
        -  "initial_dataset_filters": {
        -    "description": "initial dataset filtering parameters optional field initial filtering parameters that apply to fields in the Search endpoint; you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, , , >, >=, =, , in, not_in, like,not_like, has, has_not, match, not_match you can use the % operator with like and not_like to match any string of zero or more characters example: [\"domain\",\"\", \"logitech.com\"] [[\"domain\",\"\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\">\",1000]] [[\"domain\",\"\",\"logitech.com\"]], \"and\", [[\"content_info.connotation_types.negative\",\">\",1000], \"or\", [\"content_info.text_category\",\"has\",10994]]] for more information about filters, please refer to Content Analysis API – Filters learn more about the initial dataset filters in this help center article.",
        -    "items": {},
        -    "type": "array"
        -  },
        -  "internal_list_limit": {
        -    "description": "maximum number of elements within internal arrays optional field you can use this field to limit the number of elements within the following arrays: top_domains text_categories page_categories countries languages default value: 1 maximum value: 20",
        -    "type": "integer"
        -  },
        -  "page_type": {
        -    "description": "target page types optional field use this parameter to filter the dataset by page types possible values: \"ecommerce\", \"news\", \"blogs\", \"message-boards\", \"organization\"",
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  "rank_scale": {
        -    "description": "defines the scale used for calculating and displaying the rank values optional field you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale possible values: one_hundred — rank values are displayed on a 0–100 scale one_thousand — rank values are displayed on a 0–1000 scale default value: one_thousand learn more about how this parameter works in this Help Center article",
        -    "type": "string"
        -  },
        -  "search_mode": {
        -    "description": "results grouping type optional field possible grouping types: as_is – returns data on all citations for the target category_code one_per_domain – returns data on one citation of the category_code per domain default value: as_is",
        -    "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: -[
        -  "category_code",
        -  "date_from"
        -]
      • 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_content_phrase_trends_live7 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "date_from": "2022-09-01",
        +    "date_group": "month",
        +    "keyword": "logitech",
        +    "search_mode": "as_is"
        +  }
        +]
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "date_from": "2022-09-01",
        +        "date_group": "month",
        +        "keyword": "logitech",
        +        "search_mode": "as_is"
        +      }
        +    ],
        +    "properties": {
        +      "date_from": {
        +        "description": "<em>starting date of the time range</em><br><strong>required field</strong><br>date format: <code>\"yyyy-mm-dd\"</code><br>example:<br><code>\"2019-01-15\"</code>",
        +        "type": "string"
        +      },
        +      "date_group": {
        +        "description": "<em>time range which will be used to group the results</em><br>optional field<br>default value: <code>month</code><br>possible values: <code>day</code>, <code>week</code>, <code>month</code>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "date_to": {
        +        "description": "<em>ending date of the time range</em><br>optional field<br>if you don't specify this field, today's date will be used by default<br>date format: <code>\"yyyy-mm-dd\"</code><br>example:<br><code>\"2019-01-15\"</code>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "initial_dataset_filters": {
        +        "description": "<em>initial dataset filtering parameters</em><br>optional field<br>initial filtering parameters that apply to fields in the <a href=\"/v3/content_analysis/search/live/?bash\" target=\"_blank\">Search endpoint</a>;<br><strong>you can add several filters at once (8 filters maximum);</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions;<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>has</code>, <code>has_not</code>, <code>match</code>, <code>not_match</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters;<br>example:<br><code>[\"domain\",\"&lt;&gt;\", \"logitech.com\"]</code><p><code>[[\"domain\",\"&lt;&gt;\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",1000]]</code><p><code>[[\"domain\",\"&lt;&gt\",\"logitech.com\"]],<br>\"and\",<br>[[\"content_info.connotation_types.negative\",\"&gt;\",1000],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a><br>learn more about the initial dataset filters in <a href=\"https://dataforseo.com/help-center/what-are-the-initial-dataset-filters-and-how-do-they-work\" rel=\"noopener noreferrer\" target=\"_blank\">this help center article.</a>",
        +        "items": {
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "internal_list_limit": {
        +        "description": "<em>maximum number of elements within internal arrays</em><br>optional field<br>you can use this field to limit the number of elements within the following arrays:<br><code>top_domains</code><br><code>text_categories</code><br><code>page_categories</code><br><code>countries</code><br><code>languages</code><br>default value: <code>1</code><br>maximum value: <code>20</code>",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>target keyword</em><br><strong>required field</strong><br>UTF-8 encoding<br>the keywords will be converted to a lowercase format;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example: <br><code>\"keyword\": \"\\\"tesla palo alto\\\"\"</code><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"
        +      },
        +      "keyword_fields": {
        +        "additionalProperties": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "description": "<em>target keyword fields and target keywords</em><br>optional field<br>use this parameter to filter the dataset by keywords that certain fields should contain;<br>fields you can specify: <code>title</code>, <code>main_title</code>, <code>previous_title</code>, <code>snippet</code><br>you can indicate several fields;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example:<br>`\"keyword_fields\": {<br>\"snippet\": \"\\\"logitech mouse\\\"\",<br>\"main_title\": \"sale\"<br>}`",
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "page_type": {
        +        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "rank_scale": {
        +        "description": "<em>defines the scale used for calculating and displaying the <code>rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "search_mode": {
        +        "description": "<em>results grouping type</em><br>optional field<br>possible grouping types:<br><code>as_is</code> - returns data on all citations for the target <code>keyword</code><br><code>one_per_domain</code> - returns data on one citation of the <code>keyword</code> per domain<br>default value: <code>as_is</code>",
        +        "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"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "date_from": {
        -    "description": "starting date of the time range required field date format: \"yyyy-mm-dd\" example: \"2019-01-15\"",
        -    "type": "string"
        -  },
        -  "date_group": {
        -    "description": "time range which will be used to group the results optional field default value: month possible values: day, week, month",
        -    "type": "string"
        -  },
        -  "date_to": {
        -    "description": "ending date of the time range optional field if you don’t specify this field, today’s date will be used by default date format: \"yyyy-mm-dd\" example: \"2019-01-15\"",
        -    "type": "string"
        -  },
        -  "initial_dataset_filters": {
        -    "description": "initial dataset filtering parameters optional field initial filtering parameters that apply to fields in the Search endpoint; you can add several filters at once (8 filters maximum); you should set a logical operator and, or between the conditions; the following operators are supported: regex, not_regex, , , >, >=, =, , in, not_in, like,not_like, has, has_not, match, not_match you can use the % operator with like and not_like to match any string of zero or more characters; example: [\"domain\",\"\", \"logitech.com\"] [[\"domain\",\"\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\">\",1000]] [[\"domain\",\"\",\"logitech.com\"]], \"and\", [[\"content_info.connotation_types.negative\",\">\",1000], \"or\", [\"content_info.text_category\",\"has\",10994]]] for more information about filters, please refer to Content Analysis API – Filters learn more about the initial dataset filters in this help center article.",
        -    "items": {},
        -    "type": "array"
        -  },
        -  "internal_list_limit": {
        -    "description": "maximum number of elements within internal arrays optional field you can use this field to limit the number of elements within the following arrays: top_domains text_categories page_categories countries languages default value: 1 maximum value: 20",
        -    "type": "integer"
        -  },
        -  "keyword": {
        -    "description": "target keyword required field UTF-8 encoding the keywords will be converted to a lowercase format; Note: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; example: \"keyword\": \"\\\"tesla palo alto\\\"\" learn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        -    "type": "string"
        -  },
        -  "keyword_fields": {
        -    "description": "target keyword fields and target keywords optional field use this parameter to filter the dataset by keywords that certain fields should contain; fields you can specify: title, main_title, previous_title, snippet you can indicate several fields; Note: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; example: \"keyword_fields\": { \"snippet\": \"\\\"logitech mouse\\\"\", \"main_title\": \"sale\" }",
        -    "properties": {
        -      "main_title": {
        -        "type": "string"
        -      },
        -      "previous_title": {
        -        "type": "string"
        -      },
        -      "snippet": {
        -        "type": "string"
        -      },
        -      "title": {
        -        "type": "string"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  "page_type": {
        -    "description": "target page types optional field use this parameter to filter the dataset by page types possible values: \"ecommerce\", \"news\", \"blogs\", \"message-boards\", \"organization\"",
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  "rank_scale": {
        -    "description": "defines the scale used for calculating and displaying the rank values optional field you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale possible values: one_hundred — rank values are displayed on a 0–100 scale one_thousand — rank values are displayed on a 0–1000 scale default value: one_thousand learn more about how this parameter works in this Help Center article",
        -    "type": "string"
        -  },
        -  "search_mode": {
        -    "description": "results grouping type optional field possible grouping types: as_is – returns data on all citations for the target keyword one_per_domain – returns data on one citation of the keyword per domain default value: as_is",
        -    "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",
        -  "date_from"
        -]
      • 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_content_rating_distribution_live7 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "internal_list_limit": 10,
        +    "keyword": "logitech",
        +    "search_mode": "as_is"
        +  }
        +]
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "internal_list_limit": 10,
        +        "keyword": "logitech",
        +        "search_mode": "as_is"
        +      }
        +    ],
        +    "properties": {
        +      "initial_dataset_filters": {
        +        "description": "<em>initial dataset filtering parameters</em><br>optional field<br>initial filtering parameters that apply to fields in the <a href=\"/v3/content_analysis/search/live/?bash\" target=\"_blank\">Search endpoint</a><br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>has</code>, <code>has_not</code>, <code>match</code>, <code>not_match</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"domain\",\"&lt;&gt;\", \"logitech.com\"]</code><p><code>[[\"domain\",\"&lt;&gt;\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",1000]]</code><p><code>[[\"domain\",\"&lt;&gt\",\"logitech.com\"]],<br>\"and\",<br>[[\"content_info.connotation_types.negative\",\"&gt;\",1000],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a><br>learn more about the initial dataset filters in <a href=\"https://dataforseo.com/help-center/what-are-the-initial-dataset-filters-and-how-do-they-work\" rel=\"noopener noreferrer\" target=\"_blank\">this help center article.</a>",
        +        "items": {
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "internal_list_limit": {
        +        "description": "<em>maximum number of elements within internal arrays</em><br>optional field<br>you can use this field to limit the number of elements within the following arrays:<br><code>top_domains</code><br><code>text_categories</code><br><code>page_categories</code><br><code>countries</code><br><code>languages</code><br>default value: <code>1</code><br>maximum value: <code>20</code>",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>target keyword</em><br><strong>required field</strong><br>UTF-8 encoding<br>the keywords will be converted to a lowercase format;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example: <br><code>\"keyword\": \"\\\"tesla palo alto\\\"\"</code><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"
        +      },
        +      "keyword_fields": {
        +        "additionalProperties": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "description": "<em>target keyword fields and target keywords</em><br>optional field<br>use this parameter to filter the dataset by keywords that certain fields should contain;<br>fields you can specify: <code>title</code>, <code>main_title</code>, <code>previous_title</code>, <code>snippet</code><br>you can indicate several fields;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example:<br>`\"keyword_fields\": {<br>\"snippet\": \"\\\"logitech mouse\\\"\",<br>\"main_title\": \"sale\"<br>}`",
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "page_type": {
        +        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "positive_connotation_threshold": {
        +        "description": "<em>positive connotation threshold</em><br>optional field<br>specified as the probability index threshold for positive sentiment related to the citation content<br>if you specify this field, <code>connotation_types</code> object in the response will only contain data on citations with <code>positive</code> sentiment probability more than or equal to the specified value<br>possible values: from <code>0</code> to <code>1</code><br>default value: <code>0.4</code>",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "rank_scale": {
        +        "description": "<em>defines the scale used for calculating and displaying the <code>rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "search_mode": {
        +        "description": "<em>results grouping type</em><br>optional field<br>possible grouping types:<br><code>as_is</code> - returns all citations for the target <code>keyword</code><br><code>one_per_domain</code> - returns one citation of the <code>keyword</code> per domain<br>default value: <code>as_is</code>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "sentiments_connotation_threshold": {
        +        "description": "<em>sentiment connotation threshold</em><br>optional field<br>specified as the probability index threshold for sentiment connotations related to the citation content<br>if you specify this field, <code>sentiment_connotations</code> object in the response will only contain data on citations where the probability per each sentiment is more than or equal to the specified value<br>possible values: from <code>0</code> to <code>1</code><br>default value: <code>0.4</code>",
        +        "type": [
        +          "number",
        +          "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"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "initial_dataset_filters": {
        -    "description": "initial dataset filtering parameters optional field initial filtering parameters that apply to fields in the Search endpoint you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, , , >, >=, =, , in, not_in, like,not_like, has, has_not, match, not_match you can use the % operator with like and not_like to match any string of zero or more characters example: [\"domain\",\"\", \"logitech.com\"] [[\"domain\",\"\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\">\",1000]] [[\"domain\",\"\",\"logitech.com\"]], \"and\", [[\"content_info.connotation_types.negative\",\">\",1000], \"or\", [\"content_info.text_category\",\"has\",10994]]] for more information about filters, please refer to Content Analysis API – Filters learn more about the initial dataset filters in this help center article.",
        -    "items": {},
        -    "type": "array"
        -  },
        -  "internal_list_limit": {
        -    "description": "maximum number of elements within internal arrays optional field you can use this field to limit the number of elements within the following arrays: top_domains text_categories page_categories countries languages default value: 1 maximum value: 20",
        -    "type": "integer"
        -  },
        -  "keyword": {
        -    "description": "target keyword required field UTF-8 encoding the keywords will be converted to a lowercase format; Note: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; example: \"keyword\": \"\\\"tesla palo alto\\\"\" learn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        -    "type": "string"
        -  },
        -  "keyword_fields": {
        -    "description": "target keyword fields and target keywords optional field use this parameter to filter the dataset by keywords that certain fields should contain; fields you can specify: title, main_title, previous_title, snippet you can indicate several fields; Note: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; example: \"keyword_fields\": { \"snippet\": \"\\\"logitech mouse\\\"\", \"main_title\": \"sale\" }",
        -    "properties": {
        -      "main_title": {
        -        "type": "string"
        -      },
        -      "previous_title": {
        -        "type": "string"
        -      },
        -      "snippet": {
        -        "type": "string"
        -      },
        -      "title": {
        -        "type": "string"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  "page_type": {
        -    "description": "target page types optional field use this parameter to filter the dataset by page types possible values: \"ecommerce\", \"news\", \"blogs\", \"message-boards\", \"organization\"",
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  "positive_connotation_threshold": {
        -    "description": "positive connotation threshold optional field specified as the probability index threshold for positive sentiment related to the citation content if you specify this field, connotation_types object in the response will only contain data on citations with positive sentiment probability more than or equal to the specified value possible values: from 0 to 1 default value: 0.4",
        -    "type": "number"
        -  },
        -  "rank_scale": {
        -    "description": "defines the scale used for calculating and displaying the rank values optional field you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale possible values: one_hundred — rank values are displayed on a 0–100 scale one_thousand — rank values are displayed on a 0–1000 scale default value: one_thousand learn more about how this parameter works in this Help Center article",
        -    "type": "string"
        -  },
        -  "search_mode": {
        -    "description": "results grouping type optional field possible grouping types: as_is – returns all citations for the target keyword one_per_domain – returns one citation of the keyword per domain default value: as_is",
        -    "type": "string"
        -  },
        -  "sentiments_connotation_threshold": {
        -    "description": "sentiment connotation threshold optional field specified as the probability index threshold for sentiment connotations related to the citation content if you specify this field, sentiment_connotations object in the response will only contain data on citations where the probability per each sentiment is more than or equal to the specified value possible values: from 0 to 1 default value: 0.4",
        -    "type": "number"
        -  },
        -  "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_content_search_live6 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "filters": [
        +      "main_domain",
        +      "=",
        +      "reviewfinder.ca"
        +    ],
        +    "keyword": "logitech",
        +    "keyword_fields": {
        +      "snippet": "logitech"
        +    },
        +    "limit": 10,
        +    "order_by": [
        +      "content_info.sentiment_connotations.anger,desc"
        +    ],
        +    "page_type": [
        +      "ecommerce",
        +      "news",
        +      "blogs",
        +      "message-boards",
        +      "organization"
        +    ],
        +    "search_mode": "as_is"
        +  }
        +]
      • changedInput schema / properties / body / items / anyOf
        Previous value: -[
        -  {
        -    "required": [
        -      "keyword"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "offset_token"
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "example": [
        +      {
        +        "filters": [
        +          "main_domain",
        +          "=",
        +          "reviewfinder.ca"
        +        ],
        +        "keyword": "logitech",
        +        "keyword_fields": {
        +          "snippet": "logitech"
        +        },
        +        "limit": 10,
        +        "order_by": [
        +          "content_info.sentiment_connotations.anger,desc"
        +        ],
        +        "page_type": [
        +          "ecommerce",
        +          "news",
        +          "blogs",
        +          "message-boards",
        +          "organization"
        +        ],
        +        "search_mode": "as_is"
        +      }
        +    ],
        +    "properties": {
        +      "filters": {
        +        "description": "<em>array of results filtering parameters</em><br>optional field<br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>match</code>, <code>not_match</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"country\",\"=\", \"US\"]</code><p><code>[[\"domain_rank\",\"&gt;\",800],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",0.9]]</code><p><code>[[\"domain_rank\",\"&gt;\",800],<br>\"and\",<br>[[\"page_types\",\"has\",\"ecommerce\"],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a>",
        +        "items": {
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>target keyword</em><br><strong>required field</strong><br>UTF-8 encoding<br>the keywords will be converted to a lowercase format;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example: <br>`\"keyword\": \"\\\"tesla palo alto\\\"\"`<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"
        +      },
        +      "keyword_fields": {
        +        "additionalProperties": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "description": "<em>target keyword fields and target keywords</em><br>optional field<br>use this parameter to filter the dataset by keywords that certain fields should contain;<br>fields you can specify: <code>title</code>, <code>main_title</code>, <code>previous_title</code>, <code>snippet</code><br>you can indicate several fields;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example:<br>`\"keyword_fields\": {<br>\"snippet\": \"\\\"logitech mouse\\\"\",<br>\"main_title\": \"sale\"<br>}\"`",
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "limit": {
        +        "description": "<em>the maximum number of returned citations</em><br>optional field<br>default value: <code>100</code><br>maximum value: <code>1000</code>",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "offset": {
        +        "description": "<em>offset in the results array of returned citations</em><br>optional field<br>default value: <code>0</code><br>if you specify the <code>10</code> value, the first ten citations in the results array will be omitted and the data will be provided for the successive citations<br><strong>Note:</strong> we recommend using this parameter only when retrieving up to 10,000 results<br>for retrieving over 10,000 results, use the <code>offset_token</code> instead.",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "offset_token": {
        +        "description": "<em>offset token for subsequent requests</em><br>optional field<br>provided in the identical field of the response to each request;<br>use this parameter to avoid timeouts while trying to obtain over 10,000 results in a single request;<br>by specifying the unique <code>offset_token</code> value from the response array, you will get the subsequent results of the initial task;<br><code>offset_token</code> values are unique for each subsequent task <br><strong>Note:</strong> if the <code>offset_token</code> is specified in the request, all other parameters except <code>limit</code> will not be taken into account when processing a task<br>learn more about this parameter on our <a href=\"https://dataforseo.com/help-center/what-is-the-difference-between-the-offset-and-offset_token-parameters#offset_token\" target=\"_blank\">Help Center</a>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "order_by": {
        +        "description": "<em>results sorting rules</em><br>optional field<br>you can use the same values as in the <code>filters</code> array to sort the results<br>possible sorting types:<br><code>asc</code> - results will be sorted in the ascending order<br><code>desc</code> - results will be sorted in the descending order<br>you should use a comma to set up a sorting type<br>example:<br><code>[\"content_info.sentiment_connotations.anger,desc\"]</code><br>default rule:<br><code>[\"content_info.sentiment_connotations.anger,desc\"]</code><br><strong>note that you can set no more than three sorting rules in a single request</strong><br>you should use a comma to separate several sorting rules<br>example:<br><code>[\"content_info.sentiment_connotations.anger,desc\",\"keyword_data.keyword_info.cpc,desc\"]</code>",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "page_type": {
        +        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "rank_scale": {
        +        "description": "<em>defines the scale used for calculating and displaying the <code>domain_rank</code>, and <code>url_rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "search_mode": {
        +        "description": "<em>results grouping type</em><br>optional field<br>possible grouping types:<br><code>as_is</code> - returns all citations for the target <code>keyword</code><br><code>one_per_domain</code> - returns one citation of the <code>keyword</code> per domain<br>default value: <code>as_is</code>",
        +        "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"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "filters": {
        -    "description": "array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, , , >, >=, =, , in, not_in, like,not_like, match, not_match you can use the % operator with like and not_like to match any string of zero or more characters example: [\"country\",\"=\", \"US\"] [[\"domain_rank\",\">\",800],\"and\",[\"content_info.connotation_types.negative\",\">\",0.9]] [[\"domain_rank\",\">\",800], \"and\", [[\"page_types\",\"has\",\"ecommerce\"], \"or\", [\"content_info.text_category\",\"has\",10994]]] for more information about filters, please refer to Content Analysis API – Filters",
        -    "items": {},
        -    "type": "array"
        -  },
        -  "keyword": {
        -    "description": "target keyword required field UTF-8 encoding the keywords will be converted to a lowercase format; Note: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; example: \"keyword\": \"\\\"tesla palo alto\\\"\" learn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        -    "type": "string"
        -  },
        -  "keyword_fields": {
        -    "description": "target keyword fields and target keywords optional field use this parameter to filter the dataset by keywords that certain fields should contain; fields you can specify: title, main_title, previous_title, snippet you can indicate several fields; Note: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; example: \"keyword_fields\": { \"snippet\": \"\\\"logitech mouse\\\"\", \"main_title\": \"sale\" }",
        -    "properties": {
        -      "main_title": {
        -        "type": "string"
        -      },
        -      "previous_title": {
        -        "type": "string"
        -      },
        -      "snippet": {
        -        "type": "string"
        -      },
        -      "title": {
        -        "type": "string"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  "limit": {
        -    "description": "the maximum number of returned citations optional field default value: 100 maximum value: 1000",
        -    "type": "integer"
        -  },
        -  "offset": {
        -    "description": "offset in the results array of returned citations optional field default value: 0 if you specify the 10 value, the first ten citations in the results array will be omitted and the data will be provided for the successive citations Note: we recommend using this parameter only when retrieving up to 10,000 results for retrieving over 10,000 results, use the offset_token instead.",
        -    "type": "integer"
        -  },
        -  "offset_token": {
        -    "description": "offset token for subsequent requests optional field provided in the identical field of the response to each request; use this parameter to avoid timeouts while trying to obtain over 10,000 results in a single request; by specifying the unique offset_token value from the response array, you will get the subsequent results of the initial task; offset_token values are unique for each subsequent task Note: if the offset_token is specified in the request, all other parameters except limit will not be taken into account when processing a task learn more about this parameter on our Help Center",
        -    "type": "string"
        -  },
        -  "order_by": {
        -    "description": "results sorting rules optional field you can use the same values as in the filters array to sort the results possible sorting types: asc – results will be sorted in the ascending order desc – results will be sorted in the descending order you should use a comma to set up a sorting type example: [\"content_info.sentiment_connotations.anger,desc\"] default rule: [\"content_info.sentiment_connotations.anger,desc\"] note that you can set no more than three sorting rules in a single request you should use a comma to separate several sorting rules example: [\"content_info.sentiment_connotations.anger,desc\",\"keyword_data.keyword_info.cpc,desc\"]",
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  "page_type": {
        -    "description": "target page types optional field use this parameter to filter the dataset by page types possible values: \"ecommerce\", \"news\", \"blogs\", \"message-boards\", \"organization\"",
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  "rank_scale": {
        -    "description": "defines the scale used for calculating and displaying the domain_rank, and url_rank values optional field you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale possible values: one_hundred — rank values are displayed on a 0–100 scale one_thousand — rank values are displayed on a 0–1000 scale default value: one_thousand learn more about how this parameter works in this Help Center article",
        -    "type": "string"
        -  },
        -  "search_mode": {
        -    "description": "results grouping type optional field possible grouping types: as_is – returns all citations for the target keyword one_per_domain – returns one citation of the keyword per domain default value: as_is",
        -    "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"
        -  }
        -}
      • 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_content_sentiment_analysis_live7 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "internal_list_limit": 1,
        +    "keyword": "logitech"
        +  }
        +]
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "internal_list_limit": 1,
        +        "keyword": "logitech"
        +      }
        +    ],
        +    "properties": {
        +      "initial_dataset_filters": {
        +        "description": "initial dataset filtering parameters\noptional field\ninitial filtering parameters that apply to fields in the Search endpoint\nyou can add several filters at once (8 filters maximum)\nyou should set a logical operator and, or between the conditions\nthe following operators are supported:\nregex, not_regex, <, <=, >, >=, =, <>, in, not_in, like,not_like, has, has_not, match, not_match\nyou can use the % operator with like and not_like to match any string of zero or more characters\nexample:\n[\"domain\",\"<>\", \"logitech.com\"]\n[[\"domain\",\"<>\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\">\",1000]]\n[[\"domain\",\"<>\",\"logitech.com\"]],\n\"and\",\n[[\"content_info.connotation_types.negative\",\">\",1000],\n\"or\",\n[\"content_info.text_category\",\"has\",10994]]]\nfor more information about filters, please refer to Content Analysis API – Filters\nlearn more about the initial dataset filters in this help center article.",
        +        "items": {
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "internal_list_limit": {
        +        "description": "maximum number of elements within internal arrays\noptional field\nyou can use this field to limit the number of elements within the following arrays:\ntop_domains\ntext_categories\npage_categories\ncountries\nlanguages\ndefault value: 1\nmaximum value: 20",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "target keyword\nrequired field\nUTF-8 encoding\nthe keywords will be converted to a lowercase format;\nNote: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes;\nexample:\n\"keyword\": \"\\\"tesla palo alto\\\"\"\nlearn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        +        "type": "string"
        +      },
        +      "keyword_fields": {
        +        "additionalProperties": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "description": "target keyword fields and target keywords\noptional field\nuse this parameter to filter the dataset by keywords that certain fields should contain;\nfields you can specify: title, main_title, previous_title, snippet\nyou can indicate several fields;\nNote: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes;\nexample:\n\"keyword_fields\": {\n    \"snippet\": \"\\\"logitech mouse\\\"\",\n    \"main_title\": \"sale\"\n}",
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "page_type": {
        +        "description": "target page types\noptional field\nuse this parameter to filter the dataset by page types\npossible values:\n\"ecommerce\", \"news\", \"blogs\", \"message-boards\", \"organization\"",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "positive_connotation_threshold": {
        +        "description": "positive connotation threshold\noptional field\nspecified as the probability index threshold for positive sentiment related to the citation content\nif you specify this field, connotation_types object in the response will only contain data on citations with positive sentiment probability more than or equal to the specified value\npossible values: from 0 to 1\ndefault value: 0.4",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "rank_scale": {
        +        "description": "defines the scale used for calculating and displaying the rank values\noptional field\nyou can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale\npossible values:\none_hundred — rank values are displayed on a 0–100 scale\none_thousand — rank values are displayed on a 0–1000 scale\ndefault value: one_thousand\nlearn more about how this parameter works in this Help Center article",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "sentiments_connotation_threshold": {
        +        "description": "sentiment connotation threshold\noptional field\nspecified as the probability index threshold for sentiment connotations related to the citation content\nif you specify this field, sentiment_connotations object in the response will only contain data on citations where the probability per each sentiment is more than or equal to the specified value\npossible values: from 0 to 1\ndefault value: 0.4",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "tag": {
        +        "description": "user-defined task identifier\noptional field\nthe character limit is 255\nyou can use this parameter to identify the task and match it with the result\nyou will find the specified tag value in the data object of the response",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "initial_dataset_filters": {
        -    "description": "initial dataset filtering parameters optional field initial filtering parameters that apply to fields in the Search endpoint you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, , , >, >=, =, , in, not_in, like,not_like, has, has_not, match, not_match you can use the % operator with like and not_like to match any string of zero or more characters example: [\"domain\",\"\", \"logitech.com\"] [[\"domain\",\"\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\">\",1000]] [[\"domain\",\"\",\"logitech.com\"]], \"and\", [[\"content_info.connotation_types.negative\",\">\",1000], \"or\", [\"content_info.text_category\",\"has\",10994]]] for more information about filters, please refer to Content Analysis API – Filters learn more about the initial dataset filters in this help center article.",
        -    "items": {},
        -    "type": "array"
        -  },
        -  "internal_list_limit": {
        -    "description": "maximum number of elements within internal arrays optional field you can use this field to limit the number of elements within the following arrays: top_domains text_categories page_categories countries languages default value: 1 maximum value: 20",
        -    "type": "integer"
        -  },
        -  "keyword": {
        -    "description": "target keyword required field UTF-8 encoding the keywords will be converted to a lowercase format; Note: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; example: \"keyword\": \"\\\"tesla palo alto\\\"\" learn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        -    "type": "string"
        -  },
        -  "keyword_fields": {
        -    "description": "target keyword fields and target keywords optional field use this parameter to filter the dataset by keywords that certain fields should contain; fields you can specify: title, main_title, previous_title, snippet you can indicate several fields; Note: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; example: \"keyword_fields\": { \"snippet\": \"\\\"logitech mouse\\\"\", \"main_title\": \"sale\" }",
        -    "properties": {
        -      "main_title": {
        -        "type": "string"
        -      },
        -      "previous_title": {
        -        "type": "string"
        -      },
        -      "snippet": {
        -        "type": "string"
        -      },
        -      "title": {
        -        "type": "string"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  "page_type": {
        -    "description": "target page types optional field use this parameter to filter the dataset by page types possible values: \"ecommerce\", \"news\", \"blogs\", \"message-boards\", \"organization\"",
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  "positive_connotation_threshold": {
        -    "description": "positive connotation threshold optional field specified as the probability index threshold for positive sentiment related to the citation content if you specify this field, connotation_types object in the response will only contain data on citations with positive sentiment probability more than or equal to the specified value possible values: from 0 to 1 default value: 0.4",
        -    "type": "number"
        -  },
        -  "rank_scale": {
        -    "description": "defines the scale used for calculating and displaying the rank values optional field you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale possible values: one_hundred — rank values are displayed on a 0–100 scale one_thousand — rank values are displayed on a 0–1000 scale default value: one_thousand learn more about how this parameter works in this Help Center article",
        -    "type": "string"
        -  },
        -  "sentiments_connotation_threshold": {
        -    "description": "sentiment connotation threshold optional field specified as the probability index threshold for sentiment connotations related to the citation content if you specify this field, sentiment_connotations object in the response will only contain data on citations where the probability per each sentiment is more than or equal to the specified value possible values: from 0 to 1 default value: 0.4",
        -    "type": "number"
        -  },
        -  "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_content_summary_live7 fields changed
      • addedInput schema / properties / body / example
        Added value: +[
        +  {
        +    "internal_list_limit": 8,
        +    "keyword": "logitech",
        +    "page_type": [
        +      "ecommerce",
        +      "news",
        +      "blogs",
        +      "message-boards",
        +      "organization"
        +    ],
        +    "positive_connotation_threshold": 0.5
        +  }
        +]
      • addedInput schema / properties / body / items / anyOf
        Added value: +[
        +  {
        +    "example": [
        +      {
        +        "internal_list_limit": 8,
        +        "keyword": "logitech",
        +        "page_type": [
        +          "ecommerce",
        +          "news",
        +          "blogs",
        +          "message-boards",
        +          "organization"
        +        ],
        +        "positive_connotation_threshold": 0.5
        +      }
        +    ],
        +    "properties": {
        +      "initial_dataset_filters": {
        +        "description": "<em>initial dataset filtering parameters</em><br>optional field<br>initial filtering parameters that apply to fields in the <a href=\"/v3/content_analysis/search/live/?bash\" target=\"_blank\">Search endpoint</a><br><strong>you can add several filters at once (8 filters maximum)</strong><br>you should set a logical operator <code>and</code>, <code>or</code> between the conditions<br>the following operators are supported:<br><code>regex</code>, <code>not_regex</code>, <code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>, <code>=</code>, <code>&lt;&gt;</code>, <code>in</code>, <code>not_in</code>, <code>like</code>,<code>not_like</code>, <code>has</code>, <code>has_not</code><br>you can use the <code>%</code> operator with <code>like</code> and <code>not_like</code> to match any string of zero or more characters<br>example:<br><code>[\"domain\",\"&lt;&gt;\", \"logitech.com\"]</code><p><code>[[\"domain\",\"&lt;&gt;\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\"&gt;\",1000]]</code><p><code>[[\"domain\",\"&lt;&gt\",\"logitech.com\"]],<br>\"and\",<br>[[\"content_info.connotation_types.negative\",\"&gt;\",1000],<br>\"or\",<p>[\"content_info.text_category\",\"has\",10994]]]</code><br>for more information about filters, please refer to <a href=\"/v3/content_analysis/filters\" target=\"_blank\" rel=\"noopener noreferrer\">Content Analysis API - Filters</a><br>learn more about the initial dataset filters in <a href=\"https://dataforseo.com/help-center/what-are-the-initial-dataset-filters-and-how-do-they-work\" rel=\"noopener noreferrer\" target=\"_blank\">this help center article.</a>",
        +        "items": {
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "internal_list_limit": {
        +        "description": "<em>maximum number of elements within internal arrays</em><br>optional field<br>you can use this field to limit the number of elements within the following arrays:<br><code>top_domains</code><br><code>text_categories</code><br><code>page_categories</code><br><code>countries</code><br><code>languages</code><br>default value: <code>1</code><br>maximum value: <code>20</code>",
        +        "type": [
        +          "integer",
        +          "null"
        +        ]
        +      },
        +      "keyword": {
        +        "description": "<em>target keyword</em><br><strong>required field</strong><br>UTF-8 encoding<br>the keywords will be converted to a lowercase format;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example: <br><code>\"keyword\": \"\\\"tesla palo alto\\\"\"</code><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"
        +      },
        +      "keyword_fields": {
        +        "additionalProperties": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "description": "<em>target keyword fields and target keywords</em><br>optional field<br>use this parameter to filter the dataset by keywords that certain fields should contain;<br>fields you can specify: <code>title</code>, <code>main_title</code>, <code>previous_title</code>, <code>snippet</code><br>you can indicate several fields;<br><strong>Note</strong>: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; <br>example:<br><code>\"keyword_fields\": {<br>\"snippet\": \"\\\"logitech mouse\\\"\",<br>\"main_title\": \"sale\"<br>}</code>",
        +        "type": [
        +          "object",
        +          "null"
        +        ]
        +      },
        +      "page_type": {
        +        "description": "<em>target page types</em><br>optional field<br>use this parameter to filter the dataset by page types<br>possible values: <br><code>\"ecommerce\"</code>, <code>\"news\"</code>, <code>\"blogs\"</code>, <code>\"message-boards\"</code>, <code>\"organization\"</code>",
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": [
        +          "array",
        +          "null"
        +        ]
        +      },
        +      "positive_connotation_threshold": {
        +        "description": "<em>positive connotation threshold</em><br>optional field<br>specified as the probability index threshold for positive sentiment related to the citation content<br>if you specify this field, <code>connotation_types</code> object in the response will only contain data on citations with <code>positive</code> sentiment probability more than or equal to the specified value<br>possible values: from <code>0</code> to <code>1</code><br>default value: <code>0.4</code>",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "rank_scale": {
        +        "description": "<em>defines the scale used for calculating and displaying the <code>rank</code> values</em><br>optional field<p>you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale<p>possible values:<br><code>one_hundred</code> — rank values are displayed on a 0–100 scale<br><code>one_thousand</code> — rank values are displayed on a 0–1000 scale<p>default value: <code>one_thousand</code><p>learn more about how this parameter works in <a href=\"https://dataforseo.com/help-center/using-the-rank_scale-parameter-in-content-analysis-api\">this Help Center article</a>",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "sentiments_connotation_threshold": {
        +        "description": "<em>sentiment connotation threshold</em><br>optional field<br>specified as the probability index threshold for sentiment connotations related to the citation content<br>if you specify this field, <code>sentiment_connotations</code> object in the response will only contain data on citations where the <br>probability per each sentiment is more than or equal to the specified value<br>possible values: from <code>0</code> to <code>1</code><br>default value: <code>0.4</code>",
        +        "type": [
        +          "number",
        +          "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"
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  }
        +]
      • removedInput schema / properties / body / items / properties
        Removed value: -{
        -  "initial_dataset_filters": {
        -    "description": "initial dataset filtering parameters optional field initial filtering parameters that apply to fields in the Search endpoint you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, , , >, >=, =, , in, not_in, like,not_like, has, has_not you can use the % operator with like and not_like to match any string of zero or more characters example: [\"domain\",\"\", \"logitech.com\"] [[\"domain\",\"\",\"logitech.com\"],\"and\",[\"content_info.connotation_types.negative\",\">\",1000]] [[\"domain\",\"\",\"logitech.com\"]], \"and\", [[\"content_info.connotation_types.negative\",\">\",1000], \"or\", [\"content_info.text_category\",\"has\",10994]]] for more information about filters, please refer to Content Analysis API – Filters learn more about the initial dataset filters in this help center article.",
        -    "items": {},
        -    "type": "array"
        -  },
        -  "internal_list_limit": {
        -    "description": "maximum number of elements within internal arrays optional field you can use this field to limit the number of elements within the following arrays: top_domains text_categories page_categories countries languages default value: 1 maximum value: 20",
        -    "type": "integer"
        -  },
        -  "keyword": {
        -    "description": "target keyword required field UTF-8 encoding the keywords will be converted to a lowercase format; Note: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; example: \"keyword\": \"\\\"tesla palo alto\\\"\" learn more about rules and limitations of keyword and keywords fields in DataForSEO APIs in this Help Center article",
        -    "type": "string"
        -  },
        -  "keyword_fields": {
        -    "description": "target keyword fields and target keywords optional field use this parameter to filter the dataset by keywords that certain fields should contain; fields you can specify: title, main_title, previous_title, snippet you can indicate several fields; Note: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; example: \"keyword_fields\": { \"snippet\": \"\\\"logitech mouse\\\"\", \"main_title\": \"sale\" }",
        -    "properties": {
        -      "main_title": {
        -        "type": "string"
        -      },
        -      "previous_title": {
        -        "type": "string"
        -      },
        -      "snippet": {
        -        "type": "string"
        -      },
        -      "title": {
        -        "type": "string"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  "page_type": {
        -    "description": "target page types optional field use this parameter to filter the dataset by page types possible values: \"ecommerce\", \"news\", \"blogs\", \"message-boards\", \"organization\"",
        -    "items": {
        -      "type": "string"
        -    },
        -    "type": "array"
        -  },
        -  "positive_connotation_threshold": {
        -    "description": "positive connotation threshold optional field specified as the probability index threshold for positive sentiment related to the citation content if you specify this field, connotation_types object in the response will only contain data on citations with positive sentiment probability more than or equal to the specified value possible values: from 0 to 1 default value: 0.4",
        -    "type": "number"
        -  },
        -  "rank_scale": {
        -    "description": "defines the scale used for calculating and displaying the rank values optional field you can use this parameter to choose whether rank values are presented on a 0–100 or 0–1000 scale possible values: one_hundred — rank values are displayed on a 0–100 scale one_thousand — rank values are displayed on a 0–1000 scale default value: one_thousand learn more about how this parameter works in this Help Center article",
        -    "type": "string"
        -  },
        -  "sentiments_connotation_threshold": {
        -    "description": "sentiment connotation threshold optional field specified as the probability index threshold for sentiment connotations related to the citation content if you specify this field, sentiment_connotations object in the response will only contain data on citations where the probability per each sentiment is more than or equal to the specified value possible values: from 0 to 1 default value: 0.4",
        -    "type": "number"
        -  },
        -  "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
    • 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. 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"
        +}
  5. 15 tool updates
    • First observedbatch_use
    • First observedget_dataforseo_content_available_filters
    • First observedget_dataforseo_content_categories
    • First observedget_dataforseo_content_languages
    • First observedget_dataforseo_content_locations
    • First observedget_details
    • First observedlist_categories
    • First observedpost_dataforseo_content_category_trends_live
    • First observedpost_dataforseo_content_phrase_trends_live
    • First observedpost_dataforseo_content_rating_distribution_live
    • First observedpost_dataforseo_content_search_live
    • First observedpost_dataforseo_content_sentiment_analysis_live
    • First observedpost_dataforseo_content_summary_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 what customers say in public — Google Business profiles and reviews, Trustpilot, Tripadvisor, hotel listings and the Q&A under a listing. **What you can ask for** • "Pull this business's Google reviews and group the complaints." • "What do Trustpilot reviewers say about this competitor?" • "Find hotels matching this search and their live prices." • "What questions are people asking on this Google listing, and are they answered?" • "Search listings for this category in this city." **How to use it** Point any MCP client at https://mcp.aisa.one/seo-business/mcp and sign in with OAuth — there is no key to create or paste. 22 tools: Google Business info, reviews, extended reviews, updates and Q&A; Trustpilot and Tripadvisor search and reviews; Google hotel info and searches; business listing search; plus Reddit and Pinterest signals for a business. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Read the reviews here, then ask the same agent what that business ranks for or who links to it — 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.

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

  • Your agent needs the open web — searched by more than one engine, and read as clean markdown rather than raw HTML. **What you can ask for** • "Search this question with two providers and tell me where they disagree." • "Scrape these 40 URLs into markdown, in one batch." • "Crawl this documentation site and give me every page." • "Do deep research on this topic and cite the sources." • "Find the academic papers behind this claim." **How to use it** Point any MCP client at https://mcp.aisa.one/search/mcp and sign in with OAuth — there is no key to create or paste. 30 tools across several independent providers: Tavily and Exa search, answers, contents and agent runs; Firecrawl scrape, batch scrape, crawl, map and search; Perplexity Sonar, Sonar Pro, reasoning and deep research; Oxylabs AI search and LLM jobs; OpenAI and Anthropic web search; and scholarly search. **Why this rather than the source** Several independent indexes behind one account, because one engine's blind spot is not visible from inside it. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Find the page here, then ask the same agent who links to it or how much traffic it gets — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/seo-serp/mcp for the Google results page itself, https://mcp.aisa.one/seo-serp-other-engines/mcp for Bing, Baidu and Naver.

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

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Web intelligence MCP server for AI agents. 7 tools for SERP analysis, competitor research, market trends, content gap analysis, keyword insights, audience discovery, and citation tracking.
    7
    2
    AGPL 3.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP tool server that gives any AI agent the ability to search, scrape, and analyze content across the internet.
    42
    MIT
  • 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
    C
    maintenance
    Real-time trend data from Google Trends (Search, Images, News, Shopping), YouTube, TikTok, Reddit, Amazon, Wikipedia, npm, Steam, Spotify, X (Twitter), App Store, Google Play, web traffic, and news sentiment via one MCP connection. Works with Claude, Cursor, VS Code, Windsurf, ChatGPT, and any MCP-compatible AI.
    28
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources