MCP 서버

AgentReady Woo

xyz.utilityhouse/agentready-woo
커머스 및 리테일 개발자 도구 공개 · 연결 가능 MCP 2026-07-28

이 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.
입력 스키마
{'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}
출력 스키마
{'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.
읽기 전용
입력 스키마
{'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}
출력 스키마
{'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.
읽기 전용 외부 접근 가능
입력 스키마
{'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}
출력 스키마
{'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.
읽기 전용 외부 접근 가능
입력 스키마
{'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}
출력 스키마
{'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.
외부 접근 가능
입력 스키마
{'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}
출력 스키마
{'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}]}
추가됨
claim_woo_release_result
2026년 9월 17일 12:55 PM
추가됨
get_woo_release_verification
2026년 9월 17일 12:55 PM
추가됨
start_woo_release_verification
2026년 9월 17일 12:55 PM
추가됨
preflight_woo_store
2026년 9월 17일 12:55 PM
추가됨
scan_woo_store_readiness
2026년 9월 17일 12:55 PM