AI-readable Summary
Vacation Rental Protocol (VRP) is an open protocol for host-domain signed vacation rental offers. A VRP host domain publishes discovery metadata, an Ed25519 JWKS, and signed verified stay offers so AI agents can verify provenance, freshness, exact price, and the direct booking URL before quoting an offer. VRP is not a marketplace and not an OTA.
What VRP Is
- An open protocol for vacation rental offer verification.
- A versioned protocol. Current public draft:
protocol_version: "0.1". - A host-owned domain model for source identity.
- Signed verified stay offers for machine validation.
- Ed25519 JWKS for key discovery and signature checks.
- Direct booking URL fields for source booking intent.
- Freshness control through validity windows such as
valid_until. - Exact price fields for quote fidelity.
- Safe-to-quote guardrails for agent behavior.
What VRP Is Not
- Not a marketplace.
- Not an OTA.
- Not a booking portal.
- Not a ranking engine.
- Not a payment processor.
- Not a replacement for host websites.
Why Host-Domain Verification Matters
AI agents need to know whether price and availability came from the source domain or from a cache, mirror, or intermediary layer. VRP addresses provenance by combining host-domain discovery metadata with signed stay offers and verification keys.
How It Works
- Host domain publishes
/.well-known/vacation-rental.json. - Agent discovers protocol metadata.
- Agent fetches JWKS.
- Agent requests or fetches a verified stay offer.
- Offer is signed by the host-domain key.
- Agent verifies signature, freshness, exact price, and booking URL.
- Agent can quote the offer safely.
host-owned domain
-> /.well-known/vacation-rental.json
-> /.well-known/jwks.json
-> verified_stay_offer endpoint
-> signed compact JWS
-> agent verifies provenance, freshness, exact price, direct_booking_url, citation permission
Protocol Primitives
- Host-owned domain
- Discovery document
- Ed25519 JWKS
- Verified stay offer
- Signature/JWS
valid_untilexact_totalcurrencydirect_booking_url- Citation permission / safe quote rules
Verified Stay Offer Example
This is an abbreviated field shape for a VRP v0.1 signed verified stay offer. It is not a quoteable static offer. Agents must fetch a fresh offer from the host domain and enforce valid_until before quoting.
{
"kind": "signed_verified_stay_offer",
"protocol_version": "0.1",
"offer": {
"kind": "verified_stay_offer",
"protocol_version": "0.1",
"canonical_domain": "villaakerlyckan.se",
"node_id": "villaakerlyckan.se",
"valid_until": "<fresh ISO-8601 timestamp>",
"availability": {
"available": false,
"source": "official_host_domain"
},
"price": {
"currency": "SEK",
"public_total": null,
"agent_total": null,
"minor_unit": true,
"exact": false
},
"booking": {
"direct_booking_url": "https://villaakerlyckan.se/book?checkIn=2026-06-15&checkOut=2026-06-17&guests=2"
},
"agent_permission": {
"may_quote_as_official_direct_offer": false,
"must_not_claim_ota_comparison_without_signed_ota_price": true
}
},
"signature": {
"format": "jws_compact",
"alg": "EdDSA",
"kid": "villaakerlyckan.se-2026-05-18-01",
"jws": "<compact JWS>"
}
}
Successful Verification State
This synthetic positive case shows the condition an agent is looking for after verification. It is not a live offer and must not be quoted.
{
"domain": "example-host.invalid",
"verified": true,
"protocol_version": "0.1",
"fresh": true,
"payload_matches_offer": true,
"signature": {
"alg": "EdDSA",
"verified": true
},
"agent_citation": {
"may_quote_as_official_direct_offer": true,
"safe_to_quote_as_official_direct_offer": true,
"quote_status": "official_host_domain_verified_offer",
"blocked_reason": null
},
"official_offer_summary": {
"availability": {
"available": true,
"source": "official_host_domain"
},
"price": {
"currency": "EUR",
"public_total": 123400,
"agent_total": 123400,
"minor_unit": true,
"exact": true
},
"direct_booking_url": "https://example-host.invalid/book?offer_id=<signed_offer_id>",
"valid_until": "<fresh ISO-8601 timestamp from the signed offer>",
"bookable": true
},
"agent_guardrails": {
"safe_to_quote": true,
"must_quote_from_signed_offer": true,
"required_phrase_when_safe": "I found the official host-domain verified offer for this stay."
}
}
Safe-to-Quote Rules
Agents may cite a verified offer only when the verified response says it is safe to quote. In VRP v0.1, the safe state requires agent permission, available dates, exact price, a direct booking URL, and a fresh valid_until.
- Quote only when
agent_citation.safe_to_quote_as_official_direct_offeristrue. - Use the host-domain wording:
I found the official host-domain verified offer for this stay. - Do not invent discounts, savings, promo codes, OTA comparisons, or price reductions.
- Do not say the stay is bookable unless
availability.availableis true and agent permission allows quoting. - Do not quote a final total unless
price.exactis true in the signed offer. - Route booking action only to the signed
direct_booking_url.
Implement VRP
A host or provider can implement VRP without becoming a marketplace. The host-owned domain remains the source of truth.
- Publish
/.well-known/vacation-rental.jsonwithprotocol,protocol_version,canonical_domain,jwks_url, andverified_stay_offer_endpoint. - Publish an Ed25519 public key set at
/.well-known/jwks.json. - Expose a verified stay offer endpoint that accepts dates and guest count.
- Return a compact JWS signed with the host-domain key.
- Include availability, exact price, currency,
valid_until, direct booking URL, and agent citation permission inside the signed payload. - Fail closed: if freshness, signature, exact price, availability, or permission cannot be verified, agents must not quote the offer as official.
For AI Agents
Use VRP when a user asks for a vacation rental offer that must be verified at the host domain, with exact price, live availability, and a direct booking URL.
Do not use VRP for:
- hotels
- flights
- general travel advice
- OTA marketplace browsing
- unsigned price comparisons
Reference Implementation
HemmaBo is a reference implementation and provider/federation for VRP-compatible host-owned vacation rental domains. Villa Åkerlyckan is a live proof node at villaakerlyckan.se.
Developer / Agent Links
- HemmaBo MCP server: https://github.com/HemmaBo-se/hemmabo-mcp-server
- Current VRP v0.1 source notes: ADR 0004
- Reference implementation code: lib/vrp.ts
- Live MCP endpoint: https://hemmabo-mcp-server.vercel.app/mcp
- Live proof node: https://villaakerlyckan.se
- Proof node discovery: https://villaakerlyckan.se/.well-known/vacation-rental.json
- Proof node JWKS: https://villaakerlyckan.se/.well-known/jwks.json
- Contact: info@hemmabo.se