Servidor MCP

AgentReady Woo

xyz.utilityhouse/agentready-woo

Qué hace este 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.
Esquema de entrada
{'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}
Esquema de salida
{'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.
Solo lectura
Esquema de entrada
{'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}
Esquema de salida
{'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.
Solo lectura Acceso externo
Esquema de entrada
{'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}
Esquema de salida
{'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.
Solo lectura Acceso externo
Esquema de entrada
{'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}
Esquema de salida
{'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.
Acceso externo
Esquema de entrada
{'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}
Esquema de salida
{'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}]}
Añadido
claim_woo_release_result
17 de September de 2026 a las 12:55
Añadido
get_woo_release_verification
17 de September de 2026 a las 12:55
Añadido
start_woo_release_verification
17 de September de 2026 a las 12:55
Añadido
preflight_woo_store
17 de September de 2026 a las 12:55
Añadido
scan_woo_store_readiness
17 de September de 2026 a las 12:55