Skip to main content
Glama
dataforseo

DataForSEO MCP Server

Official
by dataforseo

DataForSEO MCP Server

이것은 새로운 v3 MCP 서버입니다. 이전 v2+ MCP 서버는 더 이상 사용되지 않으며 dataforseo/mcp-server-typescript-deprecated에 있습니다.

LLM 에이전트가 DataForSEO API 문서를 탐색하고 인증된 API 요청을 할 수 있도록 하는 MCP 서버 및 CLI입니다. 기본적으로 바이너리는 stdio에서 MCP 서버를 시작합니다. CLI 명령은 선택적인 두 번째 모드입니다.

빠른 시작

stdio에서 MCP 서버 시작 (기본 모드, DATAFORSEO_LOGIN / DATAFORSEO_PASSWORD 설정):

npx dataforseo-mcp-server@latest

HTTP 전송 (포트 3000, PORT로 재정의):

npx dataforseo-mcp-server@latest --mode http

Related MCP server: FetchSERP MCP Server

인증

OAuth 2.0 (HTTP MCP의 기본값): 추가 설정 없이 작동합니다. MCP 클라이언트는 보호된 리소스 메타데이터를 통해 DataForSEO 인증 서버를 발견하고 Authorization: Bearer 토큰을 전송합니다.

대체 방법: 환경 변수를 통한 API 로그인/비밀번호 (HTTP Basic). CLI 및 stdio MCP에 필요하며, HTTP에서는 Authorization 헤더가 없을 때 사용됩니다.

# bash / macOS / Linux
export DATAFORSEO_LOGIN="your_api_login"
export DATAFORSEO_PASSWORD="your_api_password"
# PowerShell
$env:DATAFORSEO_LOGIN="your_api_login"
$env:DATAFORSEO_PASSWORD="your_api_password"
REM CMD
set DATAFORSEO_LOGIN=your_api_login
set DATAFORSEO_PASSWORD=your_api_password

DATAFORSEO_USERNAME은 DATAFORSEO_LOGIN의 별칭으로 허용됩니다. API 키는 https://app.dataforseo.com/api-access에서 얻을 수 있습니다.

MCP 서버

동일한 도구 구현이 MCP 서버와 CLI 모두에서 사용됩니다. 하나의 바이너리가 두 모드를 제공하며, MCP가 기본값입니다.

바이너리가 모드를 선택하는 방법:

  • MCP stdio — CLI 명령이 전달되지 않았을 때 기본값

  • MCP HTTP — --mode http 전달 (Streamable HTTP, 포트 3000, PORT로 재정의)

  • CLI — 첫 번째 명령이 docs 또는 request이거나 --cli / --help / --version이 전달된 경우

MCP stdio (기본값):

npx dataforseo-mcp-server

MCP HTTP:

npx dataforseo-mcp-server --mode http

CLI:

npx dataforseo-mcp-server docs index

MCP 클라이언트 구성 (Cursor, Claude Desktop 등 mcpServers를 사용하는 클라이언트):

URL 사용 — 호스팅된 원격 MCP 서버를 사용하거나 로컬 HTTP 서버 (npx dataforseo-mcp-server --mode http)를 시작하여 클라이언트가 이를 가리키도록 합니다. OAuth는 추가 설정 없이 작동하며, env 자격 증명은 선택적 대체 수단일 뿐입니다.

원격 MCP 서버: https://data.dataforseo.com/v3

{
  "mcpServers": {
    "dataforseo": {
      "url": "https://data.dataforseo.com/v3/mcp"
    }
  }
}

로컬 서버 (기본 포트 3000):

{
  "mcpServers": {
    "dataforseo": {
      "url": "http://localhost:3000/mcp"
    }
  }
}

command (stdio) 사용 — 클라이언트가 직접 바이너리를 시작합니다 (stdio가 기본 모드). 이 전송에서는 OAuth가 사용되지 않으므로 env 자격 증명을 설정하거나 MCP 클라이언트 env 블록에 전달하세요:

{
  "mcpServers": {
    "dataforseo": {
      "command": "npx",
      "args": [
        "dataforseo-mcp-server",
        // Optional additional args:
        // "--docs-cache-dir", "D:\\my-docs-cache",
        // "--configuration", "field-config.json"
      ],
      "env": {
        "DATAFORSEO_LOGIN": "your_api_login",
        "DATAFORSEO_PASSWORD": "your_api_password",
        // Optional additional env:
        // "FIELD_CONFIG_PATH": "field-config.json"
      }
    }
  }
}

개발 중 저장소 루트에서:

{
  "mcpServers": {
    "dataforseo": {
      "command": "npx",
      "args": ["tsx", "src/index.ts"],
      "cwd": "/path/to/mcp-server-typescript"
    }
  }
}

MCP 도구

도구

제목

설명

docs_index

문서 인덱스

선택적으로 섹션으로 필터링된 문서 인덱스 가져오기 (24시간 캐시)

docs_list_sections

문서 섹션 목록

사용 가능한 문서 섹션 이름 반환

docs_search

문서 검색

문서 URL에서 문서 가져오기 (needCodeExample, 24시간 캐시)

api_request

API 요청

인증된 API 요청 수행

api_request는 기본적으로 .ai 경로를 사용합니다 (aiMode 매개변수 없음). 요청 본문은 data (JSON 객체 또는 배열)로 전달됩니다. CLI 전용 옵션 (--param, --no-ai-mode)은 MCP를 통해 노출되지 않습니다.

HTTP 전송

Streamable HTTP 엔드포인트:

  • POST /mcp

  • POST /http

OAuth 2.0 보호 리소스 메타데이터 (RFC 9728)는 항상 노출되므로 MCP 클라이언트가 인증 서버를 발견하고 Bearer 토큰으로 인증할 수 있습니다:

  • GET /.well-known/oauth-protected-resource

  • GET /.well-known/oauth-protected-resource/mcp

  • GET /.well-known/oauth-protected-resource/http

