{"ok":true,"stage":"stored_ai_web_report","version":"2.1.9","storage":{"scan_id":"7c384677-ad1a-4135-9f24-88c84bafb980","created_at":"2026-10-02T18:22:10.591Z","completed_at":"2026-10-02T18:22:10.591Z","report_hash":"3b616ca2892099ee12fdc723b7ed017af4d931cc4b41a5291858741b8e0bceb1","duplicate_of_scan_id":null,"retention_class":"standard","source_api_version":"2.1.9","source_report_version":"1"},"presentation":{"presentation_version":"1","target":{"hostname":"paulaschoice.com","requested_url":"https://paulaschoice.com/","final_url":"https://www.paulaschoice.com/"},"hero":{"score":100,"max_score":100,"grade":"A","label":"excellent","score_status":"calculated","observation_status":"origin_observed","confidence":"high","is_scoreable":true},"access_observation":{"restricted":false,"classification":"normal_candidate","provider":null,"mechanism":null,"vantage_scope":null,"note":null},"categories":[{"key":"crawl_accessibility","name":"Crawl accessibility","score":25,"max_score":25,"percent":100,"state":"excellent","checks":{"origin_page_observed":true,"successful_2xx_response":true,"no_noindex_observed":true,"canonical_exact_match":true}},{"key":"ai_policy_visibility","name":"AI policy visibility","score":20,"max_score":20,"percent":100,"state":"excellent","checks":{"robots_found":true,"policies_observable":true,"all_monitored_policies_resolved":true,"robots_source_complete":true}},{"key":"discovery_surfaces","name":"Discovery surfaces","score":20,"max_score":20,"percent":100,"state":"excellent","checks":{"sitemap_status_resolved":true,"sitemap_found":true,"llms_txt_status_resolved":true,"llms_txt_found":true,"machine_readable_links_present":true,"markdown_surface_present":false,"sitemap_declared_in_robots":true}},{"key":"structured_data","name":"Structured data","score":20,"max_score":20,"percent":100,"state":"excellent","checks":{"json_ld_present":true,"json_ld_parses_cleanly":true,"schema_types_present":true}},{"key":"metadata_quality","name":"Metadata quality","score":15,"max_score":15,"percent":100,"state":"excellent","checks":{"title_present":true,"meta_description_present":true,"language_present":true,"open_graph_present":true,"canonical_present":true}}],"crawler_policy":{"monitored_count":8,"known_count":8,"allowed_count":8,"blocked_count":0,"unknown_count":0,"rows":[{"provider":"OpenAI","user_agent":"OAI-SearchBot","purpose":"search","policy":"allowed","source":"wildcard_group_default","identity_type":"crawler_identity","http_user_agent_identity":true,"identifier_label":"Crawler user-agent token","identity_note":null,"group":"search_and_user_requested"},{"provider":"Anthropic","user_agent":"Claude-SearchBot","purpose":"search","policy":"allowed","source":"wildcard_group_default","identity_type":"crawler_identity","http_user_agent_identity":true,"identifier_label":"Crawler user-agent token","identity_note":null,"group":"search_and_user_requested"},{"provider":"Anthropic","user_agent":"Claude-User","purpose":"user_requested","policy":"allowed","source":"wildcard_group_default","identity_type":"crawler_identity","http_user_agent_identity":true,"identifier_label":"Crawler user-agent token","identity_note":null,"group":"search_and_user_requested"},{"provider":"Perplexity","user_agent":"PerplexityBot","purpose":"search","policy":"allowed","source":"wildcard_group_default","identity_type":"crawler_identity","http_user_agent_identity":true,"identifier_label":"Crawler user-agent token","identity_note":null,"group":"search_and_user_requested"},{"provider":"OpenAI","user_agent":"OAI-AdsBot","purpose":"advertising_validation","policy":"allowed","source":"wildcard_group_default","identity_type":"crawler_identity","http_user_agent_identity":true,"identifier_label":"Crawler user-agent token","identity_note":null,"group":"advertising_validation"},{"provider":"OpenAI","user_agent":"GPTBot","purpose":"training","policy":"allowed","source":"wildcard_group_default","identity_type":"crawler_identity","http_user_agent_identity":true,"identifier_label":"Crawler user-agent token","identity_note":null,"group":"training_controls"},{"provider":"Anthropic","user_agent":"ClaudeBot","purpose":"training","policy":"allowed","source":"wildcard_group_default","identity_type":"crawler_identity","http_user_agent_identity":true,"identifier_label":"Crawler user-agent token","identity_note":null,"group":"training_controls"},{"provider":"Google","user_agent":"Google-Extended","purpose":"training_and_grounding_control","policy":"allowed","source":"wildcard_group_default","identity_type":"robots_product_token","http_user_agent_identity":false,"identifier_label":"Robots product token","identity_note":"Google-Extended has no separate HTTP request User-Agent; Google documents it as a robots.txt product-control token.","group":"training_controls"}]},"findings":{"count":0,"counts":{"critical":0,"high":0,"medium":0,"info":0},"items":[]},"surfaces":{"homepage_observed":true,"robots_found":true,"robots_policy_resolved":true,"llms_txt_found":true,"llms_txt_status_resolved":true,"sitemap_found":true,"sitemap_status_resolved":true,"json_ld_found":true,"canonical_found":true,"machine_readable_link_count":59},"links":{"scan_id":"7c384677-ad1a-4135-9f24-88c84bafb980","stored_report_api_path":"/report/7c384677-ad1a-4135-9f24-88c84bafb980","suggested_public_report_path":"/app?scan_id=7c384677-ad1a-4135-9f24-88c84bafb980"},"disclosure":{"score_interpretation":"The score measures observable technical readiness and machine-readable discovery surfaces. It does not estimate traffic, rankings, model citations, or business value.","unknown_treatment":"Unknown or challenge-obscured signals are represented as null and do not count as failures. The overall score is withheld whenever required scoring categories are not safely observable.","crawler_identity_semantics":"Rows marked robots_product_token describe robots.txt controls, not independently observable HTTP crawler identities."},"vantage_observation":{"contract_version":"1","mode":"single_vantage","attempt_count":1,"observed_count":1,"restricted_count":0,"unresolved_count":0,"agreement":"not_tested","public_origin_observable":true,"vantage_restricted":false,"vantage_disagreement":false,"scoring_effect":"none_contract_only","attempts":[{"id":"primary_worker","role":"primary","source":"cloudflare_worker","state":"origin_observed","origin_page_observed":true,"classification":"normal_candidate","provider":null,"mechanism":null,"http_status":null,"confidence":"high"}],"note":"Only the current scanner vantage has been recorded. This result should not be generalized to every crawler or network."}},"report":{"report_version":"1","profile":"ai_web_readiness","target":{"hostname":"paulaschoice.com","requested_url":"https://paulaschoice.com/","final_url":"https://www.paulaschoice.com/"},"observation":{"status":"origin_observed","confidence":"high","origin_page_observed":true,"response_classification":"normal_candidate","note":"The normalized report is based on the server-returned origin homepage and separately inspected discovery resources.","vantage_observation":{"contract_version":"1","mode":"single_vantage","attempt_count":1,"observed_count":1,"restricted_count":0,"unresolved_count":0,"agreement":"not_tested","public_origin_observable":true,"vantage_restricted":false,"vantage_disagreement":false,"scoring_effect":"none_contract_only","attempts":[{"id":"primary_worker","role":"primary","source":"cloudflare_worker","state":"origin_observed","origin_page_observed":true,"classification":"normal_candidate","provider":null,"mechanism":null,"http_status":null,"confidence":"high"}],"note":"Only the current scanner vantage has been recorded. This result should not be generalized to every crawler or network."}},"overall":{"score":100,"max_score":100,"grade":"A","label":"excellent","score_status":"calculated"},"categories":{"crawl_accessibility":{"name":"Crawl accessibility","score":25,"max_score":25,"percent":100,"checks":{"origin_page_observed":true,"successful_2xx_response":true,"no_noindex_observed":true,"canonical_exact_match":true}},"ai_policy_visibility":{"name":"AI policy visibility","score":20,"max_score":20,"percent":100,"checks":{"robots_found":true,"policies_observable":true,"all_monitored_policies_resolved":true,"robots_source_complete":true}},"discovery_surfaces":{"name":"Discovery surfaces","score":20,"max_score":20,"percent":100,"checks":{"sitemap_status_resolved":true,"sitemap_found":true,"llms_txt_status_resolved":true,"llms_txt_found":true,"machine_readable_links_present":true,"markdown_surface_present":false,"sitemap_declared_in_robots":true}},"structured_data":{"name":"Structured data","score":20,"max_score":20,"percent":100,"checks":{"json_ld_present":true,"json_ld_parses_cleanly":true,"schema_types_present":true}},"metadata_quality":{"name":"Metadata quality","score":15,"max_score":15,"percent":100,"checks":{"title_present":true,"meta_description_present":true,"language_present":true,"open_graph_present":true,"canonical_present":true}}},"ai_crawler_policy":{"monitored_count":8,"known_count":8,"allowed_count":8,"blocked_count":0,"unknown_count":0,"search_and_user_requested":[{"provider":"OpenAI","user_agent":"OAI-SearchBot","purpose":"search","policy":"allowed","source":"wildcard_group_default"},{"provider":"Anthropic","user_agent":"Claude-SearchBot","purpose":"search","policy":"allowed","source":"wildcard_group_default"},{"provider":"Anthropic","user_agent":"Claude-User","purpose":"user_requested","policy":"allowed","source":"wildcard_group_default"},{"provider":"Perplexity","user_agent":"PerplexityBot","purpose":"search","policy":"allowed","source":"wildcard_group_default"}],"advertising_validation":[{"provider":"OpenAI","user_agent":"OAI-AdsBot","purpose":"advertising_validation","policy":"allowed","source":"wildcard_group_default"}],"training_controls":[{"provider":"OpenAI","user_agent":"GPTBot","purpose":"training","policy":"allowed","source":"wildcard_group_default"},{"provider":"Anthropic","user_agent":"ClaudeBot","purpose":"training","policy":"allowed","source":"wildcard_group_default"},{"provider":"Google","user_agent":"Google-Extended","purpose":"training_and_grounding_control","policy":"allowed","source":"wildcard_group_default"}]},"surface_summary":{"homepage_observed":true,"robots_found":true,"robots_policy_resolved":true,"llms_txt_found":true,"llms_txt_status_resolved":true,"sitemap_found":true,"sitemap_status_resolved":true,"json_ld_found":true,"canonical_found":true,"machine_readable_link_count":59},"findings":[],"methodology":{"score_interpretation":"The score measures observable technical readiness and machine-readable discovery surfaces. It does not estimate traffic, rankings, model citations, or business value.","unknown_treatment":"Unknown or challenge-obscured signals are represented as null and do not count as failures. The overall score is withheld whenever required scoring categories are not safely observable.","policy_neutrality":"Blocking training crawlers is treated as an owner policy choice and is not scored as a defect. Restrictions on search or user-requested retrieval are surfaced separately because they may affect AI discovery goals.","edge_access_treatment":"When identified scanner traffic and browser-compatible public traffic are treated differently, AIWebSignals reports that as a current-vantage observation. It does not infer that a named provider crawler receives the same treatment.","llms_txt_treatment":"llms.txt contributes modestly to discovery scoring because it is an emerging proposal, not a universal web or ranking requirement.","bounded_fetching":"Large resources are intentionally capped; truncation is reported rather than hidden."}},"scan":{"total_duration_ms":1497},"vantage_observation":{"contract_version":"1","mode":"single_vantage","attempt_count":1,"observed_count":1,"restricted_count":0,"unresolved_count":0,"agreement":"not_tested","public_origin_observable":true,"vantage_restricted":false,"vantage_disagreement":false,"scoring_effect":"none_contract_only","attempts":[{"id":"primary_worker","role":"primary","source":"cloudflare_worker","state":"origin_observed","origin_page_observed":true,"classification":"normal_candidate","provider":null,"mechanism":null,"http_status":null,"confidence":"high"}],"note":"Only the current scanner vantage has been recorded. This result should not be generalized to every crawler or network."},"counterparty_readiness":{"assessment_version":"0.1","profile":"agent_counterparty_readiness","target":{"hostname":"paulaschoice.com","requested_url":"https://paulaschoice.com/","final_url":"https://www.paulaschoice.com/"},"status":"partial_evidence","score":null,"score_status":"withheld","evidence_summary":{"applicable_checks":25,"known_checks":5,"observed_checks":5,"unknown_checks":20,"evidence_coverage_percent":20,"direct_observation_percent":20},"axes":{"discovery_clarity":{"axis_id":"discovery_clarity","name":"Discovery clarity","description":"Can a machine participant determine what the service is, whether it is publicly reachable, and which machine-readable discovery surfaces are available?","status":"directly_evidenced","coverage":{"applicable_checks":5,"known_checks":5,"observed_checks":5,"present_checks":5,"absent_checks":0,"unknown_checks":0,"evidence_coverage_percent":100,"direct_observation_percent":100},"checks":[{"check_id":"origin_observable","name":"Public origin can be safely observed","status":"observed_present","conflict":false,"evidence_level":"observed","selected_evidence":{"check_id":"origin_observable","state":"observed_present","source_type":"public_scan","source_ref":"ai_web_readiness.observation.origin_page_observed","observed_at":null,"detail":"The public scanner safely attributed the homepage response to the origin page."},"evidence":[{"check_id":"origin_observable","state":"observed_present","source_type":"public_scan","source_ref":"ai_web_readiness.observation.origin_page_observed","observed_at":null,"detail":"The public scanner safely attributed the homepage response to the origin page."}]},{"check_id":"crawler_policy_resolvable","name":"Crawler policy can be resolved","status":"observed_present","conflict":false,"evidence_level":"observed","selected_evidence":{"check_id":"crawler_policy_resolvable","state":"observed_present","source_type":"public_scan","source_ref":"ai_web_readiness.surface_summary.robots_policy_resolved","observed_at":null,"detail":"At least one monitored AI crawler policy was resolved from the observed robots.txt surface."},"evidence":[{"check_id":"crawler_policy_resolvable","state":"observed_present","source_type":"public_scan","source_ref":"ai_web_readiness.surface_summary.robots_policy_resolved","observed_at":null,"detail":"At least one monitored AI crawler policy was resolved from the observed robots.txt surface."}]},{"check_id":"machine_discovery_surface","name":"At least one useful machine discovery surface is exposed","status":"observed_present","conflict":false,"evidence_level":"observed","selected_evidence":{"check_id":"machine_discovery_surface","state":"observed_present","source_type":"public_scan","source_ref":"ai_web_readiness.surface_summary","observed_at":null,"detail":"The public scan observed at least one sitemap, llms.txt resource, or machine-readable link."},"evidence":[{"check_id":"machine_discovery_surface","state":"observed_present","source_type":"public_scan","source_ref":"ai_web_readiness.surface_summary","observed_at":null,"detail":"The public scan observed at least one sitemap, llms.txt resource, or machine-readable link."}]},{"check_id":"structured_description","name":"Structured description is exposed","status":"observed_present","conflict":false,"evidence_level":"observed","selected_evidence":{"check_id":"structured_description","state":"observed_present","source_type":"public_scan","source_ref":"ai_web_readiness.surface_summary.json_ld_found","observed_at":null,"detail":"JSON-LD structured data was observed on the server-returned origin homepage."},"evidence":[{"check_id":"structured_description","state":"observed_present","source_type":"public_scan","source_ref":"ai_web_readiness.surface_summary.json_ld_found","observed_at":null,"detail":"JSON-LD structured data was observed on the server-returned origin homepage."}]},{"check_id":"canonical_identity","name":"Canonical public identity is explicit","status":"observed_present","conflict":false,"evidence_level":"observed","selected_evidence":{"check_id":"canonical_identity","state":"observed_present","source_type":"public_scan","source_ref":"ai_web_readiness.surface_summary.canonical_found","observed_at":null,"detail":"A canonical URL was observed on the origin homepage."},"evidence":[{"check_id":"canonical_identity","state":"observed_present","source_type":"public_scan","source_ref":"ai_web_readiness.surface_summary.canonical_found","observed_at":null,"detail":"A canonical URL was observed on the origin homepage."}]}],"next_action":{"action_type":"monitor","check_id":null,"check_name":null,"action":"No immediate remediation is indicated by the current evidence; continue monitoring for change or regression."}},"authorization_clarity":{"axis_id":"authorization_clarity","name":"Authorization clarity","description":"Can a machine participant determine the identity, mandate, permission, approval, expiry, and revocation boundaries that apply before consequential action?","status":"insufficient_evidence","coverage":{"applicable_checks":4,"known_checks":0,"observed_checks":0,"present_checks":0,"absent_checks":0,"unknown_checks":4,"evidence_coverage_percent":0,"direct_observation_percent":0},"checks":[{"check_id":"auth_requirements_declared","name":"Authentication requirements are machine-readable","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"capability_scope_declared","name":"Permitted capability or mandate scope is machine-readable","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"human_approval_boundary_declared","name":"Human-approval boundaries are explicit","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"authorization_expiry_or_revocation_declared","name":"Expiry or revocation semantics are explicit","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]}],"next_action":{"action_type":"collect_evidence","check_id":"auth_requirements_declared","check_name":"Authentication requirements are machine-readable","action":"Document whether authentication is required and which credential class applies before any consequential call."}},"commercial_determinism":{"axis_id":"commercial_determinism","name":"Commercial determinism","description":"Can an agent determine the commercial unit, price/quote lifetime, and retry/idempotency charging semantics before authorizing an effectful paid operation?","status":"insufficient_evidence","coverage":{"applicable_checks":4,"known_checks":0,"observed_checks":0,"present_checks":0,"absent_checks":0,"unknown_checks":4,"evidence_coverage_percent":0,"direct_observation_percent":0},"checks":[{"check_id":"price_or_unit_declared","name":"Price and unit of work are machine-readable","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"quote_expiry_declared","name":"Quote or price-validity lifetime is explicit","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"retry_charge_semantics_declared","name":"Retry, timeout, partial-result, and charging semantics are explicit","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"idempotency_semantics_declared","name":"Idempotency semantics are explicit","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]}],"next_action":{"action_type":"collect_evidence","check_id":"price_or_unit_declared","check_name":"Price and unit of work are machine-readable","action":"Publish the commercial unit of work and the price or pricing rule before authorization."}},"receipt_and_provenance":{"axis_id":"receipt_and_provenance","name":"Receipt + provenance","description":"Can a machine participant obtain enough durable evidence to reconcile an operation, transfer work safely, and distinguish request, execution, and outcome?","status":"insufficient_evidence","coverage":{"applicable_checks":4,"known_checks":0,"observed_checks":0,"present_checks":0,"absent_checks":0,"unknown_checks":4,"evidence_coverage_percent":0,"direct_observation_percent":0},"checks":[{"check_id":"durable_operation_id","name":"A durable operation/receipt identity is available","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"explicit_result_state","name":"Outcome state distinguishes success, failure, partial, and unknown","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"provenance_or_version_evidence","name":"Relevant artifact/version/provenance evidence is available","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"reconciliation_reference","name":"A durable reconciliation/status reference is available","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]}],"next_action":{"action_type":"collect_evidence","check_id":"durable_operation_id","check_name":"A durable operation/receipt identity is available","action":"Return a durable operation or receipt identifier for consequential work."}},"failure_and_recovery":{"axis_id":"failure_and_recovery","name":"Failure + recovery","description":"Can an agent understand rate limits, retry guidance, ambiguous states, and safe recovery paths instead of guessing after failure?","status":"insufficient_evidence","coverage":{"applicable_checks":4,"known_checks":0,"observed_checks":0,"present_checks":0,"absent_checks":0,"unknown_checks":4,"evidence_coverage_percent":0,"direct_observation_percent":0},"checks":[{"check_id":"rate_limit_guidance","name":"Rate-limit behavior and retry timing are explicit","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"retry_guidance","name":"Retry-safe and retry-unsafe failures are distinguishable","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"partial_or_unknown_state","name":"Partial or unknown commit states are representable","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"recovery_or_reconciliation_path","name":"Recovery or reconciliation path is explicit","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]}],"next_action":{"action_type":"collect_evidence","check_id":"rate_limit_guidance","check_name":"Rate-limit behavior and retry timing are explicit","action":"Publish machine-readable rate-limit and retry timing guidance."}},"privacy_and_minimization":{"axis_id":"privacy_and_minimization","name":"Privacy + minimization","description":"Does the service make clear what data is required, why it is required, how long it is retained, and how sensitive credentials/context are handled?","status":"insufficient_evidence","coverage":{"applicable_checks":4,"known_checks":0,"observed_checks":0,"present_checks":0,"absent_checks":0,"unknown_checks":4,"evidence_coverage_percent":0,"direct_observation_percent":0},"checks":[{"check_id":"required_data_declared","name":"Required input/context is bounded and declared","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"purpose_scope_declared","name":"Purpose/scope for collected data is explicit","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"retention_declared","name":"Retention behavior is explicit","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"credential_handling_declared","name":"Credential/secret handling boundary is explicit","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]}],"next_action":{"action_type":"collect_evidence","check_id":"required_data_declared","check_name":"Required input/context is bounded and declared","action":"Declare the minimum data/context required for the capability."}}},"remediation_summary":{"conflicts":0,"gaps":0,"evidence_collection":5,"monitoring":1,"actions":[{"axis_id":"discovery_clarity","axis_name":"Discovery clarity","action_type":"monitor","check_id":null,"check_name":null,"action":"No immediate remediation is indicated by the current evidence; continue monitoring for change or regression."},{"axis_id":"authorization_clarity","axis_name":"Authorization clarity","action_type":"collect_evidence","check_id":"auth_requirements_declared","check_name":"Authentication requirements are machine-readable","action":"Document whether authentication is required and which credential class applies before any consequential call."},{"axis_id":"commercial_determinism","axis_name":"Commercial determinism","action_type":"collect_evidence","check_id":"price_or_unit_declared","check_name":"Price and unit of work are machine-readable","action":"Publish the commercial unit of work and the price or pricing rule before authorization."},{"axis_id":"receipt_and_provenance","axis_name":"Receipt + provenance","action_type":"collect_evidence","check_id":"durable_operation_id","check_name":"A durable operation/receipt identity is available","action":"Return a durable operation or receipt identifier for consequential work."},{"axis_id":"failure_and_recovery","axis_name":"Failure + recovery","action_type":"collect_evidence","check_id":"rate_limit_guidance","check_name":"Rate-limit behavior and retry timing are explicit","action":"Publish machine-readable rate-limit and retry timing guidance."},{"axis_id":"privacy_and_minimization","axis_name":"Privacy + minimization","action_type":"collect_evidence","check_id":"required_data_declared","check_name":"Required input/context is bounded and declared","action":"Declare the minimum data/context required for the capability."}]},"methodology":{"purpose":"Evaluate whether a site or API exposes enough evidence to act as a safe, legible, and reliable counterparty to machine participants.","score_treatment":"No aggregate readiness score is calculated in this experimental profile. Coverage and evidence strength are reported instead, because most non-discovery claims require dedicated validation that the public readiness scanner does not yet perform.","unknown_treatment":"Unknown is not a failure. A check remains unknown when the relevant behavior was not safely observed or supplied by an explicit evidence source.","declaration_treatment":"Operator or external declarations are preserved as declared evidence and never upgraded to direct observation or certification.","conflict_treatment":"Conflicting present/absent evidence is surfaced explicitly. Stronger direct evidence may be selected for display, but the conflict is not hidden.","monetization_boundary":"This profile is intended to support operator-paid diagnostics, monitoring, validation, remediation, and evidence services. Basic machine discovery and public trust evidence should remain readable without charging machine participants."}},"evidence_report":{"report_version":"1","profile":"aiwebsignals_evidence_report","target":{"hostname":"paulaschoice.com","requested_url":"https://paulaschoice.com/","final_url":"https://www.paulaschoice.com/"},"headline":{"technical_readiness_score":100,"technical_readiness_max_score":100,"technical_readiness_score_status":"calculated","technical_readiness_grade":"A","technical_readiness_label":"excellent","observation_status":"origin_observed","confidence":"high","evidence_coverage_percent":58,"important_boundary":"The 0-100 score applies only to bounded public technical readiness. Counterparty dimensions remain evidence-coverage based unless directly validated."},"evidence_summary":{"applicable_checks":48,"known_checks":28,"unknown_checks":20,"directly_observed_checks":28,"declared_or_indirect_checks":0,"evidence_coverage_percent":58,"note":"Coverage measures how much of the defined assessment has evidence. It is not a quality score. Unknown is not treated as failure."},"dimensions":{"technical_readiness":[{"id":"crawl_accessibility","name":"Crawl accessibility","assessment_type":"scored_public_observation","score":100,"score_status":"calculated","state":"excellent","evidence_coverage_percent":100,"checks":{"origin_page_observed":true,"successful_2xx_response":true,"no_noindex_observed":true,"canonical_exact_match":true}},{"id":"ai_policy_visibility","name":"AI policy visibility","assessment_type":"scored_public_observation","score":100,"score_status":"calculated","state":"excellent","evidence_coverage_percent":100,"checks":{"robots_found":true,"policies_observable":true,"all_monitored_policies_resolved":true,"robots_source_complete":true}},{"id":"discovery_surfaces","name":"Discovery surfaces","assessment_type":"scored_public_observation","score":100,"score_status":"calculated","state":"excellent","evidence_coverage_percent":100,"checks":{"sitemap_status_resolved":true,"sitemap_found":true,"llms_txt_status_resolved":true,"llms_txt_found":true,"machine_readable_links_present":true,"markdown_surface_present":false,"sitemap_declared_in_robots":true}},{"id":"structured_data","name":"Structured data","assessment_type":"scored_public_observation","score":100,"score_status":"calculated","state":"excellent","evidence_coverage_percent":100,"checks":{"json_ld_present":true,"json_ld_parses_cleanly":true,"schema_types_present":true}},{"id":"metadata_quality","name":"Metadata quality","assessment_type":"scored_public_observation","score":100,"score_status":"calculated","state":"excellent","evidence_coverage_percent":100,"checks":{"title_present":true,"meta_description_present":true,"language_present":true,"open_graph_present":true,"canonical_present":true}}],"counterparty_readiness":[{"id":"discovery_clarity","name":"Discovery clarity","assessment_type":"evidence_coverage_unscored","score":null,"score_status":"withheld","state":"directly_evidenced","evidence_coverage_percent":100,"direct_observation_percent":100,"checks":[{"check_id":"origin_observable","name":"Public origin can be safely observed","status":"observed_present","conflict":false,"evidence_level":"observed","selected_evidence":{"check_id":"origin_observable","state":"observed_present","source_type":"public_scan","source_ref":"ai_web_readiness.observation.origin_page_observed","observed_at":null,"detail":"The public scanner safely attributed the homepage response to the origin page."},"evidence":[{"check_id":"origin_observable","state":"observed_present","source_type":"public_scan","source_ref":"ai_web_readiness.observation.origin_page_observed","observed_at":null,"detail":"The public scanner safely attributed the homepage response to the origin page."}]},{"check_id":"crawler_policy_resolvable","name":"Crawler policy can be resolved","status":"observed_present","conflict":false,"evidence_level":"observed","selected_evidence":{"check_id":"crawler_policy_resolvable","state":"observed_present","source_type":"public_scan","source_ref":"ai_web_readiness.surface_summary.robots_policy_resolved","observed_at":null,"detail":"At least one monitored AI crawler policy was resolved from the observed robots.txt surface."},"evidence":[{"check_id":"crawler_policy_resolvable","state":"observed_present","source_type":"public_scan","source_ref":"ai_web_readiness.surface_summary.robots_policy_resolved","observed_at":null,"detail":"At least one monitored AI crawler policy was resolved from the observed robots.txt surface."}]},{"check_id":"machine_discovery_surface","name":"At least one useful machine discovery surface is exposed","status":"observed_present","conflict":false,"evidence_level":"observed","selected_evidence":{"check_id":"machine_discovery_surface","state":"observed_present","source_type":"public_scan","source_ref":"ai_web_readiness.surface_summary","observed_at":null,"detail":"The public scan observed at least one sitemap, llms.txt resource, or machine-readable link."},"evidence":[{"check_id":"machine_discovery_surface","state":"observed_present","source_type":"public_scan","source_ref":"ai_web_readiness.surface_summary","observed_at":null,"detail":"The public scan observed at least one sitemap, llms.txt resource, or machine-readable link."}]},{"check_id":"structured_description","name":"Structured description is exposed","status":"observed_present","conflict":false,"evidence_level":"observed","selected_evidence":{"check_id":"structured_description","state":"observed_present","source_type":"public_scan","source_ref":"ai_web_readiness.surface_summary.json_ld_found","observed_at":null,"detail":"JSON-LD structured data was observed on the server-returned origin homepage."},"evidence":[{"check_id":"structured_description","state":"observed_present","source_type":"public_scan","source_ref":"ai_web_readiness.surface_summary.json_ld_found","observed_at":null,"detail":"JSON-LD structured data was observed on the server-returned origin homepage."}]},{"check_id":"canonical_identity","name":"Canonical public identity is explicit","status":"observed_present","conflict":false,"evidence_level":"observed","selected_evidence":{"check_id":"canonical_identity","state":"observed_present","source_type":"public_scan","source_ref":"ai_web_readiness.surface_summary.canonical_found","observed_at":null,"detail":"A canonical URL was observed on the origin homepage."},"evidence":[{"check_id":"canonical_identity","state":"observed_present","source_type":"public_scan","source_ref":"ai_web_readiness.surface_summary.canonical_found","observed_at":null,"detail":"A canonical URL was observed on the origin homepage."}]}],"next_action":{"action_type":"monitor","check_id":null,"check_name":null,"action":"No immediate remediation is indicated by the current evidence; continue monitoring for change or regression."}},{"id":"authorization_clarity","name":"Authorization clarity","assessment_type":"evidence_coverage_unscored","score":null,"score_status":"withheld","state":"insufficient_evidence","evidence_coverage_percent":0,"direct_observation_percent":0,"checks":[{"check_id":"auth_requirements_declared","name":"Authentication requirements are machine-readable","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"capability_scope_declared","name":"Permitted capability or mandate scope is machine-readable","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"human_approval_boundary_declared","name":"Human-approval boundaries are explicit","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"authorization_expiry_or_revocation_declared","name":"Expiry or revocation semantics are explicit","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]}],"next_action":{"action_type":"collect_evidence","check_id":"auth_requirements_declared","check_name":"Authentication requirements are machine-readable","action":"Document whether authentication is required and which credential class applies before any consequential call."}},{"id":"commercial_determinism","name":"Commercial determinism","assessment_type":"evidence_coverage_unscored","score":null,"score_status":"withheld","state":"insufficient_evidence","evidence_coverage_percent":0,"direct_observation_percent":0,"checks":[{"check_id":"price_or_unit_declared","name":"Price and unit of work are machine-readable","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"quote_expiry_declared","name":"Quote or price-validity lifetime is explicit","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"retry_charge_semantics_declared","name":"Retry, timeout, partial-result, and charging semantics are explicit","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"idempotency_semantics_declared","name":"Idempotency semantics are explicit","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]}],"next_action":{"action_type":"collect_evidence","check_id":"price_or_unit_declared","check_name":"Price and unit of work are machine-readable","action":"Publish the commercial unit of work and the price or pricing rule before authorization."}},{"id":"receipt_and_provenance","name":"Receipt + provenance","assessment_type":"evidence_coverage_unscored","score":null,"score_status":"withheld","state":"insufficient_evidence","evidence_coverage_percent":0,"direct_observation_percent":0,"checks":[{"check_id":"durable_operation_id","name":"A durable operation/receipt identity is available","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"explicit_result_state","name":"Outcome state distinguishes success, failure, partial, and unknown","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"provenance_or_version_evidence","name":"Relevant artifact/version/provenance evidence is available","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"reconciliation_reference","name":"A durable reconciliation/status reference is available","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]}],"next_action":{"action_type":"collect_evidence","check_id":"durable_operation_id","check_name":"A durable operation/receipt identity is available","action":"Return a durable operation or receipt identifier for consequential work."}},{"id":"failure_and_recovery","name":"Failure + recovery","assessment_type":"evidence_coverage_unscored","score":null,"score_status":"withheld","state":"insufficient_evidence","evidence_coverage_percent":0,"direct_observation_percent":0,"checks":[{"check_id":"rate_limit_guidance","name":"Rate-limit behavior and retry timing are explicit","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"retry_guidance","name":"Retry-safe and retry-unsafe failures are distinguishable","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"partial_or_unknown_state","name":"Partial or unknown commit states are representable","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"recovery_or_reconciliation_path","name":"Recovery or reconciliation path is explicit","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]}],"next_action":{"action_type":"collect_evidence","check_id":"rate_limit_guidance","check_name":"Rate-limit behavior and retry timing are explicit","action":"Publish machine-readable rate-limit and retry timing guidance."}},{"id":"privacy_and_minimization","name":"Privacy + minimization","assessment_type":"evidence_coverage_unscored","score":null,"score_status":"withheld","state":"insufficient_evidence","evidence_coverage_percent":0,"direct_observation_percent":0,"checks":[{"check_id":"required_data_declared","name":"Required input/context is bounded and declared","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"purpose_scope_declared","name":"Purpose/scope for collected data is explicit","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"retention_declared","name":"Retention behavior is explicit","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]},{"check_id":"credential_handling_declared","name":"Credential/secret handling boundary is explicit","status":"unknown","conflict":false,"evidence_level":"unknown","selected_evidence":null,"evidence":[]}],"next_action":{"action_type":"collect_evidence","check_id":"required_data_declared","check_name":"Required input/context is bounded and declared","action":"Declare the minimum data/context required for the capability."}}]},"crawler_policy":{"monitored_count":8,"known_count":8,"allowed_count":8,"blocked_count":0,"unknown_count":0,"rows":[{"provider":"OpenAI","user_agent":"OAI-SearchBot","purpose":"search","policy":"allowed","source":"wildcard_group_default","identity_type":"crawler_identity","http_user_agent_identity":true,"identifier_label":"Crawler user-agent token","identity_note":null,"group":"search_and_user_requested"},{"provider":"Anthropic","user_agent":"Claude-SearchBot","purpose":"search","policy":"allowed","source":"wildcard_group_default","identity_type":"crawler_identity","http_user_agent_identity":true,"identifier_label":"Crawler user-agent token","identity_note":null,"group":"search_and_user_requested"},{"provider":"Anthropic","user_agent":"Claude-User","purpose":"user_requested","policy":"allowed","source":"wildcard_group_default","identity_type":"crawler_identity","http_user_agent_identity":true,"identifier_label":"Crawler user-agent token","identity_note":null,"group":"search_and_user_requested"},{"provider":"Perplexity","user_agent":"PerplexityBot","purpose":"search","policy":"allowed","source":"wildcard_group_default","identity_type":"crawler_identity","http_user_agent_identity":true,"identifier_label":"Crawler user-agent token","identity_note":null,"group":"search_and_user_requested"},{"provider":"OpenAI","user_agent":"OAI-AdsBot","purpose":"advertising_validation","policy":"allowed","source":"wildcard_group_default","identity_type":"crawler_identity","http_user_agent_identity":true,"identifier_label":"Crawler user-agent token","identity_note":null,"group":"advertising_validation"},{"provider":"OpenAI","user_agent":"GPTBot","purpose":"training","policy":"allowed","source":"wildcard_group_default","identity_type":"crawler_identity","http_user_agent_identity":true,"identifier_label":"Crawler user-agent token","identity_note":null,"group":"training_controls"},{"provider":"Anthropic","user_agent":"ClaudeBot","purpose":"training","policy":"allowed","source":"wildcard_group_default","identity_type":"crawler_identity","http_user_agent_identity":true,"identifier_label":"Crawler user-agent token","identity_note":null,"group":"training_controls"},{"provider":"Google","user_agent":"Google-Extended","purpose":"training_and_grounding_control","policy":"allowed","source":"wildcard_group_default","identity_type":"robots_product_token","http_user_agent_identity":false,"identifier_label":"Robots product token","identity_note":"Google-Extended has no separate HTTP request User-Agent; Google documents it as a robots.txt product-control token.","group":"training_controls"}]},"public_surfaces":{"homepage_observed":true,"robots_found":true,"robots_policy_resolved":true,"llms_txt_found":true,"llms_txt_status_resolved":true,"sitemap_found":true,"sitemap_status_resolved":true,"json_ld_found":true,"canonical_found":true,"machine_readable_link_count":59},"recommendations":[{"id":"counterparty-authorization_clarity","priority":"P3","source":"counterparty_readiness","category":"authorization_clarity","title":"Authorization clarity: Authentication requirements are machine-readable","evidence":[],"interpretation":"Can a machine participant determine the identity, mandate, permission, approval, expiry, and revocation boundaries that apply before consequential action?","action":"Document whether authentication is required and which credential class applies before any consequential call.","verification":"Collect or directly observe the missing evidence, then recompute this axis. Unknown remains unknown until evidence exists."},{"id":"counterparty-commercial_determinism","priority":"P3","source":"counterparty_readiness","category":"commercial_determinism","title":"Commercial determinism: Price and unit of work are machine-readable","evidence":[],"interpretation":"Can an agent determine the commercial unit, price/quote lifetime, and retry/idempotency charging semantics before authorizing an effectful paid operation?","action":"Publish the commercial unit of work and the price or pricing rule before authorization.","verification":"Collect or directly observe the missing evidence, then recompute this axis. Unknown remains unknown until evidence exists."},{"id":"counterparty-receipt_and_provenance","priority":"P3","source":"counterparty_readiness","category":"receipt_and_provenance","title":"Receipt + provenance: A durable operation/receipt identity is available","evidence":[],"interpretation":"Can a machine participant obtain enough durable evidence to reconcile an operation, transfer work safely, and distinguish request, execution, and outcome?","action":"Return a durable operation or receipt identifier for consequential work.","verification":"Collect or directly observe the missing evidence, then recompute this axis. Unknown remains unknown until evidence exists."},{"id":"counterparty-failure_and_recovery","priority":"P3","source":"counterparty_readiness","category":"failure_and_recovery","title":"Failure + recovery: Rate-limit behavior and retry timing are explicit","evidence":[],"interpretation":"Can an agent understand rate limits, retry guidance, ambiguous states, and safe recovery paths instead of guessing after failure?","action":"Publish machine-readable rate-limit and retry timing guidance.","verification":"Collect or directly observe the missing evidence, then recompute this axis. Unknown remains unknown until evidence exists."},{"id":"counterparty-privacy_and_minimization","priority":"P3","source":"counterparty_readiness","category":"privacy_and_minimization","title":"Privacy + minimization: Required input/context is bounded and declared","evidence":[],"interpretation":"Does the service make clear what data is required, why it is required, how long it is retained, and how sensitive credentials/context are handled?","action":"Declare the minimum data/context required for the capability.","verification":"Collect or directly observe the missing evidence, then recompute this axis. Unknown remains unknown until evidence exists."}],"evidence_boundary":{"observed_vs_inferred":"Direct observations, declarations, unknowns, and conflicts remain distinct. Missing evidence is not converted into a negative claim.","competitor_boundary":"Public competitor scans compare observable surfaces only. Private telemetry, authenticated behavior, internal policy, revenue, and first-party traffic remain unknown unless separately evidenced.","policy_boundary":"Crawler restrictions are reported as policy choices unless they directly prevent an explicitly intended capability.","counterparty_score_treatment":"No aggregate readiness score is calculated in this experimental profile. Coverage and evidence strength are reported instead, because most non-discovery claims require dedicated validation that the public readiness scanner does not yet perform."},"machine_readable":{"media_type":"application/json","canonical_report_api":"/report/7c384677-ad1a-4135-9f24-88c84bafb980","public_report":"/app?scan_id=7c384677-ad1a-4135-9f24-88c84bafb980"}}}