DataForSEO MCP Server
OfficialThis server provides a wide range of SEO, marketing, and web data tools via DataForSEO APIs.
AI Optimization – Get search volume for AI LLMs; retrieve structured responses from Claude, Gemini, ChatGPT, Perplexity; monitor LLM mentions with aggregated metrics, top domains/pages, cross-aggregated competitor comparison; search ChatGPT SERP results.
SERP – Real-time organic results from Google, Bing, Yahoo; YouTube search, video info, comments, subtitles; SERP locations/languages.
Keywords Data – Google Ads search volume; DataForSEO Trends (demographics, subregion interests); Google Trends explore and categories.
On-Page – Parse page content (links, headings, text); instant on-page optimization insights; Lighthouse audits.
DataForSEO Labs – Ranked keywords, competitors, domain rank overview, subdomains, keyword ideas/suggestions/related keywords, historical SERPs/rank overview, SERP competitors, bulk difficulty, keyword overview, top searches, search intent, keywords for site, domain/page intersection, bulk traffic estimation, relevant pages, historical data since Aug 2021; Amazon-specific tools: product keyword intersections, competitors, ranked keywords, related keywords, bulk search volume, product rank overview.
Backlinks – Backlink lists, anchors, bulk metrics (backlinks, referring domains, new/lost, ranks, spam score), competitors, domain/page intersections, domain pages summary/pages, referring domains/networks, summary, time series; anchor text distribution.
Business Data – Google Maps business listings search with filters.
Domain Analytics – WHOIS overview enriched with backlink/traffic; domain technologies.
Content Analysis – Citation search, summary, sentiment, phrase trends.
Merchant – Amazon product search, ASIN details, sellers, Amazon locations.
Utility – Locations for APIs, filter info, available filters.
Retrieves product data, prices, and seller information from Amazon.
Provides SERP data, business reviews, and other Google data.
Provides business reviews data from Tripadvisor.
Provides business reviews data from Trustpilot.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DataForSEO MCP ServerGet top 5 Google SERP results for 'SEO tools'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DataForSEO MCP Server
⚠️ Deprecated: This version of the DataForSEO MCP server is deprecated and will no longer be maintained.
It covers versions up to V2.x, available on npm, Docker, or remotely at https://mcp.dataforseo.com/mcp, and has been moved out of the main project into a separate repository.
New, actively supported version: dataforseo/mcp-server-typescript.
Model Context Protocol (MCP) server implementation for DataForSEO, enabling AI assistants to interact with selected DataForSEO APIs and obtain SEO data through a standardized interface.
Features
AI_OPTIMIZATION API: provides data for keyword discovery, conversational optimization, and real-time LLM benchmarking;
SERP API: real-time Search Engine Results Page (SERP) data for Google, Bing, and Yahoo;
KEYWORDS_DATA API: keyword research and clickstream data, including search volume, cost-per-click, and other metrics;
ONPAGE API: allows crawling websites and webpages according to customizable parameters to obtain on-page SEO performance metrics;
DATAFORSEO LABS API: data on keywords, SERPs, and domains based on DataForSEO's in-house databases and proprietary algorithms;
BACKLINKS API: comprehensive backlink analysis including referring domains, anchor text distribution, and link quality metrics;
BUSINESS DATA API: publicly available data on any business entity;
DOMAIN ANALYTICS API: data on website traffic, technologies, and Whois details;
CONTENT ANALYSIS API: robust source of data for brand monitoring, sentiment analysis, and citation management;
MERCHANT API: provides essential data and metrics for comprehensive competitor analysis, price monitoring, and market research across Google Shopping, Amazon etc.
Related MCP server: DataForSEO MCP Server
Prerequisites
Node.js (v14 or higher)
DataForSEO API credentials (API login and password)
Installation
Clone the repository:
git clone https://github.com/dataforseo/mcp-server-typescript
cd mcp-server-typescriptInstall dependencies:
npm installSet up environment variables:
# Required
export DATAFORSEO_USERNAME=your_username
export DATAFORSEO_PASSWORD=your_password
# Optional: specify which modules to enable (comma-separated)
# If not set, all modules will be enabled
export ENABLED_MODULES="SERP,KEYWORDS_DATA,ONPAGE,DATAFORSEO_LABS,BACKLINKS,BUSINESS_DATA,DOMAIN_ANALYTICS"
# Optional: specify which prompts in enabled modules are enable too (prompts names, comma-separated)
# If not set, all prompts from enabled modules will be enabled
export ENABLED_PROMPTS="top_3_google_result_domains,top_5_serp_paid_and_organic"
# Optional: enable full API responses
# If not set or set to false, the server will filter and transform API responses to a more concise format
# If set to true, the server will return the full, unmodified API responses
export DATAFORSEO_FULL_RESPONSE="false"
# Optional: enable simple filter schema
# If set to true, a simplified version of the filters schema will be used.
# This is required for ChatGPT APIs or other LLMs that cannot handle nested structures.
export DATAFORSEO_SIMPLE_FILTER="false"Installation as an NPM Package
You can install the package globally:
npm install -g dataforseo-mcp-server@latestOr run it directly without installation:
npx dataforseo-mcp-server@latestRemember to set environment variables before running the command:
# Required environment variables
export DATAFORSEO_USERNAME=your_username
export DATAFORSEO_PASSWORD=your_password
# Run with npx
npx dataforseo-mcp-server@latestBuilding and Running
Build the project:
npm run buildRun the server:
# Start local server (direct MCP communication)
npx dataforseo-mcp-server@latest
# Start HTTP server
npx dataforseo-mcp-server@latest httpHTTP Server Configuration
The server runs on port 3000 by default and supports both Basic Authentication and environment variable-based authentication.
To start the HTTP server, run:
npm run httpAuthentication Methods
Basic Authentication
Send requests with Basic Auth header:
Authorization: Basic <base64-encoded-credentials>Credentials format:
username:password
Environment Variables
If no Basic Auth is provided, the server will use credentials from environment variables:
export DATAFORSEO_USERNAME=your_username export DATAFORSEO_PASSWORD=your_password # Optional export DATAFORSEO_SIMPLE_FILTER="false" export DATAFORSEO_FULL_RESPONSE="true"
Cloudflare Worker Deployment
The DataForSEO MCP Server can be deployed as a Cloudflare Worker for serverless, edge-distributed access to DataForSEO APIs.
Worker Features
Edge Distribution: Deploy globally across Cloudflare's edge network
Serverless: No server management required
Auto-scaling: Handles traffic spikes automatically
MCP Protocol Support: Compatible with both Streamable HTTP and SSE transports
Environment Variables: Secure credential management through Cloudflare dashboard
Quick Start
Install Wrangler CLI:
npm install -g wranglerConfigure Worker:
# Login to Cloudflare wrangler login # Set environment variables wrangler secret put DATAFORSEO_USERNAME wrangler secret put DATAFORSEO_PASSWORDDeploy Worker:
# Build and deploy npm run build wrangler deploy --main build/index-worker.js
Configuration
The worker uses the same environment variables as the standard server:
DATAFORSEO_USERNAME: Your DataForSEO usernameDATAFORSEO_PASSWORD: Your DataForSEO passwordENABLED_MODULES: Comma-separated list of modules to enableENABLED_PROMPTS: Comma-separated list of prompt names to enableDATAFORSEO_FULL_RESPONSE: Set to "true" for full API responses
Worker Endpoints
Once deployed, your worker will be available at https://your-worker.your-subdomain.workers.dev/ with the following endpoints:
POST /mcp: Streamable HTTP transport (recommended)
GET /sse: SSE connection establishment (deprecated)
POST /messages: SSE message handling (deprecated)
GET /health: Health check endpoint
GET /: API documentation page
Advanced Configuration
Edit wrangler.jsonc to customize your deployment:
{
"name": "dataforseo-mcp-worker",
"main": "build/index-worker.js",
"compatibility_date": "2025-07-10",
"compatibility_flags": ["nodejs_compat"],
"vars": {
"ENABLED_MODULES": "SERP,KEYWORDS_DATA,ONPAGE,DATAFORSEO_LABS",
"ENABLED_PROMPTS":"top_3_google_result_domains,top_5_serp_paid_and_organic"
}
}Usage with Claude
After deployment, configure Claude to use your worker:
{
"name": "DataForSEO",
"description": "Access DataForSEO APIs via Cloudflare Worker",
"transport": {
"type": "http",
"baseUrl": "https://your-worker.your-subdomain.workers.dev/mcp"
}
}Available Modules
The following modules are available to be enabled/disabled:
AI_OPTIMIZATION: provides data for keyword discovery, conversational optimization, and real-time LLM benchmarking;SERP: real-time SERP data for Google, Bing, and Yahoo;KEYWORDS_DATA: keyword research and clickstream data;ONPAGE: crawl websites and webpages to obtain on-page SEO performance metrics;DATAFORSEO_LABS: data on keywords, SERPs, and domains based on DataForSEO's databases and algorithms;BACKLINKS: data on inbound links, referring domains and referring pages for any domain, subdomain, or webpage;BUSINESS_DATA: based on business reviews and business information publicly shared on the following platforms: Google, Trustpilot, Tripadvisor;DOMAIN_ANALYTICS: helps identify all possible technologies used for building websites and offers Whois data;CONTENT_ANALYSIS: help you discover citations of the target keyword or brand and analyze the sentiments around it;MERCHANT: helps retrieve product data, prices, and seller information from Google Shopping and Amazon etc.;
Adding New Tools/Modules
Module Structure
Each module corresponds to a specific DataForSEO API:
AI_OPTIMIZATION: AI Optimization APISERPmodule → SERP APIKEYWORDS_DATAmodule → Keywords Data APIONPAGEmodule → OnPage APIDATAFORSEO_LABSmodule → DataForSEO Labs APIBACKLINKS: module → Backlinks APIBUSINESS_DATA: module → Business Data APIDOMAIN_ANALYTICS: module → Domain Analytics APICONTENT_ANALYSIS: module → Content Analysis APIMERCHANT: module -> Metchant API
Implementation Options
You can either:
Add a new tool to an existing module
Create a completely new module
Adding a New Tool
Here's how to add a new tool to any new or pre-existing module:
// src/code/modules/your-module/tools/your-tool.tool.ts
import { BaseTool } from '../../base.tool';
import { DataForSEOClient } from '../../../client/dataforseo.client';
import { z } from 'zod';
export class YourTool extends BaseTool {
constructor(private client: DataForSEOClient) {
super(client);
// DataForSEO API returns extensive data with many fields, which can be overwhelming
// for AI agents to process. We select only the most relevant fields to ensure
// efficient and focused responses.
this.fields = [
'title', // Example: Include the title field
'description', // Example: Include the description field
'url', // Example: Include the URL field
// Add more fields as needed
];
}
getName() {
return 'your-tool-name';
}
getDescription() {
return 'Description of what your tool does';
}
getParams(): z.ZodRawShape {
return {
// Required parameters
keyword: z.string().describe('The keyword to search for'),
location: z.string().describe('Location in format "City,Region,Country" or just "Country"'),
// Optional parameters
fields: z.array(z.string()).optional().describe('Specific fields to return in the response. If not specified, all fields will be returned'),
language: z.string().optional().describe('Language code (e.g., "en")'),
};
}
async handle(params: any) {
try {
// Make the API call
const response = await this.client.makeRequest({
endpoint: '/v3/dataforseo_endpoint_path',
method: 'POST',
body: [{
// Your request parameters
keyword: params.keyword,
location: params.location,
language: params.language,
}],
});
// Validate the response for errors
this.validateResponse(response);
//if the main data array is specified in tasks[0].result[:] field
const result = this.handleDirectResult(response);
//if main data array specified in tasks[0].result[0].items field
const result = this.handleItemsResult(response);
// Format and return the response
return this.formatResponse(result);
} catch (error) {
// Handle and format any errors
return this.formatErrorResponse(error);
}
}
}Creating a New Module
Create a new directory under
src/core/modules/for your module:
mkdir -p src/core/modules/your-module-nameCreate module files:
// src/core/modules/your-module-name/your-module-name.module.ts
import { BaseModule } from '../base.module';
import { DataForSEOClient } from '../../client/dataforseo.client';
import { YourTool } from './tools/your-tool.tool';
export class YourModuleNameModule extends BaseModule {
constructor(private client: DataForSEOClient) {
super();
}
getTools() {
return {
'your-tool-name': new YourTool(this.client),
};
}
}Register your module in
src/core/config/modules.config.ts:
export const AVAILABLE_MODULES = [
'SERP',
'KEYWORDS_DATA',
'ONPAGE',
'DATAFORSEO_LABS',
'BACKLINKS',
'BUSINESS_DATA',
'DOMAIN_ANALYTICS',
'CONTENT_ANALYSIS',
'YOUR_MODULE_NAME' // Add your module name here
] as const;Initialize your module in
src/main/index.ts:
if (isModuleEnabled('YOUR_MODULE_NAME', enabledModules)) {
modules.push(new YourModuleNameModule(dataForSEOClient));
}Field Configuration
The MCP server supports field filtering to customize which data fields are returned in API responses. This helps reduce response size and focus on the most relevant data for your use case.
Configuration File Format
Create a JSON configuration file with the following structure:
{
"supported_fields": {
"tool_name": ["field1", "field2", "field3"],
"another_tool": ["field1", "field2"]
}
}Using Field Configuration
Pass the configuration file using the --configuration parameter:
# With npm
npm run cli -- http --configuration field-config.json
# With npx
npx dataforseo-mcp-server@latest http --configuration field-config.json
# Local mode
npx dataforseo-mcp-server@latest local --configuration field-config.jsonConfiguration Behavior
If a tool is configured: Only the specified fields will be returned in the response
If a tool is not configured: All available fields will be returned (default behavior)
If no configuration file is provided: All tools return all available fields
Example Configuration File
The repository includes an example configuration file field-config.example.json with optimized field selections for common tools:
{
"supported_fields": {
"backlinks_backlinks": [
"id",
"items.anchor",
"items.backlink_spam_score",
"items.dofollow",
"items.domain_from",
"items.domain_from_country",
"items.domain_from_ip",
"items.domain_from_platform_type",
"items.domain_from_rank",
"items.domain_to",
"items.first_seen",
"items.is_broken",
"items.is_new",
"items.item_type",
"items.last_seen",
"items.links_count",
"items.original",
"items.page_from_encoding",
"items.page_from_external_links",
"items.page_from_internal_links",
"items.page_from_language",
"items.page_from_rank",
"items.page_from_size",
"items.page_from_status_code",
"items.page_from_title",
"items.prev_seen",
"items.rank",
"items.ranked_keywords_info.page_from_keywords_count_top_10",
"items.ranked_keywords_info.page_from_keywords_count_top_100",
"items.ranked_keywords_info.page_from_keywords_count_top_3",
"items.semantic_location",
"items.text_post",
"items.text_pre",
"items.tld_from",
"items.type",
"items.url_from",
"items.url_from_https",
"items.url_to",
"items.url_to_https",
"items.url_to_spam_score",
"items.url_to_status_code",
"status_code",
"status_message"
],
...
}
}Nested Field Support
The configuration supports nested field paths using dot notation:
"rating.value"- Access thevaluefield within theratingobject"items.demography.age.keyword"- Access deeply nested fields"meta.description"- Access nested object properties
Field Discovery
To discover available fields for any tool:
Run the tool without field configuration to see the full response
Identify the fields you need from the API response
Add those field paths to your configuration file
Creating Your Own Configuration
Copy the example file:
cp field-config.example.json my-config.jsonModify the field selections based on your needs
Use your custom configuration:
npx dataforseo-mcp-server@latest http --configuration my-config.jsonWhat endpoints/APIs do you want us to support next?
We're always looking to expand the capabilities of this MCP server. If you have specific DataForSEO endpoints or APIs you'd like to see supported, please:
Check the DataForSEO API Documentation to see what's available
Open an issue in our GitHub repository with:
The API/endpoint you'd like to see supported;
A brief description of your use case;
Describe any specific features you'd like to see implemented.
Your feedback helps us prioritize which APIs to support next!
Resources
Available Tools
89 toolsai_optimization_chat_gpt_scraperAI Optimization Chat GPT ScraperCRead-onlyIdempotent
This endpoint provides results from ChatGPT searches
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | keyword required field you can specify up to 2000 characters in the keyword field all %## will be decoded (plus character ‘+’ will be decoded to a space character) if you need to use the “%” character for your keyword, please specify it as “%25”; if you need to use the “+” character for your keyword, please specify it as “%2B” | |
| language_code | Yes | Search engine language code (e.g., 'en') | |
| location_name | No | full name of the location, example: 'United Kingdom', 'United States' | United States |
| force_web_search | No | force AI agent to use web search |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false. The description adds no additional behavioral insights (e.g., rate limits, authentication, data freshness), nor does it contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is concise but lacks substance. It front-loads the purpose but could be more informative without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should explain the nature of the results (e.g., JSON structure, fields). It does not. Additionally, the purpose of parameters like force_web_search and location_name is not addressed in the description, leaving gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptions. The description does not add any extra meaning beyond the schema, but the schema itself is sufficient. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool provides results from ChatGPT searches, which gives a general idea. However, it is vague about what kind of results (e.g., search result snippets, full responses) and does not differentiate it from sibling tools like ai_optimization_llm_response that also involve LLM outputs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. No context about prerequisites, typical use cases, or scenarios where other tools would be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ai_optimization_chat_gpt_scraper_locationsAI Optimization Chat GPT Scraper LocationsARead-onlyIdempotent
Utility tool for ai_optimization_chat_gpt_scraper to get list of available locations
| Name | Required | Description | Default |
|---|---|---|---|
| location_name | No | Name of location or it`s part. | |
| country_iso_code | No | ISO 3166-1 alpha-2 country code, for example: US, GB, MT |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds that it's a 'utility tool' but does not disclose any additional behavioral traits beyond what annotations provide. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no redundancy, front-loaded with purpose. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity, informative annotations, and complete parameter descriptions, the description is sufficient for agent understanding. However, lacking an output schema, a brief note on return format would improve completeness. Score reflects minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters have descriptions. The description does not add any additional meaning or context for using the parameters (e.g., how they filter or format results). Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool is for getting a list of available locations, specifically for the ai_optimization_chat_gpt_scraper. It distinguishes itself from sibling location tools by associating with a specific parent scraper.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage context (as a utility for the scraper) but provides no explicit guidance on when to use this vs. alternative location-oriented tools like serp_locations or kw_data_google_ads_locations. No when-not or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ai_optimization_keyword_data_search_volumeAI Optimization Keyword Data Search VolumeARead-onlyIdempotent
This endpoint provides search volume data for your target keywords, reflecting their estimated usage in AI LLMs
| Name | Required | Description | Default |
|---|---|---|---|
| keywords | Yes | Keywords. The maximum number of keywords you can specify: 1000 | |
| language_code | Yes | Search engine language code (e.g., 'en') | |
| location_name | No | full name of the location, example: 'United Kingdom', 'United States' | United States |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering safety and idempotency. The description adds that data is 'estimated usage in AI LLMs', which is useful but not extensive. No additional behavioral traits are disclosed beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that conveys the core functionality without fluff. It is front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description does not explain the return format, pagination, or provide examples. Annotations are rich, but the description alone leaves gaps in understanding the full context of usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are already documented. The description does not add significant extra meaning beyond the schema. The mention of 'target keywords' is generic.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The tool name, title, and description clearly state its function: providing search volume data for keywords in AI LLMs. The description specifies the resource (search volume data) and context (AI LLMs), distinguishing it from sibling tools like kw_data_google_ads_search_volume.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear purpose but no explicit guidance on when to use this tool versus alternatives. It does not mention prerequisites, limitations, or use cases where other tools might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ai_optimization_llm_mentions_filtersAI Optimization LLM Mentions FiltersARead-onlyIdempotent
This endpoint provides all the necessary information about filters that can be used with AI Optimization LLM Mentions API endpoints
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's claim of providing 'all the necessary information about filters' adds useful context without contradiction. The tool is safe and informational.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that effectively communicates the tool's purpose with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description states it provides 'all necessary information about filters,' it lacks specifics about the format or structure of that information. Given there is no output schema, more detail would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and schema coverage is 100%, so the baseline score is 4. The description does not need to add parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that this endpoint provides information about filters for AI Optimization LLM Mentions API endpoints, distinguishing it from sibling tools like backlinks_available_filters and other AI optimization endpoints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool should be used to discover available filters for the AI Optimization LLM Mentions endpoints, but it does not explicitly state when to use it versus alternatives or provide any when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ai_optimization_llm_modelsAI Optimization LLM ModelsBRead-onlyIdempotent
Utility tool for ai_optimization_llm_response to get list of availible locations and languages
| Name | Required | Description | Default |
|---|---|---|---|
| llm_type | Yes | type of llm. Must be one of: 'claude', 'gemini', 'chat_gpt', 'perplexity' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds that the tool returns a list, but does not disclose additional behavioral traits such as rate limits, authentication needs, or whether the list is exhaustive. With annotations covering safety, the description adds limited new value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 10 words, very concise. It front-loads the utility purpose. However, there is a minor typo ('availible' instead of 'available'), and the structure could be slightly clearer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple one-parameter tool and existing annotations, the description provides acceptable context for basic usage. However, it does not describe the output format, whether the list is exhaustive or paginated, or any edge cases. For a listing tool, slightly more detail would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage for the single parameter 'llm_type' is 100% because its description includes the allowed values. The tool description adds no extra meaning beyond the schema, so baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves a list of available locations and languages for the ai_optimization_llm_response tool. The verb 'get list' and the resource 'availible locations and languages' are specific, though the title is vague. It distinguishes from sibling location tools by explicitly linking to the LLM response context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indirectly suggests it is a utility for ai_optimization_llm_response, but does not explicitly state when to use this tool versus alternatives like ai_opt_kw_data_loc_and_lang or serp_locations. No exclusions or conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ai_optimization_llm_responseAI Optimization LLM ResponseCRead-onlyIdempotent
This endpoint allows you to retrieve structured responses from a specific AI model, based on the input parameters
| Name | Required | Description | Default |
|---|---|---|---|
| top_p | No | diversity of the AI response, optional field, controls diversity of the response by limiting token selection; | |
| llm_type | Yes | type of llm. Must be one of: 'claude', 'gemini', 'chat_gpt', 'perplexity' | |
| model_name | Yes | name of the AI model. consists of the actual model name and version name. if not sure which model to use, first call the ai_optimization_llm_models tool to get list of available models for the specified llm_type | |
| web_search | No | enable web search for current information. When enabled, the AI model can access and cite current web information; | |
| temperature | No | randomness of the AI response optional field higher values make output more diverse; lower values make output more focused; | |
| user_prompt | Yes | Prompt for the AI model. The question or task you want to send to the AI model. You can specify up to 500 characters in the user_prompt field |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds no additional behavioral context beyond 'retrieve', so value added is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no redundancy. Efficiently conveys the core purpose without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description does not specify the structure or content of the returned response. For a tool with 6 parameters, more context on return format is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. The overall description does not enhance parameter meaning beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves structured responses from a specific AI model based on input parameters. While not explicitly distinguishing from siblings, the purpose is specific and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The only hint is in the parameter 'model_name' description referencing a sibling tool, but the main description lacks usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ai_opt_kw_data_loc_and_langAI Optimization Keywords Data Locations and LanguagesBRead-onlyIdempotent
Utility tool for 'AI Optimization Keyword Data Locations and Languages' (ai_opt_kw_data_loc_and_lang) to get list of availible locations and languages
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which inform safety and idempotency. The description adds 'utility tool' and 'get list', which aligns with these hints but does not provide additional behavioral detail (e.g., response format, rate limits, or side effects). With annotations present, the description fulfills a minimal role but could add value by noting that the list is static or cacheable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence but contains redundancy: it repeats the full tool name and title verbatim. It could be condensed to 'Retrieves a list of available locations and languages for AI Optimization Keyword Data.' The typo 'availible' also detracts from quality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (no parameters, no output schema), so the description is largely adequate. However, it does not explain how the returned list is structured or which tools it is meant to support (e.g., ai_optimization_keyword_data_search_volume). Adding a note about use with other AI Optimization tools would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema documentation coverage is 100% (since there are no properties to document). The description does not need to elaborate on parameters, and it correctly implies no input is required. For a no-parameter tool, this is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a list of available locations and languages for AI Optimization Keyword Data. It specifies the verb 'get' and the resource 'list of available locations and languages', making the purpose unambiguous. However, it does not explicitly distinguish itself from sibling location tools like ai_opt_llm_ment_loc_and_lang or serp_locations, though the 'AI Optimization Keywords' context provides implicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, typical use cases, or when it should not be used. Given the number of sibling tools with overlapping functionality (e.g., ai_opt_llm_ment_loc_and_lang, serp_locations), explicit usage context is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ai_opt_llm_ment_agg_metricsAI Optimization LLM Mentions Aggregated MetricsBRead-onlyIdempotent
This endpoint provides aggregated metrics for mentions of the keywords or domains specified in the target array of the request.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | Array of target objects to search for LLM mentions. Each object must contain either 'domain' or 'keyword'. Maximum number of targets: 1000 | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, match, not_match, ilike, not_ilike, like, not_like Use % with like/not_like/ilike/not_ilike as a wildcard. Example: Single: ["ai_search_volume", ">", "1000"] The full list of possible filters is available in 'ai_optimization_llm_mentions_filters' tool | |
| platform | No | Platform to search for LLM mentions | |
| language_code | No | Search engine language code (e.g., 'en') | |
| location_name | No | full name of the location, example: 'United Kingdom', 'United States' | |
| internal_list_limit | No | Internal parameter to limit the number of items processed. Not exposed to end-users. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false. The description adds minimal transparency beyond 'aggregated metrics', e.g., no mention of rate limits, pagination, or handling of large target arrays (max 1000 in schema). Adequate given annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence that conveys the core function. No fluff, but could be slightly more structured (e.g., breaking out key details). Still above average.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks critical context about the output format or content of aggregated metrics (e.g., counts, trends). No output schema and no explanation, leaving the agent uncertain about what to expect. Incomplete for a tool with six parameters and no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. The description restates that the target array contains keywords/domains but adds no new semantic meaning beyond what's in the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides aggregated metrics for mentions of specified keywords or domains. This is specific and distinct from raw mention retrieval or cross-aggregation, but does not explicitly differentiate from sibling tools like ai_opt_llm_ment_search or ai_opt_llm_ment_cross_agg_metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description only explains what it does, not when it should be preferred (e.g., for summary statistics vs. raw data) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ai_opt_llm_ment_cross_agg_metricsAI Optimization LLM Mentions Cross Aggregated MetricsBRead-onlyIdempotent
This endpoint provides aggregated metrics grouped by custom keys for mentions of the keywords or domains specified in the target array of the request
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, match, not_match, ilike, not_ilike, like, not_like Use % with like/not_like/ilike/not_ilike as a wildcard. Example: Single: ["ai_search_volume", ">", "1000"] The full list of possible filters is available in 'ai_optimization_llm_mentions_filters' tool | |
| targets | Yes | array of objects containing target entities with aggregation keys. you can specify up to 10, but not less than 2 | |
| platform | No | Platform to search for LLM mentions | |
| language_code | No | Search engine language code (e.g., 'en') | |
| location_name | No | full name of the location, example: 'United Kingdom', 'United States' | |
| internal_list_limit | No | Internal parameter to limit the number of items processed. Not exposed to end-users. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior. The description adds that it aggregates metrics and groups by keys, which is consistent but does not disclose additional behavioral traits like limits on number of targets (though schema shows max 10) or rate limits. It provides moderate transparency, aligning with annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that efficiently conveys the core functionality. It avoids redundancy and is appropriately front-loaded. However, it could be slightly more informative without adding much length, so it earns a 4 rather than a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (nested parameters, multiple siblings, no output schema), the description is too minimal. It does not clarify what 'aggregated metrics' includes (e.g., counts, volumes), how grouping works, or that at least 2 targets are required (though schema says 'not less than 2'). The agent lacks sufficient context to confidently invoke the tool without additional exploration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add meaningful semantics beyond what the schema already provides for parameters like 'targets', 'aggregation_key', or 'filters'. It mentions 'keywords or domains' which corresponds to the target parameter, but no extra detail. Thus, no significant added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool provides aggregated metrics grouped by custom keys for LLM mentions. The verb 'provides' is somewhat generic, but it specifies the resource (aggregated metrics) and scope (based on targets). The name and description distinguish it from siblings like 'ai_opt_llm_ment_agg_metrics' by emphasizing 'cross' and 'custom keys' grouping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives. It lacks explicit when-not scenarios or references to sibling tools. Users must infer from the name and schema, but no rationale is given for selecting this over similar tools like 'ai_opt_llm_ment_agg_metrics' or 'ai_opt_llm_ment_search'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ai_opt_llm_ment_loc_and_langAI Optimization LLM Mentions Locations and LanguagesBRead-onlyIdempotent
Utility tool for 'AI Optimization LLM Mentions Locations and Languages' (ai_opt_llm_ment_loc_and_lang) to get list of available locations and languages
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds basic purpose but no additional behavioral details (e.g., output format, pagination, or error states). It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads 'Utility tool' and states the action. Slightly verbose due to repeating the title and ID, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description adequately states what the tool returns. However, it could be more complete by hinting at the output format (e.g., 'list of location codes and language codes') to help the agent understand how to use the results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, so schema coverage is 100%. The description adds no parameter info, but baseline for zero-parameter tools is 4. No further meaning needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a list of available locations and languages, with a verb+resource structure. However, it does not differentiate from the similar sibling 'ai_opt_kw_data_loc_and_lang', which likely serves a parallel purpose for keyword data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description labels it as a 'utility tool' but provides no explicit guidance on when to use it versus alternatives like 'ai_opt_kw_data_loc_and_lang'. No contextual cues for selection are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ai_opt_llm_ment_searchAI Optimization LLM Mentions SearchBRead-onlyIdempotent
This endpoint provides aggregated LLM mentions metrics grouped by the most frequently mentioned pages for the specified target
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results to return. Default is 10, maximum is 1000. | |
| target | Yes | Array of target objects to search for LLM mentions. Each object must contain either 'domain' or 'keyword'. Maximum number of targets: 1000 | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, match, not_match, ilike, not_ilike, like, not_like Use % with like/not_like/ilike/not_ilike as a wildcard. Example: Single: ["ai_search_volume", ">", "1000"] The full list of possible filters is available in 'ai_optimization_llm_mentions_filters' tool | |
| order_by | No | resuresults 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: ["ai_search_volume,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: ["ai_search_volume,desc"] The full list of possible orders is available in 'ai_optimization_llm_mentions_filters' tool | |
| platform | No | Platform to search for LLM mentions | |
| language_code | No | Search engine language code (e.g., 'en') | |
| location_name | No | full name of the location, example: 'United Kingdom', 'United States' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, indicating a safe, read-only operation. The description adds that results are 'aggregated' and 'grouped by pages', which provides context but no additional behavioral traits like pagination 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence of 16 words clearly conveys the tool's purpose with no wasted text. It is front-loaded and efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's complexity (7 parameters, no output schema), the description is very short and does not explain the output format, filter usage, or how to interpret 'aggregated LLM mentions metrics'. It leaves significant gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 7 parameters. The description adds no meaning beyond the schema, making a baseline score of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides 'aggregated LLM mentions metrics grouped by the most frequently mentioned pages for the specified target', using a specific verb and resource. It distinguishes from siblings like 'ai_opt_llm_ment_top_pages' and 'ai_opt_llm_ment_agg_metrics' by emphasizing aggregation and grouping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'ai_opt_llm_ment_top_domains' or 'ai_opt_llm_ment_agg_metrics'. There is no mention of prerequisites or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ai_opt_llm_ment_top_domainsAI Optimization LLM Mentions Top DomainsBRead-onlyIdempotent
This endpoint provides aggregated LLM mentions metrics grouped by the most frequently mentioned domains for the specified target
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | Array of target objects to search for LLM mentions. Each object must contain either 'domain' or 'keyword'. Maximum number of targets: 1000 | |
| platform | No | Platform to search for LLM mentions | |
| links_scope | No | specifies which links will be used to extract domains and aggregation | |
| language_code | No | Search engine language code (e.g., 'en') | |
| location_name | No | full name of the location, example: 'United Kingdom', 'United States' | |
| items_list_limit | No | maximum number of results in the items array, min value is 1, max value is 10 | |
| internal_list_limit | No | maximum number of elements within internal arrays, min value is 1, max value is 10 | |
| initial_dataset_filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, match, not_match, ilike, not_ilike, like, not_like Use % with like/not_like/ilike/not_ilike as a wildcard. Example: Single: ["ai_search_volume", ">", "1000"] The full list of possible filters is available in 'ai_optimization_llm_mentions_filters' tool |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds that it provides aggregated metrics grouped by domains, which gives context about the output shape but no further behavioral traits (e.g., rate limits, authorization needs). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 17 words, concise and front-loaded with the main purpose. However, it repeats 'LLM mentions' twice, which could be slightly tighter. Still, it earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 8 parameters, no output schema, and a nested input structure. The description only explains the grouping logic but does not describe the output format, what the metrics are, or how domains are ranked. Given the complexity, this is insufficient for an agent to fully understand the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 8 parameters are documented in the schema. The description does not add any additional meaning about parameters beyond what is already in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'provides', resource 'aggregated LLM mentions metrics grouped by most frequently mentioned domains', and specifies it's for 'the specified target'. It distinguishes this tool from siblings like 'ai_opt_llm_ment_search' or 'ai_opt_llm_ment_top_pages' by focusing on domain grouping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives (e.g., 'ai_opt_llm_ment_agg_metrics' or 'ai_opt_llm_ment_top_pages'). No prerequisites, when-not, or exclusion criteria are mentioned, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ai_opt_llm_ment_top_pagesAI Optimization LLM Mentions Top PagesARead-onlyIdempotent
This endpoint provides aggregated LLM mentions metrics grouped by the most frequently mentioned pages for the specified target
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | Array of target objects to search for LLM mentions. Each object must contain either 'domain' or 'keyword'. Maximum number of targets: 1000 | |
| platform | No | Platform to search for LLM mentions | |
| links_scope | No | specifies which links will be used to extract domains and aggregation | |
| language_code | No | Search engine language code (e.g., 'en') | |
| location_name | No | full name of the location, example: 'United Kingdom', 'United States' | |
| items_list_limit | No | maximum number of results in the items array, min value is 1, max value is 10 | |
| internal_list_limit | No | maximum number of elements within internal arrays, min value is 1, max value is 10 | |
| initial_dataset_filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, match, not_match, ilike, not_ilike, like, not_like Use % with like/not_like/ilike/not_ilike as a wildcard. Example: Single: ["ai_search_volume", ">", "1000"] The full list of possible filters is available in 'ai_optimization_llm_mentions_filters' tool |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint as false, so the safety profile is clear. The description adds that the output is aggregated metrics grouped by pages, which is useful but does not disclose other behavioral traits like sorting, pagination, or default limits. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core functionality. There is no redundancy or filler, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters and nested objects in 'target', and no output schema, the description should provide more detail about the returned metrics. The phrase 'aggregated LLM mentions metrics' is vague; the agent does not know what specific metrics (e.g., count, frequency) are included. This leaves a gap for an effective decision.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter is already well-described in the input schema. The tool description adds no additional meaning beyond summarizing the tool's purpose. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides aggregated LLM mentions metrics grouped by pages, which is distinct from sibling tools like 'ai_opt_llm_ment_top_domains' that focus on domains. The verb 'provides' and resource 'pages' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives. It does not specify when to choose this over 'ai_opt_llm_ment_top_domains' or other LLM mention tools, leaving the agent without decision-making context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_anchorsBacklinks AnchorsARead-onlyIdempotent
This endpoint will provide you with a detailed overview of anchors used when linking to the specified website with relevant backlink data for each of them
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | the maximum number of returned anchors | |
| offset | No | offset in the results array of returned anchors optional field default value: 0 if you specify the 10 value, the first ten anchors in the results array will be omitted and the data will be provided for the successive anchors | |
| target | Yes | domain, subdomain or webpage to get backlinks for required field a domain or a subdomain should be specified without https:// and www. a page should be specified with absolute URL (including http:// or https://) | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: =, <>, in, not_in, like, not_like, ilike, not_ilike, regex, not_regex, match, not_match Use % with like/not_like to match any string of zero or more characters. Examples: Single: ["rank",">","80"] Combined: [["page_from_rank",">","55"],"and",["dofollow","=",true]] | |
| order_by | No | 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: ["rank,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: ["domain_from_rank,desc","page_from_rank,asc"] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false, covering safety and behavior. The description adds minimal extra context (e.g., 'detailed overview'), so it meets basic expectations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no unnecessary words. It efficiently conveys the tool's purpose without fluff, earning a top score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, no output schema, and rich annotations, the description is adequate but minimal. It could elaborate on the return data format per anchor, but the annotations compensate by indicating a safe, idempotent operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters well. The description adds no additional meaning beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides a detailed overview of anchors with backlink data for a specified website. The verb 'provide' and resource 'anchors' are specific, and the tool distinguishes itself from sibling tools like 'backlinks_backlinks' by focusing on anchors rather than direct backlinks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates usage for anchor analysis but does not explicitly state when to use this tool versus alternatives like 'backlinks_backlinks' or other backlink tools. No guidance on when not to use or prerequisites is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_available_filtersBacklinks Available FiltersBRead-onlyIdempotent
Here you will find all the necessary information about filters that can be used with DataForSEO Backlinks API endpoints.
Please, keep in mind that filters are associated with a certain object in the result array, and should be specified accordingly.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | No | The name of the tool to get filters for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnly, openWorld, idempotent, and non-destructive behavior. The description adds that filters are associated with result objects, providing some context beyond annotations, but lacks details on return format or behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with a clear purpose statement. Front-loaded and efficient, though slightly verbose with the 'please keep in mind' phrase.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple reference nature of the tool and no output schema, the description is fairly complete. It explains the tool's purpose and a caveat about filter association, but could mention the output format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'tool' parameter with a description. The tool description does not add extra meaning beyond the schema, fitting the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool provides 'necessary information about filters' for Backlinks API endpoints, which is clear. It distinguishes from sibling tools that perform data retrieval, but does not explicitly highlight the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining filter information but does not specify when to use this tool versus alternatives. No guidance on prerequisites or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_backlinksBacklinks BacklinksBRead-onlyIdempotent
This endpoint will provide you with a list of backlinks and relevant data for the specified domain, subdomain, or webpage
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | results grouping type optional field possible grouping types: as_is – returns all backlinks one_per_domain – returns one backlink per domain one_per_anchor – returns one backlink per anchor default value: as_is | as_is |
| limit | No | the maximum number of returned backlinks | |
| offset | No | offset in the results array of the returned backlinks optional field default value: 0 if you specify the 10 value, the first ten backlinks in the results array will be omitted and the data will be provided for the successive backlinks | |
| target | Yes | domain, subdomain or webpage to get backlinks for required field a domain or a subdomain should be specified without https:// and www. a page should be specified with absolute URL (including http:// or https://) | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: =, <>, in, not_in, like, not_like, ilike, not_ilike, regex, not_regex, match, not_match Use % with like/not_like to match any string of zero or more characters. Examples: Single: ["rank",">","80"] Combined: [["page_from_rank",">","55"],"and",["dofollow","=",true]] | |
| order_by | No | 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: ["rank,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: ["domain_from_rank,desc","page_from_rank,asc"] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it as read-only, idempotent, and non-destructive. The description adds only 'list of backlinks and relevant data,' which is minimal. No contradiction with annotations, but no extra behavioral context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, direct, front-loaded with key information. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description is too brief for a tool with 6 parameters and no output schema. It does not indicate what 'relevant data' includes, such as anchor text, domain rating, or other fields. Users need more context to understand the return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add any meaning beyond what the schema already explains about parameters like mode, limit, offset, etc.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it provides a list of backlinks for a specified domain, subdomain, or webpage. The verb 'provide' and resource 'backlinks' are specific, and it distinguishes from sibling tools like backlinks_anchors or backlinks_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. With many sibling tools like backlinks_domain_intersection or backlinks_referring_domains, the description should indicate when to choose this one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_bulk_backlinksBacklinks Bulk BacklinksARead-onlyIdempotent
This endpoint will provide you with the number of backlinks pointing to domains, subdomains, and pages specified in the targets array. The returned numbers correspond to all live backlinks, that is, total number of referring links with all attributes (e.g., nofollow, noreferrer, ugc, sponsored etc) that were found during the latest check. Note that if you indicate a domain as a target, you will get results for the root domain (domain with all of its subdomains), e.g. dataforseo.com and app.dataforseo.com
| Name | Required | Description | Default |
|---|---|---|---|
| targets | Yes | domains, subdomains or webpages to get rank for required field you can set up to 1000 domains, subdomains or webpages the domain or subdomain should be specified without https:// and www. the page should be specified with absolute URL (including http:// or https://) example: "targets": [ "forbes.com", "cnn.com", "bbc.com", "yelp.com", "https://www.apple.com/iphone/", "https://ahrefs.com/blog/", "ibm.com", "https://variety.com/", "https://stackoverflow.com/", "www.trustpilot.com" ] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds valuable context: it explains that counts are for all live backlinks (including attributes like nofollow) from the latest check, and clarifies domain vs. subdomain handling. This goes beyond annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the main action, and includes necessary nuance about domain targets. It is efficient and clear, though the second sentence could be slightly more compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema, the description adequately explains that the tool returns the number of backlinks. Combined with annotations, the safety and idempotency are clear. It covers key behavioral details and target handling, though it could mention response format or potential errors for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema for the only parameter 'targets' has 100% coverage with a detailed description, including examples and formatting rules. The description does not add new information about the parameter beyond restating that it can be domains, subdomains, or pages. Thus, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides the number of backlinks pointing to domains, subdomains, and pages specified in the targets array. It distinguishes itself from sibling tools by focusing on bulk backlinks counts and clarifies scope (e.g., root domain includes all subdomains).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for getting backlink counts for multiple targets, but it does not explicitly state when to use this tool versus alternatives like backlinks_backlinks or backlinks_bulk_referring_domains. No exclusion criteria or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_bulk_new_lost_backlinksBacklinks Bulk New Lost BacklinksBRead-onlyIdempotent
This endpoint will provide you with the number of referring domains pointing to domains, subdomains, and pages specified in the targets array. The returned numbers are based on all live referring domains, that is, total number of domains pointing to the target with any type of backlinks (e.g., nofollow, noreferrer, ugc, sponsored etc) that were found during the latest check. Note that if you indicate a domain as a target, you will get result for the root domain (domain with all of its subdomains), e.g. dataforseo.com and app.dataforseo.com
| Name | Required | Description | Default |
|---|---|---|---|
| targets | Yes | domains, subdomains or webpages to get rank for required field you can set up to 1000 domains, subdomains or webpages the domain or subdomain should be specified without https:// and www. the page should be specified with absolute URL (including http:// or https://) example: "targets": [ "forbes.com", "cnn.com", "bbc.com", "yelp.com", "https://www.apple.com/iphone/", "https://ahrefs.com/blog/", "ibm.com", "https://variety.com/", "https://stackoverflow.com/", "www.trustpilot.com" ] | |
| date_from | No | starting date of the time range optional field this field indicates the date which will be used as a threshold for new and lost backlinks; the backlinks that appeared in our index after the specified date will be considered as new; the backlinks that weren’t found after the specified date, but were present before, will be considered as lost; default value: today’s date -(minus) one month; e.g. if today is 2021-10-13, default date_from will be 2021-09-13. minimum value equals today’s date -(minus) one year; e.g. if today is 2021-10-13, minimum date_from will be 2020-10-13. date format: "yyyy-mm-dd" example: "2021-01-01" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds value by specifying that results are 'based on all live referring domains' and include all types of backlinks (nofollow, noreferrer, etc.) found during the 'latest check'. It also clarifies how targets are treated (e.g., domain returns root domain with subdomains). This provides useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively concise—two sentences and a note. It is front-loaded with the primary purpose. The note about domain behavior is important and well-placed. While slightly wordy in the second sentence, it is still efficient and easy to read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 2 parameters, annotations, and no output schema. The description adequately explains the return value (number of referring domains) and the nature of the data (live, all types, latest check). However, it fails to explain the key feature of new/lost backlinks tied to the 'date_from' parameter, and does not describe the output format or potential pagination. This leaves the agent without critical information about the tool's core functionality.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with detailed descriptions for both 'targets' and 'date_from'. The description adds meaningful context for the 'targets' parameter by explaining the scope when a domain is specified (root domain with all subdomains). However, it does not mention the 'date_from' parameter at all, which is critical for understanding the new/lost aspect implied by the tool's name. Thus, it adds some value but leaves a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides 'the number of referring domains pointing to domains, subdomains, and pages specified in the targets array'. This is a specific verb+resource. However, the tool's name includes 'new_lost_backlinks', but the description does not mention the new/lost distinction or the role of the 'date_from' parameter, which is a notable gap. It also does not differentiate it from siblings like 'backlinks_bulk_new_lost_referring_domains'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or exclusions. It explains behavior about domain vs subdomain but lacks explicit usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_bulk_new_lost_referring_domainsBacklinks Bulk New Lost Referring DomainsBRead-onlyIdempotent
This endpoint will provide you with the number of referring domains pointing to the domains, subdomains and pages specified in the targets array. Note that if you indicate a domain as a target, you will get result for the root domain (domain with all of its subdomains), e.g. dataforseo.com and app.dataforseo.com
| Name | Required | Description | Default |
|---|---|---|---|
| targets | Yes | domains, subdomains or webpages to get rank for required field you can set up to 1000 domains, subdomains or webpages the domain or subdomain should be specified without https:// and www. the page should be specified with absolute URL (including http:// or https://) example: "targets": [ "forbes.com", "cnn.com", "bbc.com", "yelp.com", "https://www.apple.com/iphone/", "https://ahrefs.com/blog/", "ibm.com", "https://variety.com/", "https://stackoverflow.com/", "www.trustpilot.com" ] | |
| date_from | No | starting date of the time range optional field this field indicates the date which will be used as a threshold for new and lost backlinks; the backlinks that appeared in our index after the specified date will be considered as new; the backlinks that weren’t found after the specified date, but were present before, will be considered as lost; default value: today’s date -(minus) one month; e.g. if today is 2021-10-13, default date_from will be 2021-09-13. minimum value equals today’s date -(minus) one year; e.g. if today is 2021-10-13, minimum date_from will be 2020-10-13. date format: "yyyy-mm-dd" example: "2021-01-01" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive. The description adds a useful note about root domain behavior. However, it fails to disclose that the tool distinguishes new vs lost referring domains, which is a key behavioral trait implied by the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. Purpose and an important caveat about domain targets are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description omits the critical 'new lost' differentiation and the role of date_from in controlling the time range for new/lost counts. Given no output schema, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema descriptions are detailed. The tool description does not add extra semantic value for parameters beyond what's already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides the number of referring domains for given targets, but it does not mention the 'new lost' aspect that distinguishes it from sibling tools like backlinks_bulk_referring_domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., backlinks_bulk_referring_domains). The description lacks any when/when-not or context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_bulk_pages_summaryBacklinks Bulk Pages SummaryBRead-onlyIdempotent
This endpoint will provide you with a comprehensive overview of backlinks and related data for a bulk of up to 1000 pages, domains, or subdomains. If you indicate a single page as a target, you will get comprehensive summary data on all backlinks for that page.
| Name | Required | Description | Default |
|---|---|---|---|
| targets | Yes | domains, subdomains or webpages to get summary data for required field a domain or a subdomain should be specified without https:// and www. a page should be specified with absolute URL (including http:// or https://) you can specify up to 1000 pages, domains, or subdomains in each request. note that the URLs you set in a single request cannot belong to more than 100 different domains. | |
| include_subdomains | No | indicates if indirect links to the target will be included in the results if set to true, the results will include data on indirect links pointing to a page that either redirects to the target, or points to a canonical page if set to false, indirect links will be ignored |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, non-destructive. Description adds minimal behavioral info ('comprehensive overview', single page case). No contradiction, but description does not significantly enhance behavioral understanding beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose. It is concise and to the point. Minor improvement could be more structured but no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite good annotations and schema coverage, the tool has no output schema. The description does not hint at what data the 'comprehensive overview' contains (e.g., metrics like total backlinks, referring domains). Also lacks differentiation from similar tools. Incomplete for user understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The description adds a note about single page behavior but does not add meaning beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides a comprehensive overview of backlinks for bulk targets (pages, domains, subdomains) up to 1000. It distinguishes from siblings focused on individual backlinks or domain pages, though the verb 'provide' is generic. Overall clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies bulk use (up to 1000 targets) but does not explicitly guide when to choose this over other backlinks tools like backlinks_summary or backlinks_domain_pages_summary. No when-not or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_bulk_ranksBacklinks Bulk RanksARead-onlyIdempotent
This endpoint will provide you with rank scores of the domains, subdomains, and pages specified in the targets array. The score is based on the number of referring domains pointing to the specified domains, subdomains, or pages. The rank values represent real-time data for the date of the request and range from 0 (no backlinks detected) to 1,000 (highest rank). A similar scoring system is used in Google’s Page Rank algorithm
| Name | Required | Description | Default |
|---|---|---|---|
| targets | Yes | domains, subdomains or webpages to get rank for required field you can set up to 1000 domains, subdomains or webpages the domain or subdomain should be specified without https:// and www. the page should be specified with absolute URL (including http:// or https://) example: "targets": [ "forbes.com", "cnn.com", "bbc.com", "yelp.com", "https://www.apple.com/iphone/", "https://ahrefs.com/blog/", "ibm.com", "https://variety.com/", "https://stackoverflow.com/", "www.trustpilot.com" ] | |
| rank_scale | No | defines the scale used for calculating and displaying the rank, domain_from_rank, and page_from_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 | one_thousand |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare read-only, open-world, and idempotent behavior. The description adds context about real-time data, scoring based on referring domains, and rank range, which goes beyond basic annotations. However, it could mention data freshness or handling of invalid targets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph with no wasted words. It front-loads the primary purpose and provides relevant detail (scoring range, example) efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with two parameters and no output schema, the description covers the core functionality, scoring method, and data type. It could mention the expected return format or structure, but overall it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters. The description adds no new parameter-level information beyond the schema; it only provides general context about the scoring system. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides rank scores for domains, subdomains, and pages, with a specific scoring range (0-1000) and comparison to Google's PageRank. This differentiates it from sibling backlinks tools that return raw backlink data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but does not provide explicit guidance on when to use it over alternatives like backlinks_bulk_referring_domains or backlinks_summary. Usage context is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_bulk_referring_domainsBacklinks Bulk Referring DomainsARead-onlyIdempotent
This endpoint will provide you with the number of referring domains pointing to domains, subdomains, and pages specified in the targets array. The returned numbers are based on all live referring domains, that is, total number of domains pointing to the target with any type of backlinks (e.g., nofollow, noreferrer, ugc, sponsored etc) that were found during the latest check. Note that if you indicate a domain as a target, you will get result for the root domain (domain with all of its subdomains), e.g. dataforseo.com and app.dataforseo.com
| Name | Required | Description | Default |
|---|---|---|---|
| targets | Yes | domains, subdomains or webpages to get rank for required field you can set up to 1000 domains, subdomains or webpages the domain or subdomain should be specified without https:// and www. the page should be specified with absolute URL (including http:// or https://) example: "targets": [ "forbes.com", "cnn.com", "bbc.com", "yelp.com", "https://www.apple.com/iphone/", "https://ahrefs.com/blog/", "ibm.com", "https://variety.com/", "https://stackoverflow.com/", "www.trustpilot.com" ] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, indicating safe read operation. The description adds value by specifying that the count includes all live referring domains (including nofollow, ugc, etc.) and clarifies domain vs root domain behavior. This goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise paragraphs. The first states the primary function, and the second is a clarifying note about domain targets. No wasted words, though a bit more structure (e.g., bullet points) could improve scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool (1 param, no output schema), the description covers the return value type (number of referring domains), scope (all live referring domains), and special domain behavior. It does not describe the response format, but the tool's simplicity and annotations make it acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'targets' has 100% schema description coverage with format and examples. The description adds semantic value by explaining that targeting a domain returns the root domain count, which is not explicit in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('provide you with the number of referring domains') and the resource ('domains, subdomains, and pages specified in the targets array'). It distinguishes this bulk count tool from other backlinks tools that provide detailed link data or individual domain reports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for bulk counting of referring domains (up to 1000 targets) and notes the root domain behavior, but it does not explicitly state when to use this tool over siblings like backlinks_referring_domains or backlinks_bulk_backlinks. No exclusion criteria or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_bulk_spam_scoreBacklinks Bulk Spam ScoreARead-onlyIdempotent
This endpoint will provide you with spam scores of the domains, subdomains, and pages you specified in the targets array. Spam Score is DataForSEO’s proprietary metric that indicates how “spammy” your target is on a scale from 0 to 100
| Name | Required | Description | Default |
|---|---|---|---|
| targets | Yes | domains, subdomains or webpages to get rank for required field you can set up to 1000 domains, subdomains or webpages the domain or subdomain should be specified without https:// and www. the page should be specified with absolute URL (including http:// or https://) example: "targets": [ "forbes.com", "cnn.com", "bbc.com", "yelp.com", "https://www.apple.com/iphone/", "https://ahrefs.com/blog/", "ibm.com", "https://variety.com/", "https://stackoverflow.com/", "www.trustpilot.com" ] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. The description adds the spam score scale (0-100) but does not disclose rate limits, batch size limits, or other behavioral details beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Clearly front-loads the main action and defines the metric immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single well-documented parameter and no output schema, the description adequately explains the return value (spam score 0-100). No missing pieces for this straightforward read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description adds no meaningful detail beyond what the schema already provides (format, limits, examples). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides spam scores for specified targets, and the proprietary 0-100 scale is explained. It distinguishes itself from sibling tools like backlinks_bulk_ranks by focusing on spam scores.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives (e.g., backlinks_bulk_backlinks, backlinks_bulk_ranks). The description implies it's for spam scores but does not clarify context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_competitorsBacklinks CompetitorsBRead-onlyIdempotent
This endpoint will provide you with a list of competitors that share some part of the backlink profile with a target website, along with a number of backlink intersections and the rank of every competing website
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | the maximum number of returned domains | |
| offset | No | offset in the results array of returned networks optional field default value: 0 if you specify the 10 value, the first ten domains in the results array will be omitted and the data will be provided for the successive pages | |
| target | Yes | domain, subdomain or webpage to get backlinks for required field a domain or a subdomain should be specified without https:// and www. a page should be specified with absolute URL (including http:// or https://) | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, =, <>, in, not_in, like, not_like, ilike, not_ilike, match, not_match Use % with like/not_like to match any string of zero or more characters. Examples: Single: ["rank",">","100"] Combined: [["target","like","%forbes%"],"and",[["rank",">","100"],"or",["intersections",">","5"]]] | |
| order_by | No | 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: ["rank,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: ["intersections,desc","rank,asc"] | |
| main_domain | No | indicates if only main domain of the target will be included in the search if set to true, only the main domain will be included in search | |
| exclude_large_domains | No | indicates whether large domain will appear in results if set to true, the results from the large domain (google.com, amazon.com, etc.) will be omitted | |
| exclude_internal_backlinks | No | indicates if internal backlinks from subdomains to the target will be excluded from the results if set to true, the results will not include data on internal backlinks from subdomains of the same domain as target if set to false, internal links will be included in the results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false. The description adds that the tool returns a list with intersections and rank, but does not disclose additional behavioral traits like pagination or authorization requirements. It adds some value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the core functionality. It is concise with no redundant information, though it could benefit from slight structural separation of the output fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters, 100% schema coverage, no output schema, and high complexity (filters array), the description is too sparse. It does not describe the response format or any complex behavior. The tool's richness warrants more detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add meaning beyond what the schema provides; it mentions 'backlink intersections' and 'rank' but does not elaborate on any parameter usage. No extra semantic guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides a list of competitors sharing part of the backlink profile with a target, along with backlink intersections and rank. This distinguishes it from siblings like backlinks_domain_intersection (which compares two specific domains) and backlinks_backlinks (which lists all backlinks).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. The description only explains what it does, not when it is appropriate or when to choose other tools like backlinks_domain_intersection or backlinks_backlinks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_domain_intersectionBacklinks Domain IntersectionARead-onlyIdempotent
This endpoint will provide you with the list of domains pointing to the specified websites. This endpoint is especially useful for creating a Link Gap feature that shows what domains link to your competitors but do not link out to your website
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | the maximum number of returned results | |
| offset | No | offset in the array of returned results optional field default value: 0 if you specify the 10 value, the first ten backlinks in the results array will be omitted and the data will be provided for the successive backlinks | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, =, <>, in, not_in, like, not_like, ilike, not_ilike, match, not_match Use % with like/not_like to match any string of zero or more characters. Examples: Single: ["1.internal_links_count",">","1"] Combined: [["2.referring_pages",">","2"],"and",["1.backlinks",">","10"]] | |
| targets | Yes | domains, subdomains or webpages to get links for required field you can set up to 20 domains, subdomains or webpages a domain or a subdomain should be specified without https:// and www. a page should be specified with absolute URL (including http:// or https://) | |
| order_by | No | 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: ["backlinks,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: ["backlinks,desc","rank,asc"] | |
| exclude_targets | No | domains, subdomains or webpages you want to exclude optional field you can specify up to 10 domains, subdomains or webpages if you use this array, results will contain the referring domains that link to targets but don't link to exclude_targets example: ["bbc.com","https://www.apple.com/iphone/*","https://dataforseo.com/apis/*"] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false. The description adds minimal behavioral context beyond stating it provides a list. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. First sentence states purpose, second gives a concrete use case. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main purpose but lacks details about return format, pagination, or advanced parameter behavior like filters. Given no output schema, more context would be beneficial, but the schema descriptions help fill gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds no additional parameter info, earning the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides a list of domains pointing to specified websites, with a specific use case (Link Gap feature). This distinguishes it from siblings like backlinks_backlinks (individual backlinks) and backlinks_referring_domains (single target).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions it's useful for creating a Link Gap feature, implying when to compare competitor backlinks. It does not mention exclusions or alternatives, but the context is clear enough for an agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_domain_pagesBacklinks Domain PagesBRead-onlyIdempotent
This endpoint will provide you with a detailed overview of domain pages with backlink data for each page
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | the maximum number of returned pages | |
| offset | No | offset in the results array of returned pages optional field default value: 0 if you specify the 10 value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages | |
| target | Yes | domain, subdomain or webpage to get backlinks for required field a domain or a subdomain should be specified without https:// and www. a page should be specified with absolute URL (including http:// or https://) | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, =, <>, in, not_in, like, not_like, ilike, not_ilike, match, not_match Use % with like/not_like to match any string of zero or more characters. Examples: Single: ["meta.internal_links_count",">","1"] Combined: [["meta.external_links_count",">","2"],"and",["backlinks",">","10"]] | |
| order_by | No | 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: ["page_summary.backlinks,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: ["page_summary.backlinks,desc","page_summary.rank,asc"] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so low behavioral risk is established. The description adds 'detailed overview' but omits specifics like result fields, pagination, or error conditions. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no redundancy. It is concise but could benefit from more structure (e.g., separating purpose and output description). Still efficiently communicates the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description should explain return values and pagination. It only states 'detailed overview' without specifics. For a tool with 5 parameters and no output schema, the description is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with detailed descriptions for all 5 parameters. The tool description does not add further parameter-level meaning, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns 'domain pages with backlink data', using a specific verb-resource pair. It distinguishes from sibling tools like 'backlinks_backlinks' (general backlinks) and 'backlinks_domain_pages_summary' (summary), though differentiation is implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like 'backlinks_domain_intersection' or 'backlinks_domain_pages_summary'. The description lacks context on prerequisites or scenarios where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_domain_pages_summaryBacklinks Domain Pages SummaryARead-onlyIdempotent
This endpoint will provide you with detailed summary data on all backlinks and related metrics for each page of the target domain or subdomain you specify. If you indicate a single page as a target, you will get comprehensive summary data on all backlinks for that page
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | the maximum number of returned anchors | |
| offset | No | offset in the results array of returned anchors optional field default value: 0 if you specify the 10 value, the first ten anchors in the results array will be omitted and the data will be provided for the successive anchors | |
| target | Yes | domain, subdomain or webpage to get backlinks for required field a domain or a subdomain should be specified without https:// and www. a page should be specified with absolute URL (including http:// or https://) | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, =, <>, in, not_in, like, not_like, ilike, not_ilike, match, not_match Use % with like/not_like to match any string of zero or more characters. Examples: Single: ["referring_links_types.anchors",">","1"] Combined: [["broken_pages",">","2"],"and",["backlinks",">","10"]] | |
| order_by | No | 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: ["backlinks,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: ["backlinks,desc","rank,asc"] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive, so the safety profile is clear. The description adds context about per-page summaries and single-page behavior, but no additional details on performance, rate limits, or data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. It is front-loaded and effectively communicates the core functionality without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should clarify the return structure. It mentions 'detailed summary data' but does not specify what metrics are included (e.g., anchor text, referring domains). With rich annotations, the description is adequate but could be more specific.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is documented. The description does not add extra meaning beyond the schema; it only reiterates target usage. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool provides detailed summary data on backlinks per page for a domain/subdomain or a single page. The verb 'provide' is generic, but the resource is specific and distinguishes from related tools like 'backlinks_backlinks' or 'backlinks_summary'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used when per-page backlink summary data is needed, but it does not explicitly state when to use it versus alternatives or provide any exclusions. It lacks guidance on when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_page_intersectionBacklinks Page IntersectionARead-onlyIdempotent
This endpoint will provide you with the list of domains pointing to the specified websites. This endpoint is especially useful for creating a Link Gap feature that shows what domains link to your competitors but do not link out to your website
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | the maximum number of returned results | |
| offset | No | offset in the array of returned results optional field default value: 0 if you specify the 10 value, the first ten backlinks in the results array will be omitted and the data will be provided for the successive backlinks | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, =, <>, in, not_in, like, not_like, ilike, not_ilike, match, not_match Use % with like/not_like to match any string of zero or more characters. Examples: Single: ["1.rank",">","80"] Combined: [["2.page_from_rank",">","55"],"and",["1.original","=","true"]] | |
| targets | Yes | domains, subdomains or webpages to get links for required field you can set up to 20 domains, subdomains or webpages a domain or a subdomain should be specified without https:// and www. a page should be specified with absolute URL (including http:// or https://) | |
| order_by | No | 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: ["rank,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: ["domain_from_rank,desc","page_from_rank,asc"] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false. The description adds no additional behavioral context beyond the use case, such as rate limits, data freshness, or response structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise, front-loaded sentences with no wasted words. It efficiently conveys the core functionality and a key use case.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the detailed schema, annotations, and the simplicity of the tool (listing domains), the description is largely complete. However, it could be slightly improved by clarifying that it performs an intersection of backlinks across multiple targets.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are fully documented. The description does not add any extra meaning beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns 'the list of domains pointing to the specified websites', indicating the verb and resource. The use case (Link Gap feature) provides context, but it does not explicitly differentiate from the sibling tool 'backlinks_domain_intersection', which likely has a similar purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description hints at usage for a Link Gap feature but provides no guidance on when not to use this tool or alternatives. No explicit exclusions or comparisons to similar tools are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_referring_domainsBacklinks Referring DomainsARead-onlyIdempotent
This endpoint will provide you with a detailed overview of referring domains pointing to the target you specify
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | the maximum number of returned pages | |
| offset | No | offset in the results array of returned pages optional field default value: 0 if you specify the 10 value, the first ten pages in the results array will be omitted and the data will be provided for the successive pages | |
| target | Yes | domain, subdomain or webpage to get backlinks for required field a domain or a subdomain should be specified without https:// and www. a page should be specified with absolute URL (including http:// or https://) | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, =, <>, in, not_in, like, not_like, ilike, not_ilike, match, not_match Use % with like/not_like to match any string of zero or more characters. Examples: Single: ["meta.internal_links_count",">","1"] Combined: [["meta.external_links_count",">","2"],"and",["backlinks",">","10"]] | |
| order_by | No | 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: ["page_summary.backlinks,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: ["page_summary.backlinks,desc","page_summary.rank,asc"] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false. The description only adds 'detailed overview', which is vague and provides no new behavioral traits (e.g., pagination, rate limits, or data depth). It does not contradict annotations but adds minimal value beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no superfluous words. It is appropriately concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should ideally indicate what the 'detailed overview' contains. It does not describe return fields or format. Given the tool has 5 parameters (1 required) and a clear purpose, the description is minimally adequate but lacks detail about the response structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all 5 parameters. The description does not add any further meaning to the parameters, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides a 'detailed overview of referring domains' for a specified 'target'. This verb+resource combination is specific and distinguishes it from sibling tools like 'backlinks_backlinks' (backlinks, not domains) and 'backlinks_domain_intersection' (intersection of domains).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives. However, the context of sibling tools and the description's focus on 'referring domains' implicitly suggests it is appropriate for obtaining an overview of referring domains, not for detailed backlink lists or intersections.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_referring_networksBacklinks Referring NetworksBRead-onlyIdempotent
This endpoint will provide you with a detailed overview of referring domains pointing to the target you specify
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | the maximum number of returned networks | |
| offset | No | offset in the results array of returned networks optional field default value: 0 if you specify the 10 value, the first ten domains in the results array will be omitted and the data will be provided for the successive pages | |
| target | Yes | domain, subdomain or webpage to get backlinks for required field a domain or a subdomain should be specified without https:// and www. a page should be specified with absolute URL (including http:// or https://) | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, =, <>, in, not_in, like, not_like, ilike, not_ilike, match, not_match Use % with like/not_like to match any string of zero or more characters. Examples: Single: ["referring_pages",">","1"] Combined: [["referring_pages",">","2"],"and",["backlinks",">","10"]] | |
| order_by | No | 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: ["backlinks,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: ["backlinks,desc","rank,asc"] | |
| network_address_type | No | indicates the type of network to get data for optional field possible values: ip, subnet default value: ip | ip |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint as false, indicating safe, idempotent data retrieval. The description adds 'detailed overview' which aligns with annotations but does not disclose additional behavioral traits (e.g., pagination, rate limits). It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that conveys the core purpose without extraneous words. It is front-loaded and effectively communicates the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 6 parameters and no output schema, the description is somewhat incomplete. It does not explain what 'detailed overview' entails (e.g., return fields, pagination). The term 'networks' in the name is not clarified. However, the schema descriptions help fill some gaps, making it minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter having a detailed description. The tool description does not add any new semantic meaning beyond what the schema already provides. Baseline 3 is appropriate as the schema already does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides a 'detailed overview of referring domains pointing to the target.' While it is specific about the resource (referring domains) and the action (overview), it does not differentiate itself from the sibling tool 'backlinks_referring_domains' and uses the term 'domains' instead of 'networks,' which may cause confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives like 'backlinks_referring_domains' or 'backlinks_summary.' It does not specify context, prerequisites, or exclusions, leaving the agent to infer usage from the name and schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_summaryBacklinks SummaryBRead-onlyIdempotent
This endpoint will provide you with an overview of backlinks data available for a given domain, subdomain, or webpage
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | domain, subdomain or webpage to get backlinks for required field a domain or a subdomain should be specified without https:// and www. a page should be specified with absolute URL (including http:// or https://) | |
| include_subdomains | No | indicates if indirect links to the target will be included in the results if set to true, the results will include data on indirect links pointing to a page that either redirects to the target, or points to a canonical page if set to false, indirect links will be ignored | |
| exclude_internal_backlinks | No | indicates if internal backlinks from subdomains to the target will be excluded from the results if set to true, the results will not include data on internal backlinks from subdomains of the same domain as target if set to false, internal links will be included in the results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the description does not need to repeat these. The description adds modest value by clarifying input format constraints (e.g., domain without 'https://'). However, it does not disclose other behavioral aspects like pagination, data freshness, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that effectively communicates the tool's purpose. It is concise and front-loaded, with no redundant information. While it could be structured with more detail, it earns a high score for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having detailed annotations and schema coverage, the description lacks information about the output format or content of the overview (e.g., whether it returns counts, metrics, or trends). Given the complexity of the domain (multiple sibling tools) and the absence of an output schema, the description should provide more context on what the overview includes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema descriptions cover all three parameters thoroughly (target formatting, include_subdomains, exclude_internal_backlinks). The tool description adds no additional parameter meaning beyond what the schema already provides. With 100% schema description coverage, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool provides an overview of backlinks data for a domain, subdomain, or webpage. It uses a specific verb ('provides an overview') and identifies the resource ('backlinks data') and target types. While it does not explicitly differentiate from sibling tools like 'backlinks_backlinks' or 'backlinks_domain_intersection', the scope is sufficiently clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus alternatives, nor does it specify when not to use it. No contextual clues are given about prerequisites or exclusions, which is a significant gap given the large set of sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_timeseries_new_lost_summaryBacklinks Timeseries New Lost SummaryARead-onlyIdempotent
This endpoint will provide you with the number of new and lost backlinks and referring domains for the domain specified in the target field. The results will be provided for a period between the two indicated dates, and metrics will be grouped by the time range that you define: day, week, month, or year. Data from this endpoint will be especially helpful for building time-series graphs of new and lost backlinks and referring domains.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | domain to get data for required field a domain should be specified without https:// and www. example: "forbes.com" | |
| date_to | No | ending date of the time range optional field if you don’t specify this field, the today’s date will be used by default minimum value shouldn’t preceed the date specified in the date_from maximum value: today’s date date format: "yyyy-mm-dd" example: "2021-01-15" | |
| date_from | No | starting date of the time range optional field this field indicates the date which will be used as a threshold for summary data; minimum value: 2019-01-30 maximum value shouldn’t exceed the date specified in the date_to date format: "yyyy-mm-dd" example: "2021-01-01" | |
| group_range | No | time range which will be used to group the results optional field default value: month possible values: day, week, month, year note: for day, we will return items corresponding to all dates between and including date_from and date_to; for week/month/year, we will return items corresponding to full weeks/months/years, where each item will indicate the last day of the week/month/year for example, if you specify: "group_range": "month", "date_from": "2022-03-23", "date_to": "2022-05-13" we will return items falling between 2022-03-01 and 2022-05-31, namely, three items corresponding to the following dates: 2022-03-31, 2022-04-30, 2022-05-31 if there is no data for a certain day/week/month/year, we will return 0 | month |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false. The description adds behavioral details beyond annotations, such as grouping behavior, default value for group_range, and handling of missing data (returns 0). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, efficiently conveying purpose, usage, and key behavior. It is front-loaded with the main action and avoids unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description does not explain return structure, but the tool's purpose (timeseries of counts) is straightforward. For a tool with 4 parameters and explicit annotations, the description is sufficiently complete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage. The description adds value by explaining the group_range parameter with an example, clarifying default behavior and date range edge effects, which goes beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides the number of new and lost backlinks and referring domains for a domain within a date range, grouped by time range (day, week, month, year). It distinguishes itself from sibling tools like backlinks_summary and backlinks_timeseries_summary by focusing on new/lost metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (building time-series graphs of new/lost backlinks) but does not explicitly mention when not to use it or compare with alternative tools. It provides clear context for its intended use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_timeseries_summaryBacklinks Timeseries SummaryARead-onlyIdempotent
This endpoint will provide you with an overview of backlink data for the target domain available during a period between the two indicated dates. Backlink metrics will be grouped by the time range that you define: day, week, month, or year. Data from this endpoint will be especially helpful for building time-series graphs of daily, weekly, monthly, and yearly link-building progress
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | domain to get data for required field a domain should be specified without https:// and www. example: "forbes.com" | |
| date_to | No | ending date of the time range optional field if you don’t specify this field, the today’s date will be used by default minimum value shouldn’t preceed the date specified in the date_from maximum value: today’s date date format: "yyyy-mm-dd" example: "2021-01-15" | |
| date_from | No | starting date of the time range optional field this field indicates the date which will be used as a threshold for summary data; minimum value: 2019-01-30 maximum value shouldn’t exceed the date specified in the date_to date format: "yyyy-mm-dd" example: "2021-01-01" | |
| group_range | No | time range which will be used to group the results optional field default value: month possible values: day, week, month, year note: for day, we will return items corresponding to all dates between and including date_from and date_to; for week/month/year, we will return items corresponding to full weeks/months/years, where each item will indicate the last day of the week/month/year for example, if you specify: "group_range": "month", "date_from": "2022-03-23", "date_to": "2022-05-13" we will return items falling between 2022-03-01 and 2022-05-31, namely, three items corresponding to the following dates: 2022-03-31, 2022-04-30, 2022-05-31 if there is no data for a certain day/week/month/year, we will return 0 | month |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, open-world, idempotent, and non-destructive behavior. The description adds significant value by detailing grouping behavior (e.g., default group_range=month, how date ranges expand for week/month/year, and return of 0 for missing data). This context goes beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with a clear front-loaded purpose, but the second sentence is slightly redundant. It is efficient and focused, though not extremely terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (4 parameters, date range, grouping), the description covers the use case, grouping logic, and missing data behavior. No output schema exists, but the description adequately sets expectations for an overview without needing to detail return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with detailed descriptions for each parameter (e.g., date formats, min/max values, group_range behavior). The description adds only the high-level purpose (time-series graphs) without further enriching parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('provides an overview of backlink data'), identifies the resource ('target domain'), and clarifies the output scope ('over a period between two dates, grouped by day/week/month/year'). It explicitly states the use for building time-series graphs, effectively distinguishing it from sibling tools like backlinks_summary or backlinks_timeseries_new_lost_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear context for use (building time-series graphs) but does not explicitly state when not to use this tool or compare it to alternatives among the many sibling tools. The implied usage is adequate but lacks exclusions or comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
business_data_business_listings_searchBusiness Data Business Listings SearchARead-onlyIdempotent
Business Listings Search API provides results containing information about business entities listed on Google Maps in the specified categories. You will receive the address, contacts, rating, working hours, and other relevant data
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | the maximum number of returned businesses | |
| title | No | title of the element in SERP optional field the name of the business entity for which the results are collected; can contain up to 200 characters | |
| offset | No | offset in the results array of returned businesses optional field default value: 0 if you specify the 10 value, the first ten entities in the results array will be omitted and the data will be provided for the successive entities | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, like, not_like, match, not_match Use % with like/not_like as a wildcard. Example: Single: ["rating.value", ">", 3] | |
| order_by | No | 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 parameter example: ["rating.value,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: ["rating.value,desc","rating.votes_count,desc"] | |
| categories | No | business categories the categories you specify are used to search for business listings; if you don’t use this field, we will return business listings found in the specified location; you can specify up to 10 categories | |
| is_claimed | No | indicates whether the business is verified by its owner on Google Maps | |
| description | No | description of the element in SERP optional field the description of the business entity for which the results are collected; can contain up to 200 characters | |
| location_coordinate | No | GPS coordinates of a location optional field location_coordinate parameter should be specified in the “latitude,longitude,radius” format the maximum number of decimal digits for “latitude” and “longitude”: 7 the value of “radius” is specified in kilometres (km) the minimum value for “radius”: 1 the maximum value for “radius”: 100000 example: 53.476225,-2.243572,200 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds no behavioral context beyond mentioning returned fields, so it does not add significant transparency beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: first defines the action and resource, second lists output types. It is front-loaded and every word adds value, with no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks context on query requirements (e.g., need for location or categories) and does not cover pagination or filtering logic. Given the complex schema with 9 optional parameters, more contextual guidance would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description mentions 'categories' but does not add meaning beyond what the schema already provides. No additional parameter details are given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as searching business listings on Google Maps and specifies the output includes address, contacts, rating, working hours. The verb 'search' and resource 'business listings' are precise, and the tool is distinct from its siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor are there any exclusions or prerequisites. The description simply states what the tool does without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
content_analysis_phrase_trendsContent Analysis Phrase TrendsBRead-onlyIdempotent
This endpoint will provide you with data on all citations of the target keyword for the indicated date range
| Name | Required | Description | Default |
|---|---|---|---|
| date_to | No | ending date of the time range date format: "yyyy-mm-dd" | |
| keyword | Yes | target keyword Note: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; | |
| date_from | Yes | starting date of the time range date format: "yyyy-mm-dd" | |
| page_type | No | target page types | |
| date_group | No | date grouping type | month |
| keyword_fields | No | target keyword fields and target keywords use this parameter to filter the dataset by keywords that certain fields should contain; you can indicate several fields; Note: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; example: { "snippet": "\"logitech mouse\"", "main_title": "sale" } | |
| internal_list_limit | No | maximum number of elements within internal arrays you can use this field to limit the number of elements within the following arrays | |
| initial_dataset_filters | No | Array-based initial dataset filter expression applied to Search endpoint fields. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, like, not_like, has, has_not, match, not_match Use % with like/not_like as a wildcard. Examples: Single: ["domain", "<>", "logitech.com"] Combined: [["domain", "<>", "logitech.com"], "and", ["content_info.connotation_types.negative", ">", 1000]] Nested: [["domain", "<>", "logitech.com"], "and", [["content_info.connotation_types.negative", ">", 1000], "or", ["content_info.text_category", "has", 10994]]] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds that it returns 'all citations,' implying a complete dataset without filtering, but does not disclose pagination, rate limits, or output structure. Given strong annotations, the description provides modest additional context but still leaves gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loading the core purpose. It avoids redundancy but could be more streamlined (e.g., remove 'This endpoint will provide you with' – 'Returns citation data...' is tighter). No filler, but not maximally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 8 parameters (including nested objects) and no output schema, the description does not explain the return format, time-series structure, limits, or typical use cases. For a tool producing trend data, critical information about the response (e.g., array of objects with date and count) is missing, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description does not repeat any parameter details or add new semantic meaning. It stays neutral, relying on the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool provides data on citations of a target keyword for a given date range. It uses specific verbs ('provide you with data') and identifies the resource ('citations of the target keyword'). However, it does not explicitly mention 'trends' or time-series output, nor does it distinguish itself from sibling tools like content_analysis_search or content_analysis_summary, though the date range implies temporal aggregation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives. It does not mention prerequisites, limitations, or situations where other tools (e.g., content_analysis_search for raw citations, dataforseo_labs_google_keyword_suggestions for suggestions) might be more appropriate. The agent receives no context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
content_analysis_searchContent Analysis SearchCRead-onlyIdempotent
This endpoint will provide you with detailed citation data available for the target keyword
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | maximum number of results to return | |
| offset | No | offset in the results array of returned keywords | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, like, not_like, match, not_match Use % with like/not_like as a wildcard. Examples: Single: ["country", "=", "US"] Combined: [["domain_rank", ">", 800], "and", ["content_info.connotation_types.negative", ">", 0.9]] Nested: [["domain_rank", ">", 800], "and", [["page_types", "has", "ecommerce"], "or", ["content_info.text_category", "has", 10994]]] | |
| keyword | Yes | target keyword Note: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; | |
| order_by | No | 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"] | |
| page_type | No | target page types | |
| search_mode | No | results grouping type | |
| keyword_fields | No | target keyword fields and target keywords use this parameter to filter the dataset by keywords that certain fields should contain; you can indicate several fields; Note: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; example: { "snippet": "\"logitech mouse\"", "main_title": "sale" } |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, which the description does not reinforce or contradict. The description adds only the phrase 'citation data', which is too vague to provide meaningful behavioral insight beyond what annotations and schema cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, but it is too vague to be efficient. It lacks essential detail, making it less helpful despite being short.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, required keyword, no output schema, and complex nested filters, the description fails to explain what the tool returns or how the output relates to the input. The phrase 'citation data' is insufficient for an agent to understand the tool's behavior or result format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds no extra parameter context, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says 'detailed citation data available for the target keyword', but 'citation data' is vague and doesn't clearly distinguish the tool from siblings like serp_organic_live_advanced or dataforseo_labs_google_keyword_suggestions. A more specific verb and resource would improve clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Among many sibling tools for keyword and content analysis, the description offers no context for selection, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
content_analysis_summaryContent Analysis SummaryCRead-onlyIdempotent
This endpoint will provide you with an overview of citation data available for the target keyword
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | target keyword Note: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; | |
| page_type | No | target page types | |
| keyword_fields | No | target keyword fields and target keywords use this parameter to filter the dataset by keywords that certain fields should contain; you can indicate several fields; Note: to match an exact phrase instead of a stand-alone keyword, use double quotes and backslashes; example: { "snippet": "\"logitech mouse\"", "main_title": "sale" } | |
| internal_list_limit | No | maximum number of elements within internal arrays you can use this field to limit the number of elements within the following arrays | |
| initial_dataset_filters | No | Array-based initial dataset filter expression applied to Search endpoint fields. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, like, not_like, has, has_not, match, not_match Use % with like/not_like as a wildcard. Examples: Single: ["domain", "<>", "logitech.com"] Combined: [["domain", "<>", "logitech.com"], "and", ["content_info.connotation_types.negative", ">", 1000]] Nested: [["domain", "<>", "logitech.com"], "and", [["content_info.connotation_types.negative", ">", 1000], "or", ["content_info.text_category", "has", 10994]]] | |
| positive_connotation_threshold | No | positive connotation threshold 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 | |
| sentiments_connotation_threshold | No | sentiment connotation threshold 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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering safety and idempotency. The description adds only that it provides an 'overview', which is vague and does not disclose any behavioral traits beyond annotations (e.g., limits on data scope, aggregation behavior, or response structure). Given the annotations are present, the description should add context like 'returns aggregated counts' or 'limits per keyword' but does not.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the purpose. It is concise without extraneous information. However, it could benefit from a brief note on output or usage without becoming lengthy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 7 parameters including nested objects, no output schema, and is part of a complex domain (content analysis). The description is too brief to cover what the overview entails (e.g., what metrics, how citations are counted, pagination). An agent needs more context to understand the output or constraints, especially given the lack of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema already documents all 7 parameters with descriptions. The tool description itself does not elaborate on parameter semantics beyond the schema. According to the rubric, baseline is 3 when schema coverage is high. No additional value added by the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides an 'overview of citation data' for a target keyword, specifying the verb (provide overview) and resource (citation data). It distinguishes it from sibling tools like content_analysis_search (which likely returns raw data) and content_analysis_phrase_trends (which tracks trends). However, it could be more specific about the nature of the overview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool over siblings such as content_analysis_search or other keyword-related tools. There is no mention of prerequisites, limitations, or alternatives, leaving the agent without context to make an informed choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_amazon_bulk_search_volumeDataForSEO Labs Amazon Bulk Search VolumeARead-onlyIdempotent
This endpoint will provide you with search volume values for a maximum of 1,000 keywords in one API request. Search volume represents the approximate number of monthly searches for a keyword on Amazon.
| Name | Required | Description | Default |
|---|---|---|---|
| keywords | Yes | target keywords required field UTF-8 encoding maximum number of keywords you can specify in this array: 1000 the keywords will be converted to lowercase format | |
| language_code | No | language code required field if language_name is not specified example: en | en |
| location_name | No | full name of the location required field if location_code is not specified example: 'United States' | United States |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description aligns with annotations (readOnlyHint=true, idempotentHint=true). Does not go beyond annotations to disclose additional behavioral traits such as response format, rate limits, or authentication needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no unnecessary words, front-loaded with purpose and constraints. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks description of return values/response format, which would be helpful for an agent interpreting results. No pagination or error handling details. Adequate given tool simplicity, but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents parameters well. The description adds minimal value by stating the max keywords and Amazon context, but does not enhance understanding of parameter usage beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly specifies the action (provide search volume values), resource (keywords on Amazon), and constraints (max 1000 keywords). Distinguishes from sibling tools like Google-related volume tools due to 'Amazon' specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage from context (Amazon keyword volume), but no explicit guidance on when to use vs alternatives or when not to use it. Does not mention sibling tools that might be used for similar purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_amazon_product_competitorsDataForSEO Labs Amazon Product CompetitorsARead-onlyIdempotent
This endpoint will provide you with a list of products that intersect with a target asin in Amazon SERPs. The data can help you identify product competitors for any listing published on Amazon.
| Name | Required | Description | Default |
|---|---|---|---|
| asin | Yes | product ID required field unique product identifier (ASIN) on Amazon | |
| limit | No | Maximum number of product competitors to return | |
| offset | No | offset in the results array of returned product competitors optional field default value: 0 if you specify the 10 value, the first ten product competitors in the results array will be omitted and the data will be provided for the successive product competitors | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, match, not_match, ilike, not_ilike, like, not_like Use % with like/not_like/ilike/not_ilike as a wildcard. Example: ["full_metrics.amazon_serp.pos_1", ">", 20] | |
| order_by | No | 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 parameter example: ["full_metrics.amazon_serp.pos_1,desc"] default rule: ["ranked_serp_element.serp_item.rank_group,asc"] note that you can set no more than three sorting rules in a single request example: ["full_metrics.amazon_serp.pos_1,desc","avg_position,desc"] | |
| language_code | No | language code required field if language_name is not specified example: en | en |
| location_name | No | full name of the location required field if location_code is not specified Note: this endpoint currently supports the US, Egypt, Saudi Arabia, and the United Arab Emirates locations only example: 'United States' | United States |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the tool is known to be safe and idempotent. The description adds no additional behavioral context such as authentication needs, rate limits, or side effects, thus providing minimal added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, no fluff, and front-loads the primary purpose. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters and no output schema, the description lacks completeness. It does not explain pagination (limit, offset), filtering, ordering, location specifics, or return structure, leaving significant gaps for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters thoroughly. The description does not add meaning beyond the schema about parameters, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides a list of products that intersect with a target ASIN in Amazon SERPs, using specific verbs and resource identification. It distinguishes itself from sibling tools like dataforseo_labs_amazon_product_kw_intersections by focusing on product competitors rather than keyword intersections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description identifies the tool's use case for identifying product competitors, providing clear context. However, it does not explicitly state when not to use it or name alternative tools, though the sibling list implies differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_amazon_product_kw_intersectionsDataForSEO Labs Amazon Product Keyword IntersectionsBRead-onlyIdempotent
This endpoint will provide you with a list of keywords for which the target products intersect in Amazon SERP. The returned results are specific to the asins specified in a POST request.
| Name | Required | Description | Default |
|---|---|---|---|
| asins | Yes | target product ASINs required field product IDs of the products for which you need to find keyword intersections the maximum number of ASINs you can specify is 20 example: ["B09172433Z", "B07GBZ4Q68"] | |
| limit | No | Maximum number of keywords to return | |
| offset | No | offset in the results array of returned keywords optional field default value: 0 if you specify the 10 value, the first ten keywords in the results array will be omitted and the data will be provided for the successive keywords | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, match, not_match, ilike, not_ilike, like, not_like Use % with like/not_like/ilike/not_ilike as a wildcard. Example: ["avg_position", "<", 10] | |
| order_by | No | 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 parameter example: ["sum_position,desc"] default rule: ["intersections,desc"] note that you can set no more than three sorting rules in a single request example: ["intersections,desc","avg_position,asc"] | |
| language_code | No | language code required field if language_name is not specified example: en | en |
| location_name | No | full name of the location required field if location_code is not specified Note: this endpoint currently supports the US, Egypt, Saudi Arabia, and the United Arab Emirates locations only example: 'United States' | United States |
| intersection_mode | No | mode for finding asin intersections optional field possible values: union, intersect default value: intersect | intersect |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description's addition of 'POST request' and 'results specific to ASINs' provides minor extra context. There is no contradiction, but no further behavioral traits (e.g., rate limits, pagination) are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, front-loaded with the main action in the first sentence. It avoids fluff, though could be slightly sharper (e.g., 'lists keywords...' instead of 'will provide you with a list...').
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (8 parameters, no output schema), the two-sentence description is insufficient. It does not explain the concept of 'intersections' (e.g., union vs intersect mode), the return format, or how to interpret results, leaving significant gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already documented in the schema. The tool description adds no additional meaning beyond what the schema provides, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides a list of keywords where target products intersect in Amazon SERP, using a specific verb ('provide') and resource ('keywords'). It distinguishes from sibling Amazon tools like dataforseo_labs_amazon_ranked_keywords or dataforseo_labs_amazon_product_competitors by focusing on keyword intersections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not offer any guidance on when to use this tool versus alternatives like other Amazon keyword or intersection tools. It lacks explicit 'when to use' or 'when not to use' instructions, which is needed given the variety of sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_amazon_product_rank_overviewDataForSEO Labs Amazon Product Rank OverviewBRead-onlyIdempotent
This endpoint will provide you with ranking data from organic and paid Amazon SERPs for the target products. The returned results are specific to the asins specified in a POST request.
| Name | Required | Description | Default |
|---|---|---|---|
| asins | Yes | product IDs to compare required field product IDs to receive ranking data for the maximum number of ASINs you can specify in this array is 1000 Note: all letters in ASIN code must be specified in uppercase format example: ["B001TJ3HUG", "B01LW2SL7R"] | |
| language_code | No | language code required field if language_name is not specified example: en | en |
| location_name | No | full name of the location required field if location_code is not specified Note: this endpoint currently supports the US, Egypt, Saudi Arabia, and the United Arab Emirates locations only example: 'United States' | United States |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds that it returns ranking data from organic and paid SERPs via a POST request, which aligns with annotations. There is no contradiction, but little extra behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the core purpose. Every sentence adds value without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given high schema coverage, clear annotations, and no output schema, the description explains the input (ASINs) and general output (ranking data) but lacks details on the structure of returned data (e.g., fields like position, URL, etc.). The openWorldHint mitigates this slightly, but more completeness would help agent expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with detailed descriptions for asins (max 1000, uppercase required, example), language_code (default en), and location_name (supported locations listed). The tool description adds no further parameter-specific meaning, so it meets the baseline but does not provide additional clarification.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides ranking data from organic and paid Amazon SERPs for target ASINs. It distinguishes from siblings like 'dataforseo_labs_amazon_ranked_keywords' (keyword focus) and 'dataforseo_labs_amazon_product_competitors' (competitor focus). However, it could be more specific about what exactly 'rank overview' entails (e.g., position, URL, etc.).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only explains what the tool does, with no guidance on when to use it versus alternatives (e.g., when to use this vs. dataforseo_labs_amazon_ranked_keywords for keyword-level data). No exclusion criteria or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_amazon_ranked_keywordsDataForSEO Labs Amazon Ranked KeywordsARead-onlyIdempotent
This endpoint will provide you with a list of keywords the target product ranks for on Amazon. The returned results are specific to the asin specified in a POST request.
| Name | Required | Description | Default |
|---|---|---|---|
| asin | Yes | product ID required field unique product identifier (ASIN) on Amazon | |
| limit | No | Maximum number of keywords to return | |
| offset | No | offset in the results array of returned keywords optional field default value: 0 if you specify the 10 value, the first ten keywords in the results array will be omitted and the data will be provided for the successive keywords | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, like, not_like, match, not_match Use % with like/not_like as a wildcard. Example: ["keyword_data.keyword_info.search_volume", "in", [100, 1000]] | |
| order_by | No | 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 parameter example: ["keyword_data.keyword_info.competition,desc"] default rule: ["ranked_serp_element.serp_item.rank_group,asc"] note that you can set no more than three sorting rules in a single request example: ["keyword_data.keyword_info.search_volume,desc","keyword_data.keyword_info.cpc,desc"] | |
| language_code | No | language code required field if language_name is not specified example: en | en |
| location_name | No | full name of the location required field if location_code is not specified Note: this endpoint currently supports the US, Egypt, Saudi Arabia, and the United Arab Emirates locations only example: 'United States' | United States |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, etc. The description adds minimal behavioral context beyond confirming it's a read operation. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise at two sentences. Front-loaded with the core purpose. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should explain return format or structure. It only mentions 'list of keywords', lacking detail on fields, pagination, or typical response. For a 7-parameter tool, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3 is appropriate. The description does not add any additional meaning beyond what the schema provides for parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides a list of keywords a product ranks for on Amazon, specific to the ASIN. This distinguishes it from sibling tools like keyword intersections or rank overview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (for Amazon ASIN keywords) but does not explicitly state when to use this tool versus alternatives like Amazon product keyword intersections or competitors. No exclusions or alternative mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_available_filtersDataForSEO Labs Available FiltersBRead-onlyIdempotent
Here you will find all the necessary information about filters that can be used with DataForSEO Labs API endpoints.
Please, keep in mind that filters are associated with a certain object in the result array, and should be specified accordingly.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | No | The name of the tool to get filters for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds that filters are associated with a certain object in the result array, which is modest extra context. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, no redundant information. It efficiently conveys the purpose and a key detail about filters. Could be more structured but is concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 parameter, no output schema, clear annotations), the description is mostly adequate. However, it does not describe the output format or what 'all necessary information' entails, leaving some ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter 'tool', with a clear description. The tool description does not add further meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool provides information about filters for DataForSEO Labs API endpoints. It distinguishes itself from sibling 'available_filters' tools by the 'dataforseo_labs' prefix.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives, nor does it mention when not to use it. There is no comparison to similar filter tools like backlinks_available_filters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_bulk_keyword_difficultyDataForSEO Labs Bulk Keyword DifficultyARead-onlyIdempotent
This endpoint will provide you with the Keyword Difficulty metric for a maximum of 1,000 keywords in one API request. Keyword Difficulty stands for the relative difficulty of ranking in the first top-10 organic results for the related keyword. Keyword Difficulty in DataForSEO API responses indicates the chance of getting in top-10 organic results for a keyword on a logarithmic scale from 0 to 100.
| Name | Required | Description | Default |
|---|---|---|---|
| keywords | Yes | target keywords required field UTF-8 encoding maximum number of keywords you can specify in this array: 1000 | |
| language_code | No | language code required field example: en | en |
| location_name | No | full name of the location required field only in format "Country" (not "City" or "Region") example: 'United Kingdom', 'United States', 'Canada' | United States |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds value by explaining the metric's logarithmic 0-100 scale and the 1,000 keyword limit, but does not detail response structure beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences that front-load the main purpose, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description adequately explains the metric's meaning but could be improved by mentioning what the response contains (e.g., difficulty per keyword). It is sufficient for an agent to understand the return value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. The description adds no additional explanation for the parameters beyond what is in the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides the Keyword Difficulty metric for up to 1,000 keywords in one request, distinguishing it from sibling tools like keyword suggestions or search volume by explicitly mentioning the bulk aspect and the specific metric.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing difficulty for many keywords, but does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention situations where it should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_bulk_traffic_estimationDataForSEO Labs Bulk Traffic EstimationARead-onlyIdempotent
This endpoint will provide you with estimated monthly traffic volumes for up to 1,000 domains, subdomains, or webpages. Along with organic search traffic estimations, you will also get separate values for paid search, featured snippet, and local pack results.
| Name | Required | Description | Default |
|---|---|---|---|
| targets | Yes | target domains, subdomains, and webpages. you can specify domains, subdomains, and webpages in this field; domains and subdomains should be specified without https:// and www.; pages should be specified with absolute URL, including https:// and www.; you can set up to 1000 domains, subdomains or webpages | |
| item_types | No | display results by item type indicates the type of search results included in the response | |
| language_code | No | language code required field example: en | en |
| location_name | No | full name of the location required field only in format "Country" (not "City" or "Region") example: 'United Kingdom', 'United States', 'Canada' | United States |
| ignore_synonyms | No | ignore highly similar keywords, if set to true, results will be more accurate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds value by specifying the output includes separate traffic values for paid, featured snippet, and local pack. This goes beyond annotations but does not cover potential rate limits or data recency, though the up-to-1000 limit is implied. The description complements annotations well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loading the core function (estimated monthly traffic volumes) and then listing the output types. Every word earns its place, with no unnecessary detail. It is highly efficient for an AI agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 5 parameters (all described in schema), no output schema, and simple estimation task, the description covers the key result (traffic volumes by type). It lacks mention of response format or location/language impact, but the schema provides that info. It is sufficiently complete for an agent to understand what the tool produces, though a mention of the 'item_types' parameter control would be slightly better.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains all 5 parameters. The description does not add new parameter-level meaning; it only summarizes the overall purpose. Baseline 3 is appropriate as the description offers no extra semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides estimated monthly traffic volumes for up to 1,000 domains/subdomains/webpages, with breakdowns for organic, paid, featured snippet, and local pack. The verb 'provide' and resource 'domains/subdomains/webpages' make the purpose specific, and the title 'Bulk Traffic Estimation' reinforces this, distinguishing it from sibling tools like keyword suggestion or backlinks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any explicit guidance on when to use this tool versus alternatives (e.g., bulk keyword difficulty). It simply states what it does, leaving the agent to infer usage context without explicit 'when to use' or 'when not to use' instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_google_competitors_domainDataForSEO Labs Google Competitors DomainARead-onlyIdempotent
This endpoint will provide you with a full overview of ranking and traffic data of the competitor domains from organic and paid search. In addition to that, you will get the metrics specific to the keywords both competitor domains and your domain rank for within the same SERP.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of keywords to return | |
| offset | No | offset in the results array of returned keywords optional field default value: 0 if you specify the 10 value, the first ten keywords in the results array will be omitted and the data will be provided for the successive keywords | |
| target | Yes | target domain | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, match, not_match, ilike, not_ilike, like, not_like Use % with like/not_like/ilike/not_ilike as a wildcard. Examples: Single: ["metrics.organic.count", ">", 50] Combined: [["metrics.organic.pos_1", "<>", 0], "and", ["metrics.organic.impressions_etv", ">=", "10"]] Nested: [[["metrics.organic.count", ">=", 50], "and", ["metrics.organic.pos_1", "in", [1, 5]]], "or", ["metrics.organic.etv", ">=", "100"]] | |
| order_by | No | 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 parameter default rule: ["relevance,desc"] example: ["relevance,desc","keyword_info.search_volume,desc"] | |
| item_types | No | display results by item type indicates the type of search results included in the response | |
| language_code | No | language code required field example: en | en |
| location_name | No | full name of the location required field only in format "Country" (not "City" or "Region") example: 'United Kingdom', 'United States', 'Canada' | United States |
| ignore_synonyms | No | ignore highly similar keywords, if set to true, results will be more accurate | |
| exclude_top_domains | No | indicates whether to exclude world's largest websites optional field default value: false set to true if you want to get highly-relevant competitors excluding the top websites | |
| include_clickstream_data | No | Include or exclude data from clickstream-based metrics in the result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering safety and side effects. The description adds that the tool returns 'ranking and traffic data' and 'metrics specific to keywords', which is useful behavioral context. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, clear and front-loaded with the core purpose. No unnecessary words. Efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 11 parameters and no output schema, the description is brief. It explains the overall data returned but omits details like pagination behavior or example usage. Combined with 100% schema coverage and annotations, it is adequate but lacks completeness for a full understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage; every parameter (target, limit, offset, filters, etc.) is documented. The tool description adds general context about what data is returned but does not provide additional meaning beyond schema descriptions. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides 'a full overview of ranking and traffic data of the competitor domains from organic and paid search' and mentions 'metrics specific to the keywords both competitor domains and your domain rank for within the same SERP'. This is a specific verb-resource pair (provides overview of competitor domains) that differentiates it from related tools like dataforseo_labs_google_serp_competitors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for analyzing competitor domains in organic and paid search but does not explicitly state when to use this tool over alternatives (e.g., SERP-level competitor tools). No guidance on when not to use or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_google_domain_intersectionDataForSEO Labs Google Domain IntersectionARead-onlyIdempotent
This endpoint will provide you with the keywords for which both specified domains rank within the same SERP. You will get search volume, competition, cost-per-click and impressions data on each intersecting keyword. Along with that, you will get data on the first and second domain's SERP element discovered for this keyword, as well as the estimated traffic volume and cost of ad traffic.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of keywords to return | |
| offset | No | offset in the results array of returned keywords optional field default value: 0 if you specify the 10 value, the first ten keywords in the results array will be omitted and the data will be provided for the successive keywords | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, match, not_match, ilike, not_ilike, like, not_like Use % with like/not_like/ilike/not_ilike as a wildcard. Examples: Single: ["keyword_data.keyword_info.search_volume", "in", [100, 1000]] Combined: [["first_domain_serp_element.etv", ">", 0], "and", ["first_domain_serp_element.description", "like", "%goat%"]] Nested: [["keyword_data.keyword_info.search_volume", ">", 100], "and", [["first_domain_serp_element.description", "like", "%goat%"], "or", ["second_domain_serp_element.type", "=", "organic"]]] | |
| target1 | Yes | target domain 1 | |
| target2 | Yes | target domain 2 | |
| order_by | No | 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 parameter example: ["keyword_data.keyword_info.competition,desc"] default rule: ["keyword_data.keyword_info.search_volume,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: ["keyword_data.keyword_info.search_volume,desc","keyword_data.keyword_info.cpc,desc"] | |
| item_types | No | display results by item type indicates the type of search results included in the response | |
| intersections | No | domain intersections in SERP optional field if you set intersections to true, you will get the keywords for which both target domains specified as target1 and target2 have results within the same SERP; the corresponding SERP elements for both domains will be provided in the results array Note: this endpoint will not provide results if the number of intersecting keywords exceeds 10 million if you specify intersections: false, you will get the keywords for which the domain specified as target1 has results in SERP, and the domain specified as target2 doesn’t; thus, the corresponding SERP elements and other data will be provided for the domain specified as target1only default value: true | |
| language_code | No | language code required field example: en | en |
| location_name | No | full name of the location required field only in format "Country" (not "City" or "Region") example: 'United Kingdom', 'United States', 'Canada' | United States |
| ignore_synonyms | No | ignore highly similar keywords, if set to true, results will be more accurate | |
| include_clickstream_data | No | Include or exclude data from clickstream-based metrics in the result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds valuable context about the output data (search volume, CPC, SERP elements, traffic estimates) and clarifies the intersection logic. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only four sentences, each conveying essential information without fluff. The main purpose is front-loaded, and the structure is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 12 parameters with full schema coverage and no output schema, the description explains the key output fields well. It omits details about filtering and sorting, but the schema covers those. The description is complete enough for most use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description does not need to detail parameters. However, it adds no extra meaning beyond the schema; it focuses on output rather than input semantics. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool finds keywords where both specified domains rank in the same SERP, providing specific data fields. This distinguishes it from siblings like page_intersection or single-domain tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for finding intersecting keywords but does not explicitly state when to use this tool vs alternatives like dataforseo_labs_google_page_intersection or backlinks_domain_intersection. No exclusions or alternative pointers are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_google_domain_rank_overviewDataForSEO Labs Google Domain Rank OverviewARead-onlyIdempotent
This endpoint will provide you with ranking and traffic data from organic and paid search for the specified domain. You will be able to review the domain ranking distribution in SERPs as well as estimated monthly traffic volume for both organic and paid results.
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | target domain | |
| language_code | No | language code required field example: en | en |
| location_name | No | full name of the location required field only in format "Country" (not "City" or "Region") example: 'United Kingdom', 'United States', 'Canada' | United States |
| ignore_synonyms | No | ignore highly similar keywords, if set to true, results will be more accurate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, idempotentHint, destructiveHint) are present and cover safety. Description adds value by specifying it returns ranking distribution and traffic volume, but doesn't contradict annotations. With annotations already providing core behavioral traits, the description offers good additional context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with key action ('will provide you with ranking and traffic data') and efficient. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, no output schema), the description adequately covers what the tool does and what data it returns. It mentions organic/paid search, ranking distribution, and traffic volume. Slight gap in not describing the output structure, but overall complete for the tool's purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (all 4 parameters described in schema). Description doesn't add new meaning beyond the schema; it summarizes the tool's output but does not elaborate on parameter usage or constraints. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it provides ranking and traffic data for organic and paid search for a domain. It specifies the resource (domain ranking overview) and what data is included (ranking distribution, estimated monthly traffic). This distinguishes it from sibling tools like keyword suggestions or backlinks tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description implies it is for reviewing a domain's ranking overview, but doesn't mention when not to use it or provide comparisons to similar tools like dataforseo_labs_google_ranked_keywords or dataforseo_labs_google_competitors_domain.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_google_historical_keyword_dataDataForSEO Labs Google Historical Keyword DataARead-onlyIdempotent
This endpoint provides Google historical keyword data for specified keywords, including search volume, cost-per-click, competition values for paid search, monthly searches, and search volume trends. You can get historical keyword data since August, 2021, depending on keywords along with location and language combination
| Name | Required | Description | Default |
|---|---|---|---|
| keywords | Yes | keywords required field The maximum number of keywords you can specify: 700 The maximum number of characters for each keyword: 80 The maximum number of words for each keyword phrase: 10 the specified keywords will be converted to lowercase format, data will be provided in a separate array note that if some of the keywords specified in this array are omitted in the results you receive, then our database doesn't contain such keywords and cannot return data on them you will not be charged for the keywords omitted in the results | |
| language_code | No | language code required field example: en | en |
| location_name | No | full name of the location required field only in format "Country" (not "City" or "Region") example: 'United Kingdom', 'United States', 'Canada' | United States |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint true, idempotentHint true, and destructiveHint false. The description adds context about data availability since August 2021 and dependency on location/language, going beyond annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise comprising only two sentences. It is front-loaded with the purpose and lists key outputs, then adds contextual detail about the date range and dependencies. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with simple parameters and no output schema, the description adequately explains the returned metrics and constraints (date range, location/language). It could mention pagination or formatting, but overall it is sufficient for agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The description does not add additional meaning about parameters beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides historical keyword data including specific metrics like search volume, CPC, competition, monthly searches, and trends. The term 'historical' and the mention of data since August 2021 differentiate it from sibling tools like keyword overview or suggestions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs. alternatives like keyword overview or keyword suggestions. It does not mention when not to use it, leaving the agent to infer from the description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_google_historical_rank_overviewDataForSEO Labs Google Historical Rank OverviewBRead-onlyIdempotent
This endpoint will provide you with historical data on rankings and traffic of the specified domain, such as domain ranking distribution in SERPs and estimated monthly traffic volume for both organic and paid results
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | target domain | |
| language_code | No | language code required field example: en | en |
| location_name | No | full name of the location required field only in format "Country" (not "City" or "Region") example: 'United Kingdom', 'United States', 'Canada' | United States |
| ignore_synonyms | No | ignore highly similar keywords, if set to true, results will be more accurate | |
| include_clickstream_data | No | Include or exclude data from clickstream-based metrics in the result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, etc. The description adds minimal behavioral context (e.g., returns historical data) beyond what annotations provide. No mention of rate limits, pagination, or data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that directly states the purpose and examples. Efficient and front-loaded, though could be slightly more compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and a tool with multiple output facets, the description lacks details on date range scope (no date parameter), result structure, and pagination. It only provides high-level examples, leaving agents without sufficient context for expected output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters have descriptions. The tool description does not add additional meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it provides historical ranking and traffic data for a specified domain, listing specific metrics like domain ranking distribution and estimated monthly traffic. This distinguishes it from sibling tools like 'dataforseo_labs_google_domain_rank_overview' (current) and 'dataforseo_labs_google_historical_keyword_data' (per keyword).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for historical domain analysis but lacks explicit guidance on when to use this tool versus alternatives like 'dataforseo_labs_google_domain_rank_overview'. No when-not-to-use or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_google_historical_serpsDataForSEO Labs Google Historical SERPsBRead-onlyIdempotent
This endpoint will provide you with Google SERPs collected within the specified time frame. You will also receive a complete overview of featured snippets and other extra elements that were present within the specified dates. The data will allow you to analyze the dynamics of keyword rankings over time for the specified keyword and location.
| Name | Required | Description | Default |
|---|---|---|---|
| date_to | No | ending date of the time range, date format: YYYY-MM-DD | |
| keyword | Yes | target keyword | |
| date_from | No | starting date of the time range, date format: YYYY-MM-DD | |
| language_code | No | language code required field example: en | en |
| location_name | No | full name of the location required field only in format "Country" (not "City" or "Region") example: 'United Kingdom', 'United States', 'Canada' | United States |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive. The description adds that the tool returns SERPs with extra elements like featured snippets, but does not disclose potential rate limits, data freshness, or pagination behavior. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no fluff. Could be slightly more streamlined, but it effectively communicates the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description partially covers output (SERPs, featured snippets) but lacks details on data structure, pagination, or limitations. Parameters are well-documented. Sufficient for basic understanding but not thoroughly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions for all 5 parameters. The description adds no further meaning beyond saying 'specified time frame' and 'keyword and location', which is already in schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it provides historical Google SERPs for a keyword and location over a time range, including featured snippets. However, it does not distinguish itself from sibling tools like `dataforseo_labs_google_historical_rank_overview` or `dataforseo_labs_google_historical_keyword_data`, which also deal with historical data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for analyzing ranking dynamics over time via historical SERPs, but it does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternative tools for similar purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_google_keyword_ideasDataForSEO Labs Google Keyword IdeasBRead-onlyIdempotent
The Keyword Ideas provides search terms that are relevant to the product or service categories of the specified keywords. The algorithm selects the keywords which fall into the same categories as the seed keywords specified in a POST array. As a result, you will get a list of relevant keyword ideas for up to 200 seed keywords. Along with each keyword idea, you will get its search volume rate for the last month, search volume trend for the previous 12 months, as well as current cost-per-click and competition values. Moreover, this endpoint supplies minimum, maximum and average values of daily impressions, clicks and CPC for each result.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of keywords to return | |
| offset | No | offset in the results array of returned keywords optional field default value: 0 if you specify the 10 value, the first ten keywords in the results array will be omitted and the data will be provided for the successive keywords | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, match, not_match, ilike, not_ilike, like, not_like Use % with like/not_like/ilike/not_ilike as a wildcard. Examples: Single: ["keyword_info.search_volume", ">", 0] Combined: [["keyword_info.search_volume", "in", [0, 1000]], "and", ["keyword_info.competition_level", "=", "LOW"]] Nested: [["keyword_info.search_volume", ">", 100], "and", [["keyword_info.cpc", "<", 0.5], "or", ["keyword_info.high_top_of_page_bid", "<=", 0.5]]] | |
| keywords | Yes | target keywords | |
| order_by | No | 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 parameter default rule: ["relevance,desc"] relevance is used as the default sorting rule to provide you with the closest keyword ideas. We recommend using this sorting rule to get highly-relevant search terms. Note that relevance is only our internal system identifier, so it can not be used as a filter, and you will not find this field in the result array. The relevance score is based on a similar principle as used in the Keywords For Keywords endpoint. 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: ["relevance,desc","keyword_info.search_volume,desc"] | |
| language_code | No | language code required field example: en | en |
| location_name | No | full name of the location required field only in format "Country" (not "City" or "Region") example: 'United Kingdom', 'United States', 'Canada' | United States |
| include_clickstream_data | No | Include or exclude data from clickstream-based metrics in the result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds value by detailing the algorithm (category-based selection) and outputs (search volume, trend, CPC, etc.). No contradictions, but could mention rate limits or data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph that conveys necessary information but lacks structural elements like bullets or clear separation of concerns. It is somewhat dense but not excessively long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters with full schema coverage and no output schema, the description adequately explains the output and algorithm. It mentions seed keyword limit (200) and POST method, which adds context. Still, pagination and filter usage are not elaborated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline 3. Description does not add extra meaning to parameters beyond what the schema provides; it focuses on overall behavior rather than parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides relevant keyword ideas based on category-matching algorithm and lists specific metrics returned. However, it lacks explicit differentiation from sibling tools like related keywords or suggestions, slightly reducing clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided—no mention of when to use this tool over alternatives or prerequisites. The description only states what it does, not appropriate contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_google_keyword_overviewDataForSEO Labs Google Keyword OverviewBRead-onlyIdempotent
This endpoint provides Google keyword data for specified keywords. For each keyword, you will receive current cost-per-click, competition values for paid search, search volume, search intent, monthly searches
| Name | Required | Description | Default |
|---|---|---|---|
| keywords | Yes | keywords required field The maximum number of keywords you can specify: 700 The maximum number of characters for each keyword: 80 The maximum number of words for each keyword phrase: 10 the specified keywords will be converted to lowercase format, data will be provided in a separate array note that if some of the keywords specified in this array are omitted in the results you receive, then our database doesn't contain such keywords and cannot return data on them you will not be charged for the keywords omitted in the results | |
| language_code | No | language code required field example: en | en |
| location_name | No | full name of the location required field only in format "Country" (not "City" or "Region") example: 'United Kingdom', 'United States', 'Canada' | United States |
| include_clickstream_data | No | Include or exclude data from clickstream-based metrics in the result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, openWorldHint, idempotentHint, non-destructive. The description adds minor behavioral context (keyword lowercase conversion, no charge for omitted keywords) but does not go beyond what annotations imply for safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states the purpose, second details output fields. Efficient and front-loaded, but could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters and no output schema, the description adequately summarizes the returned fields. It covers the key outputs without being overly verbose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description does not add parameter-specific details. Baseline 3 applies because the schema already documents all parameters well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides keyword data and lists specific metrics (cost-per-click, competition, search volume, etc.). It distinguishes the tool's output from siblings like keyword_suggestions or related_keywords, but naming a sibling would have strengthened it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as dataforseo_labs_google_keyword_suggestions or dataforseo_labs_google_related_keywords. The description only explains what it does, not when it's appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_google_keywords_for_siteDataForSEO Labs Google Keywords For SiteBRead-onlyIdempotent
The Keywords For Site endpoint will provide you with a list of keywords relevant to the target domain. Each keyword is supplied with relevant, search volume data for the last month, cost-per-click, competition
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of keywords to return | |
| offset | No | offset in the results array of returned keywords optional field default value: 0 if you specify the 10 value, the first ten keywords in the results array will be omitted and the data will be provided for the successive keywords | |
| target | Yes | target domain | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, match, not_match, ilike, not_ilike, like, not_like Use % with like/not_like/ilike/not_ilike as a wildcard. Examples: Single: ["keyword_info.search_volume", ">", 0] Combined: [["keyword_info.search_volume", "in", [0, 1000]], "and", ["keyword_info.competition_level", "=", "LOW"]] Nested: [["keyword_info.search_volume", ">", 100], "and", [["keyword_info.cpc", "<", 0.5], "or", ["keyword_info.high_top_of_page_bid", "<=", 0.5]]] | |
| order_by | No | 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 parameter default rule: ["relevance,desc"] example: ["relevance,desc","keyword_info.search_volume,desc"] | |
| language_code | No | language code required field example: en | en |
| location_name | No | full name of the location required field only in format "Country" (not "City" or "Region") example: 'United Kingdom', 'United States', 'Canada' | United States |
| include_subdomains | No | Include keywords from subdomains | |
| include_clickstream_data | No | Include or exclude data from clickstream-based metrics in the result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, covering safety. The description adds minimal behavioral context beyond stating the output includes specific metrics. It does not disclose pagination behavior, rate limits, or data freshness, but the annotations sufficiently cover the safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, directly stating the tool's purpose and output characteristics. No unnecessary words or repetition. Well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite good schema coverage and annotations, the description omits important context for a tool with 9 parameters including complex filters and ordering. It does not mention pagination, filter capabilities, or default behavior. The lack of output schema also means the agent must infer return structure. While the core purpose is clear, the description falls short for a comprehensive understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all parameters thoroughly. The description does not repeat or enrich parameter details, offering no additional meaning beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('provide'), the resource ('a list of keywords relevant to the target domain'), and the data included ('search volume data for the last month, cost-per-click, competition'). It distinguishes from sibling tools like 'dataforseo_labs_google_related_keywords' which provides related keywords for a given keyword, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives, nor does it mention prerequisites, context, or limitations. No explicit 'when-to-use' or 'when-not-to-use' advice is given, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_google_keyword_suggestionsDataForSEO Labs Google Keyword SuggestionsARead-onlyIdempotent
The Keyword Suggestions provides search queries that include the specified seed keyword.
The algorithm is based on the full-text search for the specified keyword and therefore returns only those search terms that contain the keyword you set in the POST array with additional words before, after, or within the specified key phrase. Returned keyword suggestions can contain the words from the specified key phrase in a sequence different from the one you specify.
As a result, you will get a list of long-tail keywords with each keyword in the list matching the specified search term.
Along with each suggested keyword, you will get its search volume rate for the last month, search volume trend for the previous 12 months, as well as current cost-per-click and competition values. Moreover, this endpoint supplies minimum, maximum and average values of daily impressions, clicks and CPC for each result.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of keywords to return | |
| offset | No | offset in the results array of returned keywords optional field default value: 0 if you specify the 10 value, the first ten keywords in the results array will be omitted and the data will be provided for the successive keywords | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, match, not_match, ilike, not_ilike, like, not_like Use % with like/not_like/ilike/not_ilike as a wildcard. Examples: Single: ["keyword_info.search_volume", ">", 0] Combined: [["keyword_info.search_volume", "in", [0, 1000]], "and", ["keyword_info.competition_level", "=", "LOW"]] Nested: [["keyword_info.search_volume", ">", 100], "and", [["keyword_info.cpc", "<", 0.5], "or", ["keyword_info.high_top_of_page_bid", "<=", 0.5]]] | |
| keyword | Yes | target keyword | |
| order_by | No | 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 a comma is used as a separator example: ["keyword_info.competition,desc"] default rule: ["keyword_info.search_volume,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: ["keyword_info.search_volume,desc","keyword_info.cpc,desc"] | |
| language_code | No | language code required field example: en | en |
| location_name | No | full name of the location required field only in format "Country" (not "City" or "Region") example: 'United Kingdom', 'United States', 'Canada' | United States |
| include_clickstream_data | No | Include or exclude data from clickstream-based metrics in the result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds value beyond these by detailing the algorithm (full-text search, variable sequence) and the output metrics (search volume, trend, CPC, competition, daily impressions/clicks/CPC stats). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a few well-structured paragraphs that front-load the core purpose and then provide algorithmic and output details. It is efficient without unnecessary words, though a more structured format (e.g., bullet points for metrics) could improve readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the algorithm, the output metrics, and the nature of suggestions (long-tail keywords containing the seed). Given no output schema, it adequately covers return values. It lacks error conditions, rate limits, or authorization details, but these are somewhat expected for a read-only tool with comprehensive annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The tool description does not add new parameter semantics; it focuses on output and algorithm. The schema's own parameter descriptions are sufficient, so the description provides minimal added value for parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool returns search queries containing the specified seed keyword, explaining the full-text search algorithm and what kind of suggestions are returned. It implicitly distinguishes from related keyword tools by emphasizing containment, but does not explicitly name siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the algorithmic behavior and the type of results (long-tail keywords containing the seed), providing clear context for when to use it. However, it does not explicitly state when not to use it or mention alternative tools like dataforseo_labs_google_related_keywords for related keywords not containing the seed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_google_page_intersectionDataForSEO Labs Google Page IntersectionARead-onlyIdempotent
This endpoint will provide you with the keywords for which specified pages rank within the same SERP. You will get search volume, competition, cost-per-click and impressions data on each intersecting keyword. Along with that, you will get data on SERP elements that specified pages rank for in search results, as well as the estimated traffic volume and cost of ad traffic. Page Intersection endpoint supports organic, paid, local pack and featured snippet results.
Find keywords several webpages rank for: If you would like to get the keywords several pages rank for, you need to specify webpages only in the pages object. This way, you will receive intersected ranked keywords for the specified URLs.
Find keywords your competitors rank for but you do not: If you would like to receive all keywords several pages rank for, but particular pages do not, you need to use the exclude_pages array as well. This way you will receive the keywords for which the URLs from the pages object rank for, but the URLs from the exclude_pages array do not
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of keywords to return | |
| pages | Yes | pages array required field you can set up to 20 pages in this object the pages should be specified with absolute URLs (including http:// or https://) if you specify a single page here, we will return results only for this page; you can also use a wildcard ('*') character to specify the search pattern example: "example.com" search for the exact URL "example.com/eng/*" search for the example.com page and all its related URLs which start with '/eng/', such as "example.com/eng/index.html" and "example.com/eng/help/", etc. note: a wilcard should be placed after the slash ('/') character in the end of the URL, it is not possible to place it after the domain in the following way: https://dataforseo.com* use https://dataforseo.com/* instead | |
| offset | No | offset in the results array of returned keywords optional field default value: 0 if you specify the 10 value, the first ten keywords in the results array will be omitted and the data will be provided for the successive keywords | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, match, not_match, ilike, not_ilike, like, not_like Use % with like/not_like/ilike/not_ilike as a wildcard. Examples: Single: ["keyword_data.keyword_info.search_volume", "in", [100, 1000]] Combined: [["intersection_result.1.etv", ">", 0], "and", ["intersection_result.2.description", "like", "%goat%"]] Nested: [["keyword_data.keyword_info.search_volume", ">", 100], "and", [["intersection_result.1.description", "like", "%goat%"], "or", ["intersection_result.2.type", "=", "organic"]]] | |
| order_by | No | 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 parameter example: ["keyword_data.keyword_info.competition,desc"] default rule: ["keyword_data.keyword_info.search_volume,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: ["intersection_result.1.rank_group,asc","intersection_result.2.rank_absolute,asc"] | |
| item_types | No | display results by item type indicates the type of search results included in the response | |
| exclude_pages | No | URLs of pages you want to exclude optional field you can set up to 10 pages in this array if you use this array, results will contain the keywords for which URLs from the pages object rank, but URLs from exclude_pages array do not; note that if you specify this field, the results will be based on the keywords any URL from pages ranks for regardless of intersections between them. However, you can set intersection_mode to intersect and results will contain the keywords all URLs from pages rank for in the same SERP and URLs from exclude_pages do not. use a wildcard (‘*’) character to specify the search pattern example: "exclude_pages": [ "https://www.apple.com/iphone/*", "https://dataforseo.com/apis/*", "https://www.microsoft.com/en-us/industry/services/" ] | |
| language_code | No | language code required field example: en | en |
| location_name | No | full name of the location required field only in format "Country" (not "City" or "Region") example: 'United Kingdom', 'United States', 'Canada' | United States |
| ignore_synonyms | No | ignore highly similar keywords, if set to true, results will be more accurate | |
| intersection_mode | No | indicates whether to intersect keywords optional field use this field to intersect or merge results for the specified URLs possible values: union, intersect union – results are based on all keywords any URL from pages rank for; intersect – results are based on the keywords all URLs from pages rank for in the same SERP: by default, results are based on the intersect mode if you specify only pages array. If you specify exclude_pages as well, results are based on the union mode | |
| include_clickstream_data | No | Include or exclude data from clickstream-based metrics in the result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds context about the data returned (search volume, competition, etc.) and mentions supported SERP elements. It does not contradict annotations. However, it does not disclose potential rate limits, authentication requirements, or any side effects beyond what annotations cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately sized and well-structured, with clear sections for the two use cases. It front-loads the main purpose. Some repetition exists (e.g., mentions data types twice), but overall it is efficient and easy to read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 12 parameters, no output schema, and complex functionality, the description covers the main output (keywords with metrics, SERP elements) and two key use cases. It provides enough context for an AI agent to understand what the tool does and how to use it, though some advanced features (like filters) are left to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, baseline is 3. The description adds value by explaining the two main use cases, which guide parameter usage (e.g., specifying pages vs. using exclude_pages). It also clarifies the effect of exclude_pages and intersection_mode beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool finds keywords for which specified pages rank within the same SERP, and provides additional metrics. It includes two specific use cases. However, it does not directly differentiate the tool from sibling tools like dataforseo_labs_google_domain_intersection or backlinks_domain_intersection, though the 'page intersection' focus is evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides two usage scenarios: finding keywords several pages rank for, and finding keywords competitors rank for but the user does not. It explains how to use exclude_pages for the latter. However, it does not mention when to use alternative tools or when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_google_ranked_keywordsDataForSEO Labs Google Ranked KeywordsARead-onlyIdempotent
This endpoint will provide you with the list of keywords that any domain or webpage is ranking for. You will also get SERP elements related to the keyword position, as well as impressions, monthly searches and other data relevant to the returned keywords.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of keywords to return | |
| offset | No | offset in the results array of returned keywords optional field default value: 0 if you specify the 10 value, the first ten keywords in the results array will be omitted and the data will be provided for the successive keywords | |
| target | Yes | domain name or page url required field the domain name of the target website or URL of the target webpage; the domain name must be specified without https:// or www.; the webpage URL must be specified with https:// or www. Note: if you specify the webpage URL without https:// or www., the result will be returned for the entire domain rather than the specific page | |
| filters | No | Array of filter conditions and logical operators. Each filter condition is an array of [field, operator, value]. Maximum 8 filters allowed. Available operators: =, <>, <, <=, >, >=, in, not_in, like, not_like, ilike, not_ilike, regex, not_regex, match, not_match Logical operators: "and", "or" Examples: Simple filter: [["ranked_serp_element.serp_item.rank_group","<=",10]] With logical operator: [["ranked_serp_element.serp_item.rank_group","<=",10],"or",["ranked_serp_element.serp_item.type","<>","paid"]] Complex filter: [["keyword_data.keyword_info.search_volume","<>",0],"and",[["ranked_serp_element.serp_item.type","<>","paid"],"or",["ranked_serp_element.serp_item.is_malicious","=",false]]] | |
| order_by | No | 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: ["keyword_data.keyword_info.competition,desc"] default rule: ["ranked_serp_element.serp_item.rank_group,asc"] 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: ["keyword_data.keyword_info.search_volume,desc","keyword_data.keyword_info.cpc,desc"] | |
| item_types | No | display results by item type indicates the type of search results included in the response | |
| language_code | No | language code required field example: en | en |
| location_name | No | full name of the location required field only in format "Country" (not "City" or "Region") example: 'United Kingdom', 'United States', 'Canada' | United States |
| include_subdomains | No | Include keywords from subdomains | |
| include_clickstream_data | No | Include or exclude data from clickstream-based metrics in the result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true. The description adds value by specifying the returned data types (SERP elements, impressions, monthly searches), which provides behavioral context beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, and contains no unnecessary words or repetition. It efficiently communicates the key functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 10 parameters but no output schema, the description provides a reasonable overview of what is returned. It does not cover all details like filtering or sorting, but the schema descriptions cover those. The description is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add new parameter information beyond what is in the schema. It gives an overview of returned data but not parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides a list of keywords a domain or webpage is ranking for, including SERP elements, impressions, and monthly searches. The verb 'provide you with the list' and specific resource 'keywords that any domain or webpage is ranking for' make the purpose very clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives, such as when to use 'dataforseo_labs_google_keywords_for_site' or 'serp_organic_live_advanced'. There are no explicit conditions or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_google_relevant_pagesDataForSEO Labs Google Relevant PagesARead-onlyIdempotent
This endpoint will provide you with rankings and traffic data for the web pages of the specified domain. You will be able to review each page’s ranking distribution and estimated monthly traffic volume from both organic and paid searches.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of keywords to return | |
| offset | No | offset in the results array of returned keywords optional field default value: 0 if you specify the 10 value, the first ten keywords in the results array will be omitted and the data will be provided for the successive keywords | |
| target | Yes | target domain | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, match, not_match, ilike, not_ilike, like, not_like Use % with like/not_like/ilike/not_ilike as a wildcard. Examples: Single: ["metrics.organic.count", ">", 50] Combined: [["metrics.organic.pos_1", "<>", 0], "and", ["metrics.organic.impressions_etv", ">=", "10"]] Nested: [[["metrics.organic.count", ">=", 50], "and", ["metrics.organic.pos_1", "in", [1, 5]]], "or", ["metrics.organic.etv", ">=", "100"]] | |
| order_by | No | 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 specify a sorting type example: ["metrics.paid.etv,asc"] Note: you can set no more than three sorting rules in a single request you should use a comma to separate several sorting rules example: ["metrics.organic.etv,desc","metrics.paid.count,asc"] default rule: ["metrics.organic.count,desc"] | |
| item_types | No | display results by item type indicates the type of search results included in the response | |
| language_code | No | language code required field example: en | en |
| location_name | No | full name of the location required field only in format "Country" (not "City" or "Region") example: 'United Kingdom', 'United States', 'Canada' | United States |
| ignore_synonyms | No | ignore highly similar keywords, if set to true, results will be more accurate | |
| exclude_top_domains | No | indicates whether to exclude world’s largest websites optional field default value: false set to true if you want to get highly-relevant competitors excluding the top websites | |
| include_clickstream_data | No | Include or exclude data from clickstream-based metrics in the result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the description adds minimal behavioral context. It mentions 'organic and paid searches' but not specifics like pagination or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, 26 words, direct and front-loaded. No redundant phrases; every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description provides a high-level overview of return data (rankings, traffic). It omits details on pagination and filtering but covers the essential purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description does not need to elaborate on parameters. It mentions 'specified domain' (target) but adds no extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'provide' and specifies the resource: 'web pages of the specified domain'. It distinguishes from similar tools by focusing on page-level rankings and traffic data for a single domain, contrasting with keyword-focused siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not mention prerequisites, exclusions, or comparisons to other DataForSEO Labs endpoints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_google_serp_competitorsDataForSEO Labs Google SERP CompetitorsARead-onlyIdempotent
This endpoint will provide you with a list of domains ranking for the keywords you specify. You will also get SERP rankings, rating, estimated traffic volume, and visibility values the provided domains gain from the specified keywords.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of keywords to return | |
| offset | No | offset in the results array of returned keywords optional field default value: 0 if you specify the 10 value, the first ten keywords in the results array will be omitted and the data will be provided for the successive keywords | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, match, not_match, ilike, not_ilike, like, not_like Use % with like/not_like/ilike/not_ilike as a wildcard. Examples: Single: ["median_position", "in", [1, 10]] Combined: [["median_position", "in", [1, 10]], "and", ["domain", "not_like", "%wikipedia.org%"]] Nested: [["domain", "not_like", "%wikipedia.org%"], "and", [["relevant_serp_items", ">", 0], "or", ["median_position", "in", [1, 10]]]] | |
| keywords | Yes | keywords array required field the results will be based on the keywords you specify in this array UTF-8 encoding; the keywords will be converted to lowercase format; you can specify the maximum of 200 keywords | |
| order_by | No | 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 the comma is used as a separator example: ["avg_position,asc"] default rule: ["rating,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: ["avg_position,asc","etv,desc"] | |
| item_types | No | display results by item type indicates the type of search results included in the response | |
| language_code | No | language code required field example: en | en |
| location_name | No | full name of the location required field only in format "Country" (not "City" or "Region") example: 'United Kingdom', 'United States', 'Canada' | United States |
| include_subdomains | No | Include keywords from subdomains |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, etc., so safety is clear. The description adds context about the output (ratings, traffic, visibility) but does not disclose additional behavioral traits like rate limits, authentication needs, or handling of large keyword arrays (max 200 stated in schema but not highlighted).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that conveys the core functionality and output. It is front-loaded and contains no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of detailed schema and annotations, the description covers the primary output adequately. However, it omits mention of pagination (offset/limit) and result filtering by item types, which are important for usage. Still, most necessary context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented. The description does not add extra semantic meaning beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides 'a list of domains ranking for the keywords you specify' along with specific metrics (SERP rankings, rating, traffic, visibility). It distinguishes from sibling tools like dataforseo_labs_google_related_keywords or dataforseo_labs_google_competitors_domain by focusing on keyword-based competitor analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks guidance on when to use this tool versus other similar tools. It does not mention scenarios, prerequisites, or alternatives. For example, when to use this over dataforseo_labs_google_competitors_domain (which analyzes by domain) is not addressed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_google_subdomainsDataForSEO Labs Google SubdomainsARead-onlyIdempotent
This endpoint will provide you with a list of subdomains of the specified domain, along with the ranking distribution across organic and paid search. In addition to that, you will also get the estimated traffic volume of subdomains based on search volume.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of keywords to return | |
| offset | No | offset in the results array of returned keywords optional field default value: 0 if you specify the 10 value, the first ten keywords in the results array will be omitted and the data will be provided for the successive keywords | |
| target | Yes | target domain | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, match, not_match, ilike, not_ilike, like, not_like Use % with like/not_like/ilike/not_ilike as a wildcard. Examples: Single: ["metrics.organic.count", ">", 50] Combined: [["metrics.organic.pos_1", "<>", 0], "and", ["metrics.organic.impressions_etv", ">=", "10"]] Nested: [[["metrics.organic.count", ">=", 50], "and", ["metrics.organic.pos_1", "in", [1, 5]]], "or", ["metrics.organic.etv", ">=", "100"]] | |
| order_by | No | 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 specify a sorting type example: ["metrics.paid.etv,asc"] Note: you can set no more than three sorting rules in a single request you should use a comma to separate several sorting rules example: ["metrics.organic.etv,desc","metrics.paid.count,asc"] default rule: ["metrics.organic.count,desc"] | |
| item_types | No | display results by item type indicates the type of search results included in the response | |
| language_code | No | language code required field example: en | en |
| location_name | No | full name of the location required field only in format "Country" (not "City" or "Region") example: 'United Kingdom', 'United States', 'Canada' | United States |
| ignore_synonyms | No | ignore highly similar keywords, if set to true, results will be more accurate | |
| include_clickstream_data | No | Include or exclude data from clickstream-based metrics in the result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, open-world, idempotent behavior. The description adds context about the data returned (ranking distribution, traffic volume) but does not disclose additional behavioral traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with clear, front-loaded content. Every sentence adds value with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 10 parameters and no output schema, the description provides a good overview but could be more complete by mentioning the purpose of each parameter or the structure of the response. However, it is sufficient for a basic understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters. The description adds no new parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides a list of subdomains with ranking distribution across organic and paid search, and estimated traffic volume. It uses specific verbs and resources, and distinct from sibling tools like keyword suggestions or competitive analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks explicit guidance on when to use this tool vs alternatives. No prerequisites, exclusions, or comparisons to sibling tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_google_top_searchesDataForSEO Labs Google Top SearchesBRead-onlyIdempotent
The Top Searches endpoint of DataForSEO Labs API can provide you with over 7 billion keywords from the DataForSEO Keyword Database. Each keyword in the API response is provided with a set of relevant keyword data with Google Ads metrics
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of keywords to return | |
| offset | No | offset in the results array of returned keywords optional field default value: 0 if you specify the 10 value, the first ten keywords in the results array will be omitted and the data will be provided for the successive keywords | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, match, not_match, ilike, not_ilike, like, not_like Use % with like/not_like/ilike/not_ilike as a wildcard. Examples: Single: ["keyword_info.search_volume", ">", 0] Combined: [["keyword_info.search_volume", "in", [0, 1000]], "and", ["keyword_info.competition_level", "=", "LOW"]] Nested: [["keyword_info.search_volume", ">", 100], "and", [["keyword_info.cpc", "<", 0.5], "or", ["keyword_info.high_top_of_page_bid", "<=", 0.5]]] | |
| order_by | No | resuresults 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: ["keyword_info.competition,desc"] default rule: ["keyword_info.search_volume,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: ["keyword_info.search_volume,desc","keyword_info.cpc,desc"] | |
| language_code | No | language code required field example: en | en |
| location_name | No | full name of the location required field only in format "Country" (not "City" or "Region") example: 'United Kingdom', 'United States', 'Canada' | United States |
| include_clickstream_data | No | Include or exclude data from clickstream-based metrics in the result |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds context about the massive keyword count (7 billion) and the inclusion of Google Ads metrics, which are not in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the tool's core purpose and output. It is front-loaded and not verbose, but could benefit from slight restructuring to separate key points.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 7 parameters and no output schema, the description omits details about pagination, filtering, ordering, and the exact metrics returned. The agent would need to infer these from the input schema, which is insufficient for complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 7 parameters have descriptions in the schema (100% coverage), so the baseline is 3. The description does not add any parameter-specific details beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides 'over 7 billion keywords' from the DataForSEO Keyword Database with 'Google Ads metrics', specifying the resource and output. It lacks explicit differentiation from sibling keyword tools like 'related_keywords' or 'keyword_suggestions', but the term 'top searches' implies a broad list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool over alternatives. No mention of prerequisites, exclusions, or appropriate contexts. The description is purely declarative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dataforseo_labs_search_intentDataForSEO Labs Search IntentARead-onlyIdempotent
This endpoint will provide you with search intent data for up to 1,000 keywords. For each keyword that you specify when setting a task, the API will return the keyword's search intent and intent probability. Besides the highest probable search intent, the results will also provide you with other likely search intent(s) and their probability. Based on keyword data and search results data, our system has been trained to detect four types of search intent: informational, navigational, commercial, transactional.
| Name | Required | Description | Default |
|---|---|---|---|
| keywords | Yes | target keywords required field UTF-8 encoding maximum number of keywords you can specify in this array: 1000 | |
| language_code | No | language code required field Note: this endpoint currently supports the following languages only: ar, zh-TW, cs, da, nl, en, fi, fr, de, he, hi, it, ja, ko, ms, nb, pl, pt, ro, ru, es, sv, th, uk, vi, bg, hr, sr, sl, bs | en |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds context about the output (intent types, probability) and the training basis, going beyond the annotations to explain behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and single-paragraph, with no wasted words. It could be slightly more structured but is efficient and front-loads the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 2 parameters and no output schema, the description adequately explains the output and functionality. Annotations provide safety context. It is complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds little beyond what the schema already provides. It mentions the maximum number of keywords and language support, but these are also in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides search intent data for up to 1000 keywords, returning intent and probability. It distinguishes from sibling tools by focusing specifically on search intent, which is unique among the listed siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but does not provide explicit guidance on when to use it versus alternatives like keyword suggestions or search volume tools. Usage is implied but no exclusions or comparisons are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain_analytics_technologies_available_filtersDomain Analytics Technologies Available FiltersBRead-onlyIdempotent
Here you will find all the necessary information about filters that can be used with DataForSEO Technologies API endpoints.
Please, keep in mind that filters are associated with a certain object in the result array, and should be specified accordingly.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | No | The name of the tool to get filters for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, ensuring the agent knows it's safe. The description adds that filters are associated with a specific object in the result array, which provides behavioral context beyond the annotations. However, it does not cover other traits like response structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, comprising two sentences. While the first sentence could be more concise (e.g., 'Returns available filters for DataForSEO Technologies API endpoints'), it is not overly verbose and lacks irrelevant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one parameter, no output schema, and simple annotations. The description does not specify what the response format looks like or how the filters are structured, leaving the agent without crucial context. Given the available richness of annotations, the description should at least hint at the output structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'tool' parameter, which is described as 'The name of the tool to get filters for'. The tool description does not add further meaning to this parameter, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states that the tool provides information about filters for DataForSEO Technologies API endpoints, and the title specifies 'Available Filters'. This clearly indicates the purpose and distinguishes it from sibling filter tools for other APIs. However, it could be more action-oriented (e.g., 'Returns available filters').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool vs alternatives like dataforseo_labs_available_filters or backlinks_available_filters. It does not mention that this tool is specifically for the Technologies API or exclude other use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain_analytics_technologies_domain_technologiesDomain Analytics Technologies Domain TechnologiesBRead-onlyIdempotent
Using this endpoint you will get a list of technologies used in a particular domain
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | target domain required field domain name of the website to analyze Note: results will be returned for the specified domain only |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, and idempotentHint, covering safety and idempotency. The description adds no behavioral details beyond what is in the schema (e.g., 'results returned for specified domain only' is already in the parameter description). It lacks disclosure of potential behaviors like data freshness, pagination, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that communicates the core purpose without unnecessary words or structure. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description provides the essential purpose. However, it lacks details about the output format (e.g., structure of the technology list, whether it includes versions or categories) and does not mention potential limitations, making it only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter 'target', which includes its own description. The tool description essentially restates the same concept ('list of technologies used in a particular domain') without adding new semantic meaning, meeting the baseline for high coverage but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a list of technologies used for a specific domain, using a precise verb+resource structure. It distinguishes itself from sibling tools like domain_analytics_whois_overview (whois) and domain_analytics_technologies_available_filters (filters).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not specify conditions, prerequisites, or mention when not to use it, leaving the agent without decision context despite many sibling tools in the domain analytics category.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain_analytics_whois_available_filtersDomain Analytics WHOIS Available FiltersCRead-onlyIdempotent
Here you will find all the necessary information about filters that can be used with DataForSEO WHOIS API endpoints.
Please, keep in mind that filters are associated with a certain object in the result array, and should be specified accordingly.
| Name | Required | Description | Default |
|---|---|---|---|
| tool | No | The name of the tool to get filters for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral information such as the return format, error handling, or rate limits. Annotations (readOnlyHint=true, idempotentHint=true) already convey safety, but the description does not elaborate on what the tool does when a valid or invalid tool name is provided. No additional value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (two sentences) and to the point. However, it lacks a front-loaded, clear action statement. The first sentence is passive ('Here you will find...') rather than active. It is concise but could be more direct and structured. Still, it avoids unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one optional parameter, no output schema), the description should at least indicate the expected output structure (e.g., 'returns an array of filter definitions'). The current description only hints at the content orientation, leaving an agent uncertain about what exactly is returned. This is a notable gap for a tool that is mean to provide 'information about filters'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides a clear description for the single parameter 'tool' ('The name of the tool to get filters for'), achieving 100% schema coverage. The description adds no further semantics about the parameter, such as accepted values or examples. Baseline score of 3 is appropriate as the schema already covers the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states that the tool provides 'information about filters' for WHOIS API endpoints, but it does not explicitly state the action (e.g., 'get available filters') or specify the input parameter's role. The verb 'find' is ambiguous, and the purpose is inferable but not clearly articulated. It adequately distinguishes from siblings via the name, but the description alone is vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'backlinks_available_filters' or 'domain_analytics_technologies_available_filters'. The description lacks any mention of context, prerequisites, or when not to use the tool. An AI agent would have no basis to choose this tool over similar ones.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain_analytics_whois_overviewDomain Analytics WHOIS OverviewBRead-onlyIdempotent
This endpoint will provide you with Whois data enriched with backlink stats, and ranking and traffic info from organic and paid search results. Using this endpoint you will be able to get all these data for the domains matching the parameters you specify in the request
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | the maximum number of returned domains | |
| offset | No | offset in the results array of returned businesses optional field default value: 0 if you specify the 10 value, the first ten entities in the results array will be omitted and the data will be provided for the successive entities | |
| filters | No | Array-based filter expression. A single condition is a 3-element array: [field, operator, value]. Combine conditions with ["and"|"or"] between them: [condition, "and", condition]. Max 8 filters. Operators: regex, not_regex, <, <=, >, >=, =, <>, in, not_in, like, not_like, match, not_match Use % with like/not_like as a wildcard. Example: Single: ["rating.value", ">", 3] | |
| order_by | No | 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 parameter example: ["rating.value,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: ["rating.value,desc","rating.votes_count,desc"] | |
| is_claimed | No | indicates whether the business is verified by its owner on Google Maps |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false. The description adds value by listing the enriched data types (backlink stats, ranking, traffic info), but doesn't disclose additional behavioral traits beyond what annotations cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core functionality. Efficient and to the point, though could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately explains what data is returned (Whois, backlink stats, ranking, traffic). It covers the main outputs, though lacks detail on output structure or filtering behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented. The description adds no parameter-specific meaning beyond 'matching the parameters you specify'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides Whois data enriched with backlink stats, ranking, and traffic info. It distinguishes from siblings by focusing on WHOIS enrichment, though it could be more explicit about what makes it unique among domain analytics tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It only says 'for domains matching parameters', but doesn't mention when not to use it or suggest other tools for different use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kw_data_dfs_trends_demographyKeywords Data DataForSEO Trends DemographyARead-onlyIdempotent
This endpoint will provide you with the demographic breakdown (by age and gender) of keyword popularity per each specified term based on DataForSEO Trends data
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | dataforseo trends type | web |
| date_to | No | ending date of the time range if you don’t specify this field, the today’s date will be used by default date format: "yyyy-mm-dd" example: "2019-01-15" | |
| keywords | Yes | keywords the maximum number of keywords you can specify: 5 | |
| date_from | No | starting date of the time range if you don’t specify this field, the current day and month of the preceding year will be used by default minimal value for the web type: 2004-01-01 minimal value for other types: 2008-01-01 date format: "yyyy-mm-dd" example: "2019-01-15" | |
| time_range | No | preset time ranges if you specify date_from or date_to parameters, this field will be ignored when setting a task | past_7_days |
| location_name | No | full name of the location optional field in format "Country" example: United Kingdom |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, indicating a safe, read-only operation. The description adds that it provides demographic breakdown from DataForSEO Trends, but does not elaborate on behavior like rate limits or data freshness. Bar is lowered due to annotations, but additional context is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that efficiently communicates the purpose without any redundant information. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has 6 well-documented parameters, no output schema, and annotations cover safety, the description is mostly complete. However, it could briefly note the output format or limitations (e.g., max 5 keywords) already in schema, but schema already handles that. Slight gap for a fully comprehensive description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all 6 parameters described in detail. The tool description does not add parameter-specific meaning beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides demographic breakdown by age and gender for keyword popularity, using a specific verb ('will provide') and resource ('demographic breakdown per keyword'). This distinguishes it from sibling tools like kw_data_dfs_trends_explore which likely provide different data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when demographic breakdown is needed, but lacks explicit guidance on when to avoid this tool or alternatives. No mention of context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kw_data_dfs_trends_exploreKeywords Data DataForSEO Trends ExploreBRead-onlyIdempotent
This endpoint will provide you with the keyword popularity data from DataForSEO Trends. You can check keyword trends for Google Search, Google News, and Google Shopping
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | dataforseo trends type | web |
| date_to | No | ending date of the time range if you don’t specify this field, the today’s date will be used by default date format: "yyyy-mm-dd" example: "2019-01-15" | |
| keywords | Yes | keywords the maximum number of keywords you can specify: 5 | |
| date_from | No | starting date of the time range if you don’t specify this field, the current day and month of the preceding year will be used by default minimal value for the web type: 2004-01-01 minimal value for other types: 2008-01-01 date format: "yyyy-mm-dd" example: "2019-01-15" | |
| time_range | No | preset time ranges if you specify date_from or date_to parameters, this field will be ignored when setting a task | past_7_days |
| location_name | No | full name of the location optional field in format "Country" example: United Kingdom |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds no additional behavioral context beyond confirming it provides data, so it meets the baseline but does not exceed it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the core purpose and adding essential scope. Every sentence is valuable with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While parameter schema covers input well, the description lacks any mention of output format or return value structure. For a data retrieval tool with no output schema, this is a notable gap that forces the agent to infer or assume the response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for all 6 parameters. The description mentions keyword trends for Google Search, News, and Shopping, which corresponds to the 'type' parameter, but adds no new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides keyword popularity data from DataForSEO Trends for Google Search, News, and Shopping. It uses specific verbs ('provide', 'check') and distinguishes from sibling tools like kw_data_google_trends_explore or dataforseo_labs_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives. Given the large number of sibling tools, there is no indication of when not to use it or what distinguishes this tool from similar keyword trend tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kw_data_dfs_trends_subregion_interestsKeywords Data DataForSEO Trends Subregion InterestsBRead-onlyIdempotent
This endpoint will provide you with location-specific keyword popularity data from DataForSEO Trends
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | dataforseo trends type | web |
| date_to | No | ending date of the time range if you don’t specify this field, the today’s date will be used by default date format: "yyyy-mm-dd" example: "2019-01-15" | |
| keywords | Yes | keywords the maximum number of keywords you can specify: 5 | |
| date_from | No | starting date of the time range if you don’t specify this field, the current day and month of the preceding year will be used by default minimal value for the web type: 2004-01-01 minimal value for other types: 2008-01-01 date format: "yyyy-mm-dd" example: "2019-01-15" | |
| time_range | No | preset time ranges if you specify date_from or date_to parameters, this field will be ignored when setting a task | past_7_days |
| location_name | No | full name of the location optional field in format "Country" example: United Kingdom |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, providing a clear safety profile. The description adds minimal context, not contradicting annotations, but doesn't disclose additional behavioral traits like rate limits or data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the essential purpose. It is brief but not overly verbose, though it could be slightly more detailed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters and no output schema, the description does not explain return values or behavior for edge cases (e.g., invalid locations). This leaves gaps for an agent to rely on tool usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds no extra meaning beyond what is in the schema, achieving baseline adequacy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides location-specific keyword popularity data from DataForSEO Trends. It distinguishes from sibling tools like kw_data_dfs_trends_explore and kw_data_dfs_trends_demography by emphasizing subregion interests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No explicit when-to-use or when-not-to-use conditions, leaving the agent to infer context from the name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kw_data_google_ads_locationsKeywords Data Google Ads LocationsBRead-onlyIdempotent
Utility tool for kw_data_google_ads_search_volume to get list of availible locations.
| Name | Required | Description | Default |
|---|---|---|---|
| location_name | No | Name of location or it`s part. | |
| location_type | No | Type of location. Possible variants: 'TV Region','Postal Code','Neighborhood','Governorate','National Park','Quarter','Canton','Airport','Okrug','Prefecture','City','Country','Province','Barrio','Sub-District','Congressional District','Municipality District','district','DMA Region','Union Territory','Territory','Colloquial Area','Autonomous Community','Borough','County','State','District','City Region','Commune','Region','Department','Division','Sub-Ward','Municipality','University' | |
| country_iso_code | Yes | ISO 3166-1 alpha-2 country code, for example: US, GB, MT |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, indicating a safe, read-only operation. The description adds no additional behavioral context beyond stating it retrieves a list. There is no mention of pagination, rate limits, or other traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that effectively communicates the tool's role. However, it contains a typo ('availible' instead of 'available'), which slightly detracts from clarity. Overall, it is appropriately sized and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool (no output schema, three well-described parameters), the description provides the essential context of being a utility for another tool. It is adequate but could be more complete by mentioning the return format or the scope of location listing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the input schema already describes all three parameters clearly, including examples for country_iso_code and enumerated values for location_type. The description does not add any extra meaning or context for the parameters, so it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it is a utility for 'kw_data_google_ads_search_volume' to retrieve a list of available locations. The verb ('get list') and resource ('locations') are specific, and it distinguishes itself by being a supporting tool for a sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when location data is needed for 'kw_data_google_ads_search_volume', but it does not provide explicit guidance on when to use this tool versus other location-related siblings like 'serp_locations' or 'ai_opt_kw_data_loc_and_lang'. Usage context is implied but not clearly differentiated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kw_data_google_ads_search_volumeKeywords Data Google Ads Search VolumeBRead-onlyIdempotent
Get search volume data for keywords from Google Ads
| Name | Required | Description | Default |
|---|---|---|---|
| keywords | Yes | Array of keywords to get search volume for | |
| language_code | No | Language two-letter ISO code (e.g., 'en'). optional field | |
| location_name | No | full name of the location required field Location format - hierarchical, comma-separated (from most specific to least) Can be one of: 1. Country only: "United States" 2. Region,Country: "California,United States" 3. City,Region,Country: "San Francisco,California,United States" | United States |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds no additional behavioral context, such as data freshness, result format, or any side effects. Since annotations are rich, the description could have added value but did not.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 8 words, highly efficient and front-loaded. Every word is necessary, and there is no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool, the description is minimally adequate with good parameter documentation in the schema. However, there is no mention of return values or data details, which would improve completeness. No output schema exists, so the description could compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters are documented. The description does not repeat parameter details, which is acceptable; however, it adds no extra meaning beyond the schema, such as constraints or examples. Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action and resource: 'Get search volume data for keywords from Google Ads'. It is specific and matches the tool name, but does not explicitly differentiate from sibling tools like 'kw_data_google_trends_categories' or 'dataforseo_labs_google_keyword_suggestions'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It lacks any context for selection, such as mentioning when search volume is needed compared to related keywords or trend data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kw_data_google_trends_categoriesKeywords Data Google Trends CategoriesBRead-onlyIdempotent
This endpoint will provide you list of Google Trends Categories
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, openWorldHint, and non-destructive. The description adds no additional behavioral details (e.g., that the list is static, caching behavior, or that it requires no parameters). It relies entirely on annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, clear and to the point. However, it is slightly underspecified; could benefit from a second sentence describing output or note on no parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should clarify what the list contains (e.g., category IDs and names). It fails to do so, leaving the agent uncertain about return structure. For a simple tool, this omission reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters in input schema (0 params, 100% coverage). Description could explicitly state 'No parameters required' but does not. Given zero parameters, the schema already suffices; the description adds marginal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it provides a list of Google Trends Categories. The verb 'provide' and resource 'list of Google Trends Categories' are specific enough to distinguish from sibling tools like kw_data_google_trends_explore. However, it could be more precise (e.g., 'Retrieve all available Google Trends categories').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It does not mention that no parameters are needed or that this is a simple lookup without filters. Among many sibling tools, explicit usage context is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kw_data_google_trends_exploreKeywords Data Google Trends ExploreARead-onlyIdempotent
This endpoint will provide you with the keyword popularity data from the ‘Explore’ feature of Google Trends. You can check keyword trends for Google Search, Google News, Google Images, Google Shopping, and YouTube
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | google trends type | web |
| date_to | No | ending date of the time range if you don’t specify this field, the today’s date will be used by default date format: "yyyy-mm-dd" example: "2019-01-15" | |
| keywords | Yes | keywords the maximum number of keywords you can specify: 5 the maximum number of characters you can specify in a keyword: 100 the minimum number of characters must be greater than 1 comma characters (,) in the specified keywords will be unset and ignored Note: keywords cannot consist of a combination of the following characters: < > | " - + = ~ ! : * ( ) [ ] { } Note: to obtain google_trends_topics_list and google_trends_queries_list items, specify no more than 1 keyword | |
| date_from | No | starting date of the time range if you don’t specify this field, the current day and month of the preceding year will be used by default minimal value for the web type: 2004-01-01 minimal value for other types: 2008-01-01 date format: "yyyy-mm-dd" example: "2019-01-15" | |
| item_types | No | types of items returned to speed up the execution of the request, specify one item at a time | |
| time_range | No | preset time ranges if you specify date_from or date_to parameters, this field will be ignored when setting a task | past_7_days |
| category_code | No | google trends search category you can receive the list of available categories with their category_code by making a separate request to the keywords_data_google_trends_categories tool | |
| language_code | No | Language two-letter ISO code (e.g., 'en'). optional field | |
| location_name | No | full name of the location optional field in format "Country" example: United Kingdom |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, openWorldHint, idempotentHint) already indicate this is a safe, read-only operation. The description adds no further behavioral details beyond stating it provides keyword popularity data. No contradictions, but no added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the purpose, and contains no extraneous information. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters, 1 required, and no output schema, the description is too minimal. It does not explain return format, pagination, rate limits, or provide examples. Given the tool's complexity and lack of output schema, the description should offer more context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with all parameters having descriptions. The tool description does not add any parameter-level meaning beyond what the schema already provides. The brief mention of Google properties is implicit in the 'type' param enum but not new.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides keyword popularity data from Google Trends Explore, listing specific Google properties it covers (Search, News, Images, Shopping, YouTube). This distinguishes it from sibling tools like kw_data_google_trends_categories (which provides category codes) and kw_data_dfs_trends_explore (a different trend exploration).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives general context about the tool's capabilities (Explore feature, multiple Google properties), but does not provide explicit guidance on when to use this tool versus alternatives like dataforseo_labs tools. It lacks 'use this if...' or 'for other data, use...' statements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merchant_amazon_asin_live_advancedMerchant Amazon ASIN Live AdvancedARead-onlyIdempotent
Get detailed product information from Amazon by ASIN (Amazon Standard Identification Number). Returns product title, price, description, images, reviews summary, seller info, shipping options, and other product attributes for the specified ASIN.
| Name | Required | Description | Default |
|---|---|---|---|
| asin | Yes | product ID required field unique product identifier (ASIN) in Amazon you can receive the asin parameter by making a separate request to the merchant_amazon_products_live_advanced | |
| language_code | No | language code required field example: "en_US" supported languages: ar_SA, ar_AE, zh_CN, zh_TW, cs_CZ, nl_NL, en_AU, en_CA, en_IN, en_AE, en_GB, en_US, fr_CA, fr_FR, de_DE, he_IL, hi_IN, it_IT, ja_JP, ko_KR, pl_PL, pt_BR, es_MX, es_ES, es_US, sv_SE, tr_TR | en_US |
| location_name | No | full name of the location required field Location format - hierarchical, comma-separated (from most specific to least) Can be one of: 1. Country only: "United States" 2. Postal Code,Region,Country: "90210,California,United States" | United States |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds limited behavioral insight beyond listing returned data. No mention of side effects, rate limits, or authorization beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with front-loaded main purpose followed by a clear list of returned data categories. No redundancy or wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description adequately lists the expected return fields. Parameters are fully documented in schema. Lacks only explicit mention of error cases or pagination, but sufficient for common use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions (e.g., supported languages, location format). The description does not add further parameter meaning beyond the schema, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves detailed product information from Amazon by ASIN, listing specific data categories (title, price, etc.). This distinguishes it from sibling tools like merchant_amazon_products_live_advanced, which likely returns product search results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the asin parameter description mentioning it can be obtained from merchant_amazon_products_live_advanced, but lacks explicit when-to-use or when-not-to-use guidance compared to alternatives. No exclusions or context for selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merchant_amazon_locationsMerchant Amazon LocationsARead-onlyIdempotent
Utility tool for Amazon merchant tools (merchant_amazon_asin_live_advanced, merchant_amazon_sellers_live_advanced, merchant_amazon_products_live_advanced) to get the list of available locations with their location_code and location_name values. You can optionally filter the list by country ISO code.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | maximum number of locations to return | |
| offset | No | offset in the results array of returned locations | |
| country | No | ISO 3166-1 alpha-2 country code to filter locations by optional field example: "US", "GB", "DE" if omitted, the full list of available Amazon locations is returned | |
| location_name_contains | No | filter locations by a substring match on location_name optional field example: "New York", "London" if omitted, no name filtering is applied |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds that it returns location_code and location_name, but does not disclose pagination behavior, default limits, or other operational details. With strong annotation coverage, this is acceptable but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently communicate purpose and optional filtering. The list of sibling tools in parentheses adds context without being overly verbose. Could be slightly more structured (e.g., separating utility statement from filtering options), but overall very concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool with fully described parameters and robust annotations, the description covers the essential purpose and optional filtering. No output schema exists, but the return type (list of locations with code and name) is implied. Complete enough for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for all four parameters (limit, offset, country, location_name_contains). The description mentions optional country filtering but does not add new semantic meaning beyond what the schema already provides. Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it's a utility to get available locations for Amazon merchant tools, specifying it returns location_code and location_name. It distinguishes from sibling tools by explicitly listing the associated Amazon merchant tools (merchant_amazon_asin_live_advanced, etc.), making its scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes when to use (when needing location codes for Amazon merchant tools) and optional country filtering, but does not explicitly state when not to use or provide comparisons to other location tools like serp_locations or kw_data_google_ads_locations. Guidance is adequate but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merchant_amazon_products_live_advancedMerchant Amazon Products Live AdvancedARead-onlyIdempotent
Search Amazon products by keyword and get the list of matching items. Returns product titles, ASINs, prices, ratings, images, sponsored placements, and other SERP-like results for the specified keyword on Amazon.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | keyword required field the keyword that will be searched for on Amazon; example: "shoes" | |
| sort_by | No | results sorting rules optional field supported values: relevance, price_low_to_high, price_high_to_low, featured, avg_customer_review, newest_arrival example: "relevance" | |
| price_max | No | maximum product price optional field maximum price of the returned products listed on Amazon for the specified query example: 100 Note: if you specify price_max, the search_param parameter will be ignored | |
| price_min | No | minimum product price optional field minimum price of the returned products listed on Amazon for the specified query example: 5 Note: if you specify price_min, the search_param parameter will be ignored | |
| department | No | amazon product department optional field specify one of the supported amazon departments for extracting product listings | |
| language_code | No | language code required field example: "en_US" supported languages: ar_SA, ar_AE, zh_CN, zh_TW, cs_CZ, nl_NL, en_AU, en_CA, en_IN, en_AE, en_GB, en_US, fr_CA, fr_FR, de_DE, he_IL, hi_IN, it_IT, ja_JP, ko_KR, pl_PL, pt_BR, es_MX, es_ES, es_US, sv_SE, tr_TR | en_US |
| location_name | No | full name of the location required field Location format - hierarchical, comma-separated (from most specific to least) Can be one of: 1. Country only: "United States" 2. Postal Code,Region,Country: "90210,California,United States" | United States |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the description's contribution to behavioral transparency is limited. It adds value by listing returned fields (titles, ASINs, prices, etc.), but does not disclose potential behaviors like pagination, rate limits, or error handling. The description does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences that front-load the main purpose and immediately list return values. There is no extraneous information; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lists key return fields (titles, ASINs, prices, ratings, images, sponsored placements) partially compensating for the lack of an output schema. However, it omits details like pagination, result limits, or error conditions. For a search tool with comprehensive parameter schemas, this is fairly complete but not fully thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter is well-described in the schema (e.g., keyword: 'the keyword that will be searched for on Amazon'). The description adds no additional parameter semantics beyond what the schema provides, resulting in a baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly identifies the action ('Search Amazon products by keyword') and the resource ('Amazon products'). The name 'merchant_amazon_products_live_advanced' and sibling context (e.g., merchant_amazon_asin_live_advanced) further distinguish it as a keyword-based product search, distinguishing it from ASIN-specific or seller-specific tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when one wants to search Amazon products by keyword, but it does not provide explicit when-to-use/when-not-to-use guidance or mention alternative sibling tools (e.g., merchant_amazon_asin_live_advanced). The context is clear but lacks exclusions or comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
merchant_amazon_sellers_live_advancedMerchant Amazon Sellers Live AdvancedARead-onlyIdempotent
Get the list of sellers offering a specific Amazon product (by ASIN). Returns seller names, ratings, prices, shipping conditions, and product offers available from each merchant for the requested ASIN.
| Name | Required | Description | Default |
|---|---|---|---|
| asin | Yes | product identifier (ASIN) on Amazon required field the unique identifier of the product on Amazon; example: "B07D528W98" | |
| language_code | No | language code required field example: "en_US" supported languages: ar_SA, ar_AE, zh_CN, zh_TW, cs_CZ, nl_NL, en_AU, en_CA, en_IN, en_AE, en_GB, en_US, fr_CA, fr_FR, de_DE, he_IL, hi_IN, it_IT, ja_JP, ko_KR, pl_PL, pt_BR, es_MX, es_ES, es_US, sv_SE, tr_TR | en_US |
| location_name | No | full name of the location required field Location format - hierarchical, comma-separated (from most specific to least) Can be one of: 1. Country only: "United States" 2. Postal Code,Region,Country: "90210,California,United States" | United States |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide strong behavioral hints: readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description only reiterates that it returns data, adding no new traits like rate limits or pagination. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loaded with the main purpose, and contains no redundant information. It is efficient but could be slightly more structured (e.g., bullet items for returned fields).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers what the tool returns (seller names, ratings, etc.) and implies a single ASIN lookup. However, it does not mention output format, pagination, or any limits. For a parameter-rich tool with no output schema, it is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already having a clear description in the input schema. The tool description adds no extra meaning or context for the parameters beyond what is already present.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get'), identifies the resource ('list of sellers offering a specific Amazon product'), and specifies the key parameter (ASIN). It also lists the returned fields, clearly distinguishing this tool from sibling tools like merchant_amazon_asin_live_advanced which likely returns product details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when one needs seller info for a given ASIN, but it does not explicitly state when to use this tool over alternatives (e.g., merchant_amazon_products_live_advanced). No exclusions or context about required permissions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
on_page_content_parsingOn Page Content ParsingARead-onlyIdempotent
This endpoint allows parsing the content on any page you specify and will return the structured content of the target page, including link URLs, anchors, headings, and textual content.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL of the page to parse | |
| accept_language | No | Accept-Language header value | |
| custom_user_agent | No | Custom User-Agent header | |
| enable_javascript | No | Enable JavaScript rendering |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds that it parses content and returns structured data, which is consistent but does not disclose additional behavioral traits such as network requests, potential latency, or handling of JavaScript rendering beyond what parameters suggest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core action and result. Every word serves a purpose, with no redundancy or filler. It is optimally concise for an agent to quickly grasp the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters (1 required) and no output schema, the description provides useful context by listing the types of structured content returned (links, anchors, headings, text). This helps agents anticipate data shape. However, it omits details on error handling, rate limits, or interaction with website consent/robots.txt.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with clear descriptions for all four parameters. The description adds no extra meaning beyond summarizing the output; it does not clarify parameter syntax, defaults, or constraints. Baseline 3 is appropriate as schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'parsing', the resource 'content on any page', and the output 'structured content including link URLs, anchors, headings, and textual content'. It distinguishes from sibling tools like 'on_page_instant_pages' or 'serp_organic_live_advanced' by focusing on page content parsing rather than SERP or analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for extracting structured content from any web page but provides no explicit guidance on when to use this tool versus siblings like dataforseo_labs tools or serp tools. No exclusions or alternative recommendations are given, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
on_page_instant_pagesOn Page Instant PagesBRead-onlyIdempotent
Using this function you will get page-specific data with detailed information on how well a particular page is optimized for organic search
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to analyze | |
| custom_js | No | Custom JavaScript code to execute | |
| accept_language | No | language header for accessing the website all locale formats are supported (xx, xx-XX, xxx-XX, etc.) Note: if you do not specify this parameter, some websites may deny access; in this case, pages will be returned with the "type":"broken in the response array | |
| custom_user_agent | No | Custom User-Agent header | |
| enable_javascript | No | Enable JavaScript rendering |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds 'get page-specific data' which aligns but does not add new behavioral context beyond what annotations provide. Hence, a 3 is fair.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the purpose. It is concise with no wasted words, but the phrasing 'Using this function you will get' is slightly verbose. Still effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters and no output schema, the description should provide more context about the returned data, expected URL format, or constraints. It only vaguely mentions 'detailed information' without specifics, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with all 5 parameters documented. The tool description adds no additional parameter information beyond the schema. Baseline is 3, and no extra value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get' and the resource 'page-specific data on how well a page is optimized for organic search', which is specific and distinct from siblings like on_page_content_parsing or on_page_lighthouse. However, it does not explicitly differentiate from all siblings, so a 4 is appropriate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. No explicit context about prerequisites, exclusions, or preferred use cases is given, making it minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
on_page_lighthouseOn Page LighthouseCRead-onlyIdempotent
The OnPage Lighthouse API is based on Google’s open-source Lighthouse project for measuring the quality of web pages and web apps.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL of the page to parse | |
| full_data | No | Return the complete API response instead of a reduced version | |
| accept_language | No | Accept-Language header value | |
| custom_user_agent | No | Custom User-Agent header | |
| enable_javascript | No | Enable JavaScript rendering |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, non-destructive, and idempotent. The description does not add any behavioral context beyond stating its Lighthouse foundation. No mention of rate limits, required permissions, or response characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but overly brief for a tool with 5 parameters and no output schema. It sacrifices informativeness for brevity, leaving the agent with minimal actionable guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, no output schema) and many sibling tools, the description is incomplete. It does not describe return values, interpretation of results, or how to use parameters effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 5 parameters have descriptions in the schema, achieving 100% coverage. The description does not elaborate on any parameter, but with full schema coverage, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool measures web page quality using Google's Lighthouse, which distinguishes it from sibling tools like 'on_page_content_parsing'. However, it lacks specificity about which quality metrics (performance, accessibility, etc.) are included.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. Sibling tools like 'on_page_content_parsing' or various SERP tools are not mentioned, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
serp_locationsSERP LocationsCRead-onlyIdempotent
Utility tool for serp_organic_live_advanced to get list of availible locations.
| Name | Required | Description | Default |
|---|---|---|---|
| location_name | No | Name of location or it`s part. | |
| location_type | No | Type of location. Possible variants: 'TV Region','Postal Code','Neighborhood','Governorate','National Park','Quarter','Canton','Airport','Okrug','Prefecture','City','Country','Province','Barrio','Sub-District','Congressional District','Municipality District','district','DMA Region','Union Territory','Territory','Colloquial Area','Autonomous Community','Borough','County','State','District','City Region','Commune','Region','Department','Division','Sub-Ward','Municipality','University' | |
| search_engine | No | search engine name, one of: google, yahoo, bing. | |
| country_iso_code | Yes | ISO 3166-1 alpha-2 country code, for example: US, GB, MT |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, indicating a safe, non-destructive read operation. The description adds minimal context beyond calling it a 'utility tool' and 'get list', which does not significantly enhance the behavioral understanding provided by the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, efficient and front-loaded. However, it contains a typo ('availible') and could be slightly expanded for clarity without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema, the description partially addresses the output by mentioning 'get list of available locations', but does not specify the structure or fields of the returned data. For a utility tool with 4 parameters, this is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already fully documents all four parameters. The description does not add extra meaning or context for the parameters beyond what the schema provides. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a utility tool for serp_organic_live_advanced to get a list of available locations. It has a specific verb+resource combination. However, it could be more specific about the type of locations (e.g., SERP locations for Google search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage as a utility for serp_organic_live_advanced, but it does not provide explicit guidance on when to use this tool vs. alternative location tools like serp_youtube_locations or kw_data_google_ads_locations. No exclusions or when-not advice is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
serp_organic_live_advancedSERP Organic Live AdvancedBRead-onlyIdempotent
Get organic search results for a keyword in specified search engine
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | parsing depth optional field number of results in SERP | |
| device | No | device type optional field can take the values:desktop, mobile default value: desktop | desktop |
| keyword | Yes | Search keyword | |
| language_code | Yes | search engine language code (e.g., 'en') | |
| location_name | No | full name of the location required field Location format - hierarchical, comma-separated (from most specific to least) Can be one of: 1. Country only: "United States" 2. Region,Country: "California,United States" 3. City,Region,Country: "San Francisco,California,United States" | United States |
| search_engine | No | search engine name, one of: google, yahoo, bing. | |
| max_crawl_pages | No | page crawl limit optional field number of search results pages to crawl max value: 100 Note: the max_crawl_pages and depth parameters complement each other | |
| people_also_ask_click_depth | No | clicks on the corresponding element specify the click depth on the people_also_ask element to get additional people_also_ask_element items; |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the agent knows it's a safe, idempotent, read-only operation. The description adds no extra behavioral context beyond stating the basic function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no redundant information. Every word is necessary and contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 8 parameters with full schema coverage and annotations, the description is minimally adequate. However, it could mention that results are paginated (via max_crawl_pages) or that it returns structured SERP data, but the schema covers this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description does not add any meaning beyond what the schema already provides. For instance, 'depth' is described in the schema, and the description does not elaborate further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns organic search results for a keyword in a specified search engine. It is concise and distinguishes the tool from sibling tools that deal with other data (e.g., backlinks, YouTube, keyword suggestions). However, it does not elaborate on 'advanced' features.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like dataforseo_labs or AI tools. The description does not mention any use cases, prerequisites, or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
serp_youtube_locationsSERP YouTube LocationsARead-onlyIdempotent
Utility tool to get list of available locations for: serp_youtube_organic_live_advanced, serp_youtube_video_info_live_advanced, serp_youtube_video_comments_live_advanced, serp_youtube_video_subtitles_live_advanced.
| Name | Required | Description | Default |
|---|---|---|---|
| location_name | No | Name of location or it`s part. | |
| location_type | No | Type of location. Possible variants: 'TV Region','Postal Code','Neighborhood','Governorate','National Park','Quarter','Canton','Airport','Okrug','Prefecture','City','Country','Province','Barrio','Sub-District','Congressional District','Municipality District','district','DMA Region','Union Territory','Territory','Colloquial Area','Autonomous Community','Borough','County','State','District','City Region','Commune','Region','Department','Division','Sub-Ward','Municipality','University' | |
| country_iso_code | Yes | ISO 3166-1 alpha-2 country code, for example: US, GB, MT |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint true, and destructiveHint false, so the agent knows it's a safe, idempotent read. The description adds no further behavioral context (e.g., return format, pagination, or limits), but the annotations are sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence of 20 words, front-loaded with the core purpose. No wasted words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a utility tool returning location lists, the description plus schema and annotations cover the essential aspects. The lack of output schema or return format detail is a minor gap, but typical for such tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter having a clear description. The description does not add any parameter-level guidance beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it returns a list of available locations for four specific YouTube SERP tools. The verb 'get' and resource 'list of available locations' are clear. It effectively distinguishes itself as a utility tool for those sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description identifies exactly which tools require this location data, guiding the agent to use this tool before those. While it does not specify when not to use it or contrast with 'serp_locations', the context of being a prerequisite utility is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
serp_youtube_organic_live_advancedSERP YouTube Organic Live AdvancedBRead-onlyIdempotent
provides top 20 blocks of youtube search engine results for a keyword
| Name | Required | Description | Default |
|---|---|---|---|
| os | No | device operating system optional field if you specify desktop in the device field, choose from the following values: windows, macos default value: windows if you specify mobile in the device field, choose from the following values: android, ios default value: android | windows |
| device | No | device type optional field can take the values:desktop, mobile default value: desktop | desktop |
| keyword | Yes | Search keyword | |
| block_depth | No | parsing depth optional field number of blocks of results in SERP max value: 700 | |
| language_code | Yes | search engine language code (e.g., 'en') | |
| location_name | Yes | full name of the location required field Location format - hierarchical, comma-separated (from most specific to least) Can be one of: 1. Country only: "United States" 2. Region,Country: "California,United States" 3. City,Region,Country: "San Francisco,California,United States" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the tool's safety profile is clear. However, the description adds no extra behavioral context beyond what is implicit. It fails to mention that block_depth can be customized up to 700, which is a key behavioral trait. No mention of rate limits, authentication, or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no extraneous words. It is front-loaded and efficient. Every part contributes to stating the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters (3 required) and full schema coverage, the description is adequate but lacks completeness in explaining the output. There is no output schema, and the description does not hint at what is returned (e.g., video titles, URLs). The default block_depth of 20 is stated, but the max of 700 is omitted. For a search results tool, more context on response structure would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, meaning each parameter already has a description in the schema. The tool description adds no additional semantic value beyond the schema. According to the calibration, baseline is 3 when schema coverage is high, and the description does not enhance understanding of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides YouTube search engine results for a keyword. The verb 'provides' and resource are explicit. However, it says 'top 20 blocks' which may conflict with the configurable block_depth parameter (default 20, max 700), slightly reducing clarity. It does not differentiate from sibling tools like serp_youtube_video_info_live_advanced, but the tool name itself contains 'youtube_organic' which helps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided. There is no indication of when to use this tool vs alternatives such as serp_organic_live_advanced (for web) or serp_youtube_video_info_live_advanced (for specific video info). The description lacks any guidance on context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
serp_youtube_video_comments_live_advancedSERP YouTube Video Comments Live AdvancedCRead-onlyIdempotent
provides data on the video comments you specify
| Name | Required | Description | Default |
|---|---|---|---|
| os | No | device operating system optional field if you specify desktop in the device field, choose from the following values: windows, macos default value: windows if you specify mobile in the device field, choose from the following values: android, ios default value: android | windows |
| depth | No | parsing depth, number of results in SERP, max value: 700 | |
| device | No | device type optional field can take the values:desktop, mobile default value: desktop | desktop |
| video_id | Yes | ID of the video | |
| language_code | Yes | search engine language code (e.g., 'en') | |
| location_name | Yes | full name of the location required field Location format - hierarchical, comma-separated (from most specific to least) Can be one of: 1. Country only: "United States" 2. Region,Country: "California,United States" 3. City,Region,Country: "San Francisco,California,United States" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, etc. The description adds minimal value, not explaining pagination (depth parameter), rate limits, or behavior when video has no comments.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence is concise but lacks structure and does not front-load key details. The sentence is functional but could be improved.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 6 parameters (3 required), no output schema, and depth up to 700, the description is far too minimal. It does not explain return format, usage context, or limitations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. The description does not add additional meaning beyond the schema, meeting the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is vague: 'provides data on the video comments you specify' does not specify what kind of data or source. It fails to distinguish from siblings like 'serp_youtube_video_info_live_advanced'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Sibling tools include other YouTube comment/subtitle/info tools, but no comparison is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
serp_youtube_video_info_live_advancedSERP YouTube Video Info Live AdvancedCRead-onlyIdempotent
provides data on the video you specify
| Name | Required | Description | Default |
|---|---|---|---|
| os | No | device operating system optional field if you specify desktop in the device field, choose from the following values: windows, macos default value: windows if you specify mobile in the device field, choose from the following values: android, ios default value: android | windows |
| device | No | device type optional field can take the values:desktop, mobile default value: desktop | desktop |
| video_id | Yes | ID of the video | |
| language_code | Yes | search engine language code (e.g., 'en') | |
| location_name | Yes | full name of the location required field Location format - hierarchical, comma-separated (from most specific to least) Can be one of: 1. Country only: "United States" 2. Region,Country: "California,United States" 3. City,Region,Country: "San Francisco,California,United States" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is clear. The description adds no additional behavioral traits, but does not contradict annotations either.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single vague sentence. While concise, it is under-specified and fails to convey sufficient information. It lacks structure and front-loading of key details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters (3 required) and no output schema, the description is too minimal. It does not explain what 'data' includes, why location and language are required, or hint at the return format, leaving the agent with insufficient context to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter having descriptions. The tool description does not add extra meaning or clarification beyond the schema, so it meets the baseline but does not enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'provides data on the video you specify' which indicates it returns information about a specific video, but it lacks specificity on what kind of data (e.g., metadata, statistics) and does not differentiate from sibling YouTube tools like serp_youtube_video_comments_live_advanced.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no mention of prerequisites, limitations, or best practices. The sole sentence does not provide usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
serp_youtube_video_subtitles_live_advancedSERP YouTube Video Subtitles Live AdvancedCRead-onlyIdempotent
provides data on the video subtitles you specify
| Name | Required | Description | Default |
|---|---|---|---|
| os | No | device operating system optional field if you specify desktop in the device field, choose from the following values: windows, macos default value: windows if you specify mobile in the device field, choose from the following values: android, ios default value: android | windows |
| device | No | device type optional field can take the values:desktop, mobile default value: desktop | desktop |
| video_id | Yes | ID of the video | |
| language_code | Yes | search engine language code (e.g., 'en') | |
| location_name | Yes | full name of the location required field Location format - hierarchical, comma-separated (from most specific to least) Can be one of: 1. Country only: "United States" 2. Region,Country: "California,United States" 3. City,Region,Country: "San Francisco,California,United States" | |
| subtitles_language | No | language code of original text (e.g., 'en') | |
| subtitles_translate_language | No | language code of translated text (e.g., 'en') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is clear. However, the description adds nothing beyond 'provides data', omitting details like pagination, error handling (e.g., missing subtitles), or rate limits. With annotations carrying the burden, a score of 2 is appropriate as the description fails to add value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (one sentence) which is concise, but it lacks structure and substance. It could be expanded slightly to include purpose and usage without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters, no output schema, and sibling tools providing similar functions, the description is incomplete. It does not explain the return format, whether subtitles are returned as text or metadata, or how to interpret results. The schema covers inputs but the description fails to provide sufficient operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and parameter descriptions in the input schema are detailed (e.g., location format, OS options). The description does not add any additional meaning beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it provides data on video subtitles, which is specific enough to identify the resource, but it lacks a strong verb like 'retrieve' or 'get'. It is not a tautology, but the purpose is vague and does not differentiate well from sibling tools like video info or comments tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as serp_youtube_video_info_live_advanced or serp_youtube_video_comments_live_advanced. There is no mention of prerequisites, typical use cases, or when not to use it.
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. Dates show when Glama detected each change.
89 tool updates
v2.9.11- First observed
ai_opt_kw_data_loc_and_lang - First observed
ai_opt_llm_ment_agg_metrics - First observed
ai_opt_llm_ment_cross_agg_metrics - First observed
ai_opt_llm_ment_loc_and_lang - First observed
ai_opt_llm_ment_search - First observed
ai_opt_llm_ment_top_domains - First observed
ai_opt_llm_ment_top_pages - First observed
ai_optimization_chat_gpt_scraper - First observed
ai_optimization_chat_gpt_scraper_locations - First observed
ai_optimization_keyword_data_search_volume - First observed
ai_optimization_llm_mentions_filters - First observed
ai_optimization_llm_models - First observed
ai_optimization_llm_response - First observed
backlinks_anchors - First observed
backlinks_available_filters - First observed
backlinks_backlinks - First observed
backlinks_bulk_backlinks - First observed
backlinks_bulk_new_lost_backlinks - First observed
backlinks_bulk_new_lost_referring_domains - First observed
backlinks_bulk_pages_summary - First observed
backlinks_bulk_ranks - First observed
backlinks_bulk_referring_domains - First observed
backlinks_bulk_spam_score - First observed
backlinks_competitors - First observed
backlinks_domain_intersection - First observed
backlinks_domain_pages - First observed
backlinks_domain_pages_summary - First observed
backlinks_page_intersection - First observed
backlinks_referring_domains - First observed
backlinks_referring_networks - First observed
backlinks_summary - First observed
backlinks_timeseries_new_lost_summary - First observed
backlinks_timeseries_summary - First observed
business_data_business_listings_search - First observed
content_analysis_phrase_trends - First observed
content_analysis_search - First observed
content_analysis_summary - First observed
dataforseo_labs_amazon_bulk_search_volume - First observed
dataforseo_labs_amazon_product_competitors - First observed
dataforseo_labs_amazon_product_kw_intersections - First observed
dataforseo_labs_amazon_product_rank_overview - First observed
dataforseo_labs_amazon_ranked_keywords - First observed
dataforseo_labs_amazon_related_keywords - First observed
dataforseo_labs_available_filters - First observed
dataforseo_labs_bulk_keyword_difficulty - First observed
dataforseo_labs_bulk_traffic_estimation - First observed
dataforseo_labs_google_competitors_domain - First observed
dataforseo_labs_google_domain_intersection - First observed
dataforseo_labs_google_domain_rank_overview - First observed
dataforseo_labs_google_historical_keyword_data - First observed
dataforseo_labs_google_historical_rank_overview - First observed
dataforseo_labs_google_historical_serps - First observed
dataforseo_labs_google_keyword_ideas - First observed
dataforseo_labs_google_keyword_overview - First observed
dataforseo_labs_google_keyword_suggestions - First observed
dataforseo_labs_google_keywords_for_site - First observed
dataforseo_labs_google_page_intersection - First observed
dataforseo_labs_google_ranked_keywords - First observed
dataforseo_labs_google_related_keywords - First observed
dataforseo_labs_google_relevant_pages - First observed
dataforseo_labs_google_serp_competitors - First observed
dataforseo_labs_google_subdomains - First observed
dataforseo_labs_google_top_searches - First observed
dataforseo_labs_search_intent - First observed
domain_analytics_technologies_available_filters - First observed
domain_analytics_technologies_domain_technologies - First observed
domain_analytics_whois_available_filters - First observed
domain_analytics_whois_overview - First observed
kw_data_dfs_trends_demography - First observed
kw_data_dfs_trends_explore - First observed
kw_data_dfs_trends_subregion_interests - First observed
kw_data_google_ads_locations - First observed
kw_data_google_ads_search_volume - First observed
kw_data_google_trends_categories - First observed
kw_data_google_trends_explore - First observed
merchant_amazon_asin_live_advanced - First observed
merchant_amazon_locations - First observed
merchant_amazon_products_live_advanced - First observed
merchant_amazon_sellers_live_advanced - First observed
on_page_content_parsing - First observed
on_page_instant_pages - First observed
on_page_lighthouse - First observed
serp_locations - First observed
serp_organic_live_advanced - First observed
serp_youtube_locations - First observed
serp_youtube_organic_live_advanced - First observed
serp_youtube_video_comments_live_advanced - First observed
serp_youtube_video_info_live_advanced - First observed
serp_youtube_video_subtitles_live_advanced
TDQS
Most tools have distinct purposes with detailed descriptions. However, some close pairs exist (e.g., keyword suggestions vs. ideas; backlinks_referring_domains vs bulk variant), but descriptions help agents differentiate.
Within each category (e.g., backlinks_, dataforseo_labs_google_) naming is fairly consistent, but across categories there is mixing of prefixes (kw_data vs dataforseo_labs) and inconsistent abbreviations (opt vs optimization), reducing overall predictability.
89 tools is very high for an SEO API. While each tool serves a specific need, many could be consolidated into parameterized endpoints (e.g., bulk vs single). The volume may overwhelm agents and increase selection difficulty.
The toolset covers a broad range of SEO data: keyword research, backlinks, SERP (multiple engines), business listings, on-page analysis, domain intelligence, content analysis, and Amazon merchant data. Few obvious gaps exist for the stated domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
MCP server for Google search results via SERP API
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA stdio-based server that enables interaction with the DataForSEO API through the Model Context Protocol, allowing users to fetch SEO data including search results, keywords data, backlinks, on-page analysis, and more.207MIT

DataForSEO MCP Serverofficial
AlicenseBqualityAmaintenanceA Model Context Protocol server that enables Claude to interact with DataForSEO APIs, allowing access to SEO data including SERPs, keyword research, on-page metrics, and domain analytics.1722,898242Apache 2.0- AlicenseNot gradedqualityDmaintenanceModel Context Protocol server that enables AI assistants to perform keyword research, SEO analysis, and content planning through natural language queries against kwrds.ai's SEO tools.7Apache 2.0

FetchSERP MCP Serverofficial
-licenseCqualityNot gradedmaintenanceA Model Context Protocol server that provides AI assistants with access to FetchSERP API capabilities for SEO analysis, SERP data, web scraping, and keyword research.231919-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dataforseo/mcp-server-typescript-deprecated'
If you have feedback or need assistance with the MCP directory API, please join our Discord server