Skip to main content
Glama
HasData

Google Search MCP Server

Google Search MCP Server (SERP)

A hosted Model Context Protocol (MCP) server that gives Claude, Cursor, Windsurf and any other MCP client eight read-only Google Search tools. Pull the live SERP with its AI Overview and People Also Ask, run a Google AI Mode query, and read news, shopping, product detail and short-video results, all as structured JSON, with no Google Cloud project and no search-engine setup.

1,000 free credits every month, no card required, which is 100 full-SERP calls or 200 of the 5-credit calls.

https://mcp.hasdata.com/api/mcp?apis=google_serp

Glama score tool contract MCP Tools npm PyPI License

"SERP" and "Google Search" are the same product here. This server returns Google search-engine results pages, parsed.

Contents

Related MCP server: HasData MCP Server

What you need

An MCP client that speaks streamable HTTP with custom headers. A HasData API key from the dashboard, free to create with no card, and the free tier covers about 100 to 200 calls a month depending on the tool. Nothing else. This is a remote server, so the simplest path is a URL and a header, with no Google Cloud project or Programmable Search Engine to set up. A stdio-only client can use the @hasdata/google-search-mcp (npm) or hasdata-google-search-mcp (PyPI) launcher instead.

Quick start

URL

https://mcp.hasdata.com/api/mcp?apis=google_serp

Transport

HTTP, streamable

Auth header

x-api-key: HASDATA_API_KEY

The server URL is the same for every client. We run it hands-on in Claude Code and Claude Desktop. The other blocks follow each client's own documented format for a remote server.

Clients with OAuth support can add the same URL as a connector and sign in without putting a key in a config file.

claude mcp add --transport http google-search "https://mcp.hasdata.com/api/mcp?apis=google_serp" \
  --header "x-api-key: HASDATA_API_KEY"

Claude Desktop loads only local (stdio) servers from its config file, so it reaches a remote server through a stdio launcher. The @hasdata/google-search-mcp package is that launcher, and it reads the key from the environment.

claude_desktop_config.json:

