cloro
Server Details
Scrape AI answer engines and Google Search/News with country and state-level geo-targeting.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Available Tools
10 toolslist_countriesList supported countriesARead-onlyIdempotentInspect
List the ISO 3166-1 alpha-2 country codes supported for geo-targeting. Pass a model to get the codes available for that specific engine (some engines block certain countries).
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Optionally filter to countries supported by a specific engine. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, idempotent, and non-destructive. The description adds useful behavioral context not captured in annotations: some engines block certain countries, which explains why results may vary by model. This context supplements the structured annotations well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the core purpose, and devotes the second sentence to the only optional nuance. There is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter read-only listing tool with an enum-only optional filter, the description covers purpose, the optional filter's effect, and behavioral nuance. No output schema is provided, but the description already states that the output is ISO 3166-1 alpha-2 country codes, so the context is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides full coverage with a clear description for the model parameter and an enum of valid values. The description adds value by explaining why the parameter matters — filtering by engine-specific country support and warning that some engines block certain countries.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'List' and the specific resource: 'ISO 3166-1 alpha-2 country codes supported for geo-targeting.' This makes the tool's purpose distinct from the sibling list_states and the various scrape_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the main use case — retrieving countries for geo-targeting — and provides clear guidance for the optional model parameter: pass a model to get engine-specific availability. It does not explicitly name alternatives or state when not to use this tool, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_statesList states for a countryARead-onlyIdempotentInspect
List the state codes available for state-level geo-targeting in a country (used as the "state" parameter on the scrape tools). Only countries with state-level targeting are accepted.
| Name | Required | Description | Default |
|---|---|---|---|
| country | Yes | ISO 3166-1 alpha-2 country code to list states for. Only countries with state-level targeting are supported. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile: readOnlyHint, idempotent, and non-destructive. The description adds that only state-targeting countries are accepted and that output plugs into scrape tools, but it does not describe result format, pagination, or other behavioral details. Given the annotations, this is acceptable but not outstanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and resource, and a second sentence for the limitation. No redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter listing tool, the description covers purpose, the main constraint, and the connection to sibling scrape tools. It does not spell out the exact return shape, but the phrase 'List the state codes' sufficiently implies an array of code values. The absence of an output schema makes this a minor gap only.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100% and the only parameter, country, already has a clear description and enum. The tool description adds context about how the result is used, but it does not add new parameter-level semantics beyond the schema. Baseline 3 applies because the schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states a specific action and resource: listing state codes for country-level geo-targeting, and explicitly connects to the 'state' parameter used by scrape tools. It distinguishes itself from siblings like list_countries and scrape_* tools by specifying exactly what it returns and why.
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 when to use this tool: when you need valid state codes for a country before calling a scrape tool. It also states a constraint (only countries with state-level targeting are accepted). It does not explicitly name alternatives or exclude cases, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrape_chatgptScrape ChatGPTARead-onlyInspect
Submit a prompt to ChatGPT from a chosen country (and optionally US state) and return the full answer: text, cited sources, and optionally markdown, search queries, shopping results, and ads. Use this to see how ChatGPT answers a prompt and which brands/sources it mentions.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Optional state code for state-level targeting (e.g. "CA" when country is "US"). Only some countries support this — call list_states for the supported countries and their codes. | |
| legacy | No | Serve ChatGPT's desktop UI instead of the default mobile-web UI. Needed for include.ads and include.shopping, which only render on desktop. Defaults to false. | |
| prompt | Yes | The prompt to submit to ChatGPT. | |
| country | Yes | ISO 3166-1 alpha-2 country code to geo-target the request from (e.g. "US"). Use list_countries to see supported codes per model. | |
| include | No | Optional flags for heavier payload fields, each off by default: markdown (the answer rendered as markdown), html (the answer page HTML), rawResponse (the engine's unprocessed response payload), searchQueries (the web searches ChatGPT issued while answering), ads and shopping (sponsored and product results; these render only on the desktop UI, so pair them with legacy: true). Leave unset for the leanest response. | |
| disableWebSearch | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only and non-destructive. The description adds behavioral detail beyond that: it geo-targets from a country/state, returns the full answer with cited sources, and can include markdown, search queries, shopping, and ads depending on flags. It does not mention quotas/rate limits, but the safety profile is covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first states the action and output payload, the second states the practical use case. It is compact, front-loaded, and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with six parameters and no output schema, the description is largely sufficient: it names the core inputs (prompt, country, optional state) and the key return fields (text, cited sources, optional extras). It could explicitly mention the disableWebSearch option or route to list_countries/list_states, but those are documented in the schema and sibling names.
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 83%, so the schema already documents most parameters well. The description restates the general prompt/country/state concept and optional output flags, but adds little beyond the schema's own field descriptions. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the exact verb and resource: submit a prompt to ChatGPT and return the answer text plus cited sources, with optional extras. The use case ('see how ChatGPT answers... which brands/sources it mentions') clearly distinguishes it from sibling scrapers for other engines.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear context for use: checking ChatGPT's answer, source mentions, and brand/source inclusion. It does not explicitly name alternative tools or state when not to use it, but the ChatGPT-specific purpose is enough to route an agent toward it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrape_copilotScrape Microsoft CopilotARead-onlyInspect
Submit a prompt to Microsoft Copilot from a chosen country (and optionally US state) and return the answer with cited sources. Use this to see how Microsoft Copilot answers a prompt and which brands/sources it mentions.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Optional state code for state-level targeting (e.g. "CA" when country is "US"). Only some countries support this — call list_states for the supported countries and their codes. | |
| prompt | Yes | The prompt to submit to Microsoft Copilot. | |
| country | Yes | ISO 3166-1 alpha-2 country code to geo-target the request from (e.g. "US"). Use list_countries to see supported codes per model. | |
| include | No | Optional flags for heavier payload fields, each off by default: markdown (the answer rendered as markdown), html (the answer page HTML), rawResponse (the engine's unprocessed response payload). Leave unset for the leanest response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safe read-only nature, so the description adds useful behavioral context beyond them: the tool geo-targets from a country/US state and returns cited sources, including brand mentions. This clarifies what the agent should expect from the response without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the core action and purpose. Every clause adds useful information: what it does, how it geo-targets, what the output contains, and why you would use it. There is zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description does a good job of mentioning the main return value ('answer with cited sources'). It also implies the response will reflect brand/source mentions. It doesn't describe the exact response structure, but the parameter schema covers the request side and the annotations clarify safety, so the overall picture is fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter is already well-documented, including the nested 'include' object. The description does not add significant meaning beyond the schema — the only additional hint is 'optionally US state', which the schema already states. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action ('Submit a prompt to Microsoft Copilot'), targets a clear resource, and explains the output ('answer with cited sources'). It also distinguishes this tool from sibling scraping tools by naming the model and the unique value of seeing which brands/sources Copilot mentions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the intended use case: 'Use this to see how Microsoft Copilot answers a prompt...' This tells the agent when to choose this tool. It does not explicitly discuss alternatives or exclusion criteria, but the sibling tool names (scrape_chatgpt, scrape_gemini, etc.) make the choice obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrape_geminiScrape Google GeminiARead-onlyInspect
Submit a prompt to Google Gemini from a chosen country (and optionally US state) and return the answer with cited sources. Use this to see how Google Gemini answers a prompt and which brands/sources it mentions.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Optional state code for state-level targeting (e.g. "CA" when country is "US"). Only some countries support this — call list_states for the supported countries and their codes. | |
| prompt | Yes | The prompt to submit to Google Gemini. | |
| country | Yes | ISO 3166-1 alpha-2 country code to geo-target the request from (e.g. "US"). Use list_countries to see supported codes per model. | |
| include | No | Optional flags for heavier payload fields, each off by default: markdown (the answer rendered as markdown), html (the answer page HTML), rawResponse (the engine's unprocessed response payload). Leave unset for the leanest response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, open-world, and non-destructive behavior. The description adds useful context about geo-targeting and cited-sources output, but it does not disclose operational details such as response format variety or potential limitations. This modest addition beyond annotations supports a 3.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that front-load the core action and result before adding the use case. It contains no filler, no repetition of schema details, and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema fully documents all input parameters and the nested include flags, while annotations cover the safety profile. The description supplies the missing output clue (answer with cited sources, brands) and a concrete use case, making selection and invocation reasonably clear despite the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter description coverage, including prompt, country, state, and the nested include object. The description only loosely echoes the schema ('chosen country', 'optionally US state') without adding new syntactic or semantic detail, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Submit a prompt to Google Gemini' from a chosen country and return the answer with cited sources. It names the model explicitly and focuses on brands/sources, which differentiates it clearly from sibling scrapers like scrape_chatgpt and scrape_perplexity.
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 second sentence gives a clear intended use case: 'see how Google Gemini answers a prompt and which brands/sources it mentions.' This provides enough contextual guidance for an agent to know when to choose this tool, though it does not explicitly mention when not to use it or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrape_googleScrape Google SearchARead-onlyInspect
Run a Google search from a chosen country and return organic results, with optional AI Overview extraction (include.aioverview) and People-Also-Ask AI answers (include.paaAioverview). Two modes: structured (query + country, with optional location/uule/pages) or url (a complete google.com/search URL that owns query, location, and pagination). Supports desktop, mobile, iOS, and Android emulation and multi-page results.
| Name | Required | Description | Default |
|---|---|---|---|
| gl | No | ISO 3166-1 alpha-2 code for the result geography, sent to Google as gl (e.g. "us"). Use list_countries to see supported codes per model. Required in query mode; in url mode it is read from the URL's gl parameter unless supplied here, and an explicit value wins. | |
| hl | No | Optional Google interface-language code, sent as hl (e.g. "de", "pt-br"). Defaults to the language derived from gl — set it when the geography's dominant language is not the one you want. In url mode it is read from the URL's hl parameter unless supplied here, and an explicit value wins. | |
| url | No | A complete google.com/search URL to fetch instead of building one from structured fields. When set, query/location/uule/pages must be omitted (the URL owns them); gl and hl are read from the URL's gl/hl parameters unless supplied explicitly. | |
| uule | No | Optional Google UULE location parameter. Mutually exclusive with location. | |
| pages | No | Number of result pages to fetch (1-10). Defaults to 1. | |
| query | No | The search query. Required unless url is provided. | |
| device | No | Device to emulate: desktop, mobile, ios (Safari on iPhone), or android (Chrome on Android). mobile is an alias for android. Defaults to desktop. | desktop |
| country | No | ISO 3166-1 alpha-2 country code to geo-target the request from (e.g. "US"). Use list_countries to see supported codes per model. Deprecated — use gl instead; country is kept for compatibility and must not disagree with gl. | |
| include | No | Optional flags. Set aioverview: true to extract Google's AI Overview (or { markdown: true } for markdown), paaAioverview: true to hydrate AI answers in People Also Ask. Leave unset for organic results only. | |
| location | No | Optional location name to target search results (e.g. "Austin, Texas, United States"). Mutually exclusive with uule. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only and non-destructive; the description adds meaningful behavioral detail: it emulates different devices, supports multi-page results, geo-targets via country/gl, and discloses that URL mode overrides structured fields. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core action, followed by mode selection, device support, and optional features. Every sentence contributes useful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity — 10 parameters, nested include objects, multiple modes, and no output schema — the description covers invocation well. It lacks explicit output-structure details beyond "organic results," but the essential selection and calling context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value by explicitly tying include.aioverview and include.paaAioverview to their extraction behavior and by summarizing the structured vs. URL ownership semantics, which helps the agent understand parameter interactions beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: "Run a Google search" that "return[s] organic results." It clearly separates itself from siblings like scrape_google_news and scrape_google_ai_mode by focusing on standard Google organic results with optional AI Overview extraction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on choosing between the two invocation modes — structured query/country vs. a full URL — and explains when the URL owns query, location, and pagination. It does not explicitly compare against sibling tools, but the mode-selection guidance is clear enough for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrape_google_ai_modeScrape Google AI ModeARead-onlyInspect
Submit a prompt to Google AI Mode from a chosen country and return the AI answer with cited sources. Supports location or UULE targeting and desktop/mobile emulation.
| Name | Required | Description | Default |
|---|---|---|---|
| gl | No | ISO 3166-1 alpha-2 code for the result geography, sent to Google as gl (e.g. "us"). Use list_countries to see supported codes per model. | |
| hl | No | Optional Google interface-language code, sent as hl (e.g. "de", "pt-br"). Defaults to the language derived from gl — set it when the geography's dominant language is not the one you want. | |
| uule | No | Optional Google UULE location parameter. Mutually exclusive with location. | |
| device | No | Device type to emulate. Defaults to desktop. | desktop |
| prompt | Yes | The prompt to submit to Google AI Mode. | |
| country | No | ISO 3166-1 alpha-2 country code to geo-target the request from (e.g. "US"). Use list_countries to see supported codes per model. Deprecated — use gl instead; country is kept for compatibility and must not disagree with gl. | |
| include | No | Optional flags for heavier payload fields, each off by default: markdown (the answer rendered as markdown), html (the answer page HTML), rawResponse (the engine's unprocessed response payload). Leave unset for the leanest response. | |
| location | No | Optional location name to target search results (e.g. "Austin, Texas, United States"). Mutually exclusive with uule. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, the description adds meaningful behavioral context: it returns the AI answer with cited sources and supports country/location targeting and desktop/mobile emulation. It does not detail response structure or rate limits, but the core behavior is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with the main action front-loaded and no wasted words. It conveys purpose, return value, and key options without restating schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters and no output schema, the description gives the essential behavioral promise — AI answer with cited sources — and the main targeting/emulation options. It could be more explicit about the optional include flags, but the schema covers those details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents each parameter. The description adds no new per-parameter meaning beyond summarizing location/UULE and device emulation, which are already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Submit a prompt to Google AI Mode... and return the AI answer with cited sources.' This clearly identifies what the tool does and distinguishes it from sibling tools like scrape_google or scrape_gemini.
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 conveys the tool's intended use by naming Google AI Mode and its key capabilities, such as location/UULE targeting and device emulation. However, it does not explicitly state when to choose this tool over alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrape_google_newsScrape Google NewsARead-onlyInspect
Run a Google News search from a chosen country and return news results. Supports desktop, mobile, iOS, and Android emulation and multi-page results.
| Name | Required | Description | Default |
|---|---|---|---|
| gl | No | ISO 3166-1 alpha-2 code for the result geography, sent to Google as gl (e.g. "us"). Use list_countries to see supported codes per model. | |
| hl | No | Optional Google interface-language code, sent as hl (e.g. "de", "pt-br"). Defaults to the language derived from gl — set it when the geography's dominant language is not the one you want. | |
| pages | No | Number of result pages to fetch (1-10). Defaults to 1. | |
| query | Yes | The search query. | |
| device | No | Device to emulate: desktop, mobile, ios (Safari on iPhone), or android (Chrome on Android). mobile is an alias for android. Defaults to desktop. | desktop |
| country | No | ISO 3166-1 alpha-2 country code to geo-target the request from (e.g. "US"). Use list_countries to see supported codes per model. Deprecated — use gl instead; country is kept for compatibility and must not disagree with gl. | |
| include | No | Optional flags for heavier payload fields, each off by default: markdown (the answer rendered as markdown), html (the answer page HTML), rawResponse (the engine's unprocessed response payload). Leave unset for the leanest response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as read-only and non-destructive, so the safety burden is covered. The description adds meaningful behavioral context by disclosing device emulation (desktop/mobile/iOS/Android) and multi-page result fetching, which an agent cannot infer from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler: the core action leads, followed by the two most relevant capability expansions (device emulation, pagination). Every sentence adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With seven parameters, a nested include object, and no output schema, the description should tell an agent what a response looks like; 'return news results' is vague. The schema covers parameters and annotations cover safety, so the main remaining gap is the unspecified result shape and any pagination/rate-limit caveats.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven parameters thoroughly, making the baseline 3. The tool description itself adds little parameter meaning beyond 'chosen country', but it doesn't need to because the schema carries the burden.
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 names a specific verb ('Run a Google News search'), a concrete resource, and the result type ('return news results'), which clearly distinguishes it from siblings like scrape_google and scrape_google_ai_mode. It also adds useful scope ('from a chosen country') and capabilities.
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 this is the tool to use for Google News searches, but it never explicitly contrasts it with the sibling scrape_google or states when not to use it. There is no mention of alternatives or exclusion criteria, so the usage guidance is only inferred from the tool's purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrape_grokScrape GrokARead-onlyInspect
Submit a prompt to Grok (xAI) from a chosen country (and optionally US state) and return the answer with cited sources. Use this to see how Grok (xAI) answers a prompt and which brands/sources it mentions.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Optional state code for state-level targeting (e.g. "CA" when country is "US"). Only some countries support this — call list_states for the supported countries and their codes. | |
| prompt | Yes | The prompt to submit to Grok (xAI). | |
| country | Yes | ISO 3166-1 alpha-2 country code to geo-target the request from (e.g. "US"). Use list_countries to see supported codes per model. | |
| include | No | Optional flags for heavier payload fields, each off by default: markdown (the answer rendered as markdown), html (the answer page HTML), rawResponse (the engine's unprocessed response payload). Leave unset for the leanest response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the tool is a safe read operation. The description adds that the request is geo-targeted from a chosen country/state and returns cited sources, which is useful context beyond annotations. It does not disclose rate limits, cost considerations, or that responses are external AI answers, but given annotation coverage, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long with no waste, front-loading the core action and result. It packs the scope (chosen country/state, cited sources) and the usage motive (see brands/sources) efficiently. Slight deduction for not mentioning the includes or state/country dependency in the main description, but the schema covers it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 4 parameters but only 2 required, and the schema provides rich descriptions for all parameters including 'include' flags and state/country codes. The output schema does not exist, but the description states the return value (answer with cited sources). However, the description does not explain that the response might be large with include flags or that list_countries/list_states are needed for valid values, though these are in the schema. Overall, information is sufficient for an agent to call correctly, with minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents all parameters. The description adds the purpose of the country/state targeting (geo-targeting) and the cited-sources context, but it does not add much beyond schema descriptions. The description in the schema for 'include' already explains the flags, so the main description adds minimal extra parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb (Submit), resource (prompt to Grok), and the key scoping feature (from a chosen country/state), and explicitly mentions returning answers with cited sources. It also differentiates from siblings by naming Grok explicitly and describing what it adds (cited sources/brands), distinguishing it from scrape_chatgpt, scrape_gemini, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells when to use the tool: to see how Grok answers a prompt and which brands/sources it mentions. It also implicitly routes to list_states and list_countries for valid codes, which provides context for prerequisites. However, it does not explicitly state when to prefer this over sibling tools (e.g., versus scrape_chatgpt), leaving some inference to the agent based on the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrape_perplexityScrape PerplexityARead-onlyInspect
Submit a prompt to Perplexity from a chosen country (and optionally US state) and return the answer with cited sources. Use this to see how Perplexity answers a prompt and which brands/sources it mentions.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Optional state code for state-level targeting (e.g. "CA" when country is "US"). Only some countries support this — call list_states for the supported countries and their codes. | |
| prompt | Yes | The prompt to submit to Perplexity. | |
| country | Yes | ISO 3166-1 alpha-2 country code to geo-target the request from (e.g. "US"). Use list_countries to see supported codes per model. | |
| include | No | Optional flags for heavier payload fields, each off by default: markdown (the answer rendered as markdown), html (the answer page HTML), rawResponse (the engine's unprocessed response payload). Leave unset for the leanest response. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint, openWorldHint, and destructiveHint, so the description only needed to add behavioral detail. It does: it discloses that the tool submits a live prompt, geo-targets by country/state, and returns the answer plus cited sources. This is meaningful beyond annotation hints, though it doesn't mention cost, latency, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and result, and the second sentence adds practical use-case value. No filler or redundant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description gives a reasonable contract: input prompt plus geo-target, output answer with cited sources. The schema fills in state/inclusion prerequisites (list_states/list_countries, include flags). It is slightly short on return-structure detail, but not enough to make it incomplete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the description restates country/state only at a high level. It adds no parameter semantics beyond the schema; the detailed include flags are fully documented in the schema. Therefore the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Submit a prompt to Perplexity'), names the exact resource, and states the geo-targeting behavior and return value ('answer with cited sources'). The second sentence ('Use this to see how Perplexity answers...') reinforces what makes it distinct from sibling scraper tools, so an agent can tell it apart from scrape_chatgpt or scrape_gemini.
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?
It provides clear usage context: use this when you need Perplexity's answer and which brands/sources it mentions. It does not explicitly name alternatives or when-not conditions, but the Perplexity-specific framing plus sibling tool names is enough direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
1 tool update
- Changed
scrape_chatgpt1 field changed- added
Input schema / properties / disableWebSearchAdded value: +{ + "type": "boolean" +}
7 tool updates
- Changed
scrape_chatgpt2 fields changed- changed
Input schema / properties / include / descriptionPrevious value: -"Optional flags to include heavier payload fields in the response. Leave unset for the leanest response."New value: +"Optional flags for heavier payload fields, each off by default: markdown (the answer rendered as markdown), html (the answer page HTML), rawResponse (the engine's unprocessed response payload), searchQueries (the web searches ChatGPT issued while answering), ads and shopping (sponsored and product results; these render only on the desktop UI, so pair them with legacy: true). Leave unset for the leanest response." - added
Input schema / properties / legacy / descriptionAdded value: +"Serve ChatGPT's desktop UI instead of the default mobile-web UI. Needed for include.ads and include.shopping, which only render on desktop. Defaults to false."
- Changed
scrape_copilot1 field changed- changed
Input schema / properties / include / descriptionPrevious value: -"Optional flags to include heavier payload fields in the response. Leave unset for the leanest response."New value: +"Optional flags for heavier payload fields, each off by default: markdown (the answer rendered as markdown), html (the answer page HTML), rawResponse (the engine's unprocessed response payload). Leave unset for the leanest response."
- Changed
scrape_gemini1 field changed- changed
Input schema / properties / include / descriptionPrevious value: -"Optional flags to include heavier payload fields in the response. Leave unset for the leanest response."New value: +"Optional flags for heavier payload fields, each off by default: markdown (the answer rendered as markdown), html (the answer page HTML), rawResponse (the engine's unprocessed response payload). Leave unset for the leanest response."
- Changed
scrape_google_ai_mode1 field changed- changed
Input schema / properties / include / descriptionPrevious value: -"Optional flags to include heavier payload fields in the response. Leave unset for the leanest response."New value: +"Optional flags for heavier payload fields, each off by default: markdown (the answer rendered as markdown), html (the answer page HTML), rawResponse (the engine's unprocessed response payload). Leave unset for the leanest response."
- Changed
scrape_google_news1 field changed- changed
Input schema / properties / include / descriptionPrevious value: -"Optional flags to include heavier payload fields in the response. Leave unset for the leanest response."New value: +"Optional flags for heavier payload fields, each off by default: markdown (the answer rendered as markdown), html (the answer page HTML), rawResponse (the engine's unprocessed response payload). Leave unset for the leanest response."
- Changed
scrape_grok1 field changed- changed
Input schema / properties / include / descriptionPrevious value: -"Optional flags to include heavier payload fields in the response. Leave unset for the leanest response."New value: +"Optional flags for heavier payload fields, each off by default: markdown (the answer rendered as markdown), html (the answer page HTML), rawResponse (the engine's unprocessed response payload). Leave unset for the leanest response."
- Changed
scrape_perplexity1 field changed- changed
Input schema / properties / include / descriptionPrevious value: -"Optional flags to include heavier payload fields in the response. Leave unset for the leanest response."New value: +"Optional flags for heavier payload fields, each off by default: markdown (the answer rendered as markdown), html (the answer page HTML), rawResponse (the engine's unprocessed response payload). Leave unset for the leanest response."
2 tool updates
- Changed
scrape_google1 field changed- added
Input schema / properties / include / properties / googleGotoAdded value: +{ + "type": "boolean" +}
- Changed
scrape_google_ai_mode1 field changed- added
Input schema / properties / include / properties / googleGotoAdded value: +{ + "type": "boolean" +}
1 tool update
- Changed
scrape_chatgpt1 field changed- added
Input schema / properties / legacyAdded value: +{ + "type": "boolean" +}
3 tool updates
- Changed
scrape_google4 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"ISO 3166-1 alpha-2 country code to geo-target the request from (e.g. \"US\"). Use list_countries to see supported codes per model. Required in query mode; in url mode it can be derived from the URL's gl parameter."New value: +"ISO 3166-1 alpha-2 country code to geo-target the request from (e.g. \"US\"). Use list_countries to see supported codes per model. Deprecated — use gl instead; country is kept for compatibility and must not disagree with gl." - added
Input schema / properties / glAdded value: +{ + "description": "ISO 3166-1 alpha-2 code for the result geography, sent to Google as gl (e.g. \"us\"). Use list_countries to see supported codes per model. Required in query mode; in url mode it is read from the URL's gl parameter unless supplied here, and an explicit value wins.", + "type": "string" +} - added
Input schema / properties / hlAdded value: +{ + "description": "Optional Google interface-language code, sent as hl (e.g. \"de\", \"pt-br\"). Defaults to the language derived from gl — set it when the geography's dominant language is not the one you want. In url mode it is read from the URL's hl parameter unless supplied here, and an explicit value wins.", + "type": "string" +} - changed
Input schema / properties / url / descriptionPrevious value: -"A complete google.com/search URL to fetch instead of building one from structured fields. When set, query/location/uule/pages must be omitted (the URL owns them); country can be derived from the URL's gl parameter."New value: +"A complete google.com/search URL to fetch instead of building one from structured fields. When set, query/location/uule/pages must be omitted (the URL owns them); gl and hl are read from the URL's gl/hl parameters unless supplied explicitly."
- Changed
scrape_google_ai_mode4 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"ISO 3166-1 alpha-2 country code to geo-target the request from (e.g. \"US\"). Use list_countries to see supported codes per model."New value: +"ISO 3166-1 alpha-2 country code to geo-target the request from (e.g. \"US\"). Use list_countries to see supported codes per model. Deprecated — use gl instead; country is kept for compatibility and must not disagree with gl." - added
Input schema / properties / glAdded value: +{ + "description": "ISO 3166-1 alpha-2 code for the result geography, sent to Google as gl (e.g. \"us\"). Use list_countries to see supported codes per model.", + "type": "string" +} - added
Input schema / properties / hlAdded value: +{ + "description": "Optional Google interface-language code, sent as hl (e.g. \"de\", \"pt-br\"). Defaults to the language derived from gl — set it when the geography's dominant language is not the one you want.", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "prompt", - "country" -]New value: +[ + "prompt" +]
- Changed
scrape_google_news4 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"ISO 3166-1 alpha-2 country code to geo-target the request from (e.g. \"US\"). Use list_countries to see supported codes per model."New value: +"ISO 3166-1 alpha-2 country code to geo-target the request from (e.g. \"US\"). Use list_countries to see supported codes per model. Deprecated — use gl instead; country is kept for compatibility and must not disagree with gl." - added
Input schema / properties / glAdded value: +{ + "description": "ISO 3166-1 alpha-2 code for the result geography, sent to Google as gl (e.g. \"us\"). Use list_countries to see supported codes per model.", + "type": "string" +} - added
Input schema / properties / hlAdded value: +{ + "description": "Optional Google interface-language code, sent as hl (e.g. \"de\", \"pt-br\"). Defaults to the language derived from gl — set it when the geography's dominant language is not the one you want.", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "query", - "country" -]New value: +[ + "query" +]
10 tool updates
- First observed
list_countries - First observed
list_states - First observed
scrape_chatgpt - First observed
scrape_copilot - First observed
scrape_gemini - First observed
scrape_google - First observed
scrape_google_ai_mode - First observed
scrape_google_news - First observed
scrape_grok - First observed
scrape_perplexity
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Scrape Google search results with SERP data, ads, and knowledge panels
Crawl, scrape, search the web, and automate browsers at scale with anti-bot bypass.
Google SERP as JSON: organic, AI Overview, People Also Ask, AI Mode, news, shopping. No Cloud setup.
Web scraping for AI agents. Extract text and metadata from any URL worldwide. $0.005/page.
Related MCP Servers
AlicenseBqualityCmaintenanceSearch API for AI, SEO & automation. Browser-rendered Google, Bing, Yandex, Baidu, DuckDuckGo and Ecosia results with URL extraction (+image search and engine metadata tools)9602MIT- FlicenseNot gradedqualityBmaintenanceEnables fetching Google's AI Overview answers and cited sources as structured JSON, with support for batch queries and country/language targeting.-
- AlicenseAqualityDmaintenanceProvides real-time Google search results (organic + knowledge graph) with country targeting, language, time filters, and pagination, at low cost.117MIT
- AlicenseBqualityCmaintenanceEnables web scraping and data extraction from websites with geographic flexibility, privacy features, and anti-detection capabilities. Supports scraping general websites, Google Search, Amazon Search, and Reddit with customizable parameters for rendering, geolocation, and locale.3016536ISC
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
list_countries and list_states are clearly metadata helpers, while each scrape_* tool targets a specific engine or search vertical. Even the Google-family tools are differentiated by output type: organic results, AI Mode answers, and news.
All tools use snake_case verb_noun naming: list_* for metadata and scrape_* for engine-specific operations. Longer names like scrape_google_ai_mode still follow the same pattern with no mixed conventions.
With 10 tools, the set is well-scoped and each tool earns its place. The two list tools support the eight distinct scraping targets without unnecessary redundancy.
The core workflow—choose a country/state and scrape an engine—is well covered across major AI engines and Google verticals. However, there is no way to enumerate supported engine models even though list_countries accepts a model parameter, and some obvious Google verticals like images or shopping are absent.