리버스 프록시 뒤에서는 TRUST_PROXY=true를 설정하여 메타데이터 URL이 https를 사용하도록 합니다.

HTTP 요청의 인증 우선순위:

  1. Authorization: Basic 헤더

  2. Authorization: Bearer 헤더 (OAuth 액세스 토큰)

  3. env 자격 증명 (DATAFORSEO_LOGIN / DATAFORSEO_PASSWORD) — Authorization 헤더가 전송되지 않은 경우 대체 수단

CLI (선택 사항)

MCP 외에도 동일한 바이너리가 docs 및 request를 CLI 명령으로 제공합니다.

명령어

명령어

설명

npx dataforseo-mcp-server docs index

전체 API 문서 인덱스 가져오기

npx dataforseo-mcp-server docs index --section "SERP API"

API 섹션으로 인덱스 필터링

npx dataforseo-mcp-server docs index --list-sections

사용 가능한 섹션 나열

npx dataforseo-mcp-server docs search <url>

문서 URL 또는 경로에서 문서 가져오기 (기본적으로 cURL 예제만)

npx dataforseo-mcp-server docs search <url> --need-code-example

PHP, Node.js, Python 및 C# 예제와 함께 문서 가져오기

npx dataforseo-mcp-server request -X <method> -p <path>

인증된 API 요청 수행 (기본적으로 .ai 경로)

로컬에서 빌드된 복사본에서 npx dataforseo-mcp-server 대신 npx .를 사용할 수도 있습니다.

예시

# Browse SERP API endpoints
npx dataforseo-mcp-server docs index --section "SERP API"

# Read endpoint documentation (path or full docs URL)
npx dataforseo-mcp-server docs search serp/google/organic/live/regular
npx dataforseo-mcp-server docs search https://docs.dataforseo.com/v3/serp/google/organic/live/regular

# Include multi-language code examples (PHP, Node.js, Python, C#)
npx dataforseo-mcp-server docs search backlinks/referring_networks/live --need-code-example

# Live SERP request (recommended: use --param)
npx dataforseo-mcp-server request -X POST -p /v3/serp/google/organic/live/regular \
  --param keyword=dataforseo --param language_code=en --param location_code=2840

# Same request via JSON body
npx dataforseo-mcp-server request -X POST -p /v3/serp/google/organic/live/regular \
  -d '[{"keyword":"dataforseo","location_code":2840,"language_code":"en"}]'

문서 응답은 24시간 동안 캐시됩니다. 기본 캐시 디렉토리:

  • Windows: %LOCALAPPDATA%\dataforseo-mcp-server\docs-cache

  • macOS: ~/Library/Caches/dataforseo-mcp-server/docs-cache

  • Linux: ~/.cache/dataforseo-mcp-server/docs-cache (또는 $XDG_CACHE_HOME)

CLI docs 명령에서 --cache-dir <path>로 재정의할 수 있습니다. MCP의 경우 서버 시작 args에 --docs-cache-dir <path>를 전달하세요.

API 응답은 응답 본문만 반환됩니다 (가능한 경우 구문 분석된 JSON). 필드 구성이 로드되면 api_request / request 응답이 해당 엔드포인트 경로에 대해 구성된 필드로만 축소됩니다 (필드 구성 참조).

필드 구성

선택적으로 API 응답에서 반환되는 필드를 제한할 수 있습니다. 이전 다중 도구 MCP 서버 (키 = 도구 이름)와 달리 이 패키지는 API 엔드포인트 경로를 기준으로 구성을 키로 사용합니다.

# MCP stdio (default when no CLI command is passed)
npx dataforseo-mcp-server --configuration field-config.json

# MCP HTTP
npx dataforseo-mcp-server --mode http --configuration field-config.json

# CLI
npx dataforseo-mcp-server --configuration field-config.json request -X POST -p /v3/backlinks/summary/live --param target=example.com

또는 env를 설정:

  • FIELD_CONFIG_PATH — JSON 파일 경로 (Node)

  • FIELD_CONFIG_JSON — 인라인 JSON 문자열 (Node / Cloudflare Worker)

최소 예제 (자세한 샘플은 field-config.example.json 참조):

{
  "supported_fields": {
    "/v3/serp/google/organic/live/advanced": ["id", "items.title", "items.url", "status_code"],
    "/v3/backlinks/summary/live": ["id", "items.backlinks", "items.referring_domains", "status_code"]
  }
}

동작:

  • /v3/on_page/lighthouse/live/json에는 항상 내장 기본값이 적용됩니다 (축소된 Lighthouse 페이로드). 사용자 정의 구성은 그 위에 병합되며 모든 경로를 재정의할 수 있습니다.

  • 경로 매칭은 .ai 접미사, 후행 슬래시, 호스트를 무시합니다 (전체 URL도 작동).

  • 경로가 비어 있지 않은 필드 목록으로 구성된 경우 → 해당 필드만 유지됩니다 (각 tasks[].result[] 항목에 적용).

  • 경로에 빈 필드 목록 []이 있는 경우 → 해당 경로에 대한 전체 응답 (필터링 비활성화).

  • 기본값과 사용자 정의 구성 모두에서 경로가 누락된 경우 → 전체 응답.

예제를 복사하여 사용하는 엔드포인트에 맞게 축소하세요:

cp field-config.example.json my-config.json

아키텍처

src/
├── index.ts            # Unified entry (MCP by default stdio; CLI if docs/request/--cli)
├── config/             # URLs, sections, auth server
├── core/
│   ├── api/            # auth, client, path, request-body
│   ├── cli/            # program, error, output
│   ├── config/         # field configuration + defaults
│   ├── docs/           # path, section, cache
│   ├── http/           # fetch
│   ├── mcp/            # startup args (--configuration, --docs-cache-dir)
│   ├── tools/          # shared CLI + MCP tool implementations
│   ├── utils/          # field filter
│   ├── env.ts
│   └── version.ts
├── mcp/
│   ├── init-mcp-server.ts
│   ├── tool-definition.ts
│   ├── auth-middleware.ts
│   ├── http-routes.ts
│   ├── index.ts        # stdio transport
│   └── index-http.ts   # streamable HTTP
└── worker/             # Cloudflare Worker entry (built separately)

빌드 출력물

대상

명령어

출력

사용처

Node (MCP + CLI)

npm run build (tsc)

dist/index.js

bin, Docker, start* 스크립트

Cloudflare Worker

npm run worker:build

build/worker/worker/index-worker.js

wrangler.jsonc → main

Worker 경로는 build/worker/worker/...입니다. tsconfig.worker.json이 rootDir을 src로 설정하고 엔트리가 src/worker/index-worker.ts에 있기 때문입니다.

LLM 에이전트용

전체 에이전트 지침은 이 저장소의 SKILL.md를 참조하세요.

개발

Node.js 20+가 필요합니다.

npm install
npm run build

# Dev (tsx, no build step)
npm run dev              # MCP stdio (default)
npm run dev:mcp:http     # MCP HTTP
npm run dev -- docs index --section "SERP API"   # CLI

# After build
npm run start            # MCP stdio (default)
npm run start:mcp:http   # Streamable HTTP
npx . docs index --list-sections

Available Tools

17 tools
kw_data_google_ads_locationsC

Utility tool for kw_data_google_ads_search_volume to get list of availible locations.

ParametersJSON Schema
NameRequiredDescriptionDefault
country_iso_codeYesISO 3166-1 alpha-2 country code, for example: US, GB, MT
location_typeNoType 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'
location_nameNoName of location or it`s part.

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states this is a 'utility tool' that 'gets list of available locations', which implies a read-only operation but doesn't disclose any behavioral traits like authentication requirements, rate limits, pagination, error handling, or what format the list returns. The description is minimal and lacks necessary 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.

Conciseness4/5

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

The description is a single sentence that efficiently states the tool's purpose and its relationship to another tool. It's appropriately sized without unnecessary elaboration, though it could be slightly more specific about the resource scope to improve clarity while maintaining conciseness.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete for a tool with 3 parameters. It doesn't explain what the output looks like (e.g., list format, structure), nor does it provide behavioral context needed for proper use. The minimal description leaves significant gaps in understanding how to effectively invoke and interpret results from this tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all three parameters (country_iso_code, location_type, location_name) with descriptions and constraints. The description adds no additional parameter semantics beyond what's already in the schema, meeting 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.

Purpose3/5

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 a list of available locations, but it's vague about what kind of locations (Google Ads locations) and doesn't clearly distinguish from sibling tools like 'serp_locations' or 'serp_youtube_locations'. It mentions being a utility for 'kw_data_google_ads_search_volume', which provides some context but lacks specificity about the resource scope.

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

Usage Guidelines2/5

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

The description mentions this is a utility for 'kw_data_google_ads_search_volume', implying it should be used in that context, but provides no explicit guidance on when to use this tool versus alternatives like 'serp_locations' or 'serp_youtube_locations'. There's no mention of prerequisites, exclusions, or specific scenarios for choosing this tool.

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

kw_data_google_ads_search_volumeC

Get search volume data for keywords from Google Ads

ParametersJSON Schema
NameRequiredDescriptionDefault
location_nameNofull 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
language_codeNoLanguage two-letter ISO code (e.g., 'en'). optional field
keywordsYesArray of keywords to get search volume for

TDQS

C2.9/5.0
Behavior2/5

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' data, implying a read-only operation, but doesn't clarify if it requires authentication, has rate limits, returns real-time or historical data, or handles errors. For a tool with no annotation coverage, this leaves significant gaps in understanding its behavior and constraints.

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

Conciseness5/5

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

The description is a single, efficient sentence: 'Get search volume data for keywords from Google Ads'. It's front-loaded with the core purpose, has zero wasted words, and is appropriately sized for a straightforward tool. Every part of the sentence contributes essential information.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It doesn't address behavioral aspects like authentication needs, rate limits, or data freshness. For a tool that likely interacts with an external API (Google Ads) and returns search volume data, more context on limitations, response format, or error handling would be beneficial to guide the agent effectively.

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

Parameters3/5

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

Schema description coverage is 100%, meaning the input schema fully documents the parameters (location_name, language_code, keywords) with detailed descriptions. The description adds no additional semantic information beyond what's in the schema, such as explaining the relationship between parameters or typical usage patterns. 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.

Purpose4/5

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 search volume data for keywords from Google Ads'. It specifies the verb ('Get'), resource ('search volume data'), and source ('Google Ads'), making the function unambiguous. However, it doesn't differentiate from sibling tools like 'kw_data_google_trends_explore' or 'kw_data_dfs_trends_explore', which might also provide keyword-related data from different sources.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools, such as 'kw_data_google_trends_explore' for Google Trends data or 'kw_data_dfs_trends_demography' for demographic trends, leaving the agent without context for tool selection. There's no indication of prerequisites, limitations, or typical use cases.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL of the page to parse
enable_javascriptNoEnable JavaScript rendering
custom_user_agentNoCustom User-Agent header
accept_languageNoAccept-Language header value

TDQS

C2.9/5.0
Behavior2/5

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 parses and returns structured content, but doesn't cover important aspects like whether it makes external HTTP requests, potential rate limits, authentication needs, error handling, or what 'structured content' entails. For a tool that interacts with external URLs, this lack of behavioral context 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.

Conciseness4/5

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

The description is a single, well-structured sentence that efficiently communicates the core functionality. It's appropriately sized and front-loaded with the main purpose. There's no wasted text, though it could potentially benefit from slightly more detail given the lack of annotations and output schema.

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

Completeness2/5

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

Given the complexity of parsing web pages and the absence of both annotations and an output schema, the description is insufficient. It doesn't explain what 'structured content' means in practice, how results are formatted, potential limitations (e.g., JavaScript-dependent content), or error conditions. For a tool with 4 parameters and no structured output documentation, 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.

Parameters3/5

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 four parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema. It mentions parsing 'any page you specify' which aligns with the 'url' parameter, but provides no additional syntax, format, or usage details. 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.

Purpose4/5

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 content from a specified page and returning structured content including links, anchors, headings, and text. It uses specific verbs ('parsing', 'return') and identifies the resource ('any page you specify'). However, it doesn't explicitly differentiate from sibling tools like 'on_page_instant_pages' or 'on_page_lighthouse', which likely have related but distinct functions.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools or contexts where this parsing tool is preferred over other on_page or serp tools. Usage is implied only by the general purpose, with no explicit when/when-not statements or prerequisites.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to analyze
enable_javascriptNoEnable JavaScript rendering
custom_jsNoCustom JavaScript code to execute
custom_user_agentNoCustom User-Agent header
accept_languageNolanguage 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

TDQS

C2.9/5.0
Behavior2/5

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. While it mentions the tool returns 'detailed information on how well a particular page is optimized for organic search,' it lacks critical behavioral details: what specific metrics or data are returned, whether this involves external API calls or rate limits, authentication requirements, error handling (beyond a hint in the 'accept_language' parameter description), or performance characteristics. For a tool with 5 parameters and no annotations, 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.

Conciseness4/5

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. It's front-loaded with the core function and avoids unnecessary words. However, given the tool's complexity (5 parameters, no output schema) and lack of sibling differentiation, it could benefit from slightly more detail to be fully helpful, keeping it from a perfect score.

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

Completeness2/5

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

Given the tool's complexity (5 parameters, no output schema, no annotations), the description is incomplete. It doesn't explain what the output looks like (e.g., the structure or types of 'detailed information'), how to interpret results, or any dependencies or limitations. With no output schema and rich parameterization, the description should provide more context to guide effective use, but it falls short.

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

Parameters3/5

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

The schema description coverage is 100%, meaning all parameters are well-documented in the input schema itself. The description adds no additional parameter information beyond what's already in the schema (e.g., it doesn't explain the 'url' format, when to use 'custom_js', or default behaviors). With high schema coverage, the baseline score 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.

Purpose4/5

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'), resource ('page-specific data'), and outcome ('optimized for organic search'). However, it doesn't explicitly distinguish this tool from its many siblings (e.g., 'on_page_content_parsing', 'on_page_lighthouse'), which appear to be related on-page analysis tools.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With numerous sibling tools like 'on_page_content_parsing' and 'on_page_lighthouse' that likely serve similar on-page analysis purposes, the description fails to indicate what makes this tool unique or when it should be preferred over others. No context, exclusions, or alternatives are mentioned.

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

on_page_lighthouseC

The OnPage Lighthouse API is based on Google’s open-source Lighthouse project for measuring the quality of web pages and web apps.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL of the page to parse
enable_javascriptNoEnable JavaScript rendering
custom_user_agentNoCustom User-Agent header
accept_languageNoAccept-Language header value

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden but fails to disclose key behavioral traits. It does not mention whether this is a read-only operation, potential rate limits, authentication needs, or what the output entails (e.g., audit results, scores, errors). The description only provides background on Lighthouse without operational details.

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

Conciseness4/5

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

The description is a single, well-structured sentence that efficiently explains the tool's basis without unnecessary details. It is front-loaded with the core information, though it could be more concise by directly stating the tool's function rather than background.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete for a tool with 4 parameters and likely complex behavior (web page quality measurement). It lacks details on what the tool returns, error handling, or performance implications, leaving significant gaps for an AI agent to understand its use.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all parameters (url, enable_javascript, custom_user_agent, accept_language). The description adds no additional meaning about parameters beyond what the schema provides, such as default behaviors or usage examples. Baseline 3 is appropriate given high schema coverage.

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

Purpose3/5

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

The description states the tool is 'based on Google's open-source Lighthouse project for measuring the quality of web pages and web apps,' which provides a general purpose but lacks specificity about what it actually does (e.g., run audits, generate reports, return scores). It distinguishes from some siblings like 'on_page_content_parsing' by mentioning Lighthouse, but the verb 'measuring' is vague compared to more precise alternatives.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It does not mention sibling tools like 'on_page_content_parsing' or 'on_page_instant_pages' for comparison, nor does it specify contexts or exclusions for usage. The description only gives background without practical application advice.

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

serp_locationsC

Utility tool for serp_organic_live_advanced to get list of availible locations.

ParametersJSON Schema
NameRequiredDescriptionDefault
search_engineNosearch engine name, one of: google, yahoo, bing.google
country_iso_codeYesISO 3166-1 alpha-2 country code, for example: US, GB, MT
location_typeNoType 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'
location_nameNoName of location or it`s part.

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states the tool 'gets list of availible locations,' which implies a read-only operation, but doesn't disclose behavioral traits such as authentication needs, rate limits, pagination, or error handling. The description is minimal and lacks essential context for safe and effective use.

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

Conciseness4/5

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

The description is a single sentence that is front-loaded and efficient, with no wasted words. However, it contains a typo ('availible') and could be slightly more polished, but overall it's appropriately sized for its purpose.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete. It doesn't explain what the output looks like (e.g., list format, data structure) or provide context on complexity. For a tool with 4 parameters and no structured output info, more detail is needed to guide the agent effectively.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all 4 parameters with descriptions and constraints. The description adds no additional meaning beyond the schema, as it doesn't explain parameter interactions or usage examples. Baseline 3 is appropriate when schema handles parameter documentation.

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

Purpose3/5

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

The description states the tool is a 'Utility tool for serp_organic_live_advanced to get list of availible locations.' This clarifies it fetches location data for a specific sibling tool, but the purpose is somewhat vague—it doesn't specify what 'availible locations' means (e.g., search engine locations, geographic regions). It distinguishes from most siblings by focusing on locations, but lacks specificity in verb and resource.

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

Usage Guidelines2/5

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

The description mentions it's for 'serp_organic_live_advanced,' implying usage context, but provides no explicit guidance on when to use this tool versus alternatives (e.g., serp_youtube_locations or other location-related tools in the sibling list). There are no exclusions or prerequisites stated, leaving the agent to infer usage.

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

serp_organic_live_advancedC

Get organic search results for a keyword in specified search engine

ParametersJSON Schema
NameRequiredDescriptionDefault
search_engineNosearch engine name, one of: google, yahoo, bing.google
location_nameNofull 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
depthNoparsing depth optional field number of results in SERP
language_codeYessearch engine language code (e.g., 'en')
keywordYesSearch keyword
max_crawl_pagesNopage 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
deviceNodevice type optional field can take the values:desktop, mobile default value: desktopdesktop
people_also_ask_click_depthNoclicks on the corresponding element specify the click depth on the people_also_ask element to get additional people_also_ask_element items;

TDQS

C2.9/5.0
Behavior2/5

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' results, implying a read-only operation, but doesn't clarify if it's a live query (suggesting real-time data), potential rate limits, authentication needs, or error handling. For a tool with 8 parameters and 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.

Conciseness5/5

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

The description is a single, efficient sentence: 'Get organic search results for a keyword in specified search engine.' It's front-loaded with the core purpose, uses clear language, and avoids redundancy. Every word contributes to understanding, making it highly concise and well-structured.

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

Completeness2/5

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

Given the tool's complexity (8 parameters, no annotations, no output schema), the description is insufficient. It doesn't explain the return format (e.g., what data is included in 'organic search results'), behavioral aspects like real-time vs. cached data, or error conditions. For a tool that likely returns rich SERP data, this leaves critical 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.

Parameters3/5

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

The description mentions 'keyword' and 'specified search engine,' which align with two parameters, but doesn't add meaningful context beyond the schema. With 100% schema description coverage, the schema already documents all parameters thoroughly (e.g., defaults, constraints, formats). The description provides no additional semantics, such as how parameters interact (e.g., 'depth' vs. 'max_crawl_pages'), so it meets the baseline but doesn't enhance understanding.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get organic search results for a keyword in specified search engine.' It specifies the verb ('get'), resource ('organic search results'), and key parameters ('keyword,' 'search engine'), making it easy to understand. However, it doesn't explicitly differentiate from sibling tools like 'serp_youtube_organic_live_advanced,' which might cause confusion in tool selection.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, exclusions, or comparisons to sibling tools, such as 'serp_youtube_organic_live_advanced' for YouTube searches or other SERP-related tools. This lack of context could lead to incorrect tool selection in complex scenarios.

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

serp_youtube_locationsA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
country_iso_codeYesISO 3166-1 alpha-2 country code, for example: US, GB, MT
location_typeNoType 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'
location_nameNoName of location or it`s part.

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. While it states this is a 'utility tool' that 'gets list of available locations,' it doesn't disclose important behavioral traits like whether this is a read-only operation, what authentication might be required, rate limits, or what format the location list returns. For a tool with no annotation coverage, 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.

Conciseness5/5

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

The description is a single, efficient sentence that clearly communicates the tool's purpose and usage context. It's appropriately sized for a utility tool and front-loads the essential information without any wasted words or unnecessary elaboration.

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

Completeness3/5

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

For a utility tool with 3 parameters (1 required), 100% schema coverage, and no output schema, the description provides adequate context about what the tool does and which tools it supports. However, it lacks information about return format and behavioral characteristics that would be helpful given the absence of annotations. The description is complete enough for basic understanding but could be more comprehensive.

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

Parameters3/5

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

Schema description coverage is 100%, with all three parameters well-documented in the schema itself. The description doesn't add any parameter-specific information beyond what the schema provides. According to scoring rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in description.

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

Purpose4/5

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

The description clearly states the tool's purpose: to 'get list of available locations' for specific YouTube SERP tools. It specifies the verb ('get') and resource ('list of available locations'), but doesn't distinguish it from the similar 'serp_locations' sibling tool, which appears to serve a parallel 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.

Usage Guidelines5/5

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

The description explicitly lists the four specific tools this location utility supports: 'serp_youtube_organic_live_advanced, serp_youtube_video_info_live_advanced, serp_youtube_video_comments_live_advanced, serp_youtube_video_subtitles_live_advanced.' This provides clear guidance on when to use this tool versus alternatives - specifically for YouTube-related SERP tools rather than general 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

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordYesSearch keyword
location_nameYesfull 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"
language_codeYessearch engine language code (e.g., 'en')
deviceNodevice type optional field can take the values:desktop, mobile default value: desktopdesktop
osNodevice 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: androidwindows
block_depthNoparsing depth optional field number of blocks of results in SERP max value: 700

TDQS

C2.9/5.0
Behavior2/5

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 'top 20 blocks' and implies live results, but lacks critical details: it doesn't specify if results are real-time or cached, whether there are rate limits, authentication requirements, error handling, or the structure of returned data (since no output schema exists). For a tool with 6 parameters and 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.

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core functionality ('provides top 20 blocks of youtube search engine results for a keyword'). It wastes no words and directly communicates the tool's purpose without unnecessary elaboration.

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

Completeness2/5

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

Given the tool's complexity (6 parameters, no annotations, no output schema), the description is incomplete. It lacks behavioral context (e.g., live vs. cached, rate limits), usage guidelines compared to siblings, and details on output format. While the input schema is thorough, the description alone doesn't provide enough information for an agent to fully understand how to use this tool effectively in context.

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

Parameters3/5

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

Schema description coverage is 100%, meaning all parameters are well-documented in the input schema itself. The description adds no additional parameter semantics beyond implying keyword-based search. Since the schema handles the heavy lifting, the baseline score of 3 is appropriate—the description doesn't compensate but doesn't need to given the comprehensive schema.

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

Purpose4/5

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

The description 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'), which is specific and actionable. However, it doesn't explicitly distinguish this tool from sibling tools like 'serp_organic_live_advanced' or 'serp_youtube_video_info_live_advanced', which might offer similar or overlapping functionality.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, exclusions, or comparisons with sibling tools (e.g., 'serp_organic_live_advanced' for general SERP or other YouTube-specific tools). Without such context, an agent must infer usage based on 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.

serp_youtube_video_comments_live_advancedD

provides data on the video comments you specify

ParametersJSON Schema
NameRequiredDescriptionDefault
video_idYesID of the video
location_nameYesfull 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"
language_codeYessearch engine language code (e.g., 'en')
deviceNodevice type optional field can take the values:desktop, mobile default value: desktopdesktop
osNodevice 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: androidwindows
depthNoparsing depth, number of results in SERP, max value: 700

TDQS

D1.9/5.0
Behavior1/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It fails to do so—it doesn't indicate whether this is a read-only or mutating operation, what permissions might be required, rate limits, or what the output format looks like (e.g., JSON structure, pagination). The term 'provides data' is too generic, offering no insight into the tool's behavior beyond the basic action implied by the name.

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

Conciseness3/5

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

The description is a single, short sentence ('provides data on the video comments you specify'), which is concise but under-specified—it lacks necessary detail to be truly helpful. While it avoids verbosity, it doesn't front-load critical information or structure content effectively, leaving the agent with insufficient context. It's not wasteful, but it's too minimal to earn a higher score.

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

Completeness2/5

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

Given the complexity (6 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain what the tool returns (e.g., comment data format, error handling), behavioral aspects, or usage context. While the schema covers parameters well, the description fails to provide a holistic understanding, making it inadequate for a tool that likely involves data retrieval from an external service like YouTube SERP.

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

Parameters3/5

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

The schema description coverage is 100%, meaning all parameters are well-documented in the schema itself (e.g., 'video_id', 'location_name' with format details, 'depth' with max value). The description adds no additional semantic context beyond what's in the schema, such as explaining why these parameters matter or how they affect the results. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, but the description doesn't compensate or enhance understanding.

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

Purpose2/5

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

The description 'provides data on the video comments you specify' is vague and tautological—it essentially restates the tool name 'serp_youtube_video_comments_live_advanced' without specifying what kind of data (e.g., comment text, metadata, sentiment) or how it's retrieved. It lacks a clear verb-resource distinction and doesn't differentiate from sibling tools like 'serp_youtube_video_info_live_advanced' or 'serp_youtube_video_subtitles_live_advanced', which could also provide video-related data.

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

Usage Guidelines1/5

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 prerequisites, context for use (e.g., for SEO analysis, sentiment tracking), or exclusions. Given the many sibling tools (e.g., 'serp_youtube_organic_live_advanced', 'serp_youtube_video_info_live_advanced'), the absence of comparative guidance is a significant gap, leaving the agent to guess 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.

serp_youtube_video_info_live_advancedD

provides data on the video you specify

ParametersJSON Schema
NameRequiredDescriptionDefault
video_idYesID of the video
location_nameYesfull 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"
language_codeYessearch engine language code (e.g., 'en')
deviceNodevice type optional field can take the values:desktop, mobile default value: desktopdesktop
osNodevice 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: androidwindows

TDQS

D1.8/5.0
Behavior1/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It only states it 'provides data' without specifying if it's a read-only operation, requires authentication, has rate limits, or what the output format might be. This leaves critical behavioral aspects undefined, failing to compensate for the lack of annotations.

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

Conciseness2/5

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

While concise with a single sentence, it is under-specified rather than efficiently structured. The description fails to front-load essential information (e.g., what data, from where) and wastes its brevity on a vague statement that doesn't help the agent understand the tool's purpose or usage.

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

Completeness2/5

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

Given the complexity (5 parameters, no annotations, no output schema), the description is incomplete. It lacks details on the tool's behavior, output format, and differentiation from siblings. Without annotations or output schema, the description should provide more context to guide the agent effectively, but it does not.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters (video_id, location_name, etc.) with detailed descriptions. The description adds no additional meaning beyond the schema, such as explaining why these parameters are needed or how they affect results, but the high schema coverage justifies a baseline score of 3.

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

Purpose2/5

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

The description 'provides data on the video you specify' is vague and tautological—it essentially restates the tool name without specifying what type of data (e.g., metadata, analytics, rankings) or from what source (e.g., YouTube SERP). It fails to distinguish this tool from sibling tools like 'serp_youtube_organic_live_advanced' or 'serp_youtube_video_comments_live_advanced', leaving the agent unclear about its unique function.

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

Usage Guidelines1/5

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., 'serp_youtube_organic_live_advanced', 'serp_youtube_video_comments_live_advanced'), there is no indication of context, prerequisites, or exclusions, making it impossible for an agent to choose appropriately without external knowledge.

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_advancedD

provides data on the video subtitles you specify

ParametersJSON Schema
NameRequiredDescriptionDefault
video_idYesID of the video
location_nameYesfull 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"
language_codeYessearch engine language code (e.g., 'en')
subtitles_languageNolanguage code of original text (e.g., 'en')
subtitles_translate_languageNolanguage code of translated text (e.g., 'en')
deviceNodevice type optional field can take the values:desktop, mobile default value: desktopdesktop
osNodevice 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: androidwindows

TDQS

D1.7/5.0
Behavior1/5

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

With no annotations provided, the description carries full burden but fails to disclose any behavioral traits. It doesn't mention whether this is a read-only operation, if it requires authentication, rate limits, or what the output looks like (e.g., structured data, raw text). The phrase 'provides data' is too generic to infer behavior.

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

Conciseness2/5

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

While concise (one sentence), the description is under-specified and fails to front-load critical information. It doesn't earn its place by adding value; instead, it's overly brief for a complex tool, making it inefficient for agent understanding.

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

Completeness1/5

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

Given the tool's complexity (7 parameters, no annotations, no output schema), the description is severely incomplete. It doesn't explain the tool's purpose, usage, behavior, or output, leaving major gaps that hinder effective agent invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all 7 parameters with detailed descriptions and constraints. The description adds no additional meaning beyond the schema, but since coverage is high, the baseline score of 3 applies—adequate but no extra value.

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

Purpose2/5

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

The description 'provides data on the video subtitles you specify' is vague and tautological—it essentially restates the tool name without specifying what kind of data (e.g., transcript text, timing, availability) or how it's retrieved. It lacks a clear verb-resource combination and doesn't distinguish from sibling tools like 'serp_youtube_video_info_live_advanced' or 'serp_youtube_organic_live_advanced'.

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

Usage Guidelines1/5

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. The description offers no context, prerequisites, or exclusions, leaving the agent to guess based on parameters alone. This is inadequate for a tool with 7 parameters and no annotations.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 17 tool updatesv1.0.2
    • Addedkw_data_dfs_trends_demography
    • Addedkw_data_dfs_trends_explore
    • Addedkw_data_dfs_trends_subregion_interests
    • Addedkw_data_google_ads_locations
    • Addedkw_data_google_ads_search_volume
    • Addedkw_data_google_trends_categories
    • Addedkw_data_google_trends_explore
    • Addedon_page_content_parsing
    • Addedon_page_instant_pages
    • Addedon_page_lighthouse
    • Addedserp_locations
    • Addedserp_organic_live_advanced
    • Addedserp_youtube_locations
    • Addedserp_youtube_organic_live_advanced
    • Addedserp_youtube_video_comments_live_advanced
    • Addedserp_youtube_video_info_live_advanced
    • Addedserp_youtube_video_subtitles_live_advanced
  2. 17 tool updatesv1.0.0
    • Removedkw_data_dfs_trends_demography
    • Removedkw_data_dfs_trends_explore
    • Removedkw_data_dfs_trends_subregion_interests
    • Removedkw_data_google_ads_locations
    • Removedkw_data_google_ads_search_volume
    • Removedkw_data_google_trends_categories
    • Removedkw_data_google_trends_explore
    • Removedon_page_content_parsing
    • Removedon_page_instant_pages
    • Removedon_page_lighthouse
    • Removedserp_locations
    • Removedserp_organic_live_advanced
    • Removedserp_youtube_locations
    • Removedserp_youtube_organic_live_advanced
    • Removedserp_youtube_video_comments_live_advanced
    • Removedserp_youtube_video_info_live_advanced
    • Removedserp_youtube_video_subtitles_live_advanced
  3. 15 tool updatesv1.0.1
    • Removedkeywords_data_dataforseo_trends_demography
    • Removedkeywords_data_dataforseo_trends_explore
    • Removedkeywords_data_dataforseo_trends_subregion_interests
    • Removedkeywords_data_google_ads_search_volume
    • Removedkeywords_data_google_trends_categories
    • Removedkeywords_data_google_trends_explore
    • Addedkw_data_dfs_trends_demography
    • Addedkw_data_dfs_trends_explore
    • Addedkw_data_dfs_trends_subregion_interests
    • Addedkw_data_google_ads_locations
    • Addedkw_data_google_ads_search_volume
    • Addedkw_data_google_trends_categories
    • Addedkw_data_google_trends_explore
    • Changedon_page_content_parsing1 field changed
      • removedInput schema / properties / custom_js
        Removed value: -{
        -  "description": "Custom JavaScript code to execute",
        -  "type": "string"
        -}
    • Changedon_page_lighthouse1 field changed
      • removedInput schema / properties / custom_js
        Removed value: -{
        -  "description": "Custom JavaScript code to execute",
        -  "type": "string"
        -}
  4. 52 tool updates
    • Removedai_optimization_keyword_data_locations_and_languages
    • Removedai_optimization_keyword_data_search_volume
    • Removedbacklinks_anchors
    • Removedbacklinks_available_filters
    • Removedbacklinks_backlinks
    • Removedbacklinks_bulk_backlinks
    • Removedbacklinks_bulk_new_lost_backlinks
    • Removedbacklinks_bulk_new_lost_referring_domains
    • Removedbacklinks_bulk_pages_summary
    • Removedbacklinks_bulk_ranks
    • Removedbacklinks_bulk_referring_domains
    • Removedbacklinks_bulk_spam_score
    • Removedbacklinks_competitors
    • Removedbacklinks_domain_intersection
    • Removedbacklinks_domain_pages
    • Removedbacklinks_domain_pages_summary
    • Removedbacklinks_page_intersection
    • Removedbacklinks_referring_domains
    • Removedbacklinks_referring_networks
    • Removedbacklinks_summary
    • Removedbacklinks_timeseries_new_lost_summary
    • Removedbacklinks_timeseries_summary
    • Removedbusiness_data_business_listings_search
    • Removedcontent_analysis_phrase_trends
    • Removedcontent_analysis_search
    • Removedcontent_analysis_summary
    • Removeddataforseo_labs_available_filters
    • Removeddataforseo_labs_bulk_keyword_difficulty
    • Removeddataforseo_labs_bulk_traffic_estimation
    • Removeddataforseo_labs_google_competitors_domain
    • Removeddataforseo_labs_google_domain_intersection
    • Removeddataforseo_labs_google_domain_rank_overview
    • Removeddataforseo_labs_google_historical_keyword_data
    • Removeddataforseo_labs_google_historical_rank_overview
    • Removeddataforseo_labs_google_historical_serp
    • Removeddataforseo_labs_google_keyword_ideas
    • Removeddataforseo_labs_google_keyword_overview
    • Removeddataforseo_labs_google_keyword_suggestions
    • Removeddataforseo_labs_google_keywords_for_site
    • Removeddataforseo_labs_google_page_intersection
    • Removeddataforseo_labs_google_ranked_keywords
    • Removeddataforseo_labs_google_related_keywords
    • Removeddataforseo_labs_google_serp_competitors
    • Removeddataforseo_labs_google_subdomains
    • Removeddataforseo_labs_google_top_searches
    • Removeddataforseo_labs_search_intent
    • Removeddomain_analytics_technologies_available_filters
    • Removeddomain_analytics_technologies_domain_technologies
    • Removeddomain_analytics_whois_available_filters
    • Removeddomain_analytics_whois_overview
    • Changedkeywords_data_google_trends_categories1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Addedon_page_lighthouse
  5. 65 tool updates
    • First observedai_optimization_keyword_data_locations_and_languages
    • First observedai_optimization_keyword_data_search_volume
    • First observedbacklinks_anchors
    • First observedbacklinks_available_filters
    • First observedbacklinks_backlinks
    • First observedbacklinks_bulk_backlinks
    • First observedbacklinks_bulk_new_lost_backlinks
    • First observedbacklinks_bulk_new_lost_referring_domains
    • First observedbacklinks_bulk_pages_summary
    • First observedbacklinks_bulk_ranks
    • First observedbacklinks_bulk_referring_domains
    • First observedbacklinks_bulk_spam_score
    • First observedbacklinks_competitors
    • First observedbacklinks_domain_intersection
    • First observedbacklinks_domain_pages
    • First observedbacklinks_domain_pages_summary
    • First observedbacklinks_page_intersection
    • First observedbacklinks_referring_domains
    • First observedbacklinks_referring_networks
    • First observedbacklinks_summary
    • First observedbacklinks_timeseries_new_lost_summary
    • First observedbacklinks_timeseries_summary
    • First observedbusiness_data_business_listings_search
    • First observedcontent_analysis_phrase_trends
    • First observedcontent_analysis_search
    • First observedcontent_analysis_summary
    • First observeddataforseo_labs_available_filters
    • First observeddataforseo_labs_bulk_keyword_difficulty
    • First observeddataforseo_labs_bulk_traffic_estimation
    • First observeddataforseo_labs_google_competitors_domain
    • First observeddataforseo_labs_google_domain_intersection
    • First observeddataforseo_labs_google_domain_rank_overview
    • First observeddataforseo_labs_google_historical_keyword_data
    • First observeddataforseo_labs_google_historical_rank_overview
    • First observeddataforseo_labs_google_historical_serp
    • First observeddataforseo_labs_google_keyword_ideas
    • First observeddataforseo_labs_google_keyword_overview
    • First observeddataforseo_labs_google_keyword_suggestions
    • First observeddataforseo_labs_google_keywords_for_site
    • First observeddataforseo_labs_google_page_intersection
    • First observeddataforseo_labs_google_ranked_keywords
    • First observeddataforseo_labs_google_related_keywords
    • First observeddataforseo_labs_google_serp_competitors
    • First observeddataforseo_labs_google_subdomains
    • First observeddataforseo_labs_google_top_searches
    • First observeddataforseo_labs_search_intent
    • First observeddomain_analytics_technologies_available_filters
    • First observeddomain_analytics_technologies_domain_technologies
    • First observeddomain_analytics_whois_available_filters
    • First observeddomain_analytics_whois_overview
    • First observedkeywords_data_dataforseo_trends_demography
    • First observedkeywords_data_dataforseo_trends_explore
    • First observedkeywords_data_dataforseo_trends_subregion_interests
    • First observedkeywords_data_google_ads_search_volume
    • First observedkeywords_data_google_trends_categories
    • First observedkeywords_data_google_trends_explore
    • First observedon_page_content_parsing
    • First observedon_page_instant_pages
    • First observedserp_locations
    • First observedserp_organic_live_advanced
    • First observedserp_youtube_locations
    • First observedserp_youtube_organic_live_advanced
    • First observedserp_youtube_video_comments_live_advanced
    • First observedserp_youtube_video_info_live_advanced
    • First observedserp_youtube_video_subtitles_live_advanced

TDQS

B3/5.0

Scored across 17 tools

Disambiguation4/5

Most tools have distinct purposes across keyword data, on-page analysis, and SERP categories, with clear separation between Google Ads, Google Trends, and YouTube-specific tools. However, some overlap exists between kw_data_dfs_trends_explore and kw_data_google_trends_explore, both providing keyword popularity data from different sources, which could cause minor confusion.

Naming Consistency4/5

The naming follows a consistent snake_case pattern with clear prefixes (kw_data_, on_page_, serp_) that group related tools logically. Minor inconsistencies include variations like 'availible' vs 'available' in descriptions and some utility tools having simpler names (e.g., serp_locations), but the overall structure is predictable and readable.

Tool Count4/5

With 17 tools, the count is slightly high but reasonable for a comprehensive SEO data server covering keyword trends, on-page analysis, and SERP data across multiple platforms. It avoids being overwhelming by grouping tools into clear categories, though it borders on the upper limit of typical scoping.

Completeness5/5

The toolset provides thorough coverage for SEO analysis, including keyword research (volume, trends, demographics), on-page optimization (content parsing, Lighthouse metrics), and SERP data (organic results, YouTube video details, comments, subtitles). Utility tools for locations ensure no dead ends, and the surface supports end-to-end workflows without obvious gaps.

Maintenance

ActivityMaintained
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A stdio-based server that enables interaction with the DataForSEO API through the Model Context Protocol, allowing users to fetch SEO data including search results, keywords data, backlinks, on-page analysis, and more.
    13 npm
    7
    MIT
  • -
    license
    C
    quality
    Not graded
    maintenance
    A Model Context Protocol server that provides AI assistants with access to FetchSERP API capabilities for SEO analysis, SERP data, web scraping, and keyword research.
    23
    19 npm
    19
    -
  • -
    license
    C
    quality
    Not graded
    maintenance
    A Model Context Protocol server that exposes Haloscan SEO API functionality, allowing users to access keyword insights, domain analysis, and competitor research through Claude for Desktop and other MCP-compatible clients.
    32
    87 npm
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server that provides comprehensive SEO analysis tools with actionable fix instructions for AI assistants like Claude Code and Claude Desktop.
    MIT