xfix
Server Details
Check if AI assistants and shopping agents can read a website or online store
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 7 tools
Each tool targets a recognizable check subject (crawler access, readability, visibility, product page, store readiness, result fetch, index lookup), but there is real overlap: check_page_visibility internally performs the crawl-access and readability checks that check_ai_crawler_access and check_page_readability do standalone, and check_store_ai_readiness partially duplicates check_product_page. The detailed descriptions do a good job explaining when to use each, keeping ambiguity low.
Names follow a clean verb_noun convention: check_* for active checks, get_* and lookup_* for retrievals. The one consistent prefix per action type makes the pattern predictable throughout.
Seven tools is well-scoped for a focused site-visibility/AI-readiness checker. Each tool earns its place with no filler and no fragmentation into excessive variants.
The surface covers crawler access, readability, full visibility scoring, product pages, store readiness, async result retrieval, and index lookup, with a result-fetch tool handling the slow-check case. Minor gap: no multi-page/batch or sitemap-level check despite single-page-only tools being explicitly noted.
Available Tools
7 toolscheck_ai_crawler_accessCheck AI crawler accessARead-onlyInspect
Reads a site's robots.txt the way 9 crawlers do (Googlebot, Bingbot, Applebot, OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User) and returns which may fetch the given page and the rule that blocks each one. Does not see CDN or firewall rules.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The full address of one public page, for example https://example.com/page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| tool | Yes | |
| cached | Yes | |
| limits | Yes | |
| status | Yes | |
| verdict | Yes | |
| findings | Yes | |
| checked_at | Yes | |
| report_url | Yes | |
| crawler_access | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and open-world behavior, but the description adds real value beyond them: it names the nine specific user agents, discloses that evaluation is done 'the way crawlers do', and explicitly limits scope to robots.txt (excluding CDN/firewall rules) — an important non-obvious caveat that prevents false-negative conclusions.
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 dense sentences, zero filler. The core behavior and the crawler list are front-loaded, and the scope limitation is stated last as a short caveat.
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?
Output schema exists, so return values need not be re-explained, yet the description still summarizes the result shape. Combined with the crawler enumeration and the CDN/firewall caveat, an agent has everything needed to call it correctly and interpret the answer.
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?
With one parameter at 100% schema coverage, the schema already documents the url field including format and an example. The description adds only the qualifier that the target must be a 'public' page, which is marginal beyond structured data. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('reads a site's robots.txt') plus the exact crawler set it emulates (Googlebot through Perplexity-User) and the return shape (which may fetch, which rule blocks). This is clearly distinguishable from siblings like check_page_readability or check_page_visibility.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and description — checking whether named AI crawlers can fetch a URL — but it never states when to prefer this over check_page_visibility, check_store_ai_readiness, or lookup_index_score. The one explicit boundary ('Does not see CDN or firewall rules') is a scope exclusion rather than an alternative-selection rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_page_readabilityCheck page text without JavaScriptARead-onlyInspect
Fetches the public page at the given URL without running JavaScript, the way many AI crawlers do, and reports whether its main text is present in the HTML. Checks one page only.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The full address of one public page, for example https://example.com/page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| tool | Yes | |
| cached | Yes | |
| limits | Yes | |
| status | Yes | |
| verdict | Yes | |
| findings | Yes | |
| checked_at | Yes | |
| report_url | Yes | |
| readability | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description still adds real behavioral context beyond that: no JavaScript is executed, correctness is judged on main-text presence in raw HTML, and only one page is analyzed per call. It says nothing about rate limits, redirect handling, or timeouts, 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?
Two tight sentences with no filler. The core mechanism (no JS, raw HTML) leads, and the one-page scope constraint is placed last as a qualifier, which is the right order.
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?
An output schema exists, so return values need not be described. Combined with annotations covering the safety profile and a schema that fully documents the single parameter, the description covers what remains: scope, mechanism, and the 'public page' restriction. Minor gaps (what happens on non-HTML or blocked responses) keep it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single url parameter already carries a format example and a 2000-char limit in the schema. The description adds no syntax or constraint detail beyond that, so the schema is doing all the work — the baseline 3.
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?
States a specific action on a specific resource: fetch a public page without executing JavaScript and report whether its main text is in the raw HTML. It is clear about what it does, though it never names the sibling it should be chosen over (e.g. check_page_visibility or check_ai_crawler_access), so differentiation is left to the reader.
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 phrase 'the way many AI crawlers do' implies the scenario (assessing crawler-visible content), and 'Checks one page only' scopes the call to a single URL. But there is no explicit when-to-use vs the several look-alike siblings in this family, and no stated prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_page_visibilityRun xfix search visibility checkARead-onlyInspect
Runs the xfix search check on one public page: fetches it without running JavaScript, checks robots.txt for 9 crawlers, measures mobile speed and reviews text, headings and title. Returns a score out of 100, a grade, coverage, any failed gates and the 5 biggest point losses with fixes. Takes about a minute; if not finished within about 25 seconds, returns a check_id to fetch the result later.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The full address of one public page, for example https://example.com/page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| tool | Yes | |
| grade | No | |
| score | No | |
| cached | Yes | |
| limits | Yes | |
| out_of | No | |
| status | Yes | |
| blocked | No | |
| summary | No | |
| verdict | Yes | |
| check_id | No | |
| coverage | No | |
| findings | Yes | |
| progress | No | |
| checked_at | Yes | |
| report_url | Yes | |
| failed_gates | No | |
| low_confidence | No | |
| biggest_point_losses | No | |
| score_once_unblocked | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=true), and the description adds genuinely useful behavior: JS is not executed during the fetch, the run takes about a minute, and if it exceeds ~25 seconds it returns a check_id for later retrieval. Rate limits or auth requirements are not mentioned.
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?
Three sentences, front-loaded with purpose and then behavior; each sentence carries information. The return-value sentence partly duplicates the output schema, which is mild waste but not harmful.
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 an output schema exists and annotations carry the safety profile, the description supplies the key remaining context: the async check_id workflow and the ~1 minute runtime. It lacks sibling routing and prerequisites, but is otherwise sufficient to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter with 100% schema description coverage, so the schema already documents the url field fully. The description adds only the 'one public page' constraint and no syntax or format detail beyond the schema, 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?
States a specific verb and resource: 'Runs the xfix search check on one public page', and enumerates the concrete checks (JS-less fetch, robots.txt for 9 crawlers, mobile speed, text/headings/title). Clear what it does, but it never names or differentiates from siblings like check_page_readability or check_ai_crawler_access.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'on one public page' and the async fallback, but there is no explicit when-to-use vs alternatives guidance and no when-not conditions. The agent must infer that this is the broad visibility check versus the narrower sibling checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_product_pageCheck product page price and schemaARead-onlyInspect
Fetches one public product page without running JavaScript and reports whether the price and stock are in the HTML and which of six product structured data fields are present: price, availability, brand, identifier (gtin or sku), shipping details and aggregate rating. Use when the user gives a product page URL.
| Name | Required | Description | Default |
|---|---|---|---|
| product_url | Yes | The full address of one public product page. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| tool | Yes | |
| cached | Yes | |
| limits | Yes | |
| status | Yes | |
| verdict | Yes | |
| findings | Yes | |
| checked_at | Yes | |
| report_url | Yes | |
| price_and_stock_in_html | No | |
| product_structured_data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description still adds meaningful context beyond them: it runs without JavaScript (so JS-rendered prices may be missed) and enumerates the six checks, which sets expectations about output coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the action and its scope, with no redundant or filler text. The when-to-use cue is placed at the end without padding.
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?
An output schema exists, so return-value details need not be repeated. Combined with the no-JS disclosure and the field list, an agent has enough to call it correctly; only the lack of sibling routing guidance leaves a minor gap.
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 there is a single required parameter fully documented in the schema. The description reinforces 'one public product page' but adds no syntax or format detail beyond the schema, so 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?
States a specific verb and resource ('Fetches one public product page') and enumerates exactly what it reports (price/stock presence plus six structured-data fields). It is clear and scoped, but it never distinguishes itself from siblings like check_page_readability or check_page_visibility, so an agent must infer the boundary.
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?
'Use when the user gives a product page URL' gives a clear triggering condition. However, it offers no when-not-to-use guidance and does not name an alternative sibling for adjacent cases (e.g., general readability or AI-crawler checks).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_store_ai_readinessCheck store AI shopping readinessARead-onlyInspect
Checks whether AI assistants and shopping agents can read an online store. Fetches the public store pages the user names, without running JavaScript. Returns the store's AI Shopping Readiness Index score if the store is in the Index, which AI crawlers its robots.txt allows, and whether one product page shows price, stock and product structured data in its HTML. Use when the user asks if AI can find, read or shop their store. Does not test checkout or log in. Use when the user gives a store or domain.
| Name | Required | Description | Default |
|---|---|---|---|
| store_url | Yes | The store's address, for example yourstore.com. | |
| product_url | No | Optional: the full address of one product page of the store. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| tool | Yes | |
| index | No | |
| cached | Yes | |
| limits | Yes | |
| status | Yes | |
| verdict | Yes | |
| findings | Yes | |
| checked_at | Yes | |
| report_url | Yes | |
| store_domain | No | |
| crawler_access | No | |
| index_report_url | No | |
| needs_product_url | No | |
| price_and_stock_in_html | No | |
| product_structured_data | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, openWorldHint, destructiveHint=false), so the bar is lower, yet the description adds real behavioral context: it fetches public pages 'without running JavaScript' and reports specific artifacts (Index score, allowed crawlers, structured-data presence). It does not mention rate limits, failure modes for unreachable stores, or auth needs, keeping it short of a 5.
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?
Front-loaded with the core action, then the mechanics, then the outputs, then usage conditions — a logical order with no filler. The closing 'Use when the user gives a store or domain' partially restates the earlier usage sentence, a minor 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?
An output schema exists, so return values need not be spelled out, yet the description still summarizes the three result categories, which helps selection. Combined with full schema coverage and annotations, an agent has enough to invoke it correctly; only sibling disambiguation is missing.
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 both parameters are documented in the schema, so the baseline is 3. The description only indirectly adds meaning by tying the product page to the structured-data check ('whether one product page shows price, stock and product structured data'), without adding format or constraint detail 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?
States a specific verb and resource: 'Checks whether AI assistants and shopping agents can read an online store,' and details exactly what it inspects (robots.txt crawlers, structured data, Index score). It is clear, but it never names or contrasts itself with the sibling tools it overlaps with (check_ai_crawler_access, check_page_readability, check_product_page), so an agent cannot tell which one to pick from the text alone.
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?
Gives explicit trigger conditions ('Use when the user asks if AI can find, read or shop their store') plus an exclusion ('Does not test checkout or log in'). However, it offers no alternatives or routing guidance toward the narrower sibling tools, which is the main thing an agent would need when several readiness checks exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_page_visibility_resultGet xfix search resultARead-onlyInspect
Returns the result of an xfix search check started earlier, or its progress if it is still running.
| Name | Required | Description | Default |
|---|---|---|---|
| check_id | Yes | The check_id that check_page_visibility returned. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| tool | Yes | |
| grade | No | |
| score | No | |
| cached | Yes | |
| limits | Yes | |
| out_of | No | |
| status | Yes | |
| blocked | No | |
| summary | No | |
| verdict | Yes | |
| check_id | No | |
| coverage | No | |
| findings | Yes | |
| progress | No | |
| checked_at | Yes | |
| report_url | Yes | |
| failed_gates | No | |
| low_confidence | No | |
| biggest_point_losses | No | |
| score_once_unblocked | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world). The description adds genuinely new behavioral context: this is an asynchronous retrieval that can return either a final result or in-progress state, which the agent cannot learn from the annotations alone. It stops short of describing terminal states or retry behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with zero filler; the primary purpose (returning the result) precedes the conditional branch (progress if still running).
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?
An output schema exists, so return values need no explanation, and the description covers the async dual-state behavior that matters most. The remaining gap is polling guidance (whether/how often to re-call), which is minor for a one-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter's schema text ("The check_id that check_page_visibility returned") already explains its origin and how to obtain it. The description adds no additional parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Returns") and resource ("the result of an xfix search check"), and clarifies the async nature by noting it may return "progress if it is still running." It implicitly pairs with check_page_visibility ("started earlier") but never names that sibling explicitly, so an agent must infer the start/fetch relationship from context.
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?
"Started earlier" implies this is a follow-up call to a previously initiated check, which is useful implied guidance. However, it never names check_page_visibility as the initiating tool, nor says whether to poll repeatedly, how often, or what to do if the check never completes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_index_scoreLook up AI Shopping Readiness Index scoreARead-onlyInspect
Looks up a store domain in the xfix AI Shopping Readiness Index and returns its published score and the fields shown on the public Index page, or says the store is not in the Index. Does not fetch the store.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | The store's domain, for example yourstore.com. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| tool | Yes | |
| index | No | |
| cached | Yes | |
| limits | Yes | |
| status | Yes | |
| verdict | Yes | |
| findings | Yes | |
| checked_at | Yes | |
| report_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), and the description adds meaningful behavior beyond them: the not-in-Index outcome, the fact that the response mirrors the public Index page fields, and the explicit "does not fetch the store" scope boundary. It doesn't mention rate limits or caching, but it exceeds the annotation baseline.
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 and its scope boundary ("Does not fetch the store") are front-loaded before the failure case. Every clause carries 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?
For a one-parameter read tool with full annotation coverage and an output schema, the description is essentially complete: it covers the lookup, the return shape at a high level, the negative outcome, and the scope limit. It could still say explicitly when this beats check_store_ai_readiness, but nothing needed to call it correctly is missing.
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?
With a single parameter at 100% schema description coverage, the schema already defines "domain" with a format example. The description restates that the input is a store domain but adds no extra syntax, normalization, or edge-case guidance, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ("Looks up a store domain in the xfix AI Shopping Readiness Index") and states what is returned (published score plus the public Index page fields). It implicitly differentiates itself from the check_* siblings with "Does not fetch the store," though it never names them explicitly, so sibling differentiation is inferential rather than stated.
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?
"Does not fetch the store" implies this is for retrieving an already-published score rather than running a live analysis, which gestures at when to prefer it over check_store_ai_readiness. However, there is no explicit when-to-use/when-not statement or named alternative, so the agent must infer the routing rule.
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.
2 tool updates
- Changed
check_product_page5 fields changed- added
Output schema / properties / price_and_stock_in_html / properties / platformAdded value: +{ + "type": [ + "string", + "null" + ] +} - changed
Output schema / properties / price_and_stock_in_html / requiredPrevious value: -[ - "verdict", - "headline", - "page_checked", - "fields", - "note", - "report_url" -]New value: +[ + "verdict", + "headline", + "page_checked", + "platform", + "fields", + "note", + "report_url" +] - added
Output schema / properties / product_structured_data / properties / found_outside_product_offerAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / product_structured_data / properties / platformAdded value: +{ + "type": [ + "string", + "null" + ] +} - changed
Output schema / properties / product_structured_data / requiredPrevious value: -[ - "verdict", - "headline", - "page_checked", - "fields", - "missing_fields", - "note", - "json_ld", - "report_url" -]New value: +[ + "verdict", + "headline", + "page_checked", + "platform", + "fields", + "missing_fields", + "found_outside_product_offer", + "note", + "json_ld", + "report_url" +]
- Changed
check_store_ai_readiness2 fields changed- changed
Output schema / properties / price_and_stock_in_html / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "fields": { - "items": { - "additionalProperties": false, - "properties": { - "field": { - "type": "string" - }, - "present": { - "type": "boolean" - } - }, - "required": [ - "field", - "present" - ], - "type": "object" - }, - "type": "array" - }, - "fix_by_platform": { - "items": { - "additionalProperties": false, - "properties": { - "fix": { - "type": "string" - }, - "platform": { - "type": "string" - } - }, - "required": [ - "platform", - "fix" - ], - "type": "object" - }, - "type": "array" - }, - "headline": { - "type": "string" - }, - "note": { - "type": [ - "string", - "null" - ] - }, - "page_checked": { - "type": [ - "string", - "null" - ] - }, - "report_url": { - "type": [ - "string", - "null" - ] - }, - "verdict": { - "type": "string" - } - }, - "required": [ - "verdict", - "headline", - "page_checked", - "fields", - "note", - "report_url" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "present": { + "type": "boolean" + } + }, + "required": [ + "field", + "present" + ], + "type": "object" + }, + "type": "array" + }, + "fix_by_platform": { + "items": { + "additionalProperties": false, + "properties": { + "fix": { + "type": "string" + }, + "platform": { + "type": "string" + } + }, + "required": [ + "platform", + "fix" + ], + "type": "object" + }, + "type": "array" + }, + "headline": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "page_checked": { + "type": [ + "string", + "null" + ] + }, + "platform": { + "type": [ + "string", + "null" + ] + }, + "report_url": { + "type": [ + "string", + "null" + ] + }, + "verdict": { + "type": "string" + } + }, + "required": [ + "verdict", + "headline", + "page_checked", + "platform", + "fields", + "note", + "report_url" + ], + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / product_structured_data / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "fields": { - "items": { - "additionalProperties": false, - "properties": { - "field": { - "type": "string" - }, - "label": { - "type": "string" - }, - "present": { - "type": "boolean" - }, - "status": { - "enum": [ - "present", - "missing" - ], - "type": "string" - } - }, - "required": [ - "field", - "label", - "present", - "status" - ], - "type": "object" - }, - "type": "array" - }, - "fix_by_platform": { - "items": { - "additionalProperties": false, - "properties": { - "fix": { - "type": "string" - }, - "platform": { - "type": "string" - } - }, - "required": [ - "platform", - "fix" - ], - "type": "object" - }, - "type": "array" - }, - "headline": { - "type": "string" - }, - "json_ld": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "label": { - "const": "quoted page text", - "type": "string" - }, - "text": { - "maxLength": 200, - "type": "string" - } - }, - "required": [ - "label", - "text" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "missing_fields": { - "items": { - "type": "string" - }, - "type": "array" - }, - "note": { - "type": [ - "string", - "null" - ] - }, - "page_checked": { - "type": [ - "string", - "null" - ] - }, - "report_url": { - "type": [ - "string", - "null" - ] - }, - "verdict": { - "type": "string" - } - }, - "required": [ - "verdict", - "headline", - "page_checked", - "fields", - "missing_fields", - "note", - "json_ld", - "report_url" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "label": { + "type": "string" + }, + "present": { + "type": "boolean" + }, + "status": { + "enum": [ + "present", + "missing" + ], + "type": "string" + } + }, + "required": [ + "field", + "label", + "present", + "status" + ], + "type": "object" + }, + "type": "array" + }, + "fix_by_platform": { + "items": { + "additionalProperties": false, + "properties": { + "fix": { + "type": "string" + }, + "platform": { + "type": "string" + } + }, + "required": [ + "platform", + "fix" + ], + "type": "object" + }, + "type": "array" + }, + "found_outside_product_offer": { + "items": { + "type": "string" + }, + "type": "array" + }, + "headline": { + "type": "string" + }, + "json_ld": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "label": { + "const": "quoted page text", + "type": "string" + }, + "text": { + "maxLength": 200, + "type": "string" + } + }, + "required": [ + "label", + "text" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "missing_fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "page_checked": { + "type": [ + "string", + "null" + ] + }, + "platform": { + "type": [ + "string", + "null" + ] + }, + "report_url": { + "type": [ + "string", + "null" + ] + }, + "verdict": { + "type": "string" + } + }, + "required": [ + "verdict", + "headline", + "page_checked", + "platform", + "fields", + "missing_fields", + "found_outside_product_offer", + "note", + "json_ld", + "report_url" + ], + "type": "object" + }, + { + "type": "null" + } +]
2 tool updates
- Changed
check_product_page4 fields changed- removed
Output schema / properties / price_and_stockRemoved value: -{ - "additionalProperties": false, - "properties": { - "fields": { - "items": { - "additionalProperties": false, - "properties": { - "field": { - "type": "string" - }, - "present": { - "type": "boolean" - } - }, - "required": [ - "field", - "present" - ], - "type": "object" - }, - "type": "array" - }, - "fix_by_platform": { - "items": { - "additionalProperties": false, - "properties": { - "fix": { - "type": "string" - }, - "platform": { - "type": "string" - } - }, - "required": [ - "platform", - "fix" - ], - "type": "object" - }, - "type": "array" - }, - "headline": { - "type": "string" - }, - "note": { - "type": [ - "string", - "null" - ] - }, - "page_checked": { - "type": [ - "string", - "null" - ] - }, - "report_url": { - "type": [ - "string", - "null" - ] - }, - "verdict": { - "type": "string" - } - }, - "required": [ - "verdict", - "headline", - "page_checked", - "fields", - "note", - "report_url" - ], - "type": "object" -} - added
Output schema / properties / price_and_stock_in_htmlAdded value: +{ + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "present": { + "type": "boolean" + } + }, + "required": [ + "field", + "present" + ], + "type": "object" + }, + "type": "array" + }, + "fix_by_platform": { + "items": { + "additionalProperties": false, + "properties": { + "fix": { + "type": "string" + }, + "platform": { + "type": "string" + } + }, + "required": [ + "platform", + "fix" + ], + "type": "object" + }, + "type": "array" + }, + "headline": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "page_checked": { + "type": [ + "string", + "null" + ] + }, + "report_url": { + "type": [ + "string", + "null" + ] + }, + "verdict": { + "type": "string" + } + }, + "required": [ + "verdict", + "headline", + "page_checked", + "fields", + "note", + "report_url" + ], + "type": "object" +} - removed
Output schema / properties / product_schemaRemoved value: -{ - "additionalProperties": false, - "properties": { - "fields": { - "items": { - "additionalProperties": false, - "properties": { - "field": { - "type": "string" - }, - "label": { - "type": "string" - }, - "present": { - "type": "boolean" - }, - "status": { - "enum": [ - "present", - "missing" - ], - "type": "string" - } - }, - "required": [ - "field", - "label", - "present", - "status" - ], - "type": "object" - }, - "type": "array" - }, - "fix_by_platform": { - "items": { - "additionalProperties": false, - "properties": { - "fix": { - "type": "string" - }, - "platform": { - "type": "string" - } - }, - "required": [ - "platform", - "fix" - ], - "type": "object" - }, - "type": "array" - }, - "headline": { - "type": "string" - }, - "json_ld": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "label": { - "const": "quoted page text", - "type": "string" - }, - "text": { - "maxLength": 200, - "type": "string" - } - }, - "required": [ - "label", - "text" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "missing_fields": { - "items": { - "type": "string" - }, - "type": "array" - }, - "note": { - "type": [ - "string", - "null" - ] - }, - "page_checked": { - "type": [ - "string", - "null" - ] - }, - "report_url": { - "type": [ - "string", - "null" - ] - }, - "verdict": { - "type": "string" - } - }, - "required": [ - "verdict", - "headline", - "page_checked", - "fields", - "missing_fields", - "note", - "json_ld", - "report_url" - ], - "type": "object" -} - added
Output schema / properties / product_structured_dataAdded value: +{ + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "label": { + "type": "string" + }, + "present": { + "type": "boolean" + }, + "status": { + "enum": [ + "present", + "missing" + ], + "type": "string" + } + }, + "required": [ + "field", + "label", + "present", + "status" + ], + "type": "object" + }, + "type": "array" + }, + "fix_by_platform": { + "items": { + "additionalProperties": false, + "properties": { + "fix": { + "type": "string" + }, + "platform": { + "type": "string" + } + }, + "required": [ + "platform", + "fix" + ], + "type": "object" + }, + "type": "array" + }, + "headline": { + "type": "string" + }, + "json_ld": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "label": { + "const": "quoted page text", + "type": "string" + }, + "text": { + "maxLength": 200, + "type": "string" + } + }, + "required": [ + "label", + "text" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "missing_fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "page_checked": { + "type": [ + "string", + "null" + ] + }, + "report_url": { + "type": [ + "string", + "null" + ] + }, + "verdict": { + "type": "string" + } + }, + "required": [ + "verdict", + "headline", + "page_checked", + "fields", + "missing_fields", + "note", + "json_ld", + "report_url" + ], + "type": "object" +}
- Changed
check_store_ai_readiness4 fields changed- removed
Output schema / properties / price_and_stockRemoved value: -{ - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "fields": { - "items": { - "additionalProperties": false, - "properties": { - "field": { - "type": "string" - }, - "present": { - "type": "boolean" - } - }, - "required": [ - "field", - "present" - ], - "type": "object" - }, - "type": "array" - }, - "fix_by_platform": { - "items": { - "additionalProperties": false, - "properties": { - "fix": { - "type": "string" - }, - "platform": { - "type": "string" - } - }, - "required": [ - "platform", - "fix" - ], - "type": "object" - }, - "type": "array" - }, - "headline": { - "type": "string" - }, - "note": { - "type": [ - "string", - "null" - ] - }, - "page_checked": { - "type": [ - "string", - "null" - ] - }, - "report_url": { - "type": [ - "string", - "null" - ] - }, - "verdict": { - "type": "string" - } - }, - "required": [ - "verdict", - "headline", - "page_checked", - "fields", - "note", - "report_url" - ], - "type": "object" - }, - { - "type": "null" - } - ] -} - added
Output schema / properties / price_and_stock_in_htmlAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "present": { + "type": "boolean" + } + }, + "required": [ + "field", + "present" + ], + "type": "object" + }, + "type": "array" + }, + "fix_by_platform": { + "items": { + "additionalProperties": false, + "properties": { + "fix": { + "type": "string" + }, + "platform": { + "type": "string" + } + }, + "required": [ + "platform", + "fix" + ], + "type": "object" + }, + "type": "array" + }, + "headline": { + "type": "string" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "page_checked": { + "type": [ + "string", + "null" + ] + }, + "report_url": { + "type": [ + "string", + "null" + ] + }, + "verdict": { + "type": "string" + } + }, + "required": [ + "verdict", + "headline", + "page_checked", + "fields", + "note", + "report_url" + ], + "type": "object" + }, + { + "type": "null" + } + ] +} - removed
Output schema / properties / product_schemaRemoved value: -{ - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "fields": { - "items": { - "additionalProperties": false, - "properties": { - "field": { - "type": "string" - }, - "label": { - "type": "string" - }, - "present": { - "type": "boolean" - }, - "status": { - "enum": [ - "present", - "missing" - ], - "type": "string" - } - }, - "required": [ - "field", - "label", - "present", - "status" - ], - "type": "object" - }, - "type": "array" - }, - "fix_by_platform": { - "items": { - "additionalProperties": false, - "properties": { - "fix": { - "type": "string" - }, - "platform": { - "type": "string" - } - }, - "required": [ - "platform", - "fix" - ], - "type": "object" - }, - "type": "array" - }, - "headline": { - "type": "string" - }, - "json_ld": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "label": { - "const": "quoted page text", - "type": "string" - }, - "text": { - "maxLength": 200, - "type": "string" - } - }, - "required": [ - "label", - "text" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "missing_fields": { - "items": { - "type": "string" - }, - "type": "array" - }, - "note": { - "type": [ - "string", - "null" - ] - }, - "page_checked": { - "type": [ - "string", - "null" - ] - }, - "report_url": { - "type": [ - "string", - "null" - ] - }, - "verdict": { - "type": "string" - } - }, - "required": [ - "verdict", - "headline", - "page_checked", - "fields", - "missing_fields", - "note", - "json_ld", - "report_url" - ], - "type": "object" - }, - { - "type": "null" - } - ] -} - added
Output schema / properties / product_structured_dataAdded value: +{ + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "fields": { + "items": { + "additionalProperties": false, + "properties": { + "field": { + "type": "string" + }, + "label": { + "type": "string" + }, + "present": { + "type": "boolean" + }, + "status": { + "enum": [ + "present", + "missing" + ], + "type": "string" + } + }, + "required": [ + "field", + "label", + "present", + "status" + ], + "type": "object" + }, + "type": "array" + }, + "fix_by_platform": { + "items": { + "additionalProperties": false, + "properties": { + "fix": { + "type": "string" + }, + "platform": { + "type": "string" + } + }, + "required": [ + "platform", + "fix" + ], + "type": "object" + }, + "type": "array" + }, + "headline": { + "type": "string" + }, + "json_ld": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "label": { + "const": "quoted page text", + "type": "string" + }, + "text": { + "maxLength": 200, + "type": "string" + } + }, + "required": [ + "label", + "text" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "missing_fields": { + "items": { + "type": "string" + }, + "type": "array" + }, + "note": { + "type": [ + "string", + "null" + ] + }, + "page_checked": { + "type": [ + "string", + "null" + ] + }, + "report_url": { + "type": [ + "string", + "null" + ] + }, + "verdict": { + "type": "string" + } + }, + "required": [ + "verdict", + "headline", + "page_checked", + "fields", + "missing_fields", + "note", + "json_ld", + "report_url" + ], + "type": "object" + }, + { + "type": "null" + } + ] +}
7 tool updates
- First observed
check_ai_crawler_access - First observed
check_page_readability - First observed
check_page_visibility - First observed
check_product_page - First observed
check_store_ai_readiness - First observed
get_page_visibility_result - First observed
lookup_index_score
Related MCP Connectors
Is a website ready for AI shopping agents? Readiness score (0-100) + agent shopping simulation.
Scan any website's AI readiness: AI search visibility and AI agent usability. Free, no auth.
Checks whether a website is readable and citable by AI systems (ChatGPT, Claude, Perplexity, etc.)
Look at what your website or online store tells crawlers, link previews and AI agents.
Related MCP Servers
- AlicenseAqualityAmaintenanceLets an MCP client check whether an ecommerce store can be read by AI assistants, auditing robots.txt to see which AI search versus training crawlers are blocked and sampling product pages to confirm structured data and facts survive in raw HTML without JavaScript. It can also generate a training-only opt-out robots.txt that leaves answer-engine crawlers allowed, all inside the conversation the user is already in.2MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to check whether AI assistants recommend a brand and audit a site's AI-agent readiness, providing visibility scores and specific gaps.MIT
- AlicenseNot gradedqualityCmaintenanceLets an AI assistant check any URL to see how much of a page's main content is present in the raw HTML versus only after JavaScript runs, showing which text blocks, meta fields, canonical tags, JSON-LD and links AI crawlers like GPTBot and ClaudeBot cannot read. It also reports what robots.txt allows for 22 AI bot tokens and how the site responds to each bot's user-agent.AGPL 3.0
- AlicenseAqualityBmaintenanceEnables AI assistants to audit a website's AI visibility by checking crawler access, identity files, and page signals, and running a full scored audit across ChatGPT, Claude, Gemini, and Perplexity.340 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.