360 check, 9 Nov 2026
Royal Caribbean on the pay layer: the 360 agent-readiness check
Royal Caribbean scores 55 of 100 on Ora's agent-readiness scan, a C, read 14 Nov 2026. The six payment checks did not apply to royalcaribbean.com on this read, which is how Ora treats a site it does not read as a shop. An agent-skills file, an llms.txt and an MCP path, two of them HTML pages.
On 14 Nov 2026 the public site at royalcaribbean.com scored 55 of 100 on Ora's agent-readiness scan, a C. Royal Caribbean is the second-largest cruise operator, selling sailings direct online, so this check reads the Payments layer first: the six checks that look for x402, MPP, UCP, ACP and AP2 on the domain, the same protocols this site's matrix tracks row by row. The other layers follow, with every check Ora ran and what it saw. Ora's one-line summary: Royal Caribbean's agent discovery file is present, but it lacks a published OpenAPI specification.
The score
| Layer | Points | Share | What the layer asks |
|---|---|---|---|
| Discovery | 10 of 14 | 71% | Can agents find and recommend it |
| Access | 29 of 50 | 58% | Can agents read it |
| Usability | 22 of 49 | 45% | Can agents use it |
| Payments | 0 of 0 | none apply | Can agents pay |
| Total | 55 of 100 | 55% | Grade C |
The pay layer
Ora did not run the six payment checks against royalcaribbean.com on this read: it marks them not applicable on a site it does not read as a shop, so the layer has no maximum and costs nothing. A travel seller that sells online can still publish any of the five protocols; the matrix says which processors and platforms carry each one. Each protocol links to its matrix row, where the processors and platforms that carry it are dated and sourced.
| Payment check | Result | Points | Matrix row | What Ora saw |
|---|---|---|---|---|
| x402 | Does not apply | 0 of 2 | x402 in the matrix | No commerce signals detected - agent-payment protocols are optional for non-commerce sites |
| MPP | Does not apply | 0 of 2 | MPP in the matrix | No commerce signals detected - agent-payment protocols are optional for non-commerce sites |
| UCP | Does not apply | 0 of 3 | UCP in the matrix | No commerce signals detected - agent-payment protocols are optional for non-commerce sites |
| ACP | Does not apply | 0 of 3 | ACP in the matrix | No commerce signals detected - agent-payment protocols are optional for non-commerce sites |
| ACP delegate payment | Does not apply | 0 of 3 | ACP in the matrix | No commerce signals detected - agent-payment protocols are optional for non-commerce sites |
| AP2 | Does not apply | 0 of 3 | AP2 in the matrix | No commerce signals detected - agent-payment protocols are optional for non-commerce sites |
The other layers, check by check
Every check Ora ran on royalcaribbean.com, grouped by layer, with the result, the points and what Ora recorded where its wording passes this site's gate.
Discovery: 10 of 14
| Check | Result | Points | What Ora saw |
|---|---|---|---|
| ARD discovery | Fail | 0 of 1 | No /.well-known/ard.json, no same-site rel="ard" link, and no legacy /.well-known/ai-catalog.json |
| Developer resource discoverability | Fail | 0 of 3 | Agent searched for "royalcaribbean" developer resources but found nothing relevant |
| Brand name discoverability | Pass | 3 of 3 | royalcaribbean.com ranks #1 for "Royal Caribbean vacation packages" |
| Wikipedia / Wikidata entity presence | Pass | 4 of 4 | Wikipedia "Royal Caribbean International" and Wikidata Q929872 both verified - domain confirmed on both sources |
| robots.txt AI crawler policy | Pass | 2 of 2 | AI search crawlers: allowed in 3 of 3 checks (3 crawlers on 1 page). AI training crawlers: allowed in 2 of 2 checks (2 crawlers on 1 page), not scored. |
| Agent platform configs | Fail | 0 of 1 | Could not locate a public repo containing agent configs or rules. If our probes missed it, AI coding agents likely will too - link the repo from your homepage or docs so it's discoverable. |
| Agent Plugins manifest | Fail | 0 of 1 | No Agent Plugins manifest (plugin.json) found in discovered repos |
| ChatGPT app listed | Fail | 0 of 2 | Not found in ChatGPT app directory |
| Homepage not hidden from search | Pass | 1 of 1 | No noindex on the homepage: no robots, googlebot or bingbot meta tag and no X-Robots-Tag header hides it from search. |
Access: 29 of 50
| Check | Result | Points | What Ora saw |
|---|---|---|---|
| Sitemap exists | Pass | 2 of 2 | Valid sitemap found at https://www.royalcaribbean.com/sitemap/sitemap_index.xml with multiple sitemaps entries |
| Content without JavaScript | Partial | 2 of 3 | 4614 chars with H1, but first content heading is H3, not H1; 2.2% content ratio is below the 5% target |
| Not blocked by bot detection | Pass | 2 of 2 | Site accessible to 4 agent user-agents (ChatGPT-User, OAI-SearchBot, Claude-User, PerplexityBot). |
| Agent discovery file | Pass | 2 of 2 | Agent discovery file found at /.well-known/agent-skills |
| A2A / agent-card | Fail | 0 of 2 | No A2A agent card found at /.well-known/agent-card.json |
| Listed on skills.sh | Fail | 0 of 1 | No official skills self-published on skills.sh |
| pricing.md exists | Partial | 1 of 2 | pricing.md found at /.well-known/pricing.md (100 lines), but it does not open with a # heading - start it with a # title so agents read it as markdown |
| NLWeb Schema Feeds | Fail | 0 of 1 | No schemamap: directive in robots.txt |
| MCP well-known discovery | Fail | 0 of 2 | No MCP server URL discovered |
| Agent mode view | Pass | 2 of 2 | Pass, no detail recorded. |
| HTTP Link headers (RFC 8288) | Fail | 0 of 1 | Link header present but no agent-relevant rel values (sitemap, describedby, alternate, service-desc) |
| Markdown URL fallback | Fail | 0 of 2 | Homepage does not support the .md suffix. Probed https://royalcaribbean.com/index.md and it did not return markdown (expected text/markdown content-type or a heading-led non-HTML body). |
| Modular llms.txt per product area | Fail | 0 of 1 | No section-level llms.txt found. Tried /docs/llms.txt, /api/llms.txt, /developers/llms.txt, /guides/llms.txt, /reference/llms.txt, /cruises/llms.txt, /cruise-destinations/llms.txt, /cruise-ports/llms.txt, /mexico-cruises/llms.txt |
| Sitemap freshness (lastmod) | Pass | 1 of 1 | Pass, no detail recorded. |
| robots.txt agent-user policy | Pass | 2 of 2 | No applicable crawl or usage restriction found for 3 user-triggered agents (chatgpt-user, claude-user, perplexity-user) on 1 public page: https://royalcaribbean.com/. Declared policy only |
| llms.txt exists | Partial | 0 of 1 | A file is present at https://royalcaribbean.com/.well-known/llms.txt, but it returns an HTML page rather than a plain-text llms.txt. |
| llms.txt formatting | Fail | 0 of 2 | No llms.txt found to evaluate quality |
| JSON-LD structured data | Partial | 2 of 4 | JSON-LD Organization found - missing description on this entity |
| Pricing info accessible | Pass | 3 of 3 | Pass, no detail recorded. |
| Public API/docs linked from homepage | Fail | 0 of 3 | No public API or documentation page linked from homepage |
| Agent instruction / when-to-use | Partial | 2 of 3 | Agent instruction file at /.well-known/agent-skills/ but no explicit when-to-use guidance |
| Skills.sh skill quality | Fail | 0 of 2 | No official skills on skills.sh to evaluate |
| JSON-LD entity linking (sameAs) | Fail | 0 of 2 | No sameAs entity linking in JSON-LD - agents cannot disambiguate your brand |
| Metadata completeness | Pass | 2 of 2 | All metadata signals present: canonical URL, lang="en-us", og:image, og:type |
| Organization schema completeness | Partial | 1 of 2 | Organization schema found but missing: contactPoint, address |
| Schema type breadth | Partial | 1 of 2 | Some extended schema types found: VideoObject - add 2 more types that match what the homepage shows, for full coverage |
| Trust anchor pages | Pass | 2 of 2 | Pass, no detail recorded. |
| Markdown alternate link | Fail | 0 of 1 | No sampled page advertises a markdown alternate. Add <link rel="alternate" type="text/markdown" href="..."> (or the equivalent Link response header) pointing at a markdown twin of the page. |
| Redirect hygiene | Pass | 1 of 1 | Pass, no detail recorded. |
| Page token budget | Pass | 1 of 1 | All 1 measured page fit an agent context budget (largest ~1K tokens) |
| OpenAPI spec published | Fail | 0 of 7 | No OpenAPI/Swagger specification found |
| API catalog (RFC 9727) | Partial | 1 of 2 | api-catalog responded but body is not valid JSON |
| Markdown agent docs | Fail | 0 of 1 | Missing markdown content negotiation. Homepage returned text/html when probed with Accept: text/markdown (expected text/markdown), and none of the well-known root paths (/llms.md, /auth.md, /agents.md, /developers.md |
| Markdown content negotiation (acceptmarkdown.com) | Fail | 0 of 1 | Homepage https://royalcaribbean.com does not meet the Markdown negotiation requirements: Accept: text/markdown returned text/html;charset=utf-8; Vary header missing Accept (got "accept-encoding") |
| Bot-UA markdown serving | Fail | 0 of 1 | No probed bot User-Agent (ChatGPT-User, Claude-User, Perplexity-User) receives markdown when requesting HTML. Optional: detect AI-bot UAs server-side and serve them a markdown representation directly. |
| Agent crawler reachability | Pass | 2 of 2 | Reachable to every agent we tested - ChatGPT-User: reachable, OAI-SearchBot: reachable, Claude-User: reachable, PerplexityBot: reachable |
Usability: 22 of 49
| Check | Result | Points | What Ora saw |
|---|---|---|---|
| Public API with reachable endpoints | Fail | 0 of 7 | No publicly reachable API surface detected (REST and GraphQL both absent or auth-gated) |
| OAuth 2.0 support | Pass | 5 of 5 | OpenID Connect discovery endpoint found at https://royalcaribbean.com |
| Scoped permissions | Fail | 0 of 5 | No declared OAuth scopes, security schemes, or scoped-permission documentation found |
| Agent onboarding friction | Partial | 1 of 2 | Onboarding signals described but not verified live: self-serve key generation |
| Web Bot Auth directory | Partial | 1 of 2 | Web Bot Auth directory found but body is not valid JSON |
| OAuth Protected Resource metadata (RFC 9728) | Fail | 0 of 2 | No /.well-known/oauth-protected-resource found (RFC 9728) |
| auth.md exists | Fail | 0 of 2 | No /auth.md found at site root |
| auth.md structure | Fail | 0 of 2 | No /auth.md found at site root |
| Agent auth discovery metadata | Fail | 0 of 3 | Neither /.well-known/oauth-protected-resource nor /.well-known/oauth-authorization-server found. Probed: royalcaribbean.com, api.royalcaribbean.com. |
| Agent auth WWW-Authenticate hint | Fail | 0 of 1 | No 401 with WWW-Authenticate: Bearer resource_metadata=... found. Probed [https://royalcaribbean.com/api, https://royalcaribbean.com/api/v1, https://royalcaribbean.com/v1, https://royalcaribbean.com/v2 |
| agent_auth endpoints reachable | Fail | 0 of 2 | No agent_auth endpoint URIs found in AS metadata or /auth.md prose; nothing to probe |
| MCP server / manifest | Partial | 2 of 6 | /.well-known/mcp serves an HTML page, not an MCP endpoint |
| WebMCP support | Fail | 0 of 5 | No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 28 of 28 same-origin script bundle(s) for modelContext registrations) |
| JSON error responses | Pass | 4 of 4 | Pass, no detail recorded. |
| NLWeb /ask endpoint | Fail | 0 of 1 | No NLWeb-conformant /ask endpoint found via GET or POST |
| NLWeb streaming support | Fail | 0 of 1 | No response from /ask endpoint for streaming request |
| MCP server-card.json | Fail | 0 of 2 | No MCP server card found (checked /.well-known/mcp/server-card.json, the site's ai-catalog.json, servers[].card in mcp.json, and <server>/server-card) |
| Product + docs MCP coverage | Fail | 0 of 2 | This bonus needs two MCP servers: one for your product so agents can take actions, and a separate one for your documentation so agents can answer questions from your docs. |
| Sandbox / test environment | Fail | 0 of 2 | No sandbox or test environment found |
| Agent-friendly 404s | Partial | 1 of 2 | The nonexistent path https://royalcaribbean.com/__ora-404-probe-1fn9llq3 correctly returns HTTP 404. Partial credit: no Markdown error body was detected. |
| Native interactive controls | Pass | 3 of 3 | Pass, no detail recorded. |
| Accessible names on controls | Pass | 2 of 2 | Pass, no detail recorded. |
| Form control labeling | Pass | 2 of 2 | Pass, no detail recorded. |
| Accessibility-tree injection safety (bonus) | Pass | 2 of 2 | Pass, no detail recorded. |
| API schema complexity analysis | Fail | 0 of 2 | No API schema detected |
| Function calling compatibility | Fail | 0 of 2 | No API spec found - function calling requires discoverable endpoints |
The fixes worth most points
Ora attaches an estimate to each failing or partial check: how many points the site would gain by passing it. These are the 5 with the largest estimates for Royal Caribbean.
- Public API with reachable endpoints
- Fail, 0 of 7, about 6.3 points to gain. Ora saw:
No publicly reachable API surface detected (REST and GraphQL both absent or auth-gated)
. - Developer resource discoverability
- Fail, 0 of 3, about 4.8 points to gain. Ora saw:
Agent searched for "royalcaribbean" developer resources but found nothing relevant
. - OpenAPI spec published
- Fail, 0 of 7, about 4.7 points to gain. Ora saw:
No OpenAPI/Swagger specification found
. - Scoped permissions
- Fail, 0 of 5, about 4.5 points to gain. Ora saw:
No declared OAuth scopes, security schemes, or scoped-permission documentation found
. - WebMCP support
- Fail, 0 of 5, about 4.5 points to gain. Ora saw:
No WebMCP support detected - no document.modelContext / navigator.modelContext usage found (scanned 28 of 28 same-origin script bundle(s) for modelContext registrations)
.
Our read
Royal Caribbean has started the agent files and finished none of them. An agent discovery file is present at /.well-known/agent-skills, a rarity here; the llms.txt at /.well-known/llms.txt returns an HTML page, and /.well-known/mcp serves an HTML page rather than an MCP endpoint. The reading side is otherwise in order: all four agent user agents get in, robots.txt allows the search and training crawlers, the sitemap is valid and the home page gives 4,614 characters at a 2.2 percent text ratio; the JSON-LD Organization block lacks its description. Ora read no commerce signals on the second largest cruise line in the world, so the six payment checks did not apply on this read. The act layer is OpenID Connect discovery and nothing else, with no publicly reachable API, and Ora's search for Royal Caribbean developer resources found nothing. The domain ranks first for Royal Caribbean vacation packages. Serve the two files as text and the C moves.
Test your own checkout
The scan above is free and needs no account: enter a domain at ora.ai and read the same layers for your own site, with the six payment checks mapped to this matrix on the Ora Payments page. The command below runs the same audit from a terminal and exits with 1 under the score you set, so it can gate a deploy. Why Ora, and its limits.
npx ax@0.10 audit https://example.com --min-score 70All 360 checks, one company a day. Corrections to the corrections page.
Sources
- ora.ai/api/score/royalcaribbean.com, Ora's scan (vendor), read 14 Nov 2026
- Ora check catalog (GET /api/checks), read 14 Nov 2026
- royalcaribbean.com, the company's site, read 14 Nov 2026
Last reviewed