Serveur MCP

AgentReady Woo

xyz.utilityhouse/agentready-woo
Commerce et retail Outils développeur Public et accessible MCP 2026-07-28

Ce que fait ce MCP

Audits WooCommerce storefronts for shopping-agent readiness and runs owner-authorized release verification gates.

claim_woo_release_result
Claim a completed Release Gate result once. Requires release:claim; replay is never billable.
Schéma d’entrée
{'type': 'object', 'required': ['run_id'], 'properties': {'run_id': {'type': 'string', 'maxLength': 100, 'minLength': 8, 'description': 'Release Gate run identifier returned by start_woo_release_verification. It must belong to the authenticated account; never substitute a store URL, credential, or customer value.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'oneOf': [{'type': 'object', 'required': ['packet', 'delivery', 'billable_eligibility', 'settlement'], 'properties': {'packet': {'oneOf': [{'type': 'object', 'required': ['schema_version', 'run_id', 'state', 'checks', 'protocol_bundles', 'coverage', 'unknowns', 'observed_at', 'digest'], 'properties': {'state': {'enum': ['ACCEPTED', 'REJECTED', 'PARTIAL', 'BLOCKED', 'UNMEASURED', 'INFRA_ERROR', 'CANCELED'], 'type': 'string'}, 'checks': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'family', 'state', 'evidence'], 'properties': {'id': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'state': {'enum': ['PASS', 'FAIL', 'BLOCKED', 'NOT_APPLICABLE', 'UNMEASURED'], 'type': 'string'}, 'family': {'enum': ['woo', 'robots', 'jsonld', 'mcp', 'ucp', 'acp'], 'type': 'string'}, 'evidence': {'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'safe': {'type': 'boolean'}, 'count': {'type': 'number'}, 'search': {'type': 'boolean'}, 'status': {'type': 'number'}, 'allowed': {'type': 'boolean'}, 'training': {'type': 'boolean'}, 'authorized': {'type': 'boolean'}, 'mime_valid': {'type': 'boolean'}, 'page_count': {'type': 'number'}, 'tool_count': {'type': 'number'}, 'user_fetch': {'type': 'boolean'}, 'offer_pages': {'type': 'number'}, 'api_declared': {'type': 'boolean'}, 'sample_count': {'type': 'number'}, 'source_count': {'type': 'number'}, 'feed_declared': {'type': 'boolean'}, 'product_pages': {'type': 'number'}, 'sampled_pages': {'type': 'number'}, 'reviewed_tools': {'type': 'number'}, 'catalogue_total': {'type': ['number', 'null']}, 'version_matches': {'type': 'boolean'}, 'capability_count': {'type': 'number'}, 'protocol_version': {'type': 'string'}, 'sampled_identifiers': {'type': 'number'}, 'conflicting_identifiers': {'type': 'number'}}, 'additionalProperties': False}, 'reasonCode': {'enum': ['TARGET_INVALID', 'TARGET_PRIVATE', 'TARGET_REDIRECT_UNSAFE', 'TARGET_DNS_REBIND', 'TARGET_TIMEOUT', 'TARGET_BYTES_EXCEEDED', 'TARGET_RATE_LIMITED', 'ROBOTS_BLOCKED', 'WOO_API_UNAVAILABLE', 'WOO_SAMPLE_EMPTY', 'JSONLD_PRODUCT_MISSING', 'JSONLD_OFFER_MISSING', 'DISCOVERY_UNDECLARED', 'PROTOCOL_VERSION_UNSUPPORTED', 'PROTOCOL_SCHEMA_INVALID', 'MCP_INITIALIZE_FAILED', 'MCP_TOOLS_LIST_FAILED', 'MCP_TOOL_ANNOTATION_UNSAFE', 'MCP_TOOL_CALL_FAILED', 'UCP_PROFILE_INVALID', 'ACP_PROFILE_INVALID', 'CROSS_SURFACE_CONFLICT', 'OWNERSHIP_REQUIRED', 'OWNERSHIP_EXPIRED', 'ACTIVE_FLOW_FORBIDDEN', 'EVIDENCE_INVALID', 'INFRA_PERSISTENCE_FAILED', 'UNMEASURED_SOURCE', 'CONNECTION_UNVERIFIABLE', 'INVALID_MIME', 'INVALID_JSON', 'PAGINATION_DRIFT', 'CANCELED_BY_CALLER'], 'type': 'string'}}, 'additionalProperties': False}}, 'digest': {'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, 'run_id': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{8,100}$'}, 'coverage': {'type': 'object', 'required': ['requested_families', 'completed_families', 'sample_size', 'catalogue_total'], 'properties': {'sample_size': {'type': 'integer', 'minimum': 0}, 'catalogue_total': {'type': ['integer', 'null'], 'minimum': 0}, 'completed_families': {'type': 'array', 'items': {'enum': ['woo', 'robots', 'jsonld', 'mcp', 'ucp', 'acp'], 'type': 'string'}}, 'requested_families': {'type': 'array', 'items': {'enum': ['woo', 'robots', 'jsonld', 'mcp', 'ucp', 'acp'], 'type': 'string'}}}, 'additionalProperties': False}, 'unknowns': {'type': 'array', 'items': {'enum': ['TARGET_INVALID', 'TARGET_PRIVATE', 'TARGET_REDIRECT_UNSAFE', 'TARGET_DNS_REBIND', 'TARGET_TIMEOUT', 'TARGET_BYTES_EXCEEDED', 'TARGET_RATE_LIMITED', 'ROBOTS_BLOCKED', 'WOO_API_UNAVAILABLE', 'WOO_SAMPLE_EMPTY', 'JSONLD_PRODUCT_MISSING', 'JSONLD_OFFER_MISSING', 'DISCOVERY_UNDECLARED', 'PROTOCOL_VERSION_UNSUPPORTED', 'PROTOCOL_SCHEMA_INVALID', 'MCP_INITIALIZE_FAILED', 'MCP_TOOLS_LIST_FAILED', 'MCP_TOOL_ANNOTATION_UNSAFE', 'MCP_TOOL_CALL_FAILED', 'UCP_PROFILE_INVALID', 'ACP_PROFILE_INVALID', 'CROSS_SURFACE_CONFLICT', 'OWNERSHIP_REQUIRED', 'OWNERSHIP_EXPIRED', 'ACTIVE_FLOW_FORBIDDEN', 'EVIDENCE_INVALID', 'INFRA_PERSISTENCE_FAILED', 'UNMEASURED_SOURCE', 'CONNECTION_UNVERIFIABLE', 'INVALID_MIME', 'INVALID_JSON', 'PAGINATION_DRIFT', 'CANCELED_BY_CALLER'], 'type': 'string'}}, 'observed_at': {'type': 'string', 'format': 'date-time'}, 'schema_version': {'const': '2026-09-06'}, 'protocol_bundles': {'type': 'array', 'items': {'type': 'object', 'required': ['family', 'release', 'sourceSha256', 'vectorSha256', 'builtAt'], 'properties': {'family': {'enum': ['mcp', 'ucp', 'acp'], 'type': 'string'}, 'builtAt': {'type': 'string', 'format': 'date-time'}, 'release': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'sourceSha256': {'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, 'vectorSha256': {'type': 'string', 'pattern': '^[a-f0-9]{64}$'}}, 'additionalProperties': False}}}, 'additionalProperties': False}, {'type': 'null'}]}, 'delivery': {'enum': ['FIRST', 'REPLAY'], 'type': 'string'}, 'settlement': {'const': 'disabled'}, 'billable_eligibility': {'enum': ['ELIGIBLE_ON_FIRST_DELIVERY', 'NOT_BILLABLE'], 'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['code'], 'properties': {'code': {'enum': ['AUTH_REQUIRED', 'STORE_NOT_FOUND', 'OWNERSHIP_REQUIRED', 'WORKFLOW_UNAVAILABLE', 'WORKFLOW_DISPATCH_FAILED', 'INVALID_INPUT', 'RUN_NOT_FOUND', 'RESULT_NOT_READY', 'EVIDENCE_REQUIRED'], 'type': 'string'}, 'state': {'enum': ['BLOCKED', 'UNMEASURED'], 'type': 'string'}, 'settlement': {'const': 'disabled'}}, 'additionalProperties': False}]}
get_woo_release_verification
Get a Release Gate run owned by the bearer token account. Requires release:read.
Lecture seule
Schéma d’entrée
{'type': 'object', 'required': ['run_id'], 'properties': {'run_id': {'type': 'string', 'maxLength': 100, 'minLength': 8, 'description': 'Release Gate run identifier returned by start_woo_release_verification. It must belong to the authenticated account; never substitute a store URL, credential, or customer value.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'oneOf': [{'type': 'object', 'required': ['run_id', 'state', 'terminal_state', 'evidence_digest'], 'properties': {'state': {'enum': ['QUEUED', 'RUNNING', 'RETRYING', 'TERMINAL', 'CANCELED'], 'type': 'string'}, 'run_id': {'type': 'string', 'maxLength': 100, 'minLength': 8}, 'terminal_state': {'type': ['string', 'null']}, 'evidence_digest': {'type': ['string', 'null']}}, 'additionalProperties': False}, {'type': 'object', 'required': ['code'], 'properties': {'code': {'enum': ['AUTH_REQUIRED', 'STORE_NOT_FOUND', 'OWNERSHIP_REQUIRED', 'WORKFLOW_UNAVAILABLE', 'WORKFLOW_DISPATCH_FAILED', 'INVALID_INPUT', 'RUN_NOT_FOUND', 'RESULT_NOT_READY', 'EVIDENCE_REQUIRED'], 'type': 'string'}, 'state': {'enum': ['BLOCKED', 'UNMEASURED'], 'type': 'string'}, 'settlement': {'const': 'disabled'}}, 'additionalProperties': False}]}
preflight_woo_store
Use ONLY before a specific WooCommerce update or release when you need protocol-family evidence. Do NOT use it for a general score or fix list; use scan_woo_store_readiness for that. Inspect selected public WooCommerce and agent-protocol surfaces and return per-family PASS, FAIL, BLOCKED or UNMEASURED evidence. It changes nothing, is free, and BLOCKED or UNMEASURED is an abstention rather than a finding about the store.
Lecture seule Accès externe
Schéma d’entrée
{'type': 'object', 'required': ['store_origin'], 'properties': {'store_origin': {'type': 'string', 'maxLength': 2048, 'minLength': 8, 'description': 'Public HTTPS origin of the WooCommerce store, with no path, query, credentials, private host, or customer data; for example https://shop.example.com.'}, 'requested_families': {'type': 'array', 'items': {'enum': ['woo', 'robots', 'jsonld', 'mcp', 'ucp', 'acp'], 'type': 'string'}, 'maxItems': 6, 'minItems': 1, 'description': 'Public protocol families to inspect. Omit to check all supported families; use only woo, robots, jsonld, mcp, ucp, or acp.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['kind', 'state', 'store_origin', 'requested_families', 'sample_seed', 'sample_size', 'catalogue_total', 'checks', 'protocol_bundles', 'observed_at', 'unknowns'], 'properties': {'kind': {'const': 'preflight'}, 'state': {'enum': ['ACCEPTED', 'REJECTED', 'PARTIAL', 'BLOCKED', 'UNMEASURED'], 'type': 'string'}, 'checks': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'family', 'state', 'evidence'], 'properties': {'id': {'type': 'string'}, 'state': {'enum': ['PASS', 'FAIL', 'BLOCKED', 'NOT_APPLICABLE', 'UNMEASURED'], 'type': 'string'}, 'family': {'enum': ['woo', 'robots', 'jsonld', 'mcp', 'ucp', 'acp'], 'type': 'string'}, 'evidence': {'type': 'object'}, 'reasonCode': {'enum': ['TARGET_INVALID', 'TARGET_PRIVATE', 'TARGET_REDIRECT_UNSAFE', 'TARGET_DNS_REBIND', 'TARGET_TIMEOUT', 'TARGET_BYTES_EXCEEDED', 'TARGET_RATE_LIMITED', 'ROBOTS_BLOCKED', 'WOO_API_UNAVAILABLE', 'WOO_SAMPLE_EMPTY', 'JSONLD_PRODUCT_MISSING', 'JSONLD_OFFER_MISSING', 'DISCOVERY_UNDECLARED', 'PROTOCOL_VERSION_UNSUPPORTED', 'PROTOCOL_SCHEMA_INVALID', 'MCP_INITIALIZE_FAILED', 'MCP_TOOLS_LIST_FAILED', 'MCP_TOOL_ANNOTATION_UNSAFE', 'MCP_TOOL_CALL_FAILED', 'UCP_PROFILE_INVALID', 'ACP_PROFILE_INVALID', 'CROSS_SURFACE_CONFLICT', 'OWNERSHIP_REQUIRED', 'OWNERSHIP_EXPIRED', 'ACTIVE_FLOW_FORBIDDEN', 'EVIDENCE_INVALID', 'INFRA_PERSISTENCE_FAILED', 'UNMEASURED_SOURCE', 'CONNECTION_UNVERIFIABLE', 'INVALID_MIME', 'INVALID_JSON', 'PAGINATION_DRIFT', 'CANCELED_BY_CALLER'], 'type': 'string'}}, 'additionalProperties': False}}, 'unknowns': {'type': 'array', 'items': {'enum': ['TARGET_INVALID', 'TARGET_PRIVATE', 'TARGET_REDIRECT_UNSAFE', 'TARGET_DNS_REBIND', 'TARGET_TIMEOUT', 'TARGET_BYTES_EXCEEDED', 'TARGET_RATE_LIMITED', 'ROBOTS_BLOCKED', 'WOO_API_UNAVAILABLE', 'WOO_SAMPLE_EMPTY', 'JSONLD_PRODUCT_MISSING', 'JSONLD_OFFER_MISSING', 'DISCOVERY_UNDECLARED', 'PROTOCOL_VERSION_UNSUPPORTED', 'PROTOCOL_SCHEMA_INVALID', 'MCP_INITIALIZE_FAILED', 'MCP_TOOLS_LIST_FAILED', 'MCP_TOOL_ANNOTATION_UNSAFE', 'MCP_TOOL_CALL_FAILED', 'UCP_PROFILE_INVALID', 'ACP_PROFILE_INVALID', 'CROSS_SURFACE_CONFLICT', 'OWNERSHIP_REQUIRED', 'OWNERSHIP_EXPIRED', 'ACTIVE_FLOW_FORBIDDEN', 'EVIDENCE_INVALID', 'INFRA_PERSISTENCE_FAILED', 'UNMEASURED_SOURCE', 'CONNECTION_UNVERIFIABLE', 'INVALID_MIME', 'INVALID_JSON', 'PAGINATION_DRIFT', 'CANCELED_BY_CALLER'], 'type': 'string'}}, 'observed_at': {'type': 'string', 'format': 'date-time'}, 'sample_seed': {'type': 'string'}, 'sample_size': {'type': 'integer', 'minimum': 0}, 'store_origin': {'type': 'string', 'format': 'uri'}, 'catalogue_total': {'type': ['integer', 'null'], 'minimum': 0}, 'protocol_bundles': {'type': 'array', 'items': {'type': 'object'}}, 'requested_families': {'type': 'array', 'items': {'enum': ['woo', 'robots', 'jsonld', 'mcp', 'ucp', 'acp'], 'type': 'string'}}}, 'additionalProperties': False}
scan_woo_store_readiness
Use ONLY for a general storefront audit, readiness score, or fix recommendations. Do NOT use it to inspect a specific update or release; use preflight_woo_store for that. Check whether a public WooCommerce storefront is readable by shopping agents. Provide the store's HTTPS origin. The tool reads only public pages and the public WooCommerce Store API, changes nothing, and returns aggregate checks and recommendations without product text or customer data. When the storefront cannot be read at all, the tool abstains: state is UNREADABLE, score and grade are null, and the caller must not present that as a finding about the store.
Lecture seule Accès externe
Schéma d’entrée
{'type': 'object', 'oneOf': [{'not': {'required': ['demo']}, 'required': ['store_url']}, {'not': {'required': ['store_url']}, 'required': ['demo']}], 'properties': {'demo': {'type': 'boolean', 'const': True, 'description': 'Run a deterministic synthetic demonstration instead of scanning a live store.'}, 'store_url': {'type': 'string', 'format': 'uri', 'maxLength': 200, 'description': 'Public HTTPS origin of the WooCommerce storefront, for example https://shop.example.com'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['state', 'score', 'grade', 'unreadable', 'checks', 'product_count_sampled', 'recommendations', 'scanned_at', 'billable', 'evidence_status'], 'properties': {'grade': {'type': ['string', 'null']}, 'score': {'type': ['number', 'null'], 'maximum': 100, 'minimum': 0}, 'state': {'enum': ['SCORED', 'UNREADABLE'], 'type': 'string', 'description': 'UNREADABLE is an abstention, not a verdict about the store.'}, 'checks': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'label', 'ok', 'weight'], 'properties': {'id': {'type': 'string'}, 'ok': {'type': 'boolean'}, 'label': {'type': 'string'}, 'weight': {'type': 'number'}}, 'additionalProperties': False}}, 'billable': {'const': False}, 'scanned_at': {'type': 'integer'}, 'unreadable': {'type': ['object', 'null'], 'required': ['reason', 'detail'], 'properties': {'detail': {'type': 'string'}, 'reason': {'type': 'string'}}, 'description': 'Why nothing could be read. Null when the scan produced a score.', 'additionalProperties': False}, 'evidence_status': {'enum': ['LIVE_PUBLIC_SCAN', 'SYNTHETIC_DEMO'], 'type': 'string'}, 'recommendations': {'type': 'array', 'items': {'type': 'string'}}, 'product_count_sampled': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}
start_woo_release_verification
Start an ownership-authorized Release Gate run. Requires a bearer token with release:start.
Accès externe
Schéma d’entrée
{'type': 'object', 'required': ['store_id', 'mode', 'requested_families', 'idempotency_key'], 'properties': {'mode': {'type': 'string', 'const': 'owned-safe-active', 'description': 'Required safety mode. The only accepted value is owned-safe-active, which requires verified store ownership before the run starts.'}, 'store_id': {'type': 'string', 'maxLength': 100, 'minLength': 8, 'description': 'AgentReady store identifier owned by the authenticated account. Use the stored identifier, never a store URL, secret, or customer value.'}, 'baseline_run_id': {'type': 'string', 'maxLength': 100, 'minLength': 8, 'description': 'Optional prior Release Gate run identifier from the same owned store to use as the comparison baseline; omit when no valid baseline exists.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'minLength': 16, 'description': 'Caller-generated retry key for this exact start request. Reuse it only when retrying the same operation; do not place credentials or customer data in it.'}, 'requested_families': {'type': 'array', 'items': {'enum': ['woo', 'robots', 'jsonld', 'mcp', 'ucp', 'acp'], 'type': 'string'}, 'maxItems': 6, 'minItems': 1, 'description': 'One or more protocol families the owner authorizes this Release Gate run to verify: woo, robots, jsonld, mcp, ucp, or acp.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'oneOf': [{'type': 'object', 'required': ['run_id', 'state', 'settlement'], 'properties': {'state': {'enum': ['QUEUED', 'RUNNING', 'RETRYING', 'TERMINAL', 'CANCELED'], 'type': 'string'}, 'run_id': {'type': 'string', 'maxLength': 100, 'minLength': 8}, 'settlement': {'const': 'disabled'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['code', 'state', 'settlement'], 'properties': {'code': {'const': 'EVIDENCE_REQUIRED'}, 'state': {'enum': ['BLOCKED', 'UNMEASURED'], 'type': 'string'}, 'settlement': {'const': 'disabled'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['code'], 'properties': {'code': {'enum': ['AUTH_REQUIRED', 'STORE_NOT_FOUND', 'OWNERSHIP_REQUIRED', 'WORKFLOW_UNAVAILABLE', 'WORKFLOW_DISPATCH_FAILED', 'INVALID_INPUT', 'RUN_NOT_FOUND', 'RESULT_NOT_READY', 'EVIDENCE_REQUIRED'], 'type': 'string'}}, 'additionalProperties': False}]}
Ajouté
claim_woo_release_result
17 September 2026 12:55
Ajouté
get_woo_release_verification
17 September 2026 12:55
Ajouté
start_woo_release_verification
17 September 2026 12:55
Ajouté
preflight_woo_store
17 September 2026 12:55
Ajouté
scan_woo_store_readiness
17 September 2026 12:55