DataForSEO MCP Server
Enables deployment as a Cloudflare Worker for serverless, edge-distributed access to DataForSEO APIs with auto-scaling and global distribution
Provides real-time search engine results page (SERP) data from Google search results, including organic and paid listings
Built on Node.js runtime environment for server execution and API interactions
Available as an npm package for easy installation and distribution
Retrieves publicly available business reviews and information from Tripadvisor for business data analysis and monitoring
Accesses publicly available business reviews and information from Trustpilot for business data analysis and monitoring
Implemented in TypeScript for type-safe development and better code maintainability
Uses Zod for runtime type validation and schema definition of API parameters
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 Serverwhat are the top organic results for 'best running shoes' on Google?"
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
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;
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-serverOr run it directly without installation:
npx dataforseo-mcp-serverRemember 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-serverBuilding and Running
Build the project:
npm run buildRun the server:
# Start local server (direct MCP communication)
npx dataforseo-mcp-server
# Start HTTP server
npx dataforseo-mcp-server 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;
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 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 http --configuration field-config.json
# Local mode
npx dataforseo-mcp-server 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 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
36 toolsbacklinks_anchorsC
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 |
|---|---|---|---|
| filters | No | array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: =, <>, in, not_in, like, not_like, ilike, not_ilike, regex, not_regex, match, not_match you can use the % operator with like and not_like to match any string of zero or more characters example: ["rank",">","80"] [["page_from_rank",">","55"], "and", ["dofollow","=",true]] [["first_seen",">","2017-10-23 11:31:45 +00:00"], "and", [["anchor","like","%seo%"],"or",["text_pre","like","%seo%"]]] | |
| 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 | |
| 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"] | |
| 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://) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. While it mentions the tool 'will provide' data (implying a read operation), it doesn't address important behavioral aspects: whether this is a live query or cached data, rate limits, authentication requirements, pagination behavior (beyond what's in the schema), error conditions, or what 'detailed overview' specifically includes. For a data retrieval tool with complex filtering capabilities, this leaves significant 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, reasonably concise sentence that gets straight to the point. It front-loads the core purpose without unnecessary preamble. However, it could be slightly more structured by separating the 'what' from the 'why' - for example, explicitly stating this is for analyzing anchor text distribution in backlink profiles.
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 (5 parameters with rich filtering capabilities), absence of annotations, and lack of output schema, the description is insufficiently complete. It doesn't explain what data fields are returned in the 'detailed overview', how the anchor data is structured, whether results include metrics like anchor frequency or distribution, or provide any examples of typical use cases. For a specialized SEO tool with many sibling alternatives, users need more context to understand what they're getting.
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 5 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema - it doesn't explain how 'target' relates to 'anchors', what 'detailed overview' means in terms of output fields, or provide examples of typical filter combinations for anchor analysis. The baseline of 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'provide you with a detailed overview of anchors used when linking to the specified website with relevant backlink data for each of them'. It specifies the verb ('provide'), resource ('anchors'), and scope ('linking to the specified website'), making it clear this tool retrieves anchor text data for backlinks. However, it doesn't explicitly differentiate from sibling tools like 'backlinks_backlinks' or 'backlinks_summary', which likely provide different backlink data aspects.
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. With 24 sibling tools in the backlinks category, there's no mention of what distinguishes this anchor-focused tool from others like 'backlinks_backlinks' (likely general backlink data) or 'backlinks_summary' (likely aggregated metrics). The description assumes the user knows when anchor-specific data is needed without providing context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_available_filtersC
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?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that filters are 'associated with a certain object,' hinting at structure, but fails to describe key traits like whether this is a read-only operation, what the output format might be, or any constraints (e.g., rate limits or authentication needs). For a tool with no annotations, this leaves significant gaps in understanding its 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 two sentences and avoids unnecessary fluff, but it's not optimally front-loaded—the first sentence is somewhat generic, and the second adds a useful but buried detail. It could be more efficient by combining or reordering information to highlight the tool's action upfront, though it's not overly 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 the complexity of backlinks tools and the lack of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., a list of filter options or documentation), how to interpret results, or how it integrates with sibling tools. For a tool in a rich API context, this leaves the agent with insufficient information to use it 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?
The input schema has 1 parameter with 100% description coverage ('The name of the tool to get filters for'), so the schema already documents it well. The description doesn't add any meaning beyond this, such as examples or usage context for the parameter. Given the high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.
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 'information about filters that can be used with DataForSEO Backlinks API endpoints,' which clarifies the general domain but is vague about the specific action. It doesn't specify what the tool actually does (e.g., list, retrieve, or describe filters) or how it differs from sibling tools like 'backlinks_backlinks' or 'backlinks_summary,' making it tautological in that it restates the name's implication without adding 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?
The description includes a note about filters being 'associated with a certain object in the result array,' which implies some context for usage, but it doesn't explicitly state when to use this tool versus alternatives (e.g., other backlinks tools or API endpoints). No guidance on prerequisites, exclusions, or specific scenarios is provided, leaving the agent with minimal direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_backlinksC
This endpoint will provide you with a list of backlinks and relevant data for the specified domain, subdomain, or webpage
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: =, <>, in, not_in, like, not_like, ilike, not_ilike, regex, not_regex, match, not_match you can use the % operator with like and not_like to match any string of zero or more characters example: ["rank",">","80"] [["page_from_rank",">","55"], "and", ["dofollow","=",true]] [["first_seen",">","2017-10-23 11:31:45 +00:00"], "and", [["anchor","like","%seo%"],"or",["text_pre","like","%seo%"]]] | |
| limit | No | the maximum number of returned backlinks | |
| 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 |
| 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 | |
| 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"] | |
| 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://) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool provides a list of backlinks but doesn't describe key behaviors: what 'relevant data' includes, pagination details (implied by limit/offset but not explained), rate limits, authentication needs, or error handling. For a data-fetching tool with no annotations, this leaves significant gaps in understanding its operation.
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 efficiently states the tool's purpose without unnecessary words. It's front-loaded with the core functionality and appropriately sized for its informational value, 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 complexity (6 parameters, no output schema, no annotations), the description is incomplete. It doesn't explain what 'relevant data' entails, how results are structured, or any behavioral traits like rate limits. For a tool that likely returns detailed backlink information, more context is needed to understand its full scope and 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 thoroughly. The description adds no additional meaning beyond the schema—it doesn't explain parameter interactions, default behaviors, or examples. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.
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: 'provide you with a list of backlinks and relevant data for the specified domain, subdomain, or webpage.' It specifies the verb ('provide'), resource ('backlinks and relevant data'), and target ('domain, subdomain, or webpage'). However, it doesn't explicitly differentiate from sibling tools like 'backlinks_summary' or 'backlinks_referring_domains,' which likely serve different purposes.
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. With many sibling tools (e.g., 'backlinks_summary,' 'backlinks_referring_domains'), there's no indication of how this tool differs in context or when it's preferred. It mentions the target but lacks any usage context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_bulk_backlinksB
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?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context about what the tool returns ('number of backlinks', 'all live backlinks', 'total number of referring links with all attributes') and clarifies domain-level results. However, it lacks details on rate limits, authentication needs, error handling, or response format, which are critical for a tool with no output 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?
The description is appropriately sized with two sentences that front-load the core functionality and follow with a clarifying note. Each sentence adds value: the first defines the tool's purpose and scope, and the second explains domain-level behavior. There is no wasted text, though it could be slightly more structured for 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?
Given the tool's moderate complexity (bulk backlink counting), no annotations, and no output schema, the description is incomplete. It covers the basic purpose and some behavioral context but lacks details on output structure, pagination, error cases, or performance considerations. This leaves gaps for an agent to invoke the tool effectively without additional 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?
The input schema has 100% description coverage, thoroughly documenting the 'targets' parameter with examples and constraints. The description adds minimal semantic value beyond the schema, only reiterating that targets include 'domains, subdomains, and pages' and clarifying domain vs. subdomain results. This meets the baseline score of 3 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 clearly states the tool's purpose: 'provide you with the number of backlinks pointing to domains, subdomains, and pages specified in the targets array.' It specifies the verb ('provide'), resource ('number of backlinks'), and scope ('domains, subdomains, and pages'), but does not explicitly differentiate it from sibling tools like 'backlinks_backlinks' or 'backlinks_summary', which likely have overlapping functionality.
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 context by specifying that it returns 'all live backlinks... found during the latest check' and clarifies domain vs. subdomain handling. However, it does not explicitly state when to use this tool versus alternatives like 'backlinks_backlinks' or 'backlinks_bulk_referring_domains', nor does it provide exclusions or prerequisites, leaving the agent to infer based on the 'bulk' nature and target array.
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_backlinksA
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 |
|---|---|---|---|
| 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" | |
| 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?
No annotations are provided, so the description carries full burden. It discloses that results are based on 'latest check' and include all backlink types (e.g., nofollow), which adds useful context. However, it does not mention rate limits, authentication needs, or response format, leaving gaps in behavioral understanding for an AI agent.
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 appropriately sized with two paragraphs: the first states the core purpose and scope, and the second clarifies target handling. It is front-loaded with key information, though the second paragraph could be more concise. Overall, it avoids unnecessary details and 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 no annotations and no output schema, the description provides adequate purpose and target clarification but lacks details on return values, error handling, or operational constraints. It compensates somewhat with context on backlink types and target scope, but is incomplete for a tool with complex data retrieval.
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 both parameters. The description adds minimal value beyond the schema, mentioning 'targets array' and 'date_from' implicitly but not providing additional semantics. Baseline score of 3 is appropriate as the 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 tool's purpose: 'provide you with the number of referring domains pointing to domains, subdomains, and pages specified in the targets array.' It specifies the verb ('provide'), resource ('number of referring domains'), and scope ('based on all live referring domains'), distinguishing it from siblings like 'backlinks_bulk_new_lost_referring_domains' by focusing on backlinks count rather than 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 implies usage for checking new and lost backlinks over time, as indicated by the date_from parameter context, but does not explicitly state when to use this tool versus alternatives like 'backlinks_bulk_backlinks' or 'backlinks_summary'. It provides some context on target types (domains, subdomains, pages) but lacks explicit guidance on use cases or exclusions.
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_domainsC
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 |
|---|---|---|---|
| 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" | |
| 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?
No annotations are provided, so the description carries the full burden. It mentions the tool provides 'number of referring domains' but doesn't disclose key behavioral traits: whether this is a read-only operation, if it requires authentication, rate limits, pagination, or what the output format looks like. The note about domain targeting adds some context but doesn't compensate for the lack of basic operational transparency.
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 appropriately sized with two sentences. The first sentence states the core purpose, and the second adds a clarifying note about domain targeting. There's no wasted text, and it's front-loaded with the main 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 complexity (bulk analysis tool with no annotations and no output schema), the description is incomplete. It doesn't explain what 'new/lost' means in the tool name, how results are structured, or any prerequisites. For a tool that likely returns data on referring domain changes over time, more context is needed to use it 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 description coverage is 100%, so the schema fully documents both parameters ('date_from' and 'targets') with detailed descriptions. The description adds minimal value beyond the schema: it mentions 'targets array' but doesn't explain parameter semantics further. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'provide you with the number of referring domains pointing to the domains, subdomains and pages specified in the targets array.' It specifies the verb ('provide'), resource ('number of referring domains'), and scope ('targets array'). However, it doesn't explicitly differentiate from sibling tools like 'backlinks_bulk_referring_domains' or 'backlinks_referring_domains', which appear to offer similar functionality.
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. With multiple sibling tools related to backlinks and referring domains (e.g., 'backlinks_bulk_referring_domains', 'backlinks_referring_domains'), there's no indication of what distinguishes this tool's 'new/lost' focus or bulk capabilities from others. The note about domain vs. subdomain results is operational, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_bulk_pages_summaryA
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 |
|---|---|---|---|
| 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 | |
| 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes key behavioral traits: bulk processing capability (up to 1000 targets), domain limit constraint (no more than 100 different domains), and handling of single vs. multiple targets. However, it does not cover critical aspects like rate limits, authentication requirements, error handling, or response format, leaving gaps for a tool with no annotation coverage.
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 efficiently structured in two sentences: the first states the core purpose and scope, and the second clarifies handling of single targets. Every sentence adds essential information without redundancy, making it front-loaded and appropriately sized for the tool's complexity.
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 moderate complexity (2 parameters, no output schema, no annotations), the description is partially complete. It covers the purpose, scope, and some constraints but lacks details on behavioral aspects like response format, error conditions, or performance characteristics. Without annotations or output schema, the description should do more to compensate, but it meets a minimum viable level for a read-only summary 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 description coverage is 100%, so the schema fully documents both parameters. The description adds value by explaining the tool's purpose and constraints (e.g., bulk of up to 1000 targets, domain limits), which contextualizes the parameters but does not provide additional semantic details beyond the schema. Since there are only 2 parameters and schema coverage is complete, a baseline of 3 is appropriate, with an extra point for the added contextual meaning.
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: 'provide you with a comprehensive overview of backlinks and related data for a bulk of up to 1000 pages, domains, or subdomains.' It specifies the verb ('provide'), resource ('backlinks and related data'), and scope ('bulk of up to 1000'), distinguishing it from sibling tools like 'backlinks_summary' (likely single target) and 'backlinks_bulk_backlinks' (likely detailed list rather than 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 usage context by mentioning bulk processing (up to 1000 targets) and handling single pages, but does not explicitly state when to use this tool versus alternatives like 'backlinks_summary' or 'backlinks_bulk_backlinks'. It provides some operational constraints (e.g., URL format, domain limits) but lacks explicit guidance on tool selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_bulk_ranksA
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 |
|---|---|---|---|
| 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 |
| 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?
No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: the tool provides real-time data, rank scores based on referring domains, and a scoring range (0-1000). However, it does not mention rate limits, authentication needs, or potential errors (e.g., invalid targets). The description adds value but leaves gaps in operational 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?
The description is appropriately sized and front-loaded, starting with the core purpose. It uses three sentences efficiently: the first states the function, the second explains the scoring basis, and the third adds context with the range and comparison. There is minimal waste, though the comparison to PageRank could be considered slightly extraneous.
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 annotations, no output schema, and a simple input schema with 100% coverage, the description is moderately complete. It covers the purpose, scoring logic, and data characteristics, but lacks details on output format, error handling, or performance considerations. For a tool with 2 parameters and no structured behavioral hints, it should do more to guide 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?
Schema description coverage is 100%, so the schema already fully documents both parameters ('targets' and 'rank_scale'). The description does not add any parameter-specific details beyond what the schema provides, such as explaining the 'targets' array further or clarifying the 'rank_scale' impact. Baseline 3 is appropriate as the schema handles 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's purpose: 'provide you with rank scores of the domains, subdomains, and pages specified in the targets array.' It specifies the verb ('provide'), resource ('rank scores'), and scope ('domains, subdomains, and pages'), distinguishing it from sibling tools like 'backlinks_bulk_backlinks' or 'backlinks_bulk_spam_score' which focus on different backlink 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 implies usage by mentioning the scoring system and real-time data, but does not explicitly state when to use this tool versus alternatives like 'backlinks_summary' or 'backlinks_bulk_referring_domains'. It provides context about the rank values and comparison to Google's PageRank, but lacks clear guidance on specific use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_bulk_referring_domainsA
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?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context: it specifies that results are based on 'all live referring domains' from the 'latest check' and includes all backlink types (e.g., nofollow). However, it does not cover critical aspects like rate limits, authentication needs, error handling, or response format, leaving gaps for a tool with potential performance implications.
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 appropriately sized and front-loaded, with the core purpose stated in the first sentence. The second sentence clarifies scope and data recency, and the third explains domain vs. subdomain handling. Each sentence adds value, though the structure could be slightly more streamlined (e.g., merging the second and third 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?
Given the tool's complexity (bulk analysis with up to 1000 targets), no annotations, and no output schema, the description is moderately complete. It covers the purpose, data source, and target handling, but lacks details on output format (e.g., JSON structure), pagination, error cases, or performance considerations, which are important 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 description coverage is 100%, with the 'targets' parameter fully documented in the schema (including examples, formatting rules, and limits). The description adds minimal value beyond the schema, only reiterating that targets include 'domains, subdomains, and pages.' This meets the baseline score of 3, as the 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 tool's purpose: 'provide you with the number of referring domains pointing to domains, subdomains, and pages specified in the targets array.' It specifies the verb ('provide'), resource ('number of referring domains'), and scope ('domains, subdomains, and pages'), distinguishing it from siblings like 'backlinks_backlinks' or 'backlinks_summary' by focusing on bulk referring domain counts.
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 referring domain analysis but does not explicitly state when to use this tool versus alternatives like 'backlinks_referring_domains' (likely for single targets) or 'backlinks_bulk_new_lost_referring_domains' (for tracking changes). It provides some context about target types and domain vs. subdomain handling, but lacks clear guidance on tool selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_bulk_spam_scoreB
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?
With no annotations provided, the description carries full burden for behavioral disclosure. It explains the output metric (spam score scale) but lacks critical details: it doesn't mention rate limits, authentication requirements, whether this is a read-only operation, response format, pagination, or error handling. For a bulk processing tool with up to 1000 targets, these omissions are significant.
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 efficiently structured in two sentences: the first states the core functionality, the second explains the proprietary metric. There's no redundant information, though it could be slightly more front-loaded with key behavioral details. Every sentence contributes meaning without waste.
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 bulk processing tool with no annotations and no output schema, the description is incomplete. It explains what spam scores are but doesn't cover response format, error cases, performance characteristics, or integration context. Given the complexity of processing up to 1000 targets and the lack of structured output documentation, more behavioral and operational details are 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 description coverage is 100%, providing comprehensive details about the 'targets' parameter (format, examples, limits). The description adds minimal value beyond the schema, only mentioning 'targets array' without additional context about target selection strategies or spam score interpretation. With high schema 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 the specific action ('provide you with spam scores'), the resource ('domains, subdomains, and pages'), and the proprietary metric ('Spam Score on a scale from 0 to 100'). It distinguishes itself from sibling tools like 'backlinks_bulk_ranks' or 'backlinks_bulk_backlinks' by focusing exclusively on spam scoring rather than ranking or link 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 provides no guidance on when to use this tool versus alternatives. While it mentions the 'targets array' for input, it doesn't specify use cases (e.g., SEO audit, competitor analysis) or differentiate from other bulk tools like 'backlinks_bulk_pages_summary' or 'backlinks_bulk_referring_domains'. There's no mention of prerequisites, limitations, or typical scenarios for application.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_competitorsB
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 |
|---|---|---|---|
| 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 | |
| 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 | |
| filters | No | array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, =, <>, in, not_in, like, not_like, ilike, not_ilike, match, not_match you can use the % operator with like and not_like to match any string of zero or more characters example: ["rank",">","100"] [["target","like","%forbes%"], "and", [["rank",">","100"],"or",["intersections",">","5"]]] | |
| limit | No | the maximum number of returned domains | |
| 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 | |
| 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 | |
| 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"] | |
| 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://) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool 'will provide you with a list' but lacks details on rate limits, authentication needs, error handling, pagination (beyond offset/limit parameters), or data freshness. For a tool with 8 parameters and no output schema, this is insufficient to inform the agent about operational 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 a single, well-structured sentence that efficiently conveys the core functionality. It avoids redundancy and is front-loaded with key information. However, it could be slightly more concise by integrating output details more seamlessly, but it remains highly efficient 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 tool's complexity (8 parameters, no annotations, no output schema), the description is minimally adequate. It clarifies the purpose but lacks usage guidelines, behavioral context, and output details (e.g., format of 'list of competitors'). While the schema covers inputs well, the description does not compensate for missing annotations or output schema, leaving gaps in overall 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 description adds no parameter-specific semantics beyond what the input schema provides. Since schema description coverage is 100%, the schema fully documents all 8 parameters (e.g., target, filters, limit). The description's mention of 'backlink intersections' and 'rank' relates to outputs, not inputs, so it does not enhance parameter understanding. This meets 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 clearly states the tool's purpose: '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.' It specifies the verb ('provide'), resource ('list of competitors'), and key outputs ('backlink intersections,' 'rank'), distinguishing it from sibling tools like backlinks_backlinks or backlinks_summary which focus on different backlink aspects.
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 sibling tools like backlinks_domain_intersection or backlinks_page_intersection, which might offer similar intersection analysis, nor does it specify prerequisites, exclusions, or contextual cues for selection. This leaves the agent without direction on tool choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_domain_intersectionB
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 |
|---|---|---|---|
| filters | No | array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, =, <>, in, not_in, like, not_like, ilike, not_ilike, match, not_match you can use the % operator with like and not_like to match any string of zero or more characters example: ["1.internal_links_count",">","1"] [["2.referring_pages",">","2"], "and", ["1.backlinks",">","10"]] [["1.first_seen",">","2017-10-23 11:31:45 +00:00"], "and", [["2.target","like","%dataforseo.com%"],"or",["1.referring_domains",">","10"]]] | |
| 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 | |
| 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"] | |
| 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://) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool's purpose and a use case but lacks critical behavioral details: it doesn't specify whether this is a read-only operation, what authentication is required, rate limits, pagination behavior (beyond what's in the schema), or what the output format looks like. For a tool with 5 parameters and no output schema, this is a significant gap.
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 appropriately sized with two sentences. The first sentence states the core purpose, and the second provides valuable context about the Link Gap use case. Both sentences earn their place by adding meaningful information beyond the tool name. It could be slightly more structured but is efficient overall.
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 (5 parameters, no annotations, no output schema), the description is incomplete. It explains the purpose and a use case but doesn't address critical behavioral aspects like authentication needs, rate limits, error conditions, or what the return data looks like. For a backlink analysis tool with filtering and sorting capabilities, more context about the operation's nature and output 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?
The schema description coverage is 100%, so the schema already documents all 5 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema descriptions. It mentions 'specified websites' which aligns with the 'targets' parameter but doesn't provide additional semantic context. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'provide you with the list of domains pointing to the specified websites.' It specifies the verb ('provide') and resource ('domains pointing to websites'), and distinguishes it from siblings by mentioning its specific use case for 'Link Gap' analysis. However, it doesn't explicitly differentiate from similar-sounding siblings like 'backlinks_referring_domains' or 'backlinks_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 provides clear context for when to use this tool: 'especially useful for creating a Link Gap feature that shows what domains link to your competitors but do not link out to your website.' This gives a specific scenario (competitive analysis) and implies usage for intersection analysis. However, it doesn't explicitly state when not to use it or name alternatives among the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_domain_pagesC
This endpoint will provide you with a detailed overview of domain pages with backlink data for each page
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, =, <>, in, not_in, like, not_like, ilike, not_ilike, match, not_match you can use the % operator with like and not_like to match any string of zero or more characters example: ["meta.internal_links_count",">","1"] [["meta.external_links_count",">","2"], "and", ["backlinks",">","10"]] [["first_visited",">","2017-10-23 11:31:45 +00:00"], "and", [["title","like","%seo%"],"or",["referring_domains",">","10"]]] | |
| 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 | |
| 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"] | |
| 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://) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions providing a 'detailed overview' but doesn't specify what that includes (e.g., pagination, rate limits, authentication needs, data freshness, or error handling). For a tool with 5 parameters and no output schema, this lack of detail is a significant gap, making it inadequate for informed use.
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 efficiently states the tool's purpose without unnecessary words. It's front-loaded and easy to parse, though it could be slightly more structured (e.g., by including key usage notes). Overall, it's concise and well-formed, earning a high 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?
Given the complexity (5 parameters, no annotations, no output schema, and many sibling tools), the description is incomplete. It lacks behavioral details, usage guidelines, and output information, which are crucial for an agent to use the tool effectively. The high schema coverage helps, but the description doesn't fill the gaps in context, making it insufficient for a tool of this nature.
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%, meaning the input schema already documents all parameters thoroughly. The description adds no additional meaning beyond what's in the schema (e.g., it doesn't explain how 'target' relates to 'filters' or typical use cases). With high schema coverage, the baseline is 3, as the description doesn't compensate or add value beyond the structured data.
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: 'provide you with a detailed overview of domain pages with backlink data for each page.' It specifies the resource (domain pages) and the data (backlink data), making it understandable. However, it doesn't explicitly differentiate from sibling tools like 'backlinks_domain_pages_summary' or 'backlinks_backlinks,' which might offer similar data, so it doesn't reach a 5.
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. With many sibling tools (e.g., 'backlinks_domain_pages_summary,' 'backlinks_backlinks'), there's no indication of context, prerequisites, or exclusions. This leaves the agent guessing about the appropriate use case, resulting in a low score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_domain_pages_summaryB
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 |
|---|---|---|---|
| filters | No | array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, =, <>, in, not_in, like, not_like, ilike, not_ilike, match, not_match you can use the % operator with like and not_like to match any string of zero or more characters example: ["referring_links_types.anchors",">","1"] [["broken_pages",">","2"], "and", ["backlinks",">","10"]] [["first_seen",">","2017-10-23 11:31:45 +00:00"], "and", [["anchor","like","%seo%"],"or",["referring_domains",">","10"]]] | |
| 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 | |
| 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"] | |
| 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://) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool provides 'detailed summary data' and handles both domains and single pages, but it lacks critical behavioral details such as rate limits, authentication requirements, pagination behavior (beyond the 'limit' and 'offset' parameters in the schema), error handling, or data freshness. For a tool with 5 parameters and no output schema, this leaves significant gaps in understanding how it operates.
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 front-loaded, consisting of two sentences that directly state the tool's purpose and scope. There's no unnecessary repetition or fluff, and it efficiently communicates the core functionality. However, it could be slightly improved by integrating key behavioral hints, but as-is, it's well-structured and to the point.
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 (5 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain what 'detailed summary data' includes, how results are structured, or any behavioral traits like performance or limitations. For a data retrieval tool with multiple filtering and sorting options, users need more context to use it effectively, making this description inadequate for the tool's sophistication.
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 schema description coverage is 100%, meaning all parameters are documented in the input schema itself. The description adds minimal value beyond the schema, only implying the 'target' parameter's role without detailing the semantics of 'filters', 'limit', 'offset', or 'order_by'. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, as the description doesn't significantly enhance 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 the tool's purpose: 'provide you with detailed summary data on all backlinks and related metrics for each page of the target domain or subdomain you specify.' It specifies the verb ('provide'), resource ('backlinks and related metrics'), and scope ('each page of the target domain or subdomain'). However, it doesn't explicitly differentiate from sibling tools like 'backlinks_summary' or 'backlinks_domain_pages', which appear similar, keeping it from a perfect score.
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 by specifying it works for domains/subdomains or single pages, but it doesn't provide explicit guidance on when to use this tool versus alternatives like 'backlinks_summary' or 'backlinks_domain_pages' from the sibling list. There's no mention of prerequisites, exclusions, or comparative contexts, leaving usage somewhat inferred rather than clearly defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_page_intersectionB
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 |
|---|---|---|---|
| filters | No | array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, =, <>, in, not_in, like, not_like, ilike, not_ilike, match, not_match you can use the % operator with like and not_like to match any string of zero or more characters example: ["1.rank",">","80"] [["2.page_from_rank",">","55"], "and", ["1.original","=","true"]] [["1.first_seen",">","2017-10-23 11:31:45 +00:00"], "and", [["1.anchor","like","%seo%"],"or",["1.text_pre","not_like","%seo%"]]] | |
| 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 | |
| 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"] | |
| 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://) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the tool provides a 'list of domains' and hints at a 'Link Gap' use case, but doesn't disclose critical behavioral traits: whether this is a read-only operation, potential rate limits, authentication requirements, pagination behavior (beyond offset/limit parameters), or what format the returned data takes. The description adds minimal behavioral context beyond the basic purpose.
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 appropriately concise with two sentences. The first sentence states the core purpose, and the second provides a specific use case. Both sentences earn their place by adding value. However, the structure could be slightly improved by front-loading more operational details about the tool's behavior.
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 (5 parameters, no output schema, no annotations, and many similar sibling tools), the description is insufficiently complete. It doesn't explain what the output looks like, how results are structured, or how this tool differs from other backlinks tools. For a tool with this level of complexity and no structured output documentation, the description should provide more complete 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 description coverage is 100%, so the schema already thoroughly documents all 5 parameters. The description doesn't add any meaningful parameter semantics beyond what's in the schema - it doesn't explain how 'targets' relates to the output, or provide additional context about filter usage. With complete schema coverage, the baseline is 3 even without parameter info in 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's purpose: 'provide you with the list of domains pointing to the specified websites.' This is a specific verb+resource combination. However, it doesn't explicitly distinguish this tool from its many sibling tools (like backlinks_domain_intersection or backlinks_referring_domains), which likely have overlapping functionality in the backlinks domain.
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 some usage context: 'especially useful for creating a Link Gap feature that shows what domains link to your competitors but do not link out to your website.' This implies a competitive analysis use case but doesn't explicitly state when to use this tool versus alternatives among the many backlinks siblings, nor does it mention any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_referring_domainsC
This endpoint will provide you with a detailed overview of referring domains pointing to the target you specify
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, =, <>, in, not_in, like, not_like, ilike, not_ilike, match, not_match you can use the % operator with like and not_like to match any string of zero or more characters example: ["meta.internal_links_count",">","1"] [["meta.external_links_count",">","2"], "and", ["backlinks",">","10"]] [["first_visited",">","2017-10-23 11:31:45 +00:00"], "and", [["title","like","%seo%"],"or",["referring_domains",">","10"]]] | |
| 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 | |
| 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"] | |
| 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://) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions providing a 'detailed overview' but doesn't specify what that includes (e.g., domain metrics, link counts, timestamps), whether results are paginated (implied by limit/offset but not stated), or any rate limits/authentication requirements. For a data retrieval tool with no annotation coverage, this leaves significant behavioral 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, efficient sentence that directly states the tool's purpose. There's no wasted verbiage, and it's appropriately front-loaded with the core functionality. However, it could be slightly more structured by explicitly mentioning key capabilities like filtering or pagination.
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 5 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what the 'detailed overview' includes (output format), how results are structured, or any behavioral constraints. Given the complexity implied by the filtering/sorting parameters and lack of structured metadata, the description should provide more context about the tool's operation and 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?
Schema description coverage is 100%, so the schema fully documents all 5 parameters. The description doesn't add any meaningful parameter semantics beyond what's in the schema—it mentions 'target you specify' which is covered by the schema's target parameter description. Baseline 3 is appropriate when the schema does all the parameter documentation work.
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: 'provide you with a detailed overview of referring domains pointing to the target you specify.' It includes a specific verb ('provide') and resource ('referring domains'), but doesn't explicitly differentiate from sibling tools like 'backlinks_referring_networks' or 'backlinks_summary' which might offer similar 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?
No guidance is provided on when to use this tool versus alternatives. With many sibling tools in the 'backlinks_' category (e.g., 'backlinks_backlinks', 'backlinks_summary'), the description lacks any context about what makes this tool unique or when it should be preferred over others for analyzing referring domains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_referring_networksC
This endpoint will provide you with a detailed overview of referring domains pointing to the target you specify
| Name | Required | Description | Default |
|---|---|---|---|
| filters | No | array of results filtering parameters optional field you can add several filters at once (8 filters maximum) you should set a logical operator and, or between the conditions the following operators are supported: regex, not_regex, =, <>, in, not_in, like, not_like, ilike, not_ilike, match, not_match you can use the % operator with like and not_like to match any string of zero or more characters example: ["referring_pages",">","1"] [["referring_pages",">","2"], "and", ["backlinks",">","10"]] [["first_seen",">","2017-10-23 11:31:45 +00:00"], "and", [["network_address","like","194.1.%"],"or",["referring_ips",">","10"]]] | |
| limit | No | the maximum number of returned networks | |
| network_address_type | No | indicates the type of network to get data for optional field possible values: ip, subnet default value: ip | ip |
| 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 | |
| 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"] | |
| 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://) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool provides a 'detailed overview' but fails to specify output format, pagination behavior, rate limits, authentication needs, or potential side effects. This leaves significant gaps in understanding how the tool behaves beyond its 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?
The description is a single, clear sentence that efficiently states the tool's function without unnecessary details. It's front-loaded and avoids redundancy, though it could be slightly more informative to improve utility without sacrificing 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?
Given the complexity of 6 parameters, no annotations, and no output schema, the description is incomplete. It doesn't address behavioral traits, output structure, or usage context, making it inadequate for an agent to fully understand how to invoke and interpret results from this 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 description coverage is 100%, so the input schema already documents all parameters thoroughly. The description adds no additional meaning or context about parameters beyond what the schema provides, such as explaining the 'target' field's relationship to referring networks. Thus, it meets the baseline for high schema coverage without compensating with extra insights.
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 'a detailed overview of referring domains pointing to the target you specify,' which clarifies it retrieves referring domain data for a target. However, it's vague about what 'referring domains' means in this context (e.g., networks vs. domains), and it doesn't distinguish this from sibling tools like 'backlinks_referring_domains,' leaving ambiguity in 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 offers no guidance on when to use this tool versus alternatives, such as 'backlinks_referring_domains' or other backlinks-related siblings. It lacks context on specific use cases, prerequisites, or exclusions, providing only a basic functional statement without comparative or situational advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_summaryC
This endpoint will provide you with an overview of backlinks data available for a given domain, subdomain, or webpage
| Name | Required | Description | Default |
|---|---|---|---|
| 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 | |
| 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 | |
| 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://) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool 'will provide you with an overview' but lacks details on output format (e.g., structured data, summary metrics), pagination, rate limits, authentication needs, or error handling. For a tool with no annotations, this is a significant gap in transparency.
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 front-loads the core purpose without unnecessary words. It directly states what the tool does ('provide an overview of backlinks data') and the target ('domain, subdomain, or webpage'), with zero waste or redundancy.
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 backlinks analysis and the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'overview' entails (e.g., summary statistics, aggregated data), potential limitations, or how it differs from detailed sibling tools. For a tool in a crowded namespace with no structured output guidance, 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?
The input schema has 100% description coverage, thoroughly documenting all three parameters. The description adds no parameter-specific information beyond what's in the schema, such as examples or usage tips. According to the rules, with high schema coverage (>80%), the baseline is 3 even without param info in 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's purpose: 'provide you with an overview of backlinks data available for a given domain, subdomain, or webpage.' It specifies the verb ('provide') and resource ('backlinks data'), and distinguishes it from siblings by focusing on an 'overview' rather than detailed data like 'backlinks_backlinks' or 'backlinks_anchors.' However, it doesn't explicitly differentiate from all siblings (e.g., 'backlinks_domain_pages_summary'), so it's not a perfect 5.
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. With many sibling tools (e.g., 'backlinks_backlinks' for detailed backlinks, 'backlinks_summary' for overview), it fails to specify scenarios where an overview is preferable, prerequisites, or exclusions. This leaves the agent without context for tool selection.
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_summaryA
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 |
|---|---|---|---|
| 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" | |
| 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" | |
| 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 |
| target | Yes | domain to get data for required field a domain should be specified without https:// and www. example: "forbes.com" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: results are grouped by time range (day/week/month/year), data is provided for a period between two dates, and it mentions handling of missing data ('if there is no data for a certain day/week/month/year, we will return 0'). However, it lacks details on rate limits, authentication needs, or potential data freshness, which are important for a data-fetching tool.
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 appropriately sized and front-loaded, with the first sentence stating the core purpose. It uses three sentences total, each adding value: defining the tool's function, explaining the time grouping, and suggesting usage for graphs. There is no redundant information, though it could be slightly more concise by integrating the grouping detail into the first sentence.
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 (time-series data with grouping) and no annotations or output schema, the description is moderately complete. It covers the tool's purpose, usage context, and some behavioral aspects like data grouping and handling of missing data. However, it lacks details on output format, error handling, or performance considerations, which would be helpful for an agent to use it effectively without an 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 description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema, only implying the purpose of date ranges and grouping without providing additional syntax or format details. The baseline score of 3 is appropriate as the schema does the heavy lifting, but the description does not compensate with extra insights.
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: 'provide you with the number of new and lost backlinks and referring domains for the domain specified in the target field.' It specifies the exact metrics (new/lost backlinks and referring domains), the target (domain), and distinguishes it from sibling tools like 'backlinks_summary' or 'backlinks_timeseries_summary' by focusing on time-series data for new/lost metrics specifically.
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 clear context for when to use this tool: 'Data from this endpoint will be especially helpful for building time-series graphs of new and lost backlinks and referring domains.' It implies usage for visualization and trend analysis over time. However, it does not explicitly state when not to use it or name alternatives among siblings, such as 'backlinks_timeseries_summary' for other metrics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backlinks_timeseries_summaryB
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 |
|---|---|---|---|
| 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" | |
| 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" | |
| 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 |
| target | Yes | domain to get data for required field a domain should be specified without https:// and www. example: "forbes.com" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the grouping behavior and handling of missing data ('if there is no data for a certain day/week/month/year, we will return 0'), which is valuable. However, it doesn't mention rate limits, authentication requirements, whether this is a read-only operation, or what the output format looks like (though there's no output schema). The description adds some behavioral context but leaves significant 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 two sentences that efficiently convey the core functionality and usage context. The first sentence states the purpose and key parameters, while the second highlights the primary use case. There's no redundant information, and it's appropriately sized for a tool with well-documented parameters in the schema.
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 (time-series analysis with grouping), no annotations, and no output schema, the description is moderately complete. It explains the grouping behavior and missing data handling, which is crucial. However, it doesn't cover authentication, rate limits, error conditions, or the structure of returned data (e.g., what metrics are included in the 'overview'). For a tool with no annotations or output schema, more behavioral and output details would be needed for higher 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 description mentions grouping by time range (day, week, month, year) and the purpose of building time-series graphs, which adds context beyond the input schema. However, with 100% schema description coverage, the schema already thoroughly documents all 4 parameters (date_from, date_to, group_range, target) with examples, constraints, and defaults. The description provides marginal additional meaning, so the 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's purpose: 'provide you with an overview of backlink data for the target domain available during a period between the two indicated dates' and mentions grouping by time range. It specifies the resource (backlink data for a domain) and action (overview/time-series summary). However, it doesn't explicitly differentiate from sibling tools like 'backlinks_summary' or 'backlinks_timeseries_new_lost_summary', which would require a 5.
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 context by stating 'Data from this endpoint will be especially helpful for building time-series graphs of daily, weekly, monthly, and yearly link-building progress.' This suggests when to use it (for time-series visualization), but it doesn't provide explicit guidance on when to choose this tool over alternatives like 'backlinks_summary' or 'backlinks_timeseries_new_lost_summary', nor does it mention any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keywords_data_dataforseo_trends_demographyC
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 |
|---|---|---|---|
| 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" | |
| 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 | |
| location_name | No | full name of the location optional field in format "Country" example: United Kingdom | |
| 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 |
| type | No | dataforseo trends type | web |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states what the tool does but lacks critical behavioral details: it doesn't mention rate limits, authentication requirements, whether it's a read-only or mutating operation, error handling, or response format. For a tool with 6 parameters and no output schema, this is a significant gap.
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 clearly states the tool's purpose without unnecessary words. It's appropriately sized for a tool with a specific function, though it could be slightly more structured by front-loading key information more explicitly.
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 (6 parameters, no output schema, no annotations), the description is incomplete. It doesn't cover behavioral aspects like rate limits or auth needs, doesn't explain the return format, and offers no usage guidelines. For a data-fetching tool with multiple parameters, this leaves 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 the schema already documents all parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema—it doesn't explain how 'keywords' relate to 'demographic breakdown' or provide usage examples. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'provide you with the demographic breakdown (by age and gender) of keyword popularity per each specified term based on DataForSEO Trends data.' It specifies the verb ('provide'), resource ('demographic breakdown'), and data source ('DataForSEO Trends'), but doesn't explicitly differentiate from sibling tools like 'keywords_data_dataforseo_trends_explore' or 'keywords_data_dataforseo_trends_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?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools or contexts where demographic data is preferred over other keyword trend analyses, leaving the agent to infer usage based on the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keywords_data_dataforseo_trends_exploreC
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 |
|---|---|---|---|
| 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" | |
| 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 | |
| location_name | No | full name of the location optional field in format "Country" example: United Kingdom | |
| 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 |
| type | No | dataforseo trends type | web |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While it mentions what data is provided (keyword popularity from specific sources), it doesn't describe rate limits, authentication requirements, error conditions, response format, or whether this is a read-only operation. For a data retrieval tool with no annotation coverage, this leaves significant behavioral 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 efficiently structured in two sentences that directly state the tool's core functionality and data sources. There's no unnecessary verbiage or repetition. However, it could be slightly more front-loaded by immediately mentioning the keyword focus rather than starting with 'This endpoint will provide you with...'
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, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain what the output looks like, how results are structured, or any limitations beyond what's implied. The agent must rely entirely on the input schema for operational details, leaving gaps in understanding the tool's full behavior and 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 description adds no parameter-specific information beyond what's already in the schema (which has 100% coverage). It doesn't explain relationships between parameters like 'time_range' and 'date_from/date_to', or provide examples of keyword usage. With complete schema documentation, the baseline score of 3 is appropriate as the description doesn't enhance 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 the tool's purpose: 'provide you with the keyword popularity data from DataForSEO Trends' and specifies the data sources (Google Search, Google News, Google Shopping). It distinguishes itself from sibling tools like 'keywords_data_google_trends_explore' by mentioning DataForSEO specifically, but doesn't explicitly contrast with other keyword-related siblings like 'keywords_data_dataforseo_trends_demography'.
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 doesn't mention any prerequisites, constraints, or compare it to sibling tools like 'keywords_data_google_trends_explore' or 'keywords_data_dataforseo_trends_demography'. The agent must infer usage from the tool 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.
keywords_data_dataforseo_trends_subregion_interestsC
This endpoint will provide you with location-specific keyword popularity data from DataForSEO Trends
| Name | Required | Description | Default |
|---|---|---|---|
| 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" | |
| 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 | |
| location_name | No | full name of the location optional field in format "Country" example: United Kingdom | |
| 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 |
| type | No | dataforseo trends type | web |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the data source ('DataForSEO Trends') but lacks critical details: it doesn't specify if this is a read-only operation, potential rate limits, authentication requirements, or what the output format looks like (e.g., JSON structure, error handling). For a data query tool with multiple parameters, this is insufficient.
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 directly states the tool's function without unnecessary words. It's front-loaded with the core purpose and avoids redundancy, 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's complexity (6 parameters, no annotations, no output schema), the description is inadequate. It doesn't cover behavioral aspects like data freshness, limitations (e.g., maximum keywords per query implied by schema but not highlighted), or example use cases. For a data retrieval tool with rich parameters, more context is needed to guide effective 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?
The description adds no parameter-specific information beyond what's already in the input schema, which has 100% coverage. It doesn't explain how parameters interact (e.g., that 'time_range' is ignored if date parameters are set) or provide examples of keyword usage. Since the schema is fully documented, 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's purpose: 'provide you with location-specific keyword popularity data from DataForSEO Trends.' It specifies the verb ('provide'), resource ('keyword popularity data'), and scope ('location-specific'), though it doesn't explicitly differentiate from sibling tools like 'keywords_data_dataforseo_trends_demography' or 'keywords_data_dataforseo_trends_explore'.
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 doesn't mention sibling tools or provide context for choosing this specific keyword data endpoint over others in the server, such as 'keywords_data_google_ads_search_volume' or 'keywords_data_google_trends_explore'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keywords_data_google_ads_search_volumeC
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 optional field in format "Country" example: United Kingdom |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool does but doesn't describe how it behaves: no information about rate limits, authentication needs, error handling, or what the output looks like (since there's no output schema). For a data retrieval tool with zero annotation coverage, this leaves critical behavioral traits unspecified.
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 with zero wasted words. It's appropriately sized for a straightforward data retrieval tool and front-loads the core purpose 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 the complexity (data retrieval from an external API), lack of annotations, and absence of an output schema, the description is insufficiently complete. It doesn't explain what search volume data includes (metrics, format), how results are returned, or any limitations. For a tool interacting with Google Ads API, more context about response structure and constraints would be expected.
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 three parameters thoroughly. The description adds no parameter-specific information beyond what's in the schema (keywords array, optional language_code and location_name). This meets the baseline of 3 when schema coverage is high, but doesn't provide additional semantic context.
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 ('Get search volume data') and resource ('for keywords from Google Ads'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'keywords_data_dataforseo_trends_explore' or 'keywords_data_google_trends_explore' that might also handle keyword data, so it doesn't fully distinguish from alternatives.
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 doesn't mention prerequisites, context, or exclusions, leaving the agent with no usage instructions beyond the basic purpose. This is a significant gap given multiple sibling tools in the keywords_data category.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keywords_data_google_trends_categoriesB
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?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool provides a list, implying a read-only operation, but doesn't cover aspects like authentication needs, rate limits, error handling, or response format. For a tool with zero annotation coverage, this is a significant gap in transparency.
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 directly states the tool's purpose without any wasted words. It's front-loaded and appropriately sized for a simple tool, making it easy for an agent 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 no annotations, no output schema, and 0 parameters, the description is minimal. It states what the tool does but lacks context on behavior, usage, or output details. For a tool in a server with many siblings, this incomplete description may hinder effective agent invocation.
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 0 parameters with 100% schema description coverage, so no parameter information is needed. The description doesn't add param details, which is appropriate, earning a baseline score of 4 as it doesn't need to compensate for any schema gaps.
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: 'provide you list of Google Trends Categories.' It specifies the verb ('provide') and resource ('list of Google Trends Categories'), making the function unambiguous. However, it doesn't differentiate from sibling tools like 'keywords_data_google_trends_explore,' which might also relate to Google Trends data, so it misses full sibling distinction.
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 doesn't mention any context, prerequisites, or exclusions, such as how it differs from other keywords_data tools on the server. This lack of usage instructions leaves the agent without direction for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keywords_data_google_trends_exploreC
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 |
|---|---|---|---|
| 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 | |
| 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" | |
| 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" | |
| item_types | No | types of items returned to speed up the execution of the request, specify one item at a time | |
| 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 | |
| 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 | |
| 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 |
| type | No | google trends type | web |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool provides 'keyword popularity data' but doesn't describe what the output looks like (e.g., time-series data, graphs, lists), any rate limits, authentication requirements, or potential side effects. The description lacks critical behavioral context needed for an AI agent to use it effectively.
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—just two sentences that directly state the tool's purpose and scope. Every word earns its place, with no redundant information or fluff. It's front-loaded with the core functionality, making it easy for an agent to quickly understand what the tool does.
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 (9 parameters, no output schema, no annotations), the description is insufficient. It doesn't explain the output format, which is critical for a data-fetching tool, nor does it cover behavioral aspects like error handling or data freshness. The description is too brief to provide the necessary context for an AI agent to use the tool confidently.
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 description adds no parameter-specific information beyond what's already in the schema, which has 100% coverage. It mentions 'keyword trends for Google Search, Google News, Google Images, Google Shopping, and YouTube,' which loosely relates to the 'type' parameter but doesn't provide additional semantics. Since schema coverage is high, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.
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: 'provide you with the keyword popularity data from the ‘Explore’ feature of Google Trends.' It specifies the verb ('provide') and resource ('keyword popularity data'), and mentions the supported platforms (Google Search, News, Images, Shopping, YouTube). However, it doesn't explicitly differentiate from its sibling 'keywords_data_dataforseo_trends_explore' or other keyword-related tools, which prevents a perfect score.
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 mentions the 'Explore' feature but doesn't explain how it differs from other keyword tools in the list (e.g., 'keywords_data_google_ads_search_volume' or 'keywords_data_dataforseo_trends_explore'). There are no explicit when-to-use or when-not-to-use instructions, 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.
on_page_content_parsingC
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 |
|---|---|---|---|
| accept_language | No | Accept-Language header value | |
| custom_js | No | Custom JavaScript code to execute | |
| custom_user_agent | No | Custom User-Agent header | |
| enable_javascript | No | Enable JavaScript rendering | |
| url | Yes | URL of the page to parse |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool returns structured content, but doesn't cover critical aspects like rate limits, authentication needs, error handling, or performance implications (e.g., timeouts for JavaScript-heavy pages). The mention of 'parsing' implies a read-only operation, but this isn't explicitly confirmed, leaving gaps in transparency.
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 front-loads the core functionality. It avoids unnecessary words and directly states what the tool does. However, it could be slightly more structured by separating the action from the output details for clarity.
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, no annotations, and no output schema, the description is incomplete. It doesn't explain the return format (e.g., structure of parsed content), error cases, or dependencies like network access. For a parsing tool with multiple configuration options, this leaves significant gaps for an AI agent to use it 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 description coverage is 100%, so the schema fully documents all 5 parameters. The description doesn't add any parameter-specific details beyond what's in the schema (e.g., it doesn't explain how 'custom_js' interacts with 'enable_javascript'). This meets the baseline for high schema coverage, but 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 tool's purpose: parsing page content and returning structured data including links, anchors, headings, and text. It specifies the verb ('parsing') and resource ('content on any page'), making the function understandable. However, it doesn't explicitly differentiate from sibling tools like 'on_page_instant_pages' or 'on_page_lighthouse', which might have overlapping or related functionality.
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 mentions parsing 'any page' but doesn't specify contexts, prerequisites, or exclusions. Given the sibling tools include other on_page tools, this lack of differentiation leaves the agent without clear usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
on_page_instant_pagesC
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 |
|---|---|---|---|
| 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_js | No | Custom JavaScript code to execute | |
| custom_user_agent | No | Custom User-Agent header | |
| enable_javascript | No | Enable JavaScript rendering | |
| url | Yes | URL to analyze |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the tool returns 'page-specific data' about SEO optimization, but fails to describe critical behaviors: what the output format looks like, whether it's a read-only operation, potential rate limits, authentication needs, or error handling. The description is too high-level to guide an agent effectively.
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 efficiently states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded with the core function. However, it could be slightly more structured by explicitly separating purpose from context.
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 a 5-parameter tool with no annotations and no output schema, the description is incomplete. It doesn't explain the return format, error conditions, or how parameters interact with the SEO analysis. For a tool that likely returns structured data about page optimization, more context is needed to use it 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?
The schema description coverage is 100%, so the schema already documents all 5 parameters thoroughly. The description adds no parameter-specific information beyond what's in the schema—it doesn't explain how parameters like 'custom_js' or 'enable_javascript' affect the SEO analysis. This meets the baseline of 3 when schema coverage is complete.
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: 'get page-specific data with detailed information on how well a particular page is optimized for organic search'. It specifies the verb ('get') and resource ('page-specific data'), and distinguishes it from sibling tools like 'on_page_content_parsing' or 'on_page_lighthouse' by focusing on SEO optimization assessment. However, it doesn't explicitly differentiate from all siblings, so it's not a perfect 5.
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 doesn't mention sibling tools like 'on_page_content_parsing' or 'on_page_lighthouse' that might serve similar purposes, nor does it specify prerequisites or exclusions. The only implied usage is for analyzing page SEO, but this is too vague for effective tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
on_page_lighthouseD
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 |
|---|---|---|---|
| accept_language | No | Accept-Language header value | |
| custom_js | No | Custom JavaScript code to execute | |
| custom_user_agent | No | Custom User-Agent header | |
| enable_javascript | No | Enable JavaScript rendering | |
| url | Yes | URL of the page to parse |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. However, it only mentions the tool's basis on Lighthouse without describing key behaviors: what the tool outputs (e.g., performance scores, audit results), whether it performs network requests, any rate limits, authentication needs, or side effects. This leaves the agent guessing about the tool's operation and results.
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 is concise but under-specified—it doesn't front-load critical information about the tool's function. While it avoids waste, it lacks structure that could clarify purpose or usage, making it less helpful than a more informative yet still brief description would be.
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 a Lighthouse-based tool with 5 parameters, no annotations, and no output schema, the description is incomplete. It fails to explain what the tool returns, how it behaves, or when to use it, leaving significant gaps for an AI agent to understand and invoke the tool correctly in context with its siblings.
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 5 parameters (e.g., 'url' for the page to parse, 'enable_javascript' for rendering). The description adds no additional meaning or context about parameters beyond what the schema provides, such as usage examples or constraints. This meets the baseline for high schema coverage but doesn't 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 the tool is 'based on Google's open-source Lighthouse project for measuring the quality of web pages and web apps,' which provides some context but is vague about the specific action. It doesn't clearly state what the tool actually does (e.g., run a Lighthouse audit, fetch metrics, generate reports) or distinguish it from sibling tools like 'on_page_content_parsing' or 'on_page_instant_pages.' This is closer to a tautology of the name 'on_page_lighthouse' without specifying the verb.
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. It doesn't mention any context, prerequisites, or comparisons with sibling tools (e.g., 'on_page_content_parsing' or 'on_page_instant_pages'), leaving the agent with no information on selection criteria. This is a significant gap in usage instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
serp_locationsB
Utility tool for serp_organic_live_advanced to get list of availible locations.
| Name | Required | Description | Default |
|---|---|---|---|
| country_iso_code | Yes | ISO 3166-1 alpha-2 country code, for example: US, GB, MT | |
| 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'gets' a list, implying a read-only operation, but doesn't clarify if it's a search, filter, or lookup, nor does it mention rate limits, authentication needs, or output format. For a tool with no annotations, this minimal description lacks critical behavioral 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?
The description is a single, efficient sentence that directly states the tool's purpose and relationship to a sibling tool. It's front-loaded with key information and has no wasted words, though minor spelling errors ('availible') slightly detract from polish.
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 no annotations, no output schema, and 4 parameters, the description is incomplete. It doesn't explain what 'availible locations' means in practice, how results are returned, or any limitations. For a utility tool with moderate complexity, this leaves significant gaps in understanding its full context and 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 the schema already documents all four parameters thoroughly. The description adds no parameter-specific information beyond what's in the schema, such as how parameters interact or examples of usage. This meets the baseline of 3, as the schema does the heavy lifting, but the description doesn't 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 clearly states the tool's purpose as a 'utility tool for serp_organic_live_advanced to get list of availible locations.' It specifies the verb ('get') and resource ('list of availible locations'), and identifies its relationship to a specific sibling tool. However, it doesn't fully distinguish from other location-related tools like 'serp_youtube_locations' in the sibling list, keeping it from a perfect score.
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 context by mentioning 'for serp_organic_live_advanced,' suggesting it's a helper tool for that sibling. However, it doesn't explicitly state when to use this tool versus alternatives like 'serp_youtube_locations' or standalone location searches, nor does it provide any exclusions or prerequisites. This leaves some ambiguity in usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
serp_organic_live_advancedC
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 |
| 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; | |
| search_engine | No | search engine name, one of: google, yahoo, bing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states what the tool does without behavioral details. It doesn't disclose if this is a read-only operation, potential rate limits, authentication needs, or what happens with invalid inputs. This leaves significant gaps in understanding the tool's behavior beyond basic functionality.
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 front-loads the core purpose without unnecessary details. It avoids redundancy but could be slightly more structured by hinting at key parameters like depth or device, though not required given schema coverage.
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 8 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain return values, error handling, or behavioral constraints, leaving the agent with incomplete context for safe and 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 description coverage is 100%, so the schema fully documents all 8 parameters. The description adds no additional parameter semantics beyond implying keyword and search engine usage, which is already covered. Baseline 3 is appropriate as the schema handles parameter documentation adequately.
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 resource 'organic search results', specifying the action and target. It mentions 'keyword' and 'search engine' to define scope, but doesn't differentiate from sibling tools like 'serp_youtube_organic_live_advanced' which targets YouTube specifically versus general search engines.
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 is provided. The description lacks context on prerequisites, such as when to choose this over other SERP or keyword tools, and doesn't mention any exclusions or complementary tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
serp_youtube_locationsB
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 |
|---|---|---|---|
| country_iso_code | Yes | ISO 3166-1 alpha-2 country code, for example: US, GB, MT | |
| 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' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral disclosure. It doesn't describe what the tool returns (list format, structure), whether it's cached/real-time data, rate limits, authentication needs, or error conditions. The description only states it's a 'utility tool' without explaining operational 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, efficient sentence that directly states the tool's purpose and target tools without any wasted words. It's appropriately sized and front-loaded with the core functionality, making it easy for an agent 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 no annotations and no output schema, the description is incomplete. It doesn't explain what the returned location data looks like (format, structure, fields), how results are filtered/limited, or any behavioral aspects. For a utility tool that presumably returns structured location data, more context about the output 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 description coverage is 100%, so the schema already fully documents all three parameters with their types, descriptions, and requirements. The description adds no parameter information beyond what's in the schema, maintaining the baseline score of 3 for adequate but not enhanced parameter semantics.
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's purpose as getting 'list of available locations' for specific YouTube SERP tools, which is clear but somewhat vague. It specifies the resource (locations) and target tools, but doesn't articulate the exact verb or differentiate from the sibling 'serp_locations' tool that appears to serve a similar function for non-YouTube SERP 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 explicitly lists four specific sibling tools for which this location data is intended, providing clear context for when to use it. However, it doesn't mention when NOT to use it (e.g., for non-YouTube SERP tools) or explicitly name alternatives like 'serp_locations' for other SERP tools.
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_advancedC
provides top 20 blocks of youtube search engine results for a keyword
| Name | Required | Description | Default |
|---|---|---|---|
| block_depth | No | parsing depth optional field number of blocks of results in SERP max value: 700 | |
| 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 | 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" | |
| 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 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool provides 'top 20 blocks' but doesn't explain what constitutes a 'block' (e.g., video results, playlists, channels), whether results are live/real-time, pagination behavior, rate limits, or authentication needs. For a tool with no annotations and complex functionality, this is a significant gap.
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 front-loads the core purpose. It wastes no words and is appropriately sized for the tool's complexity, making it easy for an agent 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's complexity (6 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain the output format (what 'blocks' include), behavioral traits like rate limits or data freshness, or how it differs from siblings. Without annotations or output schema, the description should provide more context to be fully 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?
Schema description coverage is 100%, so the schema fully documents all 6 parameters. The description doesn't add any parameter semantics beyond what's in the schema (e.g., it doesn't clarify 'blocks' or provide examples). With high schema coverage, the baseline is 3, as the description doesn't compensate but also doesn't detract.
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: 'provides top 20 blocks of youtube search engine results for a keyword.' It specifies the verb ('provides'), resource ('youtube search engine results'), and scope ('top 20 blocks'). However, it doesn't explicitly differentiate from sibling tools like 'serp_organic_live_advanced' or 'serp_youtube_video_info_live_advanced', which would be needed for a score of 5.
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 doesn't mention sibling tools or contexts where this specific YouTube SERP tool is preferred over general SERP tools or other YouTube-related tools. The absence of usage guidelines leaves the agent without direction for tool selection.
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_advancedC
provides data on the video comments you specify
| Name | Required | Description | Default |
|---|---|---|---|
| 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 |
| 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" | |
| 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 |
| video_id | Yes | ID of the video |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'provides data' which suggests a read-only operation, but fails to describe critical behaviors such as whether this is a live/real-time query, rate limits, authentication needs, data freshness, or what the output format looks like (especially important since there's no output schema). The description is too minimal to adequately inform the agent about how the tool behaves.
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 with zero wasted words, making it appropriately concise. However, it lacks front-loading of critical information (e.g., not specifying it's for YouTube video comments retrieval), which slightly reduces its effectiveness despite the 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?
Given the complexity (6 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain what data is returned, how results are structured, or behavioral aspects like live data access. For a tool with 'advanced' in its name and multiple configuration parameters, the minimal description leaves significant gaps in understanding its full context and 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?
The input schema has 100% description coverage, providing clear details for all 6 parameters (e.g., 'depth' as parsing depth with max value, 'location_name' with format examples). The description adds no additional parameter semantics beyond what's in the schema, so it meets the baseline of 3 where the schema does the heavy lifting, but doesn't compensate or enhance understanding 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 states the tool 'provides data on the video comments you specify', which indicates a data retrieval function but is vague about what specific data is provided (e.g., comment text, metrics, sentiment). It distinguishes from obvious siblings like 'serp_youtube_video_info_live_advanced' by focusing on comments rather than general video info, but lacks specificity about the verb (e.g., 'fetch', 'analyze') and scope (e.g., 'live', 'advanced' aspects).
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. There are no explicit mentions of when to use it, when not to use it, or references to sibling tools (e.g., 'serp_youtube_video_info_live_advanced' for general video data). Usage is implied only by the tool name and description, leaving the agent to infer context without clear direction.
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_advancedC
provides data on the video you specify
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | device type optional field can take the values:desktop, mobile default value: desktop | desktop |
| 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" | |
| 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 |
| video_id | Yes | ID of the video |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It implies a read operation ('provides data'), but doesn't disclose critical traits like whether it's live/real-time (suggested by 'live_advanced' in the name), rate limits, authentication needs, or what 'advanced' entails. The description adds little beyond the basic action.
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 that under-specifies rather than being concise. While it's brief, it fails to front-load useful information—every word should earn its place, but this adds minimal value. It's not verbose, but it's inefficient due to lack of substance.
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 5 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what data is returned, how 'live_advanced' affects behavior, or differentiate from siblings. Given the complexity and lack of structured context, the description should do more to guide 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?
Schema description coverage is 100%, so the schema fully documents all 5 parameters (e.g., device, language_code, video_id). The description adds no parameter-specific meaning beyond implying 'video you specify' relates to 'video_id', which is already clear from the schema. Baseline 3 is appropriate as the 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 'provides data on the video you specify' is vague and tautological—it essentially restates the tool name 'serp_youtube_video_info_live_advanced' without specifying what kind of data (e.g., metadata, analytics, SERP rankings) or how it differs from sibling tools like 'serp_youtube_organic_live_advanced' or 'serp_youtube_video_comments_live_advanced'. It lacks a clear verb-resource distinction.
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. Given multiple sibling tools in the SERP/YouTube category (e.g., 'serp_youtube_organic_live_advanced', 'serp_youtube_video_comments_live_advanced'), the description fails to indicate context, prerequisites, or exclusions, leaving the agent to guess based on names alone.
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_advancedC
provides data on the video subtitles you specify
| Name | Required | Description | Default |
|---|---|---|---|
| device | No | device type optional field can take the values:desktop, mobile default value: desktop | desktop |
| 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" | |
| 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 |
| subtitles_language | No | language code of original text (e.g., 'en') | |
| subtitles_translate_language | No | language code of translated text (e.g., 'en') | |
| video_id | Yes | ID of the video |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure but fails to do so. It does not indicate whether this is a read-only operation, if it requires authentication, has rate limits, or what kind of data is returned (e.g., raw subtitles, analysis, metadata). The vague phrase 'provides data' offers no insight into the tool's behavior or constraints.
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—a single sentence with no wasted words. It is front-loaded and to the point, though this brevity contributes to its lack of detail. Every word serves the core message, even if that message is insufficient.
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 (7 parameters, no annotations, no output schema), the description is incomplete. It fails to explain what data is returned, how subtitles are processed, or any behavioral aspects. While the schema covers parameters, the overall context for using this tool—especially alongside siblings—is lacking, making it inadequate for informed agent decision-making.
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 schema description coverage is 100%, meaning all parameters are documented in the input schema itself. The description adds no additional meaning about parameters beyond what the schema provides (e.g., it doesn't explain how 'video_id' relates to YouTube URLs or clarify the purpose of 'subtitles_translate_language'). With high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.
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 'provides data on the video subtitles you specify' is tautological—it essentially restates the tool name 'serp_youtube_video_subtitles_live_advanced' without adding specificity. It lacks a clear verb (e.g., 'fetch', 'retrieve', 'analyze') and does not distinguish this tool from siblings like 'serp_youtube_video_comments_live_advanced' or 'serp_youtube_video_info_live_advanced', which also provide YouTube video 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 provides no guidance on when to use this tool versus alternatives. It does not mention any prerequisites, context for usage, or comparisons to sibling tools (e.g., when to choose subtitles data over comments or general video info). This leaves the agent without direction for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The tool set has significant overlap and ambiguity, particularly within the backlinks and keywords categories. For example, backlinks_bulk_new_lost_backlinks and backlinks_bulk_new_lost_referring_domains have very similar purposes, and tools like backlinks_domain_intersection and backlinks_page_intersection are nearly identical in description. This makes it difficult for an agent to reliably choose the correct tool without deep domain knowledge.
Tool names follow a consistent snake_case pattern with a clear prefix structure (e.g., backlinks_, keywords_data_, on_page_, serp_). However, there are minor deviations such as serp_locations and serp_youtube_locations not following the same verb_noun style as others, and some names are overly long and repetitive (e.g., backlinks_bulk_new_lost_referring_domains). Overall, the naming is predictable but could be more streamlined.
With 36 tools, the count is excessive for a single server, leading to cognitive overload and potential confusion. The tools cover multiple domains (backlinks, keywords, on-page, SERP, YouTube), suggesting the server is overly broad. A more focused approach with fewer, more distinct tools would improve usability and coherence.
The server provides comprehensive coverage across SEO-related domains, including backlinks, keywords, on-page analysis, and SERP data. There are no obvious major gaps; for example, it includes both bulk and individual operations, time-series data, and utility tools. However, the sheer number of tools may obscure completeness, and some areas like keyword tracking could benefit from more streamlined integration.
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
Real SEO data for AI assistants: page audits, Keyword Planner volumes, Search Console history.
SEO research, audits, backlinks, GSC, and content workflow tools for AI agents.
SEO & marketing toolkit for AI agents: GA4, Search Console, AdSense, GTM, PageSpeed, Trends.
SEO answers for AI agents: Search Console reads free, plus competitor, keyword, backlink, SERP data.
Appeared in Searches
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/cortex8/oyt-dataforseo-mcp-worker'
If you have feedback or need assistance with the MCP directory API, please join our Discord server