{"name":"Riviera","purpose":"Infrastructure that gives independent pizza restaurants their own AI-ordering storefront. This manifest describes a shared demo endpoint covering multiple restaurants; the target model is one storefront per merchant.","version":"1.5.0","base_url":"https://riviera-lime.vercel.app","openapi_url":"https://riviera-lime.vercel.app/openapi.json","llms_txt_url":"https://riviera-lime.vercel.app/llms.txt","mcp_server_url":"https://riviera-lime.vercel.app/mcp","capabilities":["restaurant_profile","menu","delivery_check","quote","order_submission","order_status","payment_authorization","merchant_review","merchant_accept_reject"],"demo_restaurants":["tonys-pizza","riviera-pizza"],"safety_constraints":["Explicit customer confirmation (customer_confirmation: true) is required before an order is submitted.","Prices are calculated deterministically by the commerce core, never by an LLM.","Quotes are revalidated at submission time; if pricing or availability changed, submission fails with QUOTE_CHANGED rather than silently using different prices.","A submitted order is not confirmed until the merchant explicitly accepts it.","Some restaurants require authorization-first payment via Stripe Checkout (payment_options includes authorization_first); others remain pay on delivery or pay on collection. Riviera never collects card details directly and never stores raw card data — payment authorization happens on a Stripe-hosted page the customer opens themselves.","For authorization-first restaurants, the merchant is not notified until the customer's payment authorization is confirmed; payment is captured only on merchant acceptance and voided on merchant rejection."],"privacy_constraints":["Agent-facing and merchant-facing responses never include customer phone number or email.","Merchant-facing views show the customer's first name only, not full name.","Merchant-facing views show a delivery postcode prefix only (e.g. \"W9\"), not the full postcode or address.","Merchant action links (view/accept/reject) are signed, expire after 24 hours, and are scoped to one order and one action each — an accept link cannot be used to reject, and a link for one order cannot be used on another.","Payment authorization URLs are customer-facing only and are never the same signed-token namespace as merchant action links; MCP and payment-related responses never include merchant action links."],"protocol_status":"This manifest, the accompanying OpenAPI spec, a remote MCP server (Streamable HTTP, stateless, at mcp_server_url), and a local stdio MCP server for Claude Desktop/Claude Code are the agent-readable interfaces today — both MCP transports expose the same seven customer-agent tools; see docs/engineering/mcp-server.md. ACP, UCP, and AP2 adapters are future work and do not exist yet."}