Skip to main content
Glama

AIsa Content & Sentiment

Content Analysis – Phrase Trends API

post_dataforseo_content_phrase_trends_live
Destructive

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

Input Schema

NameRequiredDescriptionDefault
bodyNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema 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"
      -  }
      -]
  2. Changed2 schema 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"
      +  }
      +]
  3. Changed7 schema 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
  4. First observed

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources