SerpMCP
SerpMCP
Ein Model Context Protocol (MCP)-Server für die Google-Suche unter Verwendung der SERP API über die AceDataCloud API.
Führen Sie Google-Suchen durch und erhalten Sie strukturierte Ergebnisse direkt von Claude, VS Code oder einem beliebigen MCP-kompatiblen Client.
Funktionen
Websuche - Reguläre Google-Websuche mit strukturierten Ergebnissen
Bildersuche - Suche nach Bildern mit URLs und Vorschaubildern
Nachrichtensuche - Erhalten Sie aktuelle Nachrichtenartikel zu jedem Thema
Videosuche - Finden Sie Videos von YouTube und anderen Quellen
Ortssuche - Suche nach lokalen Unternehmen und Orten
Kartensuche - Finden Sie Standorte und geografische Informationen
Knowledge Graph - Erhalten Sie strukturierte Entitätsinformationen
Lokalisierung - Unterstützung für mehrere Länder und Sprachen
Zeitfilterung - Filtern Sie Ergebnisse nach Zeiträumen
Related MCP server: SerpApi MCP Server
Tool-Referenz
Tool | Beschreibung |
| Durchsuchen Sie Google und erhalten Sie strukturierte Ergebnisse über die SERP-API. |
| Durchsuchen Sie Google Bilder und erhalten Sie Bild-Ergebnisse. |
| Durchsuchen Sie Google News und erhalten Sie Nachrichtenartikel-Ergebnisse. |
| Durchsuchen Sie Google Videos und erhalten Sie Video-Ergebnisse. |
| Durchsuchen Sie Google nach lokalen Orten und Unternehmen. |
| Durchsuchen Sie Google Maps nach Standorten. |
| Listen Sie alle verfügbaren Google-Suchtypen auf. |
| Listen Sie häufig verwendete Ländercodes für die Google-Suche auf. |
| Listen Sie häufig verwendete Sprachcodes für die Google-Suche auf. |
| Listen Sie verfügbare Zeitbereichsfilter für die Google-Suche auf. |
| Erhalten Sie eine umfassende Anleitung zur Verwendung der Google SERP-Tools. |
Schnellstart
1. Holen Sie sich Ihren API-Token
Registrieren Sie sich auf der AceDataCloud-Plattform
Gehen Sie zur API-Dokumentationsseite
Klicken Sie auf "Acquire", um Ihren API-Token zu erhalten
Kopieren Sie den Token für die untenstehende Verwendung
2. Verwenden Sie den gehosteten Server (Empfohlen)
AceDataCloud hostet einen verwalteten MCP-Server — keine lokale Installation erforderlich.
Endpunkt: https://serp.mcp.acedata.cloud/mcp
Alle Anfragen erfordern einen Bearer-Token. Verwenden Sie den API-Token aus Schritt 1.
Claude.ai
Verbinden Sie sich direkt auf Claude.ai mit OAuth — kein API-Token erforderlich:
Gehen Sie zu Claude.ai Einstellungen → Integrationen → Mehr hinzufügen
Geben Sie die Server-URL ein:
https://serp.mcp.acedata.cloud/mcpSchließen Sie den OAuth-Anmeldevorgang ab
Beginnen Sie mit der Verwendung der Tools in Ihrer Konversation
Claude Desktop
Fügen Sie dies zu Ihrer Konfiguration hinzu (~/Library/Application Support/Claude/claude_desktop_config.json unter macOS):
{
"mcpServers": {
"serp": {
"type": "streamable-http",
"url": "https://serp.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}Cursor / Windsurf
Fügen Sie dies zu Ihrer MCP-Konfiguration hinzu (.cursor/mcp.json oder .windsurf/mcp.json):
{
"mcpServers": {
"serp": {
"type": "streamable-http",
"url": "https://serp.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}VS Code (Copilot)
Fügen Sie dies zu Ihrer VS Code MCP-Konfiguration hinzu (.vscode/mcp.json):
{
"servers": {
"serp": {
"type": "streamable-http",
"url": "https://serp.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}Oder installieren Sie die Ace Data Cloud MCP-Erweiterung für VS Code, die alle 15 MCP-Server mit einer Ein-Klick-Einrichtung bündelt.
JetBrains IDEs
Gehen Sie zu Einstellungen → Tools → AI Assistant → Model Context Protocol (MCP)
Klicken Sie auf Hinzufügen → HTTP
Einfügen:
{
"mcpServers": {
"serp": {
"url": "https://serp.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}Claude Code
Claude Code unterstützt MCP-Server nativ:
claude mcp add serp --transport http https://serp.mcp.acedata.cloud/mcp \
-h "Authorization: Bearer YOUR_API_TOKEN"Oder fügen Sie es zu Ihrem Projekt .mcp.json hinzu:
{
"mcpServers": {
"serp": {
"type": "streamable-http",
"url": "https://serp.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}Cline
Fügen Sie dies zu den MCP-Einstellungen von Cline hinzu (.cline/mcp_settings.json):
{
"mcpServers": {
"serp": {
"type": "streamable-http",
"url": "https://serp.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}Amazon Q Developer
Fügen Sie dies zu Ihrer MCP-Konfiguration hinzu:
{
"mcpServers": {
"serp": {
"type": "streamable-http",
"url": "https://serp.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}Roo Code
Fügen Sie dies zu den Roo Code MCP-Einstellungen hinzu:
{
"mcpServers": {
"serp": {
"type": "streamable-http",
"url": "https://serp.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}Continue.dev
Fügen Sie dies zu .continue/config.yaml hinzu:
mcpServers:
- name: serp
type: streamable-http
url: https://serp.mcp.acedata.cloud/mcp
headers:
Authorization: "Bearer YOUR_API_TOKEN"Zed
Fügen Sie dies zu den Einstellungen von Zed hinzu (~/.config/zed/settings.json):
{
"language_models": {
"mcp_servers": {
"serp": {
"url": "https://serp.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}
}cURL-Test
# Health check (no auth required)
curl https://serp.mcp.acedata.cloud/health
# MCP initialize
curl -X POST https://serp.mcp.acedata.cloud/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'3. Oder lokal ausführen (Alternative)
Wenn Sie den Server lieber auf Ihrem eigenen Rechner ausführen möchten:
# Install from PyPI
pip install mcp-serp
# or
uvx mcp-serp
# Set your API token
export ACEDATACLOUD_API_TOKEN="your_token_here"
# Run (stdio mode for Claude Desktop / local clients)
mcp-serp
# Run (HTTP mode for remote access)
mcp-serp --transport http --port 8000Claude Desktop (Lokal)
{
"mcpServers": {
"serp": {
"command": "uvx",
"args": ["mcp-serp"],
"env": {
"ACEDATACLOUD_API_TOKEN": "your_token_here"
}
}
}
}Docker (Selbst-Hosting)
docker pull ghcr.io/acedatacloud/mcp-serp:latest
docker run -p 8000:8000 ghcr.io/acedatacloud/mcp-serp:latestClients verbinden sich mit ihrem eigenen Bearer-Token — der Server extrahiert den Token aus dem Authorization-Header jeder Anfrage.
Verfügbare Tools
Such-Tools
Tool | Beschreibung |
| Flexible Google-Suche mit allen Optionen |
| Suche nach Bildern |
| Suche nach Nachrichtenartikeln |
| Suche nach Videos |
| Suche nach lokalen Orten/Unternehmen |
| Suche nach Kartenstandorten |
Informations-Tools
Tool | Beschreibung |
| Verfügbare Suchtypen auflisten |
| Ländercodes für die Lokalisierung auflisten |
| Sprachcodes für die Lokalisierung auflisten |
| Zeitbereichsfilter-Optionen auflisten |
| Umfassende Nutzungsanleitung abrufen |
Nutzungsbeispiele
Einfache Websuche
User: Search for information about artificial intelligence
Claude: I'll search for information about AI.
[Calls serp_google_search with query="artificial intelligence"]Nachrichtensuche mit Zeitfilter
User: What's the latest news about technology?
Claude: I'll search for recent tech news.
[Calls serp_google_news with query="technology", time_range="qdr:d"]Lokalisierte Suche
User: Find popular restaurants in Tokyo
Claude: I'll search for restaurants in Tokyo.
[Calls serp_google_places with query="popular restaurants Tokyo", country="jp"]Bildersuche
User: Find images of the Northern Lights
Claude: I'll search for aurora borealis images.
[Calls serp_google_images with query="Northern Lights aurora borealis"]Suchparameter
Suchtypen
Typ | Beschreibung |
| Reguläre Websuche (Standard) |
| Bildersuche |
| Nachrichtenartikel |
| Kartenergebnisse |
| Lokale Unternehmen |
| Videoergebnisse |
Zeitbereichsfilter
Code | Zeitraum |
| Letzte Stunde |
| Letzter Tag |
| Letzte Woche |
| Letzter Monat |
Häufige Ländercodes
Code | Land |
| Vereinigte Staaten |
| Vereinigtes Königreich |
| China |
| Japan |
| Deutschland |
| Frankreich |
Häufige Sprachcodes
Code | Sprache |
| Englisch |
| Chinesisch (Vereinfacht) |
| Japanisch |
| Spanisch |
| Französisch |
| Deutsch |
Antwortstruktur
Reguläre Suchergebnisse
knowledge_graph: Entitätsinformationen (Unternehmen, Person, etc.)
answer_box: Direkte Antworten
organic: Reguläre Suchergebnisse mit Titel, Link, Snippet
people_also_ask: Verwandte Fragen
related_searches: Verwandte Suchanfragen
Bildsuchergebnisse
images: Bildergebnisse mit URLs und Vorschaubildern
Nachrichtensuchergebnisse
news: Nachrichtenartikel mit Quelle und Datum
Konfiguration
Umgebungsvariablen
Variable | Beschreibung | Standard |
| API-Token von AceDataCloud | Erforderlich |
| API-Basis-URL |
|
| OAuth-Client-ID (gehosteter Modus) | — |
| Plattform-Basis-URL |
|
| Anfrage-Timeout in Sekunden |
|
| Protokollierungsebene |
|
Befehlszeilenoptionen
mcp-serp --help
Options:
--version Show version
--transport Transport mode: stdio (default) or http
--port Port for HTTP transport (default: 8000)Entwicklung
Entwicklungsumgebung einrichten
# Clone repository
git clone https://github.com/AceDataCloud/SerpMCP.git
cd SerpMCP
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # or `.venv\Scripts\activate` on Windows
# Install with dev dependencies
pip install -e ".[dev,test]"Tests ausführen
# Run unit tests
pytest
# Run with coverage
pytest --cov=core --cov=tools
# Run integration tests (requires API token)
pytest tests/test_integration.py -m integrationCode-Qualität
# Format code
ruff format .
# Lint code
ruff check .
# Type check
mypy core toolsErstellen & Veröffentlichen
# Install build dependencies
pip install -e ".[release]"
# Build package
python -m build
# Upload to PyPI
twine upload dist/*Projektstruktur
SerpMCP/
├── core/ # Core modules
│ ├── __init__.py
│ ├── client.py # HTTP client for SERP API
│ ├── config.py # Configuration management
│ ├── exceptions.py # Custom exceptions
│ └── server.py # MCP server initialization
├── tools/ # MCP tool definitions
│ ├── __init__.py
│ ├── search_tools.py # Search tools
│ └── info_tools.py # Information tools
├── prompts/ # MCP prompt templates
│ └── __init__.py
├── tests/ # Test suite
│ ├── conftest.py
│ ├── test_client.py
│ └── test_config.py
├── deploy/ # Deployment configs
│ └── production/
│ ├── deployment.yaml
│ ├── ingress.yaml
│ └── service.yaml
├── .env.example # Environment template
├── .gitignore
├── CHANGELOG.md
├── Dockerfile # Docker image for HTTP mode
├── docker-compose.yaml # Docker Compose config
├── LICENSE
├── main.py # Entry point
├── pyproject.toml # Project configuration
└── README.mdAPI-Referenz
Dieser Server umschließt die AceDataCloud Google SERP API:
Mitwirken
Beiträge sind willkommen! Bitte:
Forken Sie das Repository
Erstellen Sie einen Feature-Branch (
git checkout -b feature/amazing)Committen Sie Ihre Änderungen (
git commit -m 'Add amazing feature')Pushen Sie auf den Branch (
git push origin feature/amazing)Öffnen Sie einen Pull Request
Lizenz
MIT-Lizenz - siehe LICENSE für Details.
Links
Mit Liebe gemacht von AceDataCloud
Available Tools
11 toolsserp_get_usage_guideAInspect
Get a comprehensive guide for using the Google SERP tools.
Provides detailed information on how to use the SERP search tools
effectively, including parameters, examples, and best practices.
Returns:
Complete usage guide for SERP tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It discloses that the tool returns a guide with detailed information, which is adequate for a read-only informational tool. However, it does not mention any limitations (e.g., output length, rate limits).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the purpose. It uses clear structure (overview, details, return description) without unnecessary words. Minor improvement possible by tightening the second paragraph.
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 zero parameters and the presence of an output schema, the description covers the essential purpose and content of the tool. It is complete enough for an agent to understand when to invoke this 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?
The tool has no parameters, meeting the baseline of 4. The description adds value by describing the content of the output (parameters, examples, best practices), which goes beyond what the empty schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool provides a comprehensive guide for using Google SERP tools, including parameters, examples, and best practices. This distinctly differentiates it from sibling tools that perform actual searches or list data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this guide should be consulted before using other SERP tools, but it does not explicitly state when to use it vs. alternatives. The context is clear, but exclusions or when-not-to-use guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
serp_google_imagesCInspect
Search Google Images and get image results.
Performs a Google Image search and returns structured image results.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination (default: 1). | |
| query | Yes | The search query string for image search. Required. | |
| number | No | Number of results per page (default: 10). Note: More than 10 results may incur additional credits. | |
| country | No | Country code for localized results (e.g., 'us', 'cn', 'uk'). Default is 'us'. | |
| language | No | Language code for results (e.g., 'en', 'zh-cn', 'fr'). Default is 'en'. | |
| image_size | No | Image size filter for image search. Options: large, medium, icon, 2mp, 4mp, 6mp, 8mp, 10mp, 12mp, 15mp, 20mp, 40mp, 70mp. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 only says 'returns structured image results,' which is a basic outcome but does not mention pagination behavior, credit implications, or any quirks such as rate limits or result metadata format. The description adds minimal value beyond the tool's name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences, front-loaded with the main verb and resource. It is efficient and has no redundant filler. However, it is somewhat tautological ('Search Google Images and get image results' restates the tool name), but for conciseness this is well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema and fully documented parameters, the description is incomplete for a tool with six parameters and no annotations. It lacks guidance on typical use cases, interaction with filters, pagination, or credit costs (though schema mentions credits). The description is too sparse to provide the agent with a complete behavioral picture.
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 all six parameters are already documented with meanings (e.g., 'country' for localized results, 'image_size' for filtering). The description itself adds no parameter details, so the baseline of 3 is appropriate. The schema does the heavy lifting, and no additional value is contributed by the prose 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 states 'Search Google Images and get image results' and 'Performs a Google Image search and returns structured image results.' This clearly identifies the tool's function (searching images) and differentiates it from sibling tools like serp_google_search (web search) and serp_google_news. It could be more explicit about the 'image-specific' nature, but the resource and verb are clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention that this is for image results specifically, nor does it reference sibling tools or exclusions. The usage context is only implied by the tool name and generic description, leaving the agent to infer when to choose this over other search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
serp_google_mapsBInspect
Search Google Maps for locations.
Performs a Google Maps search and returns structured map results.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination (default: 1). | |
| query | Yes | The search query string for maps/location search. Required. | |
| number | No | Number of results per page (default: 10). Note: More than 10 results may incur additional credits. | |
| country | No | Country code for localized results (e.g., 'us', 'cn', 'uk'). Default is 'us'. | |
| language | No | Language code for results (e.g., 'en', 'zh-cn', 'fr'). Default is 'en'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior. It only mentions 'returns structured map results' but fails to mention pagination, rate limits, cost implications, or any side effects. The schema notes that more than 10 results may incur additional credits, but this is not reflected in the description.
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 at two sentences, front-loaded with the main action. The second sentence adds clarity about output format but is somewhat redundant with the first. Overall, it is well-structured and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, output schema), the description is adequate for basic understanding but lacks usage context and differentiation from siblings. It also omits behavioral details like pagination and credit usage that would help an agent select and invoke the tool correctly without relying solely on the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions, so the description adds no value beyond the schema. The description does not explain how parameters like country or language affect results, but the schema already handles this.
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 with a specific verb and resource: 'Search Google Maps for locations.' This distinguishes it from sibling tools like google_search and google_images, which target other result types.
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?
Usage is implied through the description ('Search Google Maps for locations'), but there is no explicit guidance on when to use this tool versus alternatives such as google_places or google_search. No use cases or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
serp_google_newsBInspect
Search Google News and get news article results.
Performs a Google News search and returns structured news results.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination (default: 1). | |
| query | Yes | The search query string for news search. Required. | |
| number | No | Number of results per page (default: 10). Note: More than 10 results may incur additional credits. | |
| country | No | Country code for localized results (e.g., 'us', 'cn', 'uk'). Default is 'us'. | |
| language | No | Language code for results (e.g., 'en', 'zh-cn', 'fr'). Default is 'en'. | |
| time_range | No | Time filter for results. Options: 'h'/'qdr:h' (past hour), 'd'/'qdr:d' (past day), 'w'/'qdr:w' (past week), 'm'/'qdr:m' (past month), 'y'/'qdr:y' (past year), or None for no time restriction (default). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 transparency. It only adds that results are 'structured news results,' which is a minimal behavioral hint. It does not disclose pagination behavior, credit implications, default country/language behavior, or any side effects, leaving a significant gap for a tool with no annotation support.
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 short sentences and front-loaded with the core purpose. However, the second sentence ('Performs a Google News search...') largely restates the first, making it slightly redundant. It is still concise and easy to scan, but not zero-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?
Despite having six parameters and several sibling search tools, the description is under-specified. It omits mention of localization options (country/language), time range filtering, and any nuances of Google News vs. general web search. The output schema exists, but the narrative context is minimal and does not help the agent understand when or how to fully leverage the 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?
The input schema provides descriptions for all six parameters, covering meaning, defaults, and constraints (e.g., 'number' notes additional credits beyond 10). Since schema_description_coverage is 100%, the description does not need to compensate, and it adds no extra parameter information beyond restating the tool's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool performs a Google News search and returns news article results, specifying both the verb ('search') and the resource ('Google News'). This clearly distinguishes it from sibling tools like serp_google_search or serp_google_images, even though the two sentences are slightly redundant.
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 usage context is implied by the tool name and description—use for Google News searches—but there is no explicit guidance on when to choose this over sibling tools or any exclusions. No alternatives are mentioned, leaving the agent to infer the use case 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_google_placesCInspect
Search Google for local places and businesses.
Performs a Google Places search and returns structured place results.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination (default: 1). | |
| query | Yes | The search query string for local places/businesses search. Required. | |
| number | No | Number of results per page (default: 10). Note: More than 10 results may incur additional credits. | |
| country | No | Country code for localized results (e.g., 'us', 'cn', 'uk'). Default is 'us'. | |
| language | No | Language code for results (e.g., 'en', 'zh-cn', 'fr'). Default is 'en'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only mentions that it 'returns structured place results,' but does not disclose pagination behavior, default country/language, credit implications, or any other operational characteristics. Minimal value beyond the function itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, with the main action front-loaded in the first sentence. The second sentence is somewhat redundant with the first, but the overall length is appropriate and there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 params, required query, no annotations) and the existence of sibling tools like serp_google_maps, the description is incomplete. It lacks usage guidance and behavioral details, though the output schema presumably covers return values. The description alone does not provide enough context for an agent to choose this 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?
Schema coverage is 100%, as all five parameters have descriptions in the input schema. The tool description itself adds no parameter-level detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Search') and resource ('local places and businesses'), and notes it returns structured place results. This distinguishes it from general web search or image search, though it does not explicitly compare to the similar serp_google_maps tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives like serp_google_search or serp_google_maps. The description only states what it does, without 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.
serp_google_searchBInspect
Search Google and get structured results using the SERP API.
Performs a Google search and returns the complete JSON response from the API,
preserving all available fields and data.
Args:
query: The search query string. Required.
search_type: Type of search to perform. Options:
- "search": Regular web search (default)
- "images": Image search
- "news": News articles
- "maps": Map results
- "places": Local business/place results
- "videos": Video results
country: Country code for localized results (e.g., "us", "cn", "uk").
Default is "us".
language: Language code for results (e.g., "en", "zh-cn", "fr").
Default is "en".
time_range: Time filter for results. Options:
- "qdr:h": Past hour
- "qdr:d": Past day
- "qdr:w": Past week
- "qdr:m": Past month
- None: No time restriction (default)
number: Number of results per page (default: 10).
Note: More than 10 results may incur additional credits.
page: Page number for pagination (default: 1).
Returns:
Complete JSON response from the SERP API containing all available data.
Example:
serp_google_search(query="artificial intelligence", search_type="news")
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination (default: 1). | |
| query | Yes | The search query string. Required. | |
| number | No | Number of results per page (default: 10). Note: More than 10 results may incur additional credits. | |
| country | No | Country code for localized results (e.g., 'us', 'cn', 'uk'). Default is 'us'. | |
| language | No | Language code for results (e.g., 'en', 'zh-cn', 'fr'). Default is 'en'. | |
| image_size | No | Image size filter. Only valid when search_type is 'images'. Options: large, medium, icon, 2mp, 4mp, 6mp, 8mp, 10mp, 12mp, 15mp, 20mp, 40mp, 70mp. | |
| time_range | No | Time filter for results. Options: 'h'/'qdr:h' (past hour), 'd'/'qdr:d' (past day), 'w'/'qdr:w' (past week), 'm'/'qdr:m' (past month), 'y'/'qdr:y' (past year), or None for no time restriction (default). | |
| search_type | No | Type of search to perform. Options: 'search' (regular web search, default), 'images' (image search), 'news' (news articles), 'maps' (map results), 'places' (local business/place results), 'videos' (video results). | search |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that it returns the complete JSON response preserving all fields and warns about additional credits for number >10. However, it does not explicitly state read-only behavior, rate limits, or error handling. This is adequate but not comprehensive for an unannotated 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 well-organized with Args, Returns, and Example sections, making it easy to scan. However, it redundantly repeats the schema's parameter descriptions, extending the length without adding much new information. The example is useful, but the duplication lowers the efficiency.
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, full schema coverage, and an output schema), the description covers all essential aspects: purpose, parameters, return format, and an example. The only notable omission is the lack of guidance on sibling tools, but the description is otherwise complete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% description coverage for all 8 parameters. The tool description largely duplicates these descriptions, but adds a concrete example and a credit warning for the 'number' parameter. This adds marginal value beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search Google and get structured results using the SERP API' with a specific verb and resource. It also enumerates search types (web, images, news, etc.), distinguishing it from generic API tools. However, it does not explicitly differentiate from the specialized sibling tools like serp_google_images or serp_google_news, so it misses the full 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 the specialized sibling tools (serp_google_images, serp_google_news, etc.). It implies generality through the search_type parameter but does not mention alternatives, exclusions, or when to choose a sibling. This lack of comparative guidance leaves 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_google_videosBInspect
Search Google Videos and get video results.
Performs a Google Video search and returns structured video results.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination (default: 1). | |
| query | Yes | The search query string for video search. Required. | |
| number | No | Number of results per page (default: 10). Note: More than 10 results may incur additional credits. | |
| country | No | Country code for localized results (e.g., 'us', 'cn', 'uk'). Default is 'us'. | |
| language | No | Language code for results (e.g., 'en', 'zh-cn', 'fr'). Default is 'en'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 only says 'returns structured video results,' which is minimal and does not disclose behavioral traits such as pagination behavior, potential rate limits, or any caveats about result content. This falls short for a search tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, but the second sentence largely restates the first ('Performs a Google Video search and returns structured video results' vs 'Search Google Videos and get video results'). This redundancy means it is not maximally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with a comprehensive input schema and an output schema indicated, the description covers the core purpose and return type. It could add usage context, but the structured fields already provide parameter and result details, making it adequate overall.
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% coverage with descriptions for all five parameters (query, page, number, country, language). The description adds no extra parameter meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a Google Video search and returns structured video results. The verb 'search' and resource 'Google Videos' are specific, and it distinguishes from sibling tools like serp_google_images or serp_google_news.
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?
Usage is implied: the tool is for searching Google Videos. However, it does not explicitly mention when to prefer this over alternatives or provide any exclusions. The context signals list sibling search tools, but the description offers no comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
serp_list_countriesAInspect
List commonly used country codes for Google search.
Shows common country codes that can be used to localize search results.
Returns:
Table of country codes and their countries.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but the description honestly states that the tool returns a table of country codes, implying a read-only operation. It is straightforward and does not hide any behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loads the purpose, and includes a return description. Every sentence is relevant and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and an output schema, the description is largely complete. It could mention the output format or that it lists only 'common' codes, but overall it suffices for the simple 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?
The tool has zero parameters, so the description cannot add meaning beyond the schema. Per guidelines, this is a baseline of 4.
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 verb ('list'/'shows') and resource ('country codes for Google search'), and it is distinct from sibling tools that list other types (languages, search types, time ranges).
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?
While the purpose is clear, the description provides no explicit guidance on when to use this tool over its siblings or when not to use it. The usage context is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
serp_list_languagesAInspect
List commonly used language codes for Google search.
Shows common language codes that can be used to get results in specific languages.
Returns:
Table of language codes and their languages.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description only states that it returns a table of language codes and languages. It omits potential behavioral traits such as whether the list is exhaustive, if it requires authentication, or any rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with only two short sentences and a returns line, conveying the purpose and output without any unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and an output schema, the description covers the essential information: what the tool does and what it returns. It is self-contained and clear, though it could briefly address when to use it among sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so schema coverage is 100%. The description adds no parameter information, but this is acceptable as the baseline for zero parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists commonly used language codes for Google search, specifying the verb and resource. It differentiates from sibling listing tools like serp_list_countries by focusing on languages, but does not explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing language codes for search localization, but it lacks explicit guidance on when to use this tool versus alternatives like serp_list_countries or serp_list_time_ranges.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
serp_list_search_typesAInspect
List all available Google search types.
Shows all available search types and their use cases.
Use this to understand which search type to use for your query.
Returns:
Table of all search types with descriptions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description mentions it returns a table of search types with descriptions, which is adequate. It does not disclose potential side effects or permissions, but given the read-only nature, it is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences, clearly stating the action, purpose, and return value. It is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and includes an output schema, the description is complete. It explains the purpose, usage context, and output format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters and the input schema has 100% coverage. The description does not need to add parameter information; a baseline of 4 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 lists all available Google search types with their use cases. It distinguishes itself from sibling tools that perform specific searches by serving as a preliminary reference.
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 advises using this tool to understand which search type to use, implying it is a pre-step to other search tools. It does not explicitly state when not to use, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
serp_list_time_rangesAInspect
List available time range filters for Google search.
Shows all time range options that can be used to filter results by date.
Returns:
Table of time range codes and their meanings.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It discloses that the tool returns a table of codes and meanings, and the verb 'List' implies a read-only operation. However, it lacks details on whether the list is static or dynamic, or if any authentication is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the key action, and contains no superfluous words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, has output schema), the description is complete. It states the purpose, the scope, and the return format, which is sufficient for an agent to select and invoke the tool correctly.
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 no parameters, and schema description coverage is 100% implicitly. The description does not need to add parameter details. The baseline for 0 parameters is 4, and the description meets that 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 it lists available time range filters for Google search, with a specific verb 'List' and a well-defined resource. It distinguishes itself from sibling tools like serp_google_search and serp_list_countries by focusing on time range options.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing time range filters, but does not explicitly state when to use this tool versus alternatives, such as before invoking serp_google_search. No when-not or exclusion guidance is provided.
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.
6 tool updates
v0.1.49- Changed
serp_google_images8 fields changed- changed
Input schema / properties / country / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / image_sizeAdded value: +{ + "anyOf": [ + { + "enum": [ + "large", + "medium", + "icon", + "2mp", + "4mp", + "6mp", + "8mp", + "10mp", + "12mp", + "15mp", + "20mp", + "40mp", + "70mp" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Image size filter for image search. Options: large, medium, icon, 2mp, 4mp, 6mp, 8mp, 10mp, 12mp, 15mp, 20mp, 40mp, 70mp.", + "title": "Image Size" +} - changed
Input schema / properties / language / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / number / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / page / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } +] - added
Input schema / properties / query / maxLengthAdded value: +2048 - added
Input schema / properties / query / minLengthAdded value: +1 - added
Input schema / properties / query / patternAdded value: +".*\\S.*"
- Changed
serp_google_maps7 fields changed- changed
Input schema / properties / country / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / language / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / number / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / page / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } +] - added
Input schema / properties / query / maxLengthAdded value: +2048 - added
Input schema / properties / query / minLengthAdded value: +1 - added
Input schema / properties / query / patternAdded value: +".*\\S.*"
- Changed
serp_google_news9 fields changed- changed
Input schema / properties / country / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / language / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / number / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / page / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } +] - added
Input schema / properties / query / maxLengthAdded value: +2048 - added
Input schema / properties / query / minLengthAdded value: +1 - added
Input schema / properties / query / patternAdded value: +".*\\S.*" - changed
Input schema / properties / time_range / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "h", + "d", + "w", + "m", + "y", + "qdr:h", + "qdr:d", + "qdr:w", + "qdr:m", + "qdr:y" + ], + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / time_range / descriptionPrevious value: -"Time filter for results. Options: 'qdr:h' (past hour), 'qdr:d' (past day), 'qdr:w' (past week), 'qdr:m' (past month), or None for no time restriction (default)."New value: +"Time filter for results. Options: 'h'/'qdr:h' (past hour), 'd'/'qdr:d' (past day), 'w'/'qdr:w' (past week), 'm'/'qdr:m' (past month), 'y'/'qdr:y' (past year), or None for no time restriction (default)."
- Changed
serp_google_places7 fields changed- changed
Input schema / properties / country / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / language / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / number / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / page / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } +] - added
Input schema / properties / query / maxLengthAdded value: +2048 - added
Input schema / properties / query / minLengthAdded value: +1 - added
Input schema / properties / query / patternAdded value: +".*\\S.*"
- Changed
serp_google_search10 fields changed- changed
Input schema / properties / country / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / image_sizeAdded value: +{ + "anyOf": [ + { + "enum": [ + "large", + "medium", + "icon", + "2mp", + "4mp", + "6mp", + "8mp", + "10mp", + "12mp", + "15mp", + "20mp", + "40mp", + "70mp" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Image size filter. Only valid when search_type is 'images'. Options: large, medium, icon, 2mp, 4mp, 6mp, 8mp, 10mp, 12mp, 15mp, 20mp, 40mp, 70mp.", + "title": "Image Size" +} - changed
Input schema / properties / language / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / number / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / page / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } +] - added
Input schema / properties / query / maxLengthAdded value: +2048 - added
Input schema / properties / query / minLengthAdded value: +1 - added
Input schema / properties / query / patternAdded value: +".*\\S.*" - changed
Input schema / properties / time_range / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "h", + "d", + "w", + "m", + "y", + "qdr:h", + "qdr:d", + "qdr:w", + "qdr:m", + "qdr:y" + ], + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / time_range / descriptionPrevious value: -"Time filter for results. Options: 'qdr:h' (past hour), 'qdr:d' (past day), 'qdr:w' (past week), 'qdr:m' (past month), or None for no time restriction (default)."New value: +"Time filter for results. Options: 'h'/'qdr:h' (past hour), 'd'/'qdr:d' (past day), 'w'/'qdr:w' (past week), 'm'/'qdr:m' (past month), 'y'/'qdr:y' (past year), or None for no time restriction (default)."
- Changed
serp_google_videos7 fields changed- changed
Input schema / properties / country / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / language / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / number / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / page / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 100, + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } +] - added
Input schema / properties / query / maxLengthAdded value: +2048 - added
Input schema / properties / query / minLengthAdded value: +1 - added
Input schema / properties / query / patternAdded value: +".*\\S.*"
11 tool updates
v0.1.46- Added
serp_get_usage_guide - Added
serp_google_images - Added
serp_google_maps - Added
serp_google_news - Added
serp_google_places - Added
serp_google_search - Added
serp_google_videos - Added
serp_list_countries - Added
serp_list_languages - Added
serp_list_search_types - Added
serp_list_time_ranges
11 tool updates
v0.1.45- Removed
serp_get_usage_guide - Removed
serp_google_images - Removed
serp_google_maps - Removed
serp_google_news - Removed
serp_google_places - Removed
serp_google_search - Removed
serp_google_videos - Removed
serp_list_countries - Removed
serp_list_languages - Removed
serp_list_search_types - Removed
serp_list_time_ranges
TDQS
Scored across 11 tools
Most tools are clearly distinct (search types, countries, languages, time ranges, usage guide), but serp_google_search with search_type='images' overlaps with serp_google_images, and similarly for news/videos/places/maps. The generic search tool's search_type parameter makes the dedicated tools somewhat redundant, though the dedicated ones likely return more structured results.
All tools follow a consistent serp_ prefix with verb_noun naming (serp_list_*, serp_google_*, serp_get_*). Minor inconsistency: serp_get_usage_guide uses 'get' while others use 'list' or 'google', but the pattern is still highly predictable.
11 tools is a reasonable count for a SERP API server. However, the dedicated search tools (images, news, videos, places, maps) overlap with the search_type parameter in serp_google_search, so a few could be consolidated without losing functionality.
The server covers the main Google search verticals (web, images, news, videos, places, maps) plus supporting metadata tools (countries, languages, time ranges, search types, usage guide). Missing obvious search types like scholar or shopping, but the core SERP use cases are well covered.
Maintenance
Related MCP Connectors
One MCP server that gives your AI agent search, AI answer, social, ad and lead data.
Live Google Maps business search, review, and photo data for AI agents over MCP.
Your agent needs the Google results page as it actually renders — organic and paid, the AI overview, maps, images, news, jobs and the finance panel — not a scraped guess. **What you can ask for** • "What does the SERP for this keyword look like in Germany, on mobile?" • "Does this query trigger an AI overview, and what does it say?" • "Who is advertising against our brand name?" • "Find local results and the map pack for this phrase." • "Search Google by this image and tell me where else it appears." **How to use it** Point any MCP client at https://mcp.aisa.one/seo-serp/mcp and sign in with OAuth — there is no key to create or paste. 38 tools across Google's surfaces: organic, ads and advertisers, AI mode, autocomplete, images, news, maps and local, events, jobs, datasets, scholar, finance quotes and markets, plus Semrush's organic and paid result sets. **Why this rather than the source** Location and language are parameters, so you can read the page a customer in another country sees. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Read the SERP here, then ask the same agent who links to the winner or how much traffic they get — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/seo-serp-other-engines/mcp for Bing, Yahoo, Baidu, Naver, Seznam and YouTube. https://mcp.aisa.one/seo/mcp for all of it at once — rankings, keywords, backlinks, site health and AI-answer visibility across DataForSEO, Semrush and Ahrefs.
Official SerpApi MCP server for Google, Bing, and other search engines.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn MCP (Model Context Protocol) server that provides Google search capabilities and webpage content analysis tools. This server enables AI models to perform Google searches and analyze webpage content programmatically.16 npm256ISC
- AlicenseAqualityAmaintenanceAn MCP server that integrates with SerpApi to retrieve search results from multiple search engines including Google, Bing, Yahoo, and others, enabling fast access to both live and archived search data.3175MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) based search API server that provides standardized access to Google Maps, Google Flights, Google Hotels and other services. This server enables AI assistants to access various search services through a unified interface.74MIT
- -licenseNot gradedqualityNot gradedmaintenanceAn MCP (Multi-Agent Conversation Protocol) Server that enables interaction with Google's Custom Search API, allowing agents to perform customized web searches through natural language requests.-