{
  "mcpServers": {
    "google-search": {
      "command": "npx",
      "args": ["-y", "@hasdata/google-search-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

Python instead of Node? Swap the launcher for the PyPI package, which uvx runs without a manual install:

{
  "mcpServers": {
    "google-search": {
      "command": "uvx",
      "args": ["hasdata-google-search-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

A client with OAuth support can instead add the URL as a custom connector and skip the launcher.

.cursor/mcp.json:

{
  "mcpServers": {
    "google-search": {
      "url": "https://mcp.hasdata.com/api/mcp?apis=google_serp",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "google-search": {
      "serverUrl": "https://mcp.hasdata.com/api/mcp?apis=google_serp",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}
{
  "mcpServers": {
    "google-search": {
      "url": "https://mcp.hasdata.com/api/mcp?apis=google_serp",
      "type": "streamableHttp",
      "headers": { "x-api-key": "HASDATA_API_KEY" },
      "disabled": false
    }
  }
}

.vscode/mcp.json:

{
  "servers": {
    "google-search": {
      "type": "http",
      "url": "https://mcp.hasdata.com/api/mcp?apis=google_serp",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

~/.gemini/settings.json:

{
  "mcpServers": {
    "google-search": {
      "httpUrl": "https://mcp.hasdata.com/api/mcp?apis=google_serp",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

Example prompts

Search Google for best running shoes and give me the organic top ten plus the AI Overview.

One call, 10 credits. The SERP response carries the AI Overview inline alongside the organic results.

For the same query, take each People Also Ask question and pull its AI Overview answer with sources.

One call per question, 5 credits each. Each relatedQuestions entry holds an aiOverview.pageToken, and the AI Overview tool turns that token into the answer blocks and their references.

Ask Google AI Mode what is the Model Context Protocol and give me the answer with its citations.

One call, 10 credits. AI Mode returns the generated answer as text blocks with a reference list.

Search Google Shopping for nike air max, then pull the full product card for the top result: every store selling it, the price range and the review breakdown.

Two calls. Shopping is 10 credits and returns a token per product, and the immersive product tool spends 5 to expand that token into stores, variants and reviews.

Get the latest Google News for artificial intelligence, and separately the short-video results for cooking pasta.

Two calls, 10 credits each.

The workflow leans on two chains. A SERP response hands back an aiOverview inline and a pageToken on every People Also Ask question, so extracting Google's generative answers is either free with the search or one 5-credit follow-up per question. A shopping result likewise hands back a token per product, so the jump from a listing to its full multi-store card is a single call.

Tools

Eight tools, all read-only. Samples below are trimmed from real calls, and the results in them change as Google changes, so read them as shapes. Each tool name links to its endpoint reference.

Tool

Credits

What it returns

hasdata_google_serp_serp_getSearchResults

10

The full results page: organic results, AI Overview, People Also Ask, related searches, perspectives, immersive products, pagination

hasdata_google_serp_ai_overview_getAiOverviewResponse

5

The AI Overview for a token the SERP handed back, or a cited answer for a People Also Ask question

hasdata_google_serp_ai_mode_getAiModeResponse

10

A Google AI Mode answer as text blocks with its references

hasdata_google_serp_serp_light_getSearchResults

5

Organic results and the AI Overview without the extra blocks

hasdata_google_serp_news_getGoogleNews

10

Google News results with source, date and thumbnail

hasdata_google_serp_shopping_getSearchResults

10

Shopping results with price, rating, reviews, source and a per-product token

hasdata_google_serp_immersive_product_getImmersive_e29f691177

5

One product across sellers: stores with prices, variants, reviews and insights

hasdata_google_serp_short_videos_getShortVideosSearchResults

10

The short-video carousel with source, duration and thumbnail

The samples are the payload, not the whole response. A tools/call result carries one text block, and that text is itself JSON holding url, status, text and json, with the scraped data under json. From a raw JSON-RPC response the path is result.content[0].text, parsed, then .json. A chat client unwraps that for you and code talking to the endpoint directly does not.

Google SERP

hasdata_google_serp_serp_getSearchResults

The full results page for a query.

Parameter

Type

Required

Notes

q

string

yes

The search query, exactly as a user would type it

gl / hl

string

Two-letter country and language codes

location / uule

string

Geographic location for the search, by name or as a uule string

num

number

Approximate results per page. Google now caps a page at about ten and ignores anything higher, so num above 10 fetches no more

start

number

Result offset for paging

tbm / tbs

string

Search type and advanced filters, the raw Google parameters

deviceType

string

desktop, mobile or tablet

Returns searchInformation, organicResults, aiOverview, relatedQuestions, relatedSearches, perspectives, immersiveProducts and pagination, with whichever blocks Google shows for the query. Organic entries carry position, title, link, displayedLink, source, snippet, snippetHighlitedWords, date and images.

The AI Overview arrives two ways. Usually aiOverview is inline, with textBlocks and references you can read straight away. Sometimes Google gates it behind a token, and then aiOverview carries a pageToken and a hasdataLink instead of the blocks. Every relatedQuestions entry is that second case too. It holds a question and an aiOverview with the same pageToken and hasdataLink, which the AI Overview tool below expands. So the People Also Ask answers are AI Overviews you fetch one token at a time. The top-level aiOverview is inline on most queries and a token on a few, so read it both ways.

{
  "organicResults": [
    {
      "position": 1,
      "title": "The 15 Best Running Shoes of 2026",
      "link": "https://www.runnersworld.com/gear/a19663621/best-running-shoes/",
      "source": "Runner's World",
      "snippet": "The Brooks Ghost is our No. 1 shoe when we recommend new trainers…"
    }
  ],
  "aiOverview": {
    "textBlocks": [ { "type": "paragraph", "snippet": "The best running shoes depend on your goal…" } ],
    "references": [ { "index": 0, "title": "7 Best Running Shoes in 2026 - RunRepeat", "link": "https://runrepeat.com/guides/best-running-shoes" } ]
  },
  "relatedQuestions": [
    { "question": "What are the top 5 best running shoes?", "aiOverview": { "pageToken": "eyJpZCI6…", "hasdataLink": "https://api.hasdata.com/scrape/google/ai-overview?pageToken=eyJpZCI6…" } }
  ],
  "pagination": { "next": "…" }
}

Google AI Overview

hasdata_google_serp_ai_overview_getAiOverviewResponse

Expands an AI Overview token into its answer.

Parameter

Type

Required

Notes

pageToken

string

yes

An aiOverview.pageToken from a SERP response, including the ones on relatedQuestions. The same token object carries a hasdataLink, a ready REST URL that fetches the same answer without this tool

Returns aiOverview with textBlocks and references. This is how you read the AI Overview when the SERP handed you a token rather than the blocks, and how you turn each People Also Ask question into a cited answer.

Tokens are valid for about 4 minutes. A stale one does not come back empty, it fails as a tool error, isError: true with the text HasData API error: 400 Bad Request. Catch it the way you catch a wrong key, and re-run the SERP for a fresh token.

{
  "aiOverview": {
    "textBlocks": [ { "type": "paragraph", "snippet": "The top five running shoes feature versatile options for daily training and racing…" } ],
    "references": [ { "index": 0, "title": "…", "link": "https://…" } ]
  }
}

Google AI Mode

hasdata_google_serp_ai_mode_getAiModeResponse

Google's AI Mode answer for a query, the conversational search result.

Parameter

Type

Required

Notes

q

string

yes

The question to ask AI Mode

gl / hl

string

Country and language codes

location / uule

string

Geographic location

continuable

boolean

Set true to make the answer continuable in a follow-up call

subsequentRequestToken

string

Token from a previous AI Mode response, to continue the thread

Returns textBlocks and references, the generated answer and the sources it cites.

Google SERP Light

hasdata_google_serp_serp_light_getSearchResults

A cheaper search that returns the core of the page.

Parameter

Type

Required

Notes

q

string

yes

The search query

gl / hl

string

Country and language codes

location / uule

string

Geographic location

num / start

number

Page size and offset

Returns organicResults, aiOverview, relatedSearches, filters, appliedLocation, searchInformation and pagination. It is half the credits of the full SERP, for when you want organic results and the AI Overview without the extra blocks.

Google News

hasdata_google_serp_news_getGoogleNews

The Google News results for a query or a news section.

Parameter

Type

Required

Notes

q

string

A query. Omit it to read a section instead

gl / hl

string

Country and language codes

topicToken / sectionToken / storyToken / publicationToken

string

Drill into a topic, section, story or publication, using a token from a previous response

Returns newsResults, menuLinks, relatedTopics and relatedPublications. Each news entry carries position, title, link, source with a name and icon, thumbnail and date.

Google Shopping

hasdata_google_serp_shopping_getSearchResults

Shopping results for a query.

Parameter

Type

Required

Notes

q

string

yes

The product query

gl / hl

string

Country and language codes

location / uule

string

Geographic location

start

number

Result offset for paging

tbs

string

Advanced shopping filters, the raw Google parameter

Returns shoppingResults, filters, refineSearchFilters, searchInformation and pagination. Each result carries position, title, productId, price, extractedPrice, rating, reviews, source, category, thumbnail and an immersiveProductPageToken.

immersiveProductPageToken is the input to the immersive product tool below. It is a temporary token, so expand it while it is fresh if you want the product data, and re-run the shopping call for a new one if an old token fails.

{
  "shoppingResults": [
    {
      "position": 1,
      "title": "Men's Nike Alphafly 3",
      "productId": "13366226642799457284",
      "price": "$285.00",
      "extractedPrice": 285,
      "rating": 4.5,
      "reviews": 120,
      "source": "Nike",
      "immersiveProductPageToken": "eyJyZHMiOiJQQ18…"
    }
  ]
}

Immersive product

hasdata_google_serp_immersive_product_getImmersive_e29f691177

The full product card behind a shopping result.

Parameter

Type

Required

Notes

pageToken

string

yes

The immersiveProductPageToken from a shopping result or a SERP immersiveProducts entry

moreStores

boolean

Ask for more stores

nextPageToken

string

Page through the list of stores, using storesNextPageToken from the previous response

Returns a productResults object with title, brand, rating, reviews, priceRange, a stores array of every seller with its price and link, plus variants, reviewsImages, userReviews, topInsights, aboutTheProduct and discussionsAndForums. This is the one call that turns a single listing into the whole cross-store picture.

{
  "productResults": {
    "title": "Men's Nike Alphafly 3",
    "brand": "Nike",
    "rating": 4.4,
    "reviews": 1077,
    "priceRange": "$221-$295",
    "stores": [ { "name": "eBay", "link": "https://www.ebay.com/itm/…", "price": "$221" } ],
    "storesNextPageToken": "Mw=="
  }
}

Feed storesNextPageToken back in as the nextPageToken parameter to page through the stores.

Google short videos

hasdata_google_serp_short_videos_getShortVideosSearchResults

The short-video results Google shows for a query.

Parameter

Type

Required

Notes

q

string

yes

The query

gl / hl / cr

string

Country, language and content-region codes

lr

array

One or more language restrictions

page

number

Result page

deviceType

string

desktop, mobile or tablet

Returns shortVideos, each with position, title, link, source, sourceLogo, profileName, duration, clip and thumbnail.

Errors and failure paths

Your client almost never sees an HTTP error code from a tool call. The MCP layer answers 200 and puts the failure inside the result, with isError set to true and the reason as text. The agent reads a message where you might expect a status line.

A wrong key surfaces as tool output, not as a failed connection. Listing tools accepts any non-empty key, and the client completes its handshake and shows green. The first tool call then comes back with isError: true and the text HasData API error: 401 Unauthorized. Watch for that string, because nothing earlier in the flow reports the problem.

The one real HTTP error is a missing key. Authorization runs before any tool, and the connection itself fails with 401.

An argument that breaks the schema is rejected before it becomes a search. A search with no q comes back with isError: true and the text MCP error -32602: Input validation error, naming the field. Nothing is fetched and nothing is charged.

A stale AI Overview token fails as an error. A SERP response token is valid for about 4 minutes. Expanding one you stored earlier comes back with isError: true and the text HasData API error: 400 Bad Request, the same shape as a wrong key. Catch it and re-run the SERP to get a fresh token.

A block Google did not show is absent, not empty. A query with no AI Overview, no shopping pane or no People Also Ask returns a response without those keys rather than with empty ones. Test for the key before reading it.

Results that carry data also carry a requestMetadata.id worth quoting in support, plus html and json links to the stored artifact of that exact call.

Pricing, free tier and limits

Credits are per tool. The full SERP, AI Mode, News, Shopping and short videos cost 10 credits a call. SERP Light, immersive product and the AI Overview tool are 5. The AI Overview that comes inline with a SERP response is free, part of that 10-credit call, but expanding a token with the AI Overview tool, including every People Also Ask token, is a separate 5-credit call. Response size does not change the price.

The free tier is 1,000 credits every month with no card, which is 100 full-SERP calls or 200 of the 5-credit calls. It renews with the billing cycle, so a low-volume agent runs on the free tier indefinitely.

Paid plans start at $49 a month for 200,000 credits. The price per credit falls with volume, and current numbers live on the pricing page.

Your plan also sets concurrency. The free tier allows 1 request at a time, Startup 15, Business 30, Growth 50, and the high-volume plans run from 200 to 1,500. Concurrency is the only throttle. There is no separate requests-per-minute cap. Handle the overflow case defensively in anything unattended, because an agent that fans out across queries will reach the ceiling before you do.

Tool selection

?apis=google_serp exposes these eight tools. The parameter takes a list, and ?apis=google_serp,google_maps adds the Google Maps tools alongside search. Drop the parameter and you get everything HasData exposes, which is currently 57 tools.

A narrow list is usually the better default. A model choosing among eight tools picks correctly more often than one choosing among fifty-seven, and the tool descriptions themselves cost context on every turn.

How it compares

Google no longer offers a general search API. The official route is the Custom Search JSON API, and it answers a different question from this one.

The Custom Search JSON API searches a Programmable Search Engine you configure, over the sites you list or the whole-web index if you switch it on. It is capped at 100 free queries a day and then charges per thousand up to a daily ceiling, and it returns a stripped result set. It does not return the AI Overview, People Also Ask, the local pack, shopping, news or short videos, because those are features of the live results page rather than of the API. It is the right tool when you want to search your own site or a fixed set of sites and stay inside Google's official terms for that.

This server returns the live Google results page as a visitor sees it, parsed. There is nothing to configure, the query runs against all of Google rather than a curated engine, and the AI Overview, People Also Ask, shopping and the rest come back as structured blocks.

Custom Search JSON API

This server

What it searches

A Programmable Search Engine you configure

The live Google results page

Setup

A Cloud project and a search engine

One API key

AI Overview and People Also Ask

Not returned

Inline, or by token

Shopping, news, short videos, local

Not returned

Dedicated tools

Free tier

100 queries a day

1,000 credits every month

Two rows decide it. If you only need to search your own sites and want Google's official API for that, the Custom Search JSON API is the fit. If you need the real SERP, its AI Overview, or any of the panes Google shows a searcher, the official API does not return them and this does.

What this server does not do. No crawling of the pages behind the results, no ranking history, and nothing that writes. It returns the parsed results page.

FAQ

What is a Google Search MCP server?

A server that exposes Google search results as tools an AI client can call. The client sends a tool call over the Model Context Protocol, the server fetches the results page and returns structured JSON, and the model works with the result and never sees a page of HTML. This one exposes eight read-only tools and runs remotely, so the client connects to a URL and starts no local process.

Is SERP the same as Google Search here?

Yes. A SERP is a search-engine results page. These tools return Google's results pages, so "SERP API" and "Google Search API" mean the same thing in this repo.

Is there an official Google Search MCP server?

Google publishes no MCP server and no general search API. The closest official product is the Custom Search JSON API, which searches a Programmable Search Engine you configure. Several community MCP servers, this one among them, return the live results page instead.

How do I get the AI Overview?

Run a SERP call. The aiOverview is usually inline with its textBlocks and references. When it comes back as a pageToken instead, and on every People Also Ask question, pass that token to the AI Overview tool to get the answer. Tokens expire quickly, so expand them from a fresh call.

Do I need a Google Cloud project or a Programmable Search Engine?

No. The only credential is your HasData key. Nothing to create in Google Cloud, and no per-API quota to manage.

Does the API key expire?

No. The key does not expire. Rotate it in the dashboard whenever you need to.

Is the data live or cached?

Live. Each call fetches the results page at request time and carries its own requestMetadata.id. Two identical calls are two separate fetches and not a replay of a stored copy.

Is this affiliated with Google?

No. HasData is an independent service and is not affiliated with, endorsed by, or sponsored by Google. Google is a trademark of its respective owner. The tools work with publicly available data only, and you are responsible for using the results in line with Google's terms and the law that applies to you.

Product page and request builder

Google SERP API

Server documentation

MCP server docs

All 57 tools in one server

HasData/hasdata-mcp

Client walkthroughs

MCP clients and integrations

The other surfaces we parse

53 more scraper APIs

Plans and credit costs

Plans and credit costs

Keys and usage

HasData dashboard

Node launcher on npm

@hasdata/google-search-mcp

Python launcher on PyPI

hasdata-google-search-mcp

Development

This repository is configuration and documentation for a remote server. There is no build step and nothing to containerize.

It does carry a contract test. The README documents eight tools with specific parameters, and the upstream tool list can change without a commit here, which would leave this file quietly lying to you. The test asserts the documented tools exist with the parameters claimed, and runs weekly in CI as well as on every push.

HASDATA_API_KEY=your_key_here npm test

On PowerShell:

$env:HASDATA_API_KEY = "your_key_here"; npm test

The last check makes a real search and costs 10 credits, which is the price of a canary that can fail for the right reason. Listing tools succeeds with any non-empty key, so a test that only lists tools stays green with a revoked one.

Contributing

Corrections to the tool tables and the response samples are the most useful contribution, because those are the parts that drift. Include the call you made and the response you got. Pull requests from forks run the suite without a key, and the live checks skip instead of going red.

License

MIT. See LICENSE.

Available Tools

10 tools
hasdata_google_serp_ai_mode_getAiModeResponsegoogle_serp_ai_mode: GET /AInspect

Get AI Mode SERP Results

Captures Gemini-powered AI Mode answers from Google Search. Returns the conversational response text, cited source links, subtopic breakdowns, follow-up suggestions, and a subsequentRequestToken for multi-turn continuation. Use for next-gen search interfaces, AI-answer monitoring, citation tracking, content research agents, building question-answering pipelines grounded in live Google results, and person/company data enrichment — e.g. asking Who is the CEO of HasData?, What is Roman Milyushkevich's LinkedIn?, HasData founder email, HasData Instagram handle to get a synthesized answer plus source URLs in one call, ideal for lead enrichment, sales research, people search, and filling in contact/attribute gaps for CRM records.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSpecify the search term for which you want to scrape the SERP.
glNoThe two-letter country code for the country you want to limit the search to. Provide one exact documented value (245 allowed), e.g. `ac`, `af`.
hlNoThe two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`.
uuleNoThe encoded location parameter.
locationNoGoogle canonical location for the search.
continuableNoWhether to continue an existing AI Mode conversation.
subsequentRequestTokenNoToken used to continue a previous AI Mode request.

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, but the description clearly explains the output and the continuation mechanism, making behavior transparent.

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 detailed and informative, though slightly verbose with repeated examples; it is still well-structured and front-loaded.

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

Completeness5/5

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

The description fully explains what the tool does, its output, and its multi-turn continuation feature, making it complete for the given complexity.

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 covers all parameters with descriptions; the tool description does not add additional meaning beyond the schema, so a neutral score.

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

Purpose5/5

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

Clearly states it gets AI Mode SERP results from Google, distinguishing from other Google SERP tools like AI Overview.

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

Usage Guidelines4/5

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

Provides explicit use cases and examples, but does not explicitly compare with alternative tools, so slightly less than perfect.

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

hasdata_google_serp_ai_overview_getAiOverviewResponsegoogle_serp_ai_overview: GET /AInspect

Get AI Overview Results

Fetches the lazy-loaded Google AI Overview block via a pageToken returned by the Google SERP API (token valid for 4 minutes). Returns the AI-generated answer text, referenced source URLs, and expanded subtopic sections. Use as a follow-up call to Google SERP for tracking AI citations in SEO, fact-checking answers against sources, and LLM retrieval pipelines grounded in live Google results.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageTokenYesToken from `aiOverview` block in Google SERP API. Valid for 4 minutes.

TDQS

A4.5/5.0
Behavior4/5

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 the block is lazy-loaded, the token is valid for only 4 minutes, and it returns specific content. While it doesn't explicitly state read-only behavior, the description implies a safe fetch operation.

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 concise and well-structured: a clear title line, a brief explanation of what is fetched, the returned contents, and explicit use cases. No redundant or extraneous text.

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

Completeness5/5

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

Given the simple input (one parameter, no nested objects) and no output schema, the description is complete. It explains the purpose, parameter source and validity, expected return contents, and appropriate use cases, giving the agent everything needed to decide and invoke correctly.

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 sole parameter, pageToken, is fully described in the input schema ('Token from aiOverview block... Valid for 4 minutes'), and the tool description repeats this same information without adding new meaning. Since schema coverage is 100%, baseline is 3.

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

Purpose5/5

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

The description clearly states the tool's action ('Get AI Overview Results') and resource (Google AI Overview block), distinguishes it from sibling tools by specifying it's a follow-up using a pageToken, and details the returned data (answer text, source URLs, subtopic sections).

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 provides use cases: 'tracking AI citations in SEO, fact-checking answers against sources, and LLM retrieval pipelines grounded in live Google results.' It also implies the prerequisite of having a pageToken from a prior SERP call, making it clear when this tool is appropriate.

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

hasdata_google_serp_events_getEventInformationgoogle_serp_events: GET /AInspect

Get Google Events Results

Scrapes the Google Events vertical for a query plus location (or uule) with date filters (today, tomorrow, this/next week, weekend, this/next month), virtual-event toggle, domain/country/language targeting, and pagination. Returns event title, start date/time, venue name and address, ticket/source links, description, and thumbnail. Use for event-discovery chatbots, local aggregators, calendar sync, competitive monitoring of event listings, and pulling upcoming shows/conferences for a region.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSpecify the search term for which you want to scrape the SERP.
glNoThe two-letter country code for the country you want to limit the search to. Provide one exact documented value (245 allowed), e.g. `ac`, `af`.
hlNoThe two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`.
uuleNoThe encoded location parameter.
startNoThis parameter specifies the number of search results to skip and is used for implementing pagination. For example, a value of 0 (default) indicates the first page of results, 10 refers to the second page, and 20 to the third page.
domainNoGoogle domain to use. Default is google.com. Provide one exact documented value (195 allowed), e.g. `google.ac`, `google.ad`.
htichipsNoFilter parameter for refining event search results. Supports various filters for events. Multiple filters can be passed using a comma. The available filters are: - `date:today`: Today's Events - `date:tomorrow`: Tomorrow's Events - `date:week`: This Week's Events - `date:weekend`: This Weekend's Events - `date:next_week`: Next Week's Events - `date:month`: This Month's Events - `date:next_month`: Next Month's Events - `event_type:Virtual-Event`: Online Events For example, to filter for today's online events, use: `event_type:Virtual-Event,date:today`.
locationNoGoogle canonical location for the search.

TDQS

A3.9/5.0
Behavior3/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. It states the tool 'scrapes' data, implying a read-only operation, but does not mention rate limits, authentication, or potential blocks. The description is adequate but not fully transparent about operational constraints.

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 concise and well-structured, starting with a brief summary, followed by functional details and use cases. It avoids excessive verbosity while covering essential aspects.

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

Completeness4/5

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

Given the tool's complexity, the description provides sufficient context about functionality, parameters, and intended use cases. It does not describe return values, but no output schema is provided, so that is not required. It is complete enough for an agent to decide when and how to invoke it.

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 already provides descriptions for all 8 parameters, including detailed explanation of htichips filters. The tool description adds no additional parameter semantics beyond what is already in the schema, so it meets the baseline but does not exceed it.

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

Purpose5/5

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

The description clearly states the tool scrapes the Google Events vertical, listing specific filters and use cases. This distinguishes it from generic search and other vertical tools, such as general SERP or image search.

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

Usage Guidelines4/5

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

It explicitly mentions use cases like event-discovery chatbots and local aggregators, implying when to use this tool. It does not name alternative tools, but the context makes it clear this is for event-specific searches.

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

hasdata_google_serp_immersive_product_getImmersive_e29f691177google_serp_immersive_product: GET /AInspect

Get Immersive Product Information

Expands the Google Shopping Immersive Product pop-up given an immersiveProductPageToken from the Google Shopping API, with optional moreStores (up to ~13 merchants instead of 3–5) and nextPageToken for paginating stores. Returns multi-store offers (merchant, price, shipping, condition, URL), product specs, images, ratings, and the nextPageToken. Use for price-comparison bots, merchant discovery, dropshipping research, and aggregating full offer lists per product.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageTokenYesToken for displaying more product info in the Google immersive pop-up, available in the Google Shopping API response as the `immersiveProductPageToken` property.
moreStoresNoFetch additional store results in a single search. By default it returns 3–5 stores, and when true it returns up to 13 or the maximum available for the product.
nextPageTokenNoToken used to retrieve the next page of store results.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It describes the read-like behavior (expands, returns) and mentions pagination and optional store expansion, but it does not explicitly state that it is a read-only operation or disclose any potential side effects, auth requirements, or rate limits. The description is informative but not fully explicit.

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 concise and well-structured, with the core purpose front-loaded. It includes a useful list of return fields and use cases without excessive verbosity.

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

Completeness4/5

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

Given there is no output schema, the description adequately explains what is returned (offers, specs, images, ratings, nextPageToken). It also covers key parameters and use cases. It does not mention error handling or token lifecycle, but these are not critical for a simple read 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 coverage is 100%, so the schema already documents all parameters. The description adds minor context (e.g., moreStores expands from 3–5 to up to 13, nextPageToken paginates) but largely repeats what the schema says. It adds value but not significantly beyond the 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 states a clear verb and resource: it expands the Google Shopping Immersive Product pop-up given a token. It distinguishes itself by focusing on the immersive product view, but it does not explicitly name sibling tools or contrast with them, so it misses the top score.

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

Usage Guidelines4/5

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

It provides clear use cases (price-comparison bots, merchant discovery, dropshipping research) but does not explicitly state when to avoid it or name alternatives. The context is clear but exclusions are absent.

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

hasdata_google_serp_news_getGoogleNewsgoogle_serp_news: GET /AInspect

Get Google News Results

Retrieves Google News results by free-text query, topicToken (World, Business, Technology, etc.), sectionToken, publicationToken (e.g. CNN, BBC), or storyToken (full-coverage cluster with sort by relevance/date). Returns article title, snippet, source publisher, published date, thumbnail, and URL, plus tokens for navigating topics, sub-sections, and story clusters. Use for news monitoring, brand/PR tracking, topical aggregators, publisher-specific feeds, and drilling into full story coverage.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFree-text query as used on news.google.com. Not allowed with `topicToken`, `storyToken`, or `publicationToken`.
glNoThe two-letter country code for the country you want to limit the search to. Provide one exact documented value (245 allowed), e.g. `ac`, `af`.
hlNoThe two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`.
soNoSort order for articles in a story. Use only with storyToken.
storyTokenNoToken for a single news story cluster (the “Full coverage” page).
topicTokenNoToken for a Google News topic such as World, Business, or Technology. Not allowed with `q`, `storyToken`, or `publicationToken`.
sectionTokenNoToken for a sub-section under a topic, for example Business → Economy. Use only when `topicToken` or `publicationToken` is present.
publicationTokenNoToken for a specific publisher such as CNN or BBC. Not allowed with `q`, `storyToken`, or `topicToken`.

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It transparently describes the return payload (title, snippet, source publisher, published date, thumbnail, URL) and the navigation tokens, and notes that storyToken supports sorting by relevance/date. It does not mention limits, errors, or rate restrictions, but for a read-oriented GET endpoint the description provides solid behavioral context.

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

Conciseness4/5

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

The description is compact, front-loaded with the core purpose, and every sentence adds useful information about retrieval modes, output, and use cases. It is dense but not bloated, and it avoids unnecessary repetition of schema details.

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

Completeness4/5

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

Given the 8-parameter schema with full descriptions and no output schema, the description adequately covers what the tool returns, the main input modes, and appropriate usage scenarios. It does not cover pagination or result limits, but the schema and stated output fields give an agent enough to invoke and interpret the tool correctly.

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% and every parameter has a meaningful description with mutual-exclusion constraints. The tool description adds value by grouping the parameter types and explaining the story-cluster sort, but it mostly paraphrases what the schema already documents. Baseline 3 is appropriate since the schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states a specific verb ('Retrieves Google News results') and resource, listing the distinct retrieval modes (free-text query, topicToken, sectionToken, publicationToken, storyToken) and the returned fields. It distinguishes itself from the general google_serp_serp_getSearchResults sibling by focusing specifically on Google News and its token-based navigation.

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

Usage Guidelines4/5

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

The description explicitly enumerates intended use cases: 'news monitoring, brand/PR tracking, topical aggregators, publisher-specific feeds, and drilling into full story coverage.' It does not explicitly name a sibling as an alternative or state when not to use this tool, but the use-case framing gives an agent clear selection context.

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

hasdata_google_serp_product_getProductInformationgoogle_serp_product: GET /AInspect

Get Product Information

Pulls detailed product data from Google Shopping by productId with searchType (offers, specs, reviews) and rich filters (free shipping, used-condition, sort by price/total price/deals/seller rating, reviews count). Returns product title, images, price, ratings, specs, merchant offers (seller, shipping, condition, total price), and review text depending on searchType. Use for price intelligence, catalog enrichment, review mining, competitor spec comparison, and building shopping assistants that surface the cheapest or highest-rated offer.

ParametersJSON Schema
NameRequiredDescriptionDefault
glNoThe two-letter country code for the country you want to limit the search to. Provide one exact documented value (245 allowed), e.g. `ac`, `af`.
hlNoThe two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`.
uuleNoThe encoded location parameter.
startNoThis parameter specifies the number of search results to skip and is used for pagination. For example, a value of 0 (default) indicates the first page of results, 10 refers to the second page, and 20 to the third page. This parameter is applicable only when `searchType=offers` is specified. For reviews pagination use `filter` parameter.
domainNoGoogle domain to use. Default is google.com. Provide one exact documented value (195 allowed), e.g. `google.ac`, `google.ad`.
filterNoFilter parameter for refining search results. Supports various filters for offers and reviews. Multiple filters can be passed using a comma. The available filters are: Offers filters: - `freeship:1`: Show only products with free shipping. - `ucond:1`: Show only used products. - `scoring:p`: Sort by base price. - `scoring:tp`: Sort by total price. - `scoring:cpd`: Sort by current promotion deals (special offers). - `scoring:mrd`: Sort by seller's rating. Reviews filters: - `rnum:{number}`: Number of results (100 is max).
locationNoGoogle canonical location for the search.
productIdYesThe product ID to get results for.
searchTypeNoParameter for fetching specific product information, such as 'offers', 'specs', or 'reviews'.

TDQS

A4.2/5.0
Behavior4/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. It clearly frames the operation as read-only ('Pulls') and discloses searchType-dependent return content: title, images, price, ratings, specs, merchant offers, and review text. It does not cover rate limits, auth, or errors, but the core behavioral contract is present.

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 compact and front-loaded: a one-line summary, then the detailed behavior, then use cases. Every sentence contributes value, and there is no meaningful fluff.

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

Completeness4/5

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

For a 9-parameter tool with no output schema, the description provides a strong high-level output contract and common use cases, while the schema covers parameter details. The main gap is that optional searchType has no documented default behavior, and pagination guidance relies entirely on the schema rather than the description.

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%, and the schema already explains filters, pagination, enums, and parameter constraints. The description paraphrases searchType and filters but adds no new parameter-level semantics, so the baseline of 3 applies.

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

Purpose5/5

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

The description states a specific verb and resource: 'Pulls detailed product data from Google Shopping by productId' with searchType variants and filters. This clearly distinguishes it from sibling search tools like shopping_getSearchResults, which are search-oriented rather than product-ID lookups.

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

Usage Guidelines4/5

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

The description explicitly lists task-based use cases: price intelligence, catalog enrichment, review mining, competitor spec comparison, and building shopping assistants. It does not name exclusions or alternative sibling tools, but it gives clear context for when this tool is appropriate.

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

hasdata_google_serp_serp_getSearchResultsgoogle_serp_serp: GET /AInspect

Get Google Search Results

Full-featured Google Search scraper with location/uule, country (gl), language (hl, lr), domain, device type, safesearch, time/date filters (qdr, cdr), knowledge-graph IDs, and tbm vertical selection (images, videos, news, shopping, local), plus offset/num pagination. Returns organic results (title, link, snippet, position), ads, knowledge graph, related searches, People Also Ask, local pack, featured snippets, AI Overview pageToken, and rich SERP features. Use for SEO rank tracking, keyword research, SERP-feature monitoring, competitor analysis, grounding LLMs with fresh location-aware search data, and especially for person/company data enrichment — e.g. finding a person's LinkedIn/Instagram/Twitter profile (Roman Milyushkevich LinkedIn, HasData Instagram), a company's CEO/founder/leadership (HasData CEO, HasData founder), contact emails (Roman Milyushkevich HasData email), phone numbers, GitHub profiles, press mentions, or any public attribute of a person or business by running a targeted query and parsing the top organic results.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSpecify the search term for which you want to scrape the SERP.
glNoThe two-letter country code for the country you want to limit the search to. Provide one exact documented value (245 allowed), e.g. `ac`, `af`.
hlNoThe two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`.
lrNoThe 'lr' parameter specifies the language of the websites to return results from. This parameter filters results based on the language of the web content.
siNoGoogle Cached Search Parameters ID.
numNoNumber of results per page, ranging from 10 to 100.
tbmNoSpecify the type of search.
tbsNoThis parameter supports various filters that can be combined by separating them with a comma. Here are examples of these filters: - Specific Time Range: `cdr:1,cd_min:10/17/2018,cd_max:3/8/2021` - Filter results to show only those within the defined date range. - Sort by Date: `sbd:1` - Results are sorted by date, from the most recent to the oldest. - Sort by Relevance: `sbd:0` - Results are sorted by relevance to the search query. - Sites with Images: `img:1` - Only show results from webpages that contain images. Quick Date Range (qdr): - `qdr:h` - Show results from the past hour. - `qdr:d` - Limit results to the past day. - `qdr:w` - Filter results from the week. - `qdr:m` - Display results from the past month. - `qdr:y` - Show results from the past year. - `qdr:h10`, `qdr:d10`, `qdr:w10`, `qdr:m10`, `qdr:y10` - Specify a number to show results from the last 10 hours, days, weeks, months, or years respectively. These filters enhance the control over search results, allowing for precise retrieval of information based on specific criteria.
lsigNoAdditional Google Place ID.
nfprNoControls if auto-corrected results are shown. 0 includes them (default), 1 shows only the original query. Google may still return auto-corrected results if no others are available.
safeNoAdult Content Filtering option.
uuleNoThe encoded location parameter.
kgmidNoGoogle Knowledge Graph ID.
startNoThis parameter specifies the number of search results to skip and is used for implementing pagination. For example, a value of 0 (default) indicates the first page of results, 10 refers to the second page, and 20 to the third page. For Google Local Results, the start value must be in multiples of 20, such as 20 for the second page, 40 for the third page, etc.
domainNoGoogle domain to use. Default is google.com. Provide one exact documented value (195 allowed), e.g. `google.ac`, `google.ad`.
filterNoDefines whether to enable or disable the filters for 'Similar Results' and 'Omitted Results'. Set to 1 (default) to enable these filters, or 0 to disable them.
ludocidNoThe Google Place ID for a specific location.
locationNoGoogle canonical location for the search.
deviceTypeNoSpecify the device type for the search.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral disclosure burden. It does disclose that this is a scraper, enumerates filtering capabilities, and lists returned elements including organic results, ads, knowledge graph, People Also Ask, local pack, and AI Overview pageToken. However, it does not mention operational caveats such as rate limits, authentication needs, blocking risks, or pagination limits beyond offset/num.

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 front-loaded with a one-line summary and then organized into capability, return-value, and use-case sections. It is long, but the length is justified by the tool's 19 parameters and rich feature set; the examples are concrete rather than filler.

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

Completeness4/5

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

For a complex 19-parameter tool with no annotations and no output schema, the description is fairly complete: it explains what the tool returns and gives practical invocation examples. It does not discuss alternatives or limitations, but an agent has enough information to select and call the tool correctly.

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 all 19 parameters are already documented in the input schema. The description only groups them into capability families like location/uule, country, language, tbm, and offset/num pagination, adding no parameter-level meaning beyond what the schema already provides.

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 names the operation ('Get Google Search Results') and identifies the tool as a 'full-featured Google Search scraper', listing parameter families and returned SERP components. It clearly conveys that this is the generic Google web-search endpoint rather than an image, news, or shopping variant, though it does not explicitly distinguish itself from the sibling serp_light tool.

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

Usage Guidelines4/5

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

The description gives concrete use cases: SEO rank tracking, keyword research, SERP-feature monitoring, competitor analysis, grounding LLMs, and person/company data enrichment with example queries. It does not explicitly state when not to use it or when to prefer serp_light, google_images, or AI-overview siblings, so it stops short of full exclusion guidance.

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

hasdata_google_serp_serp_light_getSearchResultsgoogle_serp_serp_light: GET /AInspect

Get Google Light Search Results

Lightweight Google Search scraper that returns only organic results and basic pagination, omitting AI Overview, knowledge graph, PAA, and other rich SERP blocks for faster, cheaper responses. Supports location/uule, country (gl), language (hl/lr), domain, safesearch, and time/date filters (qdr, cdr) with offset/num pagination. Returns title, link, snippet, and position per result. Use for high-volume keyword monitoring, bulk rank tracking, backlink discovery, and any workflow where only the ten blue links matter.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSpecify the search term for which you want to scrape the SERP.
glNoThe two-letter country code for the country you want to limit the search to. Provide one exact documented value (245 allowed), e.g. `ac`, `af`.
hlNoThe two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`.
lrNoThe 'lr' parameter specifies the language of the websites to return results from. This parameter filters results based on the language of the web content.
numNoNumber of results per page, ranging from 10 to 100.
tbsNoThis parameter supports various filters that can be combined by separating them with a comma. Here are examples of these filters: - Specific Time Range: `cdr:1,cd_min:10/17/2018,cd_max:3/8/2021` - Filter results to show only those within the defined date range. - Sort by Date: `sbd:1` - Results are sorted by date, from the most recent to the oldest. - Sort by Relevance: `sbd:0` - Results are sorted by relevance to the search query. - Sites with Images: `img:1` - Only show results from webpages that contain images. Quick Date Range (qdr): - `qdr:h` - Show results from the past hour. - `qdr:d` - Limit results to the past day. - `qdr:w` - Filter results from the week. - `qdr:m` - Display results from the past month. - `qdr:y` - Show results from the past year. - `qdr:h10`, `qdr:d10`, `qdr:w10`, `qdr:m10`, `qdr:y10` - Specify a number to show results from the last 10 hours, days, weeks, months, or years respectively. These filters enhance the control over search results, allowing for precise retrieval of information based on specific criteria.
safeNoAdult Content Filtering option.
uuleNoThe encoded location parameter.
startNoThis parameter specifies the number of search results to skip and is used for implementing pagination. For example, a value of 0 (default) indicates the first page of results, 10 refers to the second page, and 20 to the third page. For Google Local Results, the start value must be in multiples of 20, such as 20 for the second page, 40 for the third page, etc.
domainNoGoogle domain to use. Default is google.com. Provide one exact documented value (195 allowed), e.g. `google.ac`, `google.ad`.
filterNoDefines whether to enable or disable the filters for 'Similar Results' and 'Omitted Results'. Set to 1 (default) to enable these filters, or 0 to disable them.
locationNoGoogle canonical location for the search.

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden, and it does disclose key traits: it omits rich blocks, returns only organic results, and supports specific filters. However, it doesn't mention error handling, rate limits, or potential staleness of data—common concerns for scraping tools. It adds value but isn't exhaustive.

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 well-structured and front-loaded: it states the core purpose, then omissions, capabilities, return format, and use cases. Every sentence contributes value, but it's slightly long given the detailed schema already available. Still, no fluff.

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

Completeness4/5

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

Given the 12 parameters, detailed schema, and no output schema, the description covers the essential decision-making info: what it returns, key filtering options, and typical use cases. It doesn't explicitly explain pagination mechanics (though schema does) or edge cases, but the provided context is sufficient for an agent to select and invoke it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description groups parameters into meaningful categories (location/uule, country, language, filters, pagination), giving agents a high-level understanding of how they combine. It adds conceptual clarity beyond the schema's individual parameter descriptions.

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

Purpose5/5

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

The description clearly states the tool is a lightweight Google Search scraper that returns only organic results, explicitly listing what it omits (AI Overview, knowledge graph, PAA, etc.) and what it returns (title, link, snippet, position). This makes it readily distinguishable from siblings like serp_getSearchResults or news/shopping tools.

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

Usage Guidelines4/5

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

Explicit use cases are given: high-volume keyword monitoring, bulk rank tracking, backlink discovery, and any workflow where only the ten blue links matter. This implies when not to use it (when rich SERP blocks are needed), though it doesn't explicitly name the alternative tool like hasdata_google_serp_serp_getSearchResults. Clear context but no formal exclusion.

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

hasdata_google_serp_shopping_getSearchResultsgoogle_serp_shopping: GET /AInspect

Get Shopping Search Results

Scrapes Google Shopping listings for a query with location/uule, country/language/domain, time/date filters, device type, shoprs filter-helper IDs, and offset pagination. Returns product title, price, merchant/source, rating, reviews count, thumbnail, product link, productId, immersiveProductPageToken, and filter chips with hasdata_link for refining by brand/price/condition/promotions. Use for e-commerce price tracking, catalog building, promotion discovery, and feeding productIds into the Product API or tokens into the Immersive Product API for deeper data.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSpecify the search term for which you want to scrape the SERP.
glNoThe two-letter country code for the country you want to limit the search to. Provide one exact documented value (245 allowed), e.g. `ac`, `af`.
hlNoThe two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`.
tbsNoThis parameter supports various filters that can be combined by separating them with a comma. Here are examples of these filters: - Specific Time Range: `cdr:1,cd_min:10/17/2018,cd_max:3/8/2021` - Filter results to show only those within the defined date range. - Sort by Date: `sbd:1` - Results are sorted by date, from the most recent to the oldest. - Sort by Relevance: `sbd:0` - Results are sorted by relevance to the search query. - Sites with Images: `img:1` - Only show results from webpages that contain images. Quick Date Range (qdr): - `qdr:h` - Show results from the past hour. - `qdr:d` - Limit results to the past day. - `qdr:w` - Filter results from the week. - `qdr:m` - Display results from the past month. - `qdr:y` - Show results from the past year. - `qdr:h10`, `qdr:d10`, `qdr:w10`, `qdr:m10`, `qdr:y10` - Specify a number to show results from the last 10 hours, days, weeks, months, or years respectively. These filters enhance the control over search results, allowing for precise retrieval of information based on specific criteria.
uuleNoThe encoded location parameter.
startNoThis parameter specifies the number of search results to skip and is used for implementing pagination. For example, a value of 0 (default) indicates the first page of results, 40 refers to the second page, and 80 to the third page.
domainNoGoogle domain to use. Default is google.com. Provide one exact documented value (195 allowed), e.g. `google.ac`, `google.ad`.
shoprsNoSpecifies the helper ID for applying search filters. Must be used with the updated `q` parameter, which includes the selected filter (e.g., Coffee sale). To apply filters, use the `hasdata_link` from `filters[index].options[index]` in the JSON. Apply multiple filters by following each `hasdata_link` one by one. To remove a filter, follow its specific `hasdata_link`.
locationNoGoogle canonical location for the search.
deviceTypeNoSpecify the device type for the search.

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full responsibility for disclosing behavioral traits. It does not explicitly state whether the operation is read-only or if there are side effects, rate limits, or permissions. The phrasing 'Scrapes Google Shopping listings' implies a passive retrieval, but it lacks an explicit statement about non-destructiveness or data handling.

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 concise and well-structured, with a clear opening statement, a summary of output, and a list of use cases. It avoids redundancy and stays focused, making it easy for users to quickly grasp the tool's function and applications. The structure is efficient with no unnecessary information.

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

Completeness5/5

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

Despite lacking an output schema, the description compensates by enumerating the expected return fields (e.g., product title, price, merchant) and explaining how to apply filters via 'hasdata_link'. It also covers parameter interactions for shoprs and pagination. Given the tool's moderate complexity, the description provides a complete picture for invocation without leaving critical gaps.

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 already provides detailed descriptions for all 10 parameters, covering their semantics thoroughly. The tool description does not add significant extra meaning beyond summarizing the overall purpose and mentioning a few output fields. Since schema coverage is 100%, the baseline score of 3 is appropriate, as the description adds marginal value.

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

Purpose5/5

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

The description clearly states that the tool scrapes Google Shopping listings for a search query and returns detailed product information. It explicitly mentions the output fields, such as product title, price, and merchant, making the tool's purpose unambiguous. The name 'Get Shopping Search Results' further reinforces its function.

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

Usage Guidelines4/5

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

The description provides specific use cases like e-commerce price tracking, catalog building, and promotion discovery, which guide when to employ the tool. It also hints at integration with other tools by mentioning feeding product IDs into the Product API or tokens into the Immersive Product API. However, it does not explicitly contrast it with sibling tools, leaving a small gap in direct alternative selection.

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

hasdata_google_serp_short_videos_getShortVideosSearchResultsgoogle_serp_short_videos: GET /AInspect

Get Short Videos Search Results

Scrapes the Google Short Videos carousel (TikTok, YouTube Shorts, Instagram Reels, etc.) for a query with location/uule, country (gl/cr), language (hl/lr), device type, and page-based pagination. Returns video title, thumbnail, duration, source platform, channel/creator, publish date, and direct video URL. Use for short-form content discovery, viral-trend monitoring, influencer research, cross-platform video aggregation, and sourcing short clips to summarize or embed in LLM responses.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSearch query term for retrieving short videos results.
crNoThe country code for the country you want to limit the search to. Provide one exact documented value (237 allowed), e.g. `countryAF`, `countryAL`.
glNoThe two-letter country code for the country you want to limit the search to. Provide one exact documented value (245 allowed), e.g. `ac`, `af`.
hlNoThe two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`.
lrNoThe 'lr' parameter specifies the language of the websites to return results from. This parameter filters results based on the language of the web content.
pageNoPage number for paginated results, where 0 is the first page.
uuleNoThe encoded location parameter.
locationNoGoogle canonical location for the search.
deviceTypeNoSpecify the device type for the search.

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. It explains that the tool scrapes a live Google carousel and returns specific fields, implying a read-only network operation. It does not mention rate limits, auth, or failure modes, but these are less critical for this non-mutating scraper.

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 reasonably short and front-loaded, with the core scraping behavior in the first sentence and output fields and use cases following. The opening heading repeats the tool name and the use-case list is slightly expansive, but the overall text is efficient and relevant.

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

Completeness4/5

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

For a 9-parameter tool with no output schema, the description compensates by listing return fields and mentioning pagination plus location/country/language options. It does not specify result count, maximum page, or exact response structure, but the schema fully documents the parameters and required query.

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 input schema already describes 100% of the parameters, so the baseline is 3. The description adds only high-level grouping such as 'country (gl/cr), language (hl/lr), device type' without clarifying relationships, formats, or usage beyond what the schema already provides.

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

Purpose5/5

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

The description uses a specific verb ('scrapes') and a specific resource ('Google Short Videos carousel'), and names the content sources (TikTok, YouTube Shorts, Instagram Reels). This clearly distinguishes it from sibling SERP tools like general search or news results.

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

Usage Guidelines4/5

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

The description provides explicit use cases such as 'short-form content discovery, viral-trend monitoring, influencer research, cross-platform video aggregation' and sourcing clips for LLM responses. However, it does not explicitly contrast with sibling tools or state when not to use this tool.

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

Tool Schema Changelog

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

  1. 10 tool updatesv1.0.0
    • First observedhasdata_google_serp_ai_mode_getAiModeResponse
    • First observedhasdata_google_serp_ai_overview_getAiOverviewResponse
    • First observedhasdata_google_serp_events_getEventInformation
    • First observedhasdata_google_serp_immersive_product_getImmersive_e29f691177
    • First observedhasdata_google_serp_news_getGoogleNews
    • First observedhasdata_google_serp_product_getProductInformation
    • First observedhasdata_google_serp_serp_getSearchResults
    • First observedhasdata_google_serp_serp_light_getSearchResults
    • First observedhasdata_google_serp_shopping_getSearchResults
    • First observedhasdata_google_serp_short_videos_getShortVideosSearchResults

TDQS

A4.1/5.0

Scored across 10 tools

Disambiguation5/5

Each tool addresses a distinct Google Search vertical (web, shopping, news, events, short videos, AI mode/overview) with clear boundaries. Even where two tools are similar (full vs. light SERP, shopping search vs. product info), their purposes are explicitly differentiated.

Naming Consistency4/5

All tools follow the pattern `hasdata_google_serp_<category>_<Action>`, with snake_case categories and camelCase actions. The only deviation is the immersive product tool's hash suffix (`getImmersive_e29f691177`), which breaks the clean convention but does not obscure intent.

Tool Count5/5

With 10 tools, the server covers all major Google Search verticals without redundancy or bloat. Each tool serves a distinct scraping need, making the count well-scoped for its purpose.

Completeness4/5

The tool surface covers web search (both full and lightweight), shopping (search, product details, immersive offers), news, events, short videos, and AI-generated responses. Minor gaps like a dedicated maps/images tool are mitigated by the full SERP tool's `tbm` parameter, making the coverage strong overall.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers