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

What VRP Is Not

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

  1. Host domain publishes /.well-known/vacation-rental.json.
  2. Agent discovers protocol metadata.
  3. Agent fetches JWKS.
  4. Agent requests or fetches a verified stay offer.
  5. Offer is signed by the host-domain key.
  6. Agent verifies signature, freshness, exact price, and booking URL.
  7. Agent can quote the offer safely.
Host domain Discovery document Ed25519 JWKS Signed stay offer Agent verification Safe quote decision
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

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.

Implement VRP

A host or provider can implement VRP without becoming a marketplace. The host-owned domain remains the source of truth.

  1. Publish /.well-known/vacation-rental.json with protocol, protocol_version, canonical_domain, jwks_url, and verified_stay_offer_endpoint.
  2. Publish an Ed25519 public key set at /.well-known/jwks.json.
  3. Expose a verified stay offer endpoint that accepts dates and guest count.
  4. Return a compact JWS signed with the host-domain key.
  5. Include availability, exact price, currency, valid_until, direct booking URL, and agent citation permission inside the signed payload.
  6. 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:

